summaryrefslogtreecommitdiff
path: root/tests/wpt
diff options
context:
space:
mode:
authorAsher Gomez <ashersaupingomez@gmail.com>2024-03-05 11:41:16 +1100
committerGitHub <noreply@github.com>2024-03-05 00:41:16 +0000
commit0022c35a237773b50a771b0fef48cac734f7a9d6 (patch)
treea7a2f9472d432c6ae9b329e6a62a9dbe0f69de75 /tests/wpt
parentc559e813e172bc67225391d3c5cb5d85c14c6279 (diff)
chore: move `tools/wpt` to `tests/wpt/runner` (#22545)
Towards #22525 --------- Signed-off-by: Asher Gomez <ashersaupingomez@gmail.com> Co-authored-by: Matt Mastracci <matthew@mastracci.com>
Diffstat (limited to 'tests/wpt')
-rw-r--r--tests/wpt/runner/certs/README.md30
-rw-r--r--tests/wpt/runner/certs/cacert.key30
-rw-r--r--tests/wpt/runner/certs/cacert.pem71
-rw-r--r--tests/wpt/runner/certs/web-platform.test.key28
-rw-r--r--tests/wpt/runner/certs/web-platform.test.pem133
-rw-r--r--tests/wpt/runner/config.json11
-rw-r--r--tests/wpt/runner/expectation.json10998
-rw-r--r--tests/wpt/runner/runner.ts241
-rw-r--r--tests/wpt/runner/testharnessreport.js29
-rw-r--r--tests/wpt/runner/utils.ts214
-rwxr-xr-xtests/wpt/wpt.ts816
11 files changed, 12601 insertions, 0 deletions
diff --git a/tests/wpt/runner/certs/README.md b/tests/wpt/runner/certs/README.md
new file mode 100644
index 000000000..f3ebfc652
--- /dev/null
+++ b/tests/wpt/runner/certs/README.md
@@ -0,0 +1,30 @@
+## To regenerate certificates
+
+1. Apply:
+
+```
+diff --git a/tools/wptserve/wptserve/sslutils/openssl.py b/tools/wptserve/wptserve/sslutils/openssl.py
+index 87a8cc9cc7..bbf500d8ca 100644
+--- a/tools/wptserve/wptserve/sslutils/openssl.py
++++ b/tools/wptserve/wptserve/sslutils/openssl.py
+@@ -216,7 +216,7 @@ basicConstraints = CA:true
+ subjectKeyIdentifier=hash
+ authorityKeyIdentifier=keyid:always,issuer:always
+ keyUsage = keyCertSign
+-%(constraints_line)s
++#%(constraints_line)s
+ """ % {"root_dir": root_dir,
+ "san_line": san_line,
+ "duration": duration,
+```
+
+2. `cd tests/wpt/suite/`
+3. `./wpt serve --config tools/certs/config.json`
+4. Run:
+
+```
+cp tests/wpt/suite/tools/certs/cacert.key tests/wpt/runner/certs/cacert.key
+cp tests/wpt/suite/tools/certs/cacert.pem tests/wpt/runner/certs/cacert.pem
+cp tests/wpt/suite/tools/certs/web-platform.test.key tests/wpt/runner/certs/web-platform.test.key
+cp tests/wpt/suite/tools/certs/web-platform.test.pem tests/wpt/runner/certs/web-platform.test.pem
+```
diff --git a/tests/wpt/runner/certs/cacert.key b/tests/wpt/runner/certs/cacert.key
new file mode 100644
index 000000000..372ccca44
--- /dev/null
+++ b/tests/wpt/runner/certs/cacert.key
@@ -0,0 +1,30 @@
+-----BEGIN ENCRYPTED PRIVATE KEY-----
+MIIFHzBJBgkqhkiG9w0BBQ0wPDAbBgkqhkiG9w0BBQwwDgQIQ+W03vdK1q8CAggA
+MB0GCWCGSAFlAwQBKgQQvAinKAExkO2ZesObnF6FMgSCBNCclHCzJ7wkLCCLn6oU
+GGNpNORoeiteSIr+2OHluK9in3YFoS9sXGDQrsb56wVbQIisxWFFGRES9ds+KW3n
+Ll38AutYQ5yArIFqWO83f80zybnrtynTluCtV6s3JZGhgSpYXUJ0v+sNwRuGILvb
+BxJYB4RFkSCyne629JScEthMoaVvjNbOvcpRmIcO1WdRCsf3EEuZPHExhNnQxUAU
+Yw8eNN17kc/e9Wjl4W65gfehcwKJRsWs+tD4zmYUKFTyETtbuNyntR5n8Lil3abV
+lgENx1/XOTan/AvYRv3DqoLyt6p/lp4F4FtQQlylCjg+rZaovP7NC4s22bBnoQPx
+QbbdOx+v1WeCquezG3VzgMiw6//wSfqOCy1TWmOWghcORolYSzQ7KUY0jHhiIo0y
+IkxBgMd4XefYXaCCPdtY8O2pJKQzaqY9p8cIzBe41X/PuACUNSTh1Kt1oBGCBQbA
+Ox1mT8wUBM7ETU96TX87g+AtbTW8LB9fxf0PW3cieEc4QPxciN1RZQQOKw/qU9wx
+MQj9nlyGn3c6LK11mZ8piz6wD6/dCZAocGndmRA5qELDrGihAGBvHmpLM08vgH2B
+BKtv3Is9/v54ATUvGBtXKkYOmK4fONUyMJoyIbZPbifZBs1PUVm0qcHF2VnamdCr
+EB4Ea/p49G1SuOZN7WtmrJR7fedoappa7+vlUU4cCTw5XIsFInLJ4xQe+BhCnQKs
+Gm3ewR3ferrC8TeiExiYShVVPb3n0Qr5Mm/9SHCutux4a4/Q8a09MNB1+Inh+tH7
+sKyFQS6IettSMZ2FtO+23nd1BM1VbGkxaLVVah3Lcho4byYAhdLo3wRqFLq+QI5G
+AYZHrK+WlL1vcXh1Ba+H5aeNUV/fJHy4jMe78VzYb1Enuj8RhhbqlvRlnySfMt+N
+SYaVrWIioWzAkUDAZsTZqywn+TWP12zMb1bA3S8zX02PY1/YFfhfYDn0ME+tAVPv
+JxdwS6z6x2KHN5WEabKYlFGc+F9bAgW/KtWXBSzPiUENB5oq7fRKiZSjIHXqaSBO
+kJ5FcqTwj2b6hgD4KYAAs1qOflmvkq5Yxc9zOYWB+avPE0FUFP/QV+65RHtau8G5
+OdWGWs/tzcEG3GAsIWBCoSCe4YKJsUGoi19Aa/i/k+z1OKvl41LXwIEyS79S6snG
+vrCm3BpQMtvE2tMJ1f2n230v7PyG/JF/UuW41F7jUg40E2ULwzCBTCmiaWKD4iYp
+nGIorbt9bHo7P1OJAryVGvI6tRyPeShPhjzb9DSWqWOCsfJ7HapiOQb0e+83N1Uv
+H7lWz9WMEzp/ewnd6qQTpIFZBmQ3oKxSQ6agvHBmMrpvW/kpH+Oa40dE+QP5L0zU
+n7Mv5j1q03lA6dO5Fa/2BR0AiTnYE+Yn5c/llDYpbFZam6s+3e9/64nFTOApDW5l
+XfgXOy2KlQOziuz+8rjOmMFmVYRkfBKtjzuhRIERGFKZntsXQbAGM3EKGdusA1mz
+AcXbp17gMpEBI24AYjo0Hu6XYUTGeXsbqJBOnIAg0JslbbLlRMzKdRVINKKLXLdX
+TUunm9tmOSwL4o22WX/D3iUx0IiSOdFfq8FMTEmAPStfoBTCxyEPfVPYz9w0+trW
+JvvPmdH0mTZp8G3UmkgBSPk1dw==
+-----END ENCRYPTED PRIVATE KEY-----
diff --git a/tests/wpt/runner/certs/cacert.pem b/tests/wpt/runner/certs/cacert.pem
new file mode 100644
index 000000000..9bc42cc1b
--- /dev/null
+++ b/tests/wpt/runner/certs/cacert.pem
@@ -0,0 +1,71 @@
+-----BEGIN CERTIFICATE-----
+MIIM3jCCC8agAwIBAgIDDdH2MA0GCSqGSIb3DQEBCwUAMB0xGzAZBgNVBAMMEndl
+Yi1wbGF0Zm9ybS10ZXN0czAeFw0yMzA2MDIwMjQ1MTdaFw0yNDA2MDEwMjQ1MTda
+MB0xGzAZBgNVBAMMEndlYi1wbGF0Zm9ybS10ZXN0czCCASIwDQYJKoZIhvcNAQEB
+BQADggEPADCCAQoCggEBAKvZZxnQbYFxul9QFZvEzyaUpOy/maaeSbsEKTXcmMV+
+Op1pBFEIsVKfW09a2V0yIPNeNJt9ezGR12klitPi6HbtENWRIHwH7pEl99QElYSt
+yVNcN2dy8bn8p94xUshjMV3sPzBCjMUaAu1FQtYiSeCw+XG4vh74uOYGV6EiIATQ
+Xj6J10aLNBGMrOlbqYLbB5KIHIIX3HIlxOS1VyVUJANhv8+m89ykyy/eWjmexbeK
+tXhqc98iopV/2Okl2K6AAjjPMwV+5HKzDBGKS5MOmnzqCSEjkQbCSwQgAy758DeN
+KuWWd2OwfaudYt3wprnIcT8AJW8Sp1aGSQmeJYmywbkCAwEAAaOCCiUwggohMAwG
+A1UdEwQFMAMBAf8wHQYDVR0OBBYEFGbZlmcsD7pGcpPSrjXntECqiONKMEcGA1Ud
+IwRAMD6AFGbZlmcsD7pGcpPSrjXntECqiONKoSGkHzAdMRswGQYDVQQDDBJ3ZWIt
+cGxhdGZvcm0tdGVzdHOCAw3R9jALBgNVHQ8EBAMCAgQwEwYDVR0lBAwwCgYIKwYB
+BQUHAwEwggmFBgNVHREEggl8MIIJeIIRd2ViLXBsYXRmb3JtLnRlc3SCFW5vdC13
+ZWItcGxhdGZvcm0udGVzdIIVd3d3LndlYi1wbGF0Zm9ybS50ZXN0ghZ3d3cxLndl
+Yi1wbGF0Zm9ybS50ZXN0ghZ3d3cyLndlYi1wbGF0Zm9ybS50ZXN0ghl3d3cubm90
+LXdlYi1wbGF0Zm9ybS50ZXN0ghl3d3cud3d3LndlYi1wbGF0Zm9ybS50ZXN0ghp3
+d3cyLm5vdC13ZWItcGxhdGZvcm0udGVzdIIad3d3MS5ub3Qtd2ViLXBsYXRmb3Jt
+LnRlc3SCGnd3dy53d3cxLndlYi1wbGF0Zm9ybS50ZXN0ghp3d3cxLnd3dy53ZWIt
+cGxhdGZvcm0udGVzdIIad3d3Mi53d3cud2ViLXBsYXRmb3JtLnRlc3SCGnd3dy53
+d3cyLndlYi1wbGF0Zm9ybS50ZXN0ght3d3cyLnd3dzEud2ViLXBsYXRmb3JtLnRl
+c3SCG3d3dzIud3d3Mi53ZWItcGxhdGZvcm0udGVzdIIbd3d3MS53d3cxLndlYi1w
+bGF0Zm9ybS50ZXN0ght3d3cxLnd3dzIud2ViLXBsYXRmb3JtLnRlc3SCHXd3dy53
+d3cubm90LXdlYi1wbGF0Zm9ybS50ZXN0gh53d3cud3d3Mi5ub3Qtd2ViLXBsYXRm
+b3JtLnRlc3SCHnd3dy53d3cxLm5vdC13ZWItcGxhdGZvcm0udGVzdIIeeG4tLWx2
+ZS02bGFkLndlYi1wbGF0Zm9ybS50ZXN0gh53d3cxLnd3dy5ub3Qtd2ViLXBsYXRm
+b3JtLnRlc3SCHnd3dzIud3d3Lm5vdC13ZWItcGxhdGZvcm0udGVzdIIfd3d3Mi53
+d3cxLm5vdC13ZWItcGxhdGZvcm0udGVzdIIfd3d3MS53d3cyLm5vdC13ZWItcGxh
+dGZvcm0udGVzdIIfd3d3MS53d3cxLm5vdC13ZWItcGxhdGZvcm0udGVzdIIfd3d3
+Mi53d3cyLm5vdC13ZWItcGxhdGZvcm0udGVzdIIid3d3LnhuLS1sdmUtNmxhZC53
+ZWItcGxhdGZvcm0udGVzdIIieG4tLWx2ZS02bGFkLnd3dy53ZWItcGxhdGZvcm0u
+dGVzdIIieG4tLWx2ZS02bGFkLm5vdC13ZWItcGxhdGZvcm0udGVzdIIjeG4tLWx2
+ZS02bGFkLnd3dzIud2ViLXBsYXRmb3JtLnRlc3SCI3huLS1sdmUtNmxhZC53d3cx
+LndlYi1wbGF0Zm9ybS50ZXN0giN3d3cyLnhuLS1sdmUtNmxhZC53ZWItcGxhdGZv
+cm0udGVzdIIjd3d3MS54bi0tbHZlLTZsYWQud2ViLXBsYXRmb3JtLnRlc3SCJnd3
+dy54bi0tbHZlLTZsYWQubm90LXdlYi1wbGF0Zm9ybS50ZXN0giZ4bi0tbHZlLTZs
+YWQud3d3Lm5vdC13ZWItcGxhdGZvcm0udGVzdIIneG4tLWx2ZS02bGFkLnd3dzIu
+bm90LXdlYi1wbGF0Zm9ybS50ZXN0gid4bi0tbHZlLTZsYWQud3d3MS5ub3Qtd2Vi
+LXBsYXRmb3JtLnRlc3SCJ3d3dzEueG4tLWx2ZS02bGFkLm5vdC13ZWItcGxhdGZv
+cm0udGVzdIInd3d3Mi54bi0tbHZlLTZsYWQubm90LXdlYi1wbGF0Zm9ybS50ZXN0
+gil4bi0tbjhqNmRzNTNsd3drcnFodjI4YS53ZWItcGxhdGZvcm0udGVzdIIreG4t
+LWx2ZS02bGFkLnhuLS1sdmUtNmxhZC53ZWItcGxhdGZvcm0udGVzdIItd3d3Lnhu
+LS1uOGo2ZHM1M2x3d2tycWh2MjhhLndlYi1wbGF0Zm9ybS50ZXN0gi14bi0tbjhq
+NmRzNTNsd3drcnFodjI4YS53d3cud2ViLXBsYXRmb3JtLnRlc3SCLXhuLS1uOGo2
+ZHM1M2x3d2tycWh2MjhhLm5vdC13ZWItcGxhdGZvcm0udGVzdIIud3d3Mi54bi0t
+bjhqNmRzNTNsd3drcnFodjI4YS53ZWItcGxhdGZvcm0udGVzdIIud3d3MS54bi0t
+bjhqNmRzNTNsd3drcnFodjI4YS53ZWItcGxhdGZvcm0udGVzdIIueG4tLW44ajZk
+czUzbHd3a3JxaHYyOGEud3d3MS53ZWItcGxhdGZvcm0udGVzdIIueG4tLW44ajZk
+czUzbHd3a3JxaHYyOGEud3d3Mi53ZWItcGxhdGZvcm0udGVzdIIveG4tLWx2ZS02
+bGFkLnhuLS1sdmUtNmxhZC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3SCMXd3dy54bi0t
+bjhqNmRzNTNsd3drcnFodjI4YS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3SCMXhuLS1u
+OGo2ZHM1M2x3d2tycWh2MjhhLnd3dy5ub3Qtd2ViLXBsYXRmb3JtLnRlc3SCMnd3
+dzEueG4tLW44ajZkczUzbHd3a3JxaHYyOGEubm90LXdlYi1wbGF0Zm9ybS50ZXN0
+gjJ4bi0tbjhqNmRzNTNsd3drcnFodjI4YS53d3cxLm5vdC13ZWItcGxhdGZvcm0u
+dGVzdIIyd3d3Mi54bi0tbjhqNmRzNTNsd3drcnFodjI4YS5ub3Qtd2ViLXBsYXRm
+b3JtLnRlc3SCMnhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLnd3dzIubm90LXdlYi1w
+bGF0Zm9ybS50ZXN0gjZ4bi0tbjhqNmRzNTNsd3drcnFodjI4YS54bi0tbHZlLTZs
+YWQud2ViLXBsYXRmb3JtLnRlc3SCNnhuLS1sdmUtNmxhZC54bi0tbjhqNmRzNTNs
+d3drcnFodjI4YS53ZWItcGxhdGZvcm0udGVzdII6eG4tLWx2ZS02bGFkLnhuLS1u
+OGo2ZHM1M2x3d2tycWh2MjhhLm5vdC13ZWItcGxhdGZvcm0udGVzdII6eG4tLW44
+ajZkczUzbHd3a3JxaHYyOGEueG4tLWx2ZS02bGFkLm5vdC13ZWItcGxhdGZvcm0u
+dGVzdIJBeG4tLW44ajZkczUzbHd3a3JxaHYyOGEueG4tLW44ajZkczUzbHd3a3Jx
+aHYyOGEud2ViLXBsYXRmb3JtLnRlc3SCRXhuLS1uOGo2ZHM1M2x3d2tycWh2Mjhh
+LnhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLm5vdC13ZWItcGxhdGZvcm0udGVzdDAN
+BgkqhkiG9w0BAQsFAAOCAQEApKeUP4UaaT1TxI3DMdNMRIAHRt3v5/CiPKWrntfW
+gfBTXPvM+WcYl1n+x4dZ2UL2r4PFmUT1MSaotx4TC4Tu80NoHyFZYDpWtBrkjd35
+M8niW02Fq0j4vjWL3mJFjUQPfQq5GFw5jZXSuTT6FHfXG5YNT1nVTMVwKu0sX7y/
+2eNddJIr2LbEOLRgyYPr2PtmYPSe60rSiRXRWCgd9xYnRTnkt/6bjOy9qzWT9owj
+JZAUou5L5q2hUxXbpi5eV5x907KHTkH7SumQVKBY61Mhz6ULxS08KWOeFWC6y4FX
+HmUM54620yFqretTloDEw1XS0tgyGHgR4RqouL2vnFsmJg==
+-----END CERTIFICATE-----
diff --git a/tests/wpt/runner/certs/web-platform.test.key b/tests/wpt/runner/certs/web-platform.test.key
new file mode 100644
index 000000000..661a9ba87
--- /dev/null
+++ b/tests/wpt/runner/certs/web-platform.test.key
@@ -0,0 +1,28 @@
+-----BEGIN PRIVATE KEY-----
+MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDbQdpYdpYNdw21
+21aAjI/AbN8jRxLjD3KaahP7xCvMdu0gBSbVkr4OYUMckzf+xWPU6w3YZ8CUsIc/
+NQD6j3dC1Iz3x5+0HpFfqoWx22bkzeIM7/X98njsmlv47TBEmvMKD9rz3yHGMdi9
+MmzdQohQBnFoidCV/AWqeKEOlxPYhzdTghbv7FMhD4I7Hz3OOvfmsrwEWTcvP03/
+1V46J4h2oILYELglzS5dCQFEjAbd8SIJlT+YMjWMZXzHgxI+UNJFgcbNUEkR/3v5
+8YGrdVmneI5UjVs1ok8uo/ey9OaJSwWOCrWXasglMDkU9J8JWoce/Q8PIlOGdJCs
++bR92pEvAgMBAAECggEAZrwwhwrpvF1weynPGmTCZrOcynbfDq2KUXgq7Ok6bI+9
+BCflzmT30N0aCSWiMypiYL3SuvfCcOlWNfOsBbt7ckEN3HwZBNjd3SmVg4T+bW9a
+4Bz/8oHOz250cesRltPT1X8gZOzEco2gtOYPxI0MOhMKyKTqq5xvOzVSofeAQRAb
+7bpNucHS3TP6I50jpav1K1w+PIAbMkRyC/hgITp1sGvx/N/OVLRQ22Jd7jCn9umy
+f4UYTpvgHChOm5JDFRqH4zRwntKxbcZhYs/WpUxtyKCW8us9IYVp1tebOtnlY918
+boX2Aq+4CohLgI0x67rt2kDG+actL9slrJI3jqVCAQKBgQD+sGV02GT8MidTFTU3
+mMTeL7SaBC1u1JQV4YyAIKY0Bk8S1Oux+wGIXVYl4VINgn63vtkEbKpSEjLIYIzM
+E6KOmwguza1mvZ+vJSoglKnh0dC/I/USJLndAigYYiOSl/mGkK9IKMB1zrGmR03R
+v0bZAX2I9Zbvynvccztt0MycwQKBgQDcYsSi/eOakVjEV9b0z9u3alna93s/4Y7O
+NPCh3NwkGIlweOi1B/5BVCNbTLIz+9Q93UvBW7b7/JQvt9HWdjJf1EFXAz5PM5ip
+pAyxtggIYdtu2zW/Gxc8e+chWrZQugoZWZK+oBH5BH4wjtI7SpHqj/RK48WwTjnR
+Eo/sbv157wKBgFFZfH6O4+qeBmuGOaJRfIhPiosrTGu7ILXAfkUqqIuzfCxSsBoA
+R6QL1AlzZ+cCyIDeR6kfIGPohin0lORWXTTZlgqFDZ7kcI3b/BG+CmkjwF5dGNk7
+u9Y46x+msSAQxNXTfvk4cwjuBVZMLjIRu4py7GsDrrtW3Ks0b0YLTF/BAoGAa/jH
+tcMFe3iyMJ+IZLBhSN8F3s1YyNdNC6HMMsDt6ZFL5JqYB/k+i+sY12Yf+G/sb9K3
+hqfUYmhAgZBhcdy+mUx4JpUkNdFlfdctkPNJxDGNPCaRkmtHWw6pEiJLKAm9YOYN
+iu8JXyLgYBHY1cuW6YBVg0tMUzBACzo44PEPpmkCgYEAhAroOZaSByBkVKtHKX8D
+/j+MUbNyY3GZN81byLpJQ+whFLtNCfkC6YL7zchhnX1S5nX0kZTGzNP2rEI5y2+a
+5sK5t3lXrY+aLRPI+gTXe3jxJBDfLp58HhZMGVlLBxx3tTqFzw0KyPPU6IGUgo68
+tgkF4hAUb2u0WO/Vvmc2xfo=
+-----END PRIVATE KEY-----
diff --git a/tests/wpt/runner/certs/web-platform.test.pem b/tests/wpt/runner/certs/web-platform.test.pem
new file mode 100644
index 000000000..0e48d23e2
--- /dev/null
+++ b/tests/wpt/runner/certs/web-platform.test.pem
@@ -0,0 +1,133 @@
+Certificate:
+ Data:
+ Version: 3 (0x2)
+ Serial Number: 905719 (0xdd1f7)
+ Signature Algorithm: sha256WithRSAEncryption
+ Issuer: CN=web-platform-tests
+ Validity
+ Not Before: Jun 2 02:45:17 2023 GMT
+ Not After : Jun 1 02:45:17 2024 GMT
+ Subject: CN=web-platform.test
+ Subject Public Key Info:
+ Public Key Algorithm: rsaEncryption
+ RSA Public-Key: (2048 bit)
+ Modulus:
+ 00:db:41:da:58:76:96:0d:77:0d:b5:db:56:80:8c:
+ 8f:c0:6c:df:23:47:12:e3:0f:72:9a:6a:13:fb:c4:
+ 2b:cc:76:ed:20:05:26:d5:92:be:0e:61:43:1c:93:
+ 37:fe:c5:63:d4:eb:0d:d8:67:c0:94:b0:87:3f:35:
+ 00:fa:8f:77:42:d4:8c:f7:c7:9f:b4:1e:91:5f:aa:
+ 85:b1:db:66:e4:cd:e2:0c:ef:f5:fd:f2:78:ec:9a:
+ 5b:f8:ed:30:44:9a:f3:0a:0f:da:f3:df:21:c6:31:
+ d8:bd:32:6c:dd:42:88:50:06:71:68:89:d0:95:fc:
+ 05:aa:78:a1:0e:97:13:d8:87:37:53:82:16:ef:ec:
+ 53:21:0f:82:3b:1f:3d:ce:3a:f7:e6:b2:bc:04:59:
+ 37:2f:3f:4d:ff:d5:5e:3a:27:88:76:a0:82:d8:10:
+ b8:25:cd:2e:5d:09:01:44:8c:06:dd:f1:22:09:95:
+ 3f:98:32:35:8c:65:7c:c7:83:12:3e:50:d2:45:81:
+ c6:cd:50:49:11:ff:7b:f9:f1:81:ab:75:59:a7:78:
+ 8e:54:8d:5b:35:a2:4f:2e:a3:f7:b2:f4:e6:89:4b:
+ 05:8e:0a:b5:97:6a:c8:25:30:39:14:f4:9f:09:5a:
+ 87:1e:fd:0f:0f:22:53:86:74:90:ac:f9:b4:7d:da:
+ 91:2f
+ Exponent: 65537 (0x10001)
+ X509v3 extensions:
+ X509v3 Basic Constraints:
+ CA:FALSE
+ X509v3 Subject Key Identifier:
+ AF:6B:74:D4:D8:85:48:A2:50:B9:E3:9C:2D:1A:91:A9:94:75:60:A5
+ X509v3 Authority Key Identifier:
+ keyid:66:D9:96:67:2C:0F:BA:46:72:93:D2:AE:35:E7:B4:40:AA:88:E3:4A
+
+ X509v3 Key Usage:
+ Digital Signature, Non Repudiation, Key Encipherment
+ X509v3 Extended Key Usage:
+ TLS Web Server Authentication
+ X509v3 Subject Alternative Name:
+ DNS:web-platform.test, DNS:not-web-platform.test, DNS:www.web-platform.test, DNS:www1.web-platform.test, DNS:www2.web-platform.test, DNS:www.not-web-platform.test, DNS:www.www.web-platform.test, DNS:www2.not-web-platform.test, DNS:www1.not-web-platform.test, DNS:www.www1.web-platform.test, DNS:www1.www.web-platform.test, DNS:www2.www.web-platform.test, DNS:www.www2.web-platform.test, DNS:www2.www1.web-platform.test, DNS:www2.www2.web-platform.test, DNS:www1.www1.web-platform.test, DNS:www1.www2.web-platform.test, DNS:www.www.not-web-platform.test, DNS:www.www2.not-web-platform.test, DNS:www.www1.not-web-platform.test, DNS:xn--lve-6lad.web-platform.test, DNS:www1.www.not-web-platform.test, DNS:www2.www.not-web-platform.test, DNS:www2.www1.not-web-platform.test, DNS:www1.www2.not-web-platform.test, DNS:www1.www1.not-web-platform.test, DNS:www2.www2.not-web-platform.test, DNS:www.xn--lve-6lad.web-platform.test, DNS:xn--lve-6lad.www.web-platform.test, DNS:xn--lve-6lad.not-web-platform.test, DNS:xn--lve-6lad.www2.web-platform.test, DNS:xn--lve-6lad.www1.web-platform.test, DNS:www2.xn--lve-6lad.web-platform.test, DNS:www1.xn--lve-6lad.web-platform.test, DNS:www.xn--lve-6lad.not-web-platform.test, DNS:xn--lve-6lad.www.not-web-platform.test, DNS:xn--lve-6lad.www2.not-web-platform.test, DNS:xn--lve-6lad.www1.not-web-platform.test, DNS:www1.xn--lve-6lad.not-web-platform.test, DNS:www2.xn--lve-6lad.not-web-platform.test, DNS:xn--n8j6ds53lwwkrqhv28a.web-platform.test, DNS:xn--lve-6lad.xn--lve-6lad.web-platform.test, DNS:www.xn--n8j6ds53lwwkrqhv28a.web-platform.test, DNS:xn--n8j6ds53lwwkrqhv28a.www.web-platform.test, DNS:xn--n8j6ds53lwwkrqhv28a.not-web-platform.test, DNS:www2.xn--n8j6ds53lwwkrqhv28a.web-platform.test, DNS:www1.xn--n8j6ds53lwwkrqhv28a.web-platform.test, DNS:xn--n8j6ds53lwwkrqhv28a.www1.web-platform.test, DNS:xn--n8j6ds53lwwkrqhv28a.www2.web-platform.test, DNS:xn--lve-6lad.xn--lve-6lad.not-web-platform.test, DNS:www.xn--n8j6ds53lwwkrqhv28a.not-web-platform.test, DNS:xn--n8j6ds53lwwkrqhv28a.www.not-web-platform.test, DNS:www1.xn--n8j6ds53lwwkrqhv28a.not-web-platform.test, DNS:xn--n8j6ds53lwwkrqhv28a.www1.not-web-platform.test, DNS:www2.xn--n8j6ds53lwwkrqhv28a.not-web-platform.test, DNS:xn--n8j6ds53lwwkrqhv28a.www2.not-web-platform.test, DNS:xn--n8j6ds53lwwkrqhv28a.xn--lve-6lad.web-platform.test, DNS:xn--lve-6lad.xn--n8j6ds53lwwkrqhv28a.web-platform.test, DNS:xn--lve-6lad.xn--n8j6ds53lwwkrqhv28a.not-web-platform.test, DNS:xn--n8j6ds53lwwkrqhv28a.xn--lve-6lad.not-web-platform.test, DNS:xn--n8j6ds53lwwkrqhv28a.xn--n8j6ds53lwwkrqhv28a.web-platform.test, DNS:xn--n8j6ds53lwwkrqhv28a.xn--n8j6ds53lwwkrqhv28a.not-web-platform.test
+ Signature Algorithm: sha256WithRSAEncryption
+ 20:b8:e5:97:9b:08:4c:bf:34:a6:4c:4b:7c:97:b6:93:5d:29:
+ 1a:f0:65:66:19:8b:77:5e:7b:e5:33:96:68:31:2e:40:5d:47:
+ 47:56:ba:75:18:3a:e8:8a:12:8b:2f:a7:30:f0:91:82:6c:88:
+ c3:31:7d:07:aa:9b:78:98:4c:c7:fd:e9:28:89:c0:57:2c:ed:
+ 28:2a:79:b7:6d:bf:7a:6f:15:e4:ae:4e:1c:56:1e:27:78:5a:
+ a5:7f:78:b6:e8:d8:38:79:cc:32:53:9c:0e:8f:fe:a2:c2:82:
+ 27:b1:d3:f9:ee:10:9b:5a:42:26:3d:ee:05:b3:15:9f:40:ce:
+ 8d:6a:4f:97:3b:20:37:6e:ff:65:ca:18:85:d3:77:0e:4e:fe:
+ b0:71:61:91:22:28:9e:d5:17:13:8b:85:1a:8b:9b:17:ff:bd:
+ b5:fd:81:c5:2d:de:40:cd:47:c3:a5:9e:eb:70:b3:e2:57:8a:
+ 46:02:22:41:a5:5f:71:30:3e:65:30:46:70:4d:67:49:3a:11:
+ f0:03:5c:6b:a5:ae:ca:73:b0:35:91:89:63:9a:65:c9:65:ff:
+ 43:59:5b:af:b6:b9:2e:35:d6:47:26:d1:d4:7b:22:c1:79:28:
+ cb:8c:a3:d2:d3:1d:b6:dc:39:de:f1:ba:b0:10:91:bd:16:e9:
+ 53:cd:77:e4
+-----BEGIN CERTIFICATE-----
+MIIMsjCCC5qgAwIBAgIDDdH3MA0GCSqGSIb3DQEBCwUAMB0xGzAZBgNVBAMMEndl
+Yi1wbGF0Zm9ybS10ZXN0czAeFw0yMzA2MDIwMjQ1MTdaFw0yNDA2MDEwMjQ1MTda
+MBwxGjAYBgNVBAMMEXdlYi1wbGF0Zm9ybS50ZXN0MIIBIjANBgkqhkiG9w0BAQEF
+AAOCAQ8AMIIBCgKCAQEA20HaWHaWDXcNtdtWgIyPwGzfI0cS4w9ymmoT+8QrzHbt
+IAUm1ZK+DmFDHJM3/sVj1OsN2GfAlLCHPzUA+o93QtSM98eftB6RX6qFsdtm5M3i
+DO/1/fJ47Jpb+O0wRJrzCg/a898hxjHYvTJs3UKIUAZxaInQlfwFqnihDpcT2Ic3
+U4IW7+xTIQ+COx89zjr35rK8BFk3Lz9N/9VeOieIdqCC2BC4Jc0uXQkBRIwG3fEi
+CZU/mDI1jGV8x4MSPlDSRYHGzVBJEf97+fGBq3VZp3iOVI1bNaJPLqP3svTmiUsF
+jgq1l2rIJTA5FPSfCVqHHv0PDyJThnSQrPm0fdqRLwIDAQABo4IJ+jCCCfYwCQYD
+VR0TBAIwADAdBgNVHQ4EFgQUr2t01NiFSKJQueOcLRqRqZR1YKUwHwYDVR0jBBgw
+FoAUZtmWZywPukZyk9KuNee0QKqI40owCwYDVR0PBAQDAgXgMBMGA1UdJQQMMAoG
+CCsGAQUFBwMBMIIJhQYDVR0RBIIJfDCCCXiCEXdlYi1wbGF0Zm9ybS50ZXN0ghVu
+b3Qtd2ViLXBsYXRmb3JtLnRlc3SCFXd3dy53ZWItcGxhdGZvcm0udGVzdIIWd3d3
+MS53ZWItcGxhdGZvcm0udGVzdIIWd3d3Mi53ZWItcGxhdGZvcm0udGVzdIIZd3d3
+Lm5vdC13ZWItcGxhdGZvcm0udGVzdIIZd3d3Lnd3dy53ZWItcGxhdGZvcm0udGVz
+dIIad3d3Mi5ub3Qtd2ViLXBsYXRmb3JtLnRlc3SCGnd3dzEubm90LXdlYi1wbGF0
+Zm9ybS50ZXN0ghp3d3cud3d3MS53ZWItcGxhdGZvcm0udGVzdIIad3d3MS53d3cu
+d2ViLXBsYXRmb3JtLnRlc3SCGnd3dzIud3d3LndlYi1wbGF0Zm9ybS50ZXN0ghp3
+d3cud3d3Mi53ZWItcGxhdGZvcm0udGVzdIIbd3d3Mi53d3cxLndlYi1wbGF0Zm9y
+bS50ZXN0ght3d3cyLnd3dzIud2ViLXBsYXRmb3JtLnRlc3SCG3d3dzEud3d3MS53
+ZWItcGxhdGZvcm0udGVzdIIbd3d3MS53d3cyLndlYi1wbGF0Zm9ybS50ZXN0gh13
+d3cud3d3Lm5vdC13ZWItcGxhdGZvcm0udGVzdIIed3d3Lnd3dzIubm90LXdlYi1w
+bGF0Zm9ybS50ZXN0gh53d3cud3d3MS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3SCHnhu
+LS1sdmUtNmxhZC53ZWItcGxhdGZvcm0udGVzdIIed3d3MS53d3cubm90LXdlYi1w
+bGF0Zm9ybS50ZXN0gh53d3cyLnd3dy5ub3Qtd2ViLXBsYXRmb3JtLnRlc3SCH3d3
+dzIud3d3MS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3SCH3d3dzEud3d3Mi5ub3Qtd2Vi
+LXBsYXRmb3JtLnRlc3SCH3d3dzEud3d3MS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3SC
+H3d3dzIud3d3Mi5ub3Qtd2ViLXBsYXRmb3JtLnRlc3SCInd3dy54bi0tbHZlLTZs
+YWQud2ViLXBsYXRmb3JtLnRlc3SCInhuLS1sdmUtNmxhZC53d3cud2ViLXBsYXRm
+b3JtLnRlc3SCInhuLS1sdmUtNmxhZC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3SCI3hu
+LS1sdmUtNmxhZC53d3cyLndlYi1wbGF0Zm9ybS50ZXN0giN4bi0tbHZlLTZsYWQu
+d3d3MS53ZWItcGxhdGZvcm0udGVzdIIjd3d3Mi54bi0tbHZlLTZsYWQud2ViLXBs
+YXRmb3JtLnRlc3SCI3d3dzEueG4tLWx2ZS02bGFkLndlYi1wbGF0Zm9ybS50ZXN0
+giZ3d3cueG4tLWx2ZS02bGFkLm5vdC13ZWItcGxhdGZvcm0udGVzdIImeG4tLWx2
+ZS02bGFkLnd3dy5ub3Qtd2ViLXBsYXRmb3JtLnRlc3SCJ3huLS1sdmUtNmxhZC53
+d3cyLm5vdC13ZWItcGxhdGZvcm0udGVzdIIneG4tLWx2ZS02bGFkLnd3dzEubm90
+LXdlYi1wbGF0Zm9ybS50ZXN0gid3d3cxLnhuLS1sdmUtNmxhZC5ub3Qtd2ViLXBs
+YXRmb3JtLnRlc3SCJ3d3dzIueG4tLWx2ZS02bGFkLm5vdC13ZWItcGxhdGZvcm0u
+dGVzdIIpeG4tLW44ajZkczUzbHd3a3JxaHYyOGEud2ViLXBsYXRmb3JtLnRlc3SC
+K3huLS1sdmUtNmxhZC54bi0tbHZlLTZsYWQud2ViLXBsYXRmb3JtLnRlc3SCLXd3
+dy54bi0tbjhqNmRzNTNsd3drcnFodjI4YS53ZWItcGxhdGZvcm0udGVzdIIteG4t
+LW44ajZkczUzbHd3a3JxaHYyOGEud3d3LndlYi1wbGF0Zm9ybS50ZXN0gi14bi0t
+bjhqNmRzNTNsd3drcnFodjI4YS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3SCLnd3dzIu
+eG4tLW44ajZkczUzbHd3a3JxaHYyOGEud2ViLXBsYXRmb3JtLnRlc3SCLnd3dzEu
+eG4tLW44ajZkczUzbHd3a3JxaHYyOGEud2ViLXBsYXRmb3JtLnRlc3SCLnhuLS1u
+OGo2ZHM1M2x3d2tycWh2MjhhLnd3dzEud2ViLXBsYXRmb3JtLnRlc3SCLnhuLS1u
+OGo2ZHM1M2x3d2tycWh2MjhhLnd3dzIud2ViLXBsYXRmb3JtLnRlc3SCL3huLS1s
+dmUtNmxhZC54bi0tbHZlLTZsYWQubm90LXdlYi1wbGF0Zm9ybS50ZXN0gjF3d3cu
+eG4tLW44ajZkczUzbHd3a3JxaHYyOGEubm90LXdlYi1wbGF0Zm9ybS50ZXN0gjF4
+bi0tbjhqNmRzNTNsd3drcnFodjI4YS53d3cubm90LXdlYi1wbGF0Zm9ybS50ZXN0
+gjJ3d3cxLnhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLm5vdC13ZWItcGxhdGZvcm0u
+dGVzdIIyeG4tLW44ajZkczUzbHd3a3JxaHYyOGEud3d3MS5ub3Qtd2ViLXBsYXRm
+b3JtLnRlc3SCMnd3dzIueG4tLW44ajZkczUzbHd3a3JxaHYyOGEubm90LXdlYi1w
+bGF0Zm9ybS50ZXN0gjJ4bi0tbjhqNmRzNTNsd3drcnFodjI4YS53d3cyLm5vdC13
+ZWItcGxhdGZvcm0udGVzdII2eG4tLW44ajZkczUzbHd3a3JxaHYyOGEueG4tLWx2
+ZS02bGFkLndlYi1wbGF0Zm9ybS50ZXN0gjZ4bi0tbHZlLTZsYWQueG4tLW44ajZk
+czUzbHd3a3JxaHYyOGEud2ViLXBsYXRmb3JtLnRlc3SCOnhuLS1sdmUtNmxhZC54
+bi0tbjhqNmRzNTNsd3drcnFodjI4YS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3SCOnhu
+LS1uOGo2ZHM1M2x3d2tycWh2MjhhLnhuLS1sdmUtNmxhZC5ub3Qtd2ViLXBsYXRm
+b3JtLnRlc3SCQXhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLnhuLS1uOGo2ZHM1M2x3
+d2tycWh2MjhhLndlYi1wbGF0Zm9ybS50ZXN0gkV4bi0tbjhqNmRzNTNsd3drcnFo
+djI4YS54bi0tbjhqNmRzNTNsd3drcnFodjI4YS5ub3Qtd2ViLXBsYXRmb3JtLnRl
+c3QwDQYJKoZIhvcNAQELBQADggEBACC45ZebCEy/NKZMS3yXtpNdKRrwZWYZi3de
+e+UzlmgxLkBdR0dWunUYOuiKEosvpzDwkYJsiMMxfQeqm3iYTMf96SiJwFcs7Sgq
+ebdtv3pvFeSuThxWHid4WqV/eLbo2Dh5zDJTnA6P/qLCgiex0/nuEJtaQiY97gWz
+FZ9Azo1qT5c7IDdu/2XKGIXTdw5O/rBxYZEiKJ7VFxOLhRqLmxf/vbX9gcUt3kDN
+R8Olnutws+JXikYCIkGlX3EwPmUwRnBNZ0k6EfADXGulrspzsDWRiWOaZcll/0NZ
+W6+2uS411kcm0dR7IsF5KMuMo9LTHbbcOd7xurAQkb0W6VPNd+Q=
+-----END CERTIFICATE-----
diff --git a/tests/wpt/runner/config.json b/tests/wpt/runner/config.json
new file mode 100644
index 000000000..92472371f
--- /dev/null
+++ b/tests/wpt/runner/config.json
@@ -0,0 +1,11 @@
+{
+ "check_subdomains": false,
+ "ssl": {
+ "type": "pregenerated",
+ "pregenerated": {
+ "ca_cert_path": "../../../tests/wpt/runner/certs/cacert.pem",
+ "host_cert_path": "../../../tests/wpt/runner/certs/web-platform.test.pem",
+ "host_key_path": "../../../tests/wpt/runner/certs/web-platform.test.key"
+ }
+ }
+}
diff --git a/tests/wpt/runner/expectation.json b/tests/wpt/runner/expectation.json
new file mode 100644
index 000000000..29eeea08c
--- /dev/null
+++ b/tests/wpt/runner/expectation.json
@@ -0,0 +1,10998 @@
+{
+ "WebCryptoAPI": {
+ "getRandomValues.any.html": true,
+ "getRandomValues.any.worker.html": true,
+ "derive_bits_keys": {
+ "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 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 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 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 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,
+ "hkdf.https.any.html?3001-last": true,
+ "hkdf.https.any.worker.html?1-1000": true,
+ "hkdf.https.any.worker.html?1001-2000": true,
+ "hkdf.https.any.worker.html?2001-3000": true,
+ "hkdf.https.any.worker.html?3001-last": true,
+ "pbkdf2.https.any.html?1-1000": true,
+ "pbkdf2.https.any.html?1001-2000": true,
+ "pbkdf2.https.any.html?2001-3000": true,
+ "pbkdf2.https.any.html?3001-4000": true,
+ "pbkdf2.https.any.html?4001-5000": true,
+ "pbkdf2.https.any.html?5001-6000": true,
+ "pbkdf2.https.any.html?6001-7000": true,
+ "pbkdf2.https.any.html?7001-8000": true,
+ "pbkdf2.https.any.html?8001-last": true,
+ "pbkdf2.https.any.worker.html?1-1000": true,
+ "pbkdf2.https.any.worker.html?1001-2000": true,
+ "pbkdf2.https.any.worker.html?2001-3000": true,
+ "pbkdf2.https.any.worker.html?3001-4000": true,
+ "pbkdf2.https.any.worker.html?4001-5000": true,
+ "pbkdf2.https.any.worker.html?5001-6000": true,
+ "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": [
+ "X25519 key derivation checks for all-zero value result with a key of order 0",
+ "X25519 key derivation checks for all-zero value result with a key of order 1",
+ "X25519 key derivation checks for all-zero value result with a key of order 8",
+ "X25519 key derivation checks for all-zero value result with a key of order p-1 (order 2)",
+ "X25519 key derivation checks for all-zero value result with a key of order p (=0, order 4)",
+ "X25519 key derivation checks for all-zero value result with a key of order p+1 (=1, order 1)",
+ "X448 key derivation checks for all-zero value result with a key of order 0",
+ "X448 key derivation checks for all-zero value result with a key of order 1",
+ "X448 key derivation checks for all-zero value result with a key of order p-1 (order 2)",
+ "X448 key derivation checks for all-zero value result with a key of order p (=0, order 4)",
+ "X448 key derivation checks for all-zero value result with a key of order p+1 (=1, order 1)",
+ "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 key derivation checks for all-zero value result with a key of order 0",
+ "X25519 key derivation checks for all-zero value result with a key of order 1",
+ "X25519 key derivation checks for all-zero value result with a key of order 8",
+ "X25519 key derivation checks for all-zero value result with a key of order p-1 (order 2)",
+ "X25519 key derivation checks for all-zero value result with a key of order p (=0, order 4)",
+ "X25519 key derivation checks for all-zero value result with a key of order p+1 (=1, order 1)",
+ "X448 key derivation checks for all-zero value result with a key of order 0",
+ "X448 key derivation checks for all-zero value result with a key of order 1",
+ "X448 key derivation checks for all-zero value result with a key of order p-1 (order 2)",
+ "X448 key derivation checks for all-zero value result with a key of order p (=0, order 4)",
+ "X448 key derivation checks for all-zero value result with a key of order p+1 (=1, order 1)",
+ "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 deriveBits checks for all-zero value result with a key of order 0",
+ "X25519 deriveBits checks for all-zero value result with a key of order 1",
+ "X25519 deriveBits checks for all-zero value result with a key of order 8",
+ "X25519 deriveBits checks for all-zero value result with a key of order p-1 (order 2)",
+ "X25519 deriveBits checks for all-zero value result with a key of order p (=0, order 4)",
+ "X25519 deriveBits checks for all-zero value result with a key of order p+1 (=1, order 1)",
+ "X448 deriveBits checks for all-zero value result with a key of order 0",
+ "X448 deriveBits checks for all-zero value result with a key of order 1",
+ "X448 deriveBits checks for all-zero value result with a key of order p-1 (order 2)",
+ "X448 deriveBits checks for all-zero value result with a key of order p (=0, order 4)",
+ "X448 deriveBits checks for all-zero value result with a key of order p+1 (=1, order 1)",
+ "Key derivation using a X25519 generated keys.",
+ "Key derivation using a X448 generated keys.",
+ "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 deriveBits checks for all-zero value result with a key of order 0",
+ "X25519 deriveBits checks for all-zero value result with a key of order 1",
+ "X25519 deriveBits checks for all-zero value result with a key of order 8",
+ "X25519 deriveBits checks for all-zero value result with a key of order p-1 (order 2)",
+ "X25519 deriveBits checks for all-zero value result with a key of order p (=0, order 4)",
+ "X25519 deriveBits checks for all-zero value result with a key of order p+1 (=1, order 1)",
+ "X448 deriveBits checks for all-zero value result with a key of order 0",
+ "X448 deriveBits checks for all-zero value result with a key of order 1",
+ "X448 deriveBits checks for all-zero value result with a key of order p-1 (order 2)",
+ "X448 deriveBits checks for all-zero value result with a key of order p (=0, order 4)",
+ "X448 deriveBits checks for all-zero value result with a key of order p+1 (=1, order 1)",
+ "Key derivation using a X25519 generated keys.",
+ "Key derivation using a X448 generated keys.",
+ "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,
+ "digest.https.any.worker.html": true
+ },
+ "encrypt_decrypt": {
+ "aes_cbc.https.any.html": true,
+ "aes_cbc.https.any.worker.html": true,
+ "aes_ctr.https.any.html": true,
+ "aes_ctr.https.any.worker.html": true,
+ "aes_gcm.https.any.html": [
+ "AES-GCM 128-bit key, 32-bit tag, 96-bit iv decryption",
+ "AES-GCM 128-bit key, no additional data, 32-bit tag, 96-bit iv decryption",
+ "AES-GCM 128-bit key, 64-bit tag, 96-bit iv decryption",
+ "AES-GCM 128-bit key, no additional data, 64-bit tag, 96-bit iv decryption",
+ "AES-GCM 128-bit key, 96-bit tag, 96-bit iv decryption",
+ "AES-GCM 128-bit key, no additional data, 96-bit tag, 96-bit iv decryption",
+ "AES-GCM 128-bit key, 104-bit tag, 96-bit iv decryption",
+ "AES-GCM 128-bit key, no additional data, 104-bit tag, 96-bit iv decryption",
+ "AES-GCM 128-bit key, 112-bit tag, 96-bit iv decryption",
+ "AES-GCM 128-bit key, no additional data, 112-bit tag, 96-bit iv decryption",
+ "AES-GCM 128-bit key, 120-bit tag, 96-bit iv decryption",
+ "AES-GCM 128-bit key, no additional data, 120-bit tag, 96-bit iv decryption",
+ "AES-GCM 192-bit key, 32-bit tag, 96-bit iv decryption",
+ "AES-GCM 192-bit key, no additional data, 32-bit tag, 96-bit iv decryption",
+ "AES-GCM 192-bit key, 64-bit tag, 96-bit iv decryption",
+ "AES-GCM 192-bit key, no additional data, 64-bit tag, 96-bit iv decryption",
+ "AES-GCM 192-bit key, 96-bit tag, 96-bit iv decryption",
+ "AES-GCM 192-bit key, no additional data, 96-bit tag, 96-bit iv decryption",
+ "AES-GCM 192-bit key, 104-bit tag, 96-bit iv decryption",
+ "AES-GCM 192-bit key, no additional data, 104-bit tag, 96-bit iv decryption",
+ "AES-GCM 192-bit key, 112-bit tag, 96-bit iv decryption",
+ "AES-GCM 192-bit key, no additional data, 112-bit tag, 96-bit iv decryption",
+ "AES-GCM 192-bit key, 120-bit tag, 96-bit iv decryption",
+ "AES-GCM 192-bit key, no additional data, 120-bit tag, 96-bit iv decryption",
+ "AES-GCM 256-bit key, 32-bit tag, 96-bit iv decryption",
+ "AES-GCM 256-bit key, no additional data, 32-bit tag, 96-bit iv decryption",
+ "AES-GCM 256-bit key, 64-bit tag, 96-bit iv decryption",
+ "AES-GCM 256-bit key, no additional data, 64-bit tag, 96-bit iv decryption",
+ "AES-GCM 256-bit key, 96-bit tag, 96-bit iv decryption",
+ "AES-GCM 256-bit key, no additional data, 96-bit tag, 96-bit iv decryption",
+ "AES-GCM 256-bit key, 104-bit tag, 96-bit iv decryption",
+ "AES-GCM 256-bit key, no additional data, 104-bit tag, 96-bit iv decryption",
+ "AES-GCM 256-bit key, 112-bit tag, 96-bit iv decryption",
+ "AES-GCM 256-bit key, no additional data, 112-bit tag, 96-bit iv decryption",
+ "AES-GCM 256-bit key, 120-bit tag, 96-bit iv decryption",
+ "AES-GCM 256-bit key, no additional data, 120-bit tag, 96-bit iv decryption",
+ "AES-GCM 128-bit key, 32-bit tag, 96-bit iv decryption with altered ciphertext",
+ "AES-GCM 128-bit key, no additional data, 32-bit tag, 96-bit iv decryption with altered ciphertext",
+ "AES-GCM 128-bit key, 64-bit tag, 96-bit iv decryption with altered ciphertext",
+ "AES-GCM 128-bit key, no additional data, 64-bit tag, 96-bit iv decryption with altered ciphertext",
+ "AES-GCM 128-bit key, 96-bit tag, 96-bit iv decryption with altered ciphertext",
+ "AES-GCM 128-bit key, no additional data, 96-bit tag, 96-bit iv decryption with altered ciphertext",
+ "AES-GCM 128-bit key, 104-bit tag, 96-bit iv decryption with altered ciphertext",
+ "AES-GCM 128-bit key, no additional data, 104-bit tag, 96-bit iv decryption with altered ciphertext",
+ "AES-GCM 128-bit key, 112-bit tag, 96-bit iv decryption with altered ciphertext",
+ "AES-GCM 128-bit key, no additional data, 112-bit tag, 96-bit iv decryption with altered ciphertext",
+ "AES-GCM 128-bit key, 120-bit tag, 96-bit iv decryption with altered ciphertext",
+ "AES-GCM 128-bit key, no additional data, 120-bit tag, 96-bit iv decryption with altered ciphertext",
+ "AES-GCM 192-bit key, 32-bit tag, 96-bit iv decryption with altered ciphertext",
+ "AES-GCM 192-bit key, no additional data, 32-bit tag, 96-bit iv decryption with altered ciphertext",
+ "AES-GCM 192-bit key, 64-bit tag, 96-bit iv decryption with altered ciphertext",
+ "AES-GCM 192-bit key, no additional data, 64-bit tag, 96-bit iv decryption with altered ciphertext",
+ "AES-GCM 192-bit key, 96-bit tag, 96-bit iv decryption with altered ciphertext",
+ "AES-GCM 192-bit key, no additional data, 96-bit tag, 96-bit iv decryption with altered ciphertext",
+ "AES-GCM 192-bit key, 104-bit tag, 96-bit iv decryption with altered ciphertext",
+ "AES-GCM 192-bit key, no additional data, 104-bit tag, 96-bit iv decryption with altered ciphertext",
+ "AES-GCM 192-bit key, 112-bit tag, 96-bit iv decryption with altered ciphertext",
+ "AES-GCM 192-bit key, no additional data, 112-bit tag, 96-bit iv decryption with altered ciphertext",
+ "AES-GCM 192-bit key, 120-bit tag, 96-bit iv decryption with altered ciphertext",
+ "AES-GCM 192-bit key, no additional data, 120-bit tag, 96-bit iv decryption with altered ciphertext",
+ "AES-GCM 256-bit key, 32-bit tag, 96-bit iv decryption with altered ciphertext",
+ "AES-GCM 256-bit key, no additional data, 32-bit tag, 96-bit iv decryption with altered ciphertext",
+ "AES-GCM 256-bit key, 64-bit tag, 96-bit iv decryption with altered ciphertext",
+ "AES-GCM 256-bit key, no additional data, 64-bit tag, 96-bit iv decryption with altered ciphertext",
+ "AES-GCM 256-bit key, 96-bit tag, 96-bit iv decryption with altered ciphertext",
+ "AES-GCM 256-bit key, no additional data, 96-bit tag, 96-bit iv decryption with altered ciphertext",
+ "AES-GCM 256-bit key, 104-bit tag, 96-bit iv decryption with altered ciphertext",
+ "AES-GCM 256-bit key, no additional data, 104-bit tag, 96-bit iv decryption with altered ciphertext",
+ "AES-GCM 256-bit key, 112-bit tag, 96-bit iv decryption with altered ciphertext",
+ "AES-GCM 256-bit key, no additional data, 112-bit tag, 96-bit iv decryption with altered ciphertext",
+ "AES-GCM 256-bit key, 120-bit tag, 96-bit iv decryption with altered ciphertext",
+ "AES-GCM 256-bit key, no additional data, 120-bit tag, 96-bit iv decryption with altered ciphertext"
+ ],
+ "aes_gcm.https.any.worker.html": [
+ "AES-GCM 128-bit key, 32-bit tag, 96-bit iv decryption",
+ "AES-GCM 128-bit key, no additional data, 32-bit tag, 96-bit iv decryption",
+ "AES-GCM 128-bit key, 64-bit tag, 96-bit iv decryption",
+ "AES-GCM 128-bit key, no additional data, 64-bit tag, 96-bit iv decryption",
+ "AES-GCM 128-bit key, 96-bit tag, 96-bit iv decryption",
+ "AES-GCM 128-bit key, no additional data, 96-bit tag, 96-bit iv decryption",
+ "AES-GCM 128-bit key, 104-bit tag, 96-bit iv decryption",
+ "AES-GCM 128-bit key, no additional data, 104-bit tag, 96-bit iv decryption",
+ "AES-GCM 128-bit key, 112-bit tag, 96-bit iv decryption",
+ "AES-GCM 128-bit key, no additional data, 112-bit tag, 96-bit iv decryption",
+ "AES-GCM 128-bit key, 120-bit tag, 96-bit iv decryption",
+ "AES-GCM 128-bit key, no additional data, 120-bit tag, 96-bit iv decryption",
+ "AES-GCM 192-bit key, 32-bit tag, 96-bit iv decryption",
+ "AES-GCM 192-bit key, no additional data, 32-bit tag, 96-bit iv decryption",
+ "AES-GCM 192-bit key, 64-bit tag, 96-bit iv decryption",
+ "AES-GCM 192-bit key, no additional data, 64-bit tag, 96-bit iv decryption",
+ "AES-GCM 192-bit key, 96-bit tag, 96-bit iv decryption",
+ "AES-GCM 192-bit key, no additional data, 96-bit tag, 96-bit iv decryption",
+ "AES-GCM 192-bit key, 104-bit tag, 96-bit iv decryption",
+ "AES-GCM 192-bit key, no additional data, 104-bit tag, 96-bit iv decryption",
+ "AES-GCM 192-bit key, 112-bit tag, 96-bit iv decryption",
+ "AES-GCM 192-bit key, no additional data, 112-bit tag, 96-bit iv decryption",
+ "AES-GCM 192-bit key, 120-bit tag, 96-bit iv decryption",
+ "AES-GCM 192-bit key, no additional data, 120-bit tag, 96-bit iv decryption",
+ "AES-GCM 256-bit key, 32-bit tag, 96-bit iv decryption",
+ "AES-GCM 256-bit key, no additional data, 32-bit tag, 96-bit iv decryption",
+ "AES-GCM 256-bit key, 64-bit tag, 96-bit iv decryption",
+ "AES-GCM 256-bit key, no additional data, 64-bit tag, 96-bit iv decryption",
+ "AES-GCM 256-bit key, 96-bit tag, 96-bit iv decryption",
+ "AES-GCM 256-bit key, no additional data, 96-bit tag, 96-bit iv decryption",
+ "AES-GCM 256-bit key, 104-bit tag, 96-bit iv decryption",
+ "AES-GCM 256-bit key, no additional data, 104-bit tag, 96-bit iv decryption",
+ "AES-GCM 256-bit key, 112-bit tag, 96-bit iv decryption",
+ "AES-GCM 256-bit key, no additional data, 112-bit tag, 96-bit iv decryption",
+ "AES-GCM 256-bit key, 120-bit tag, 96-bit iv decryption",
+ "AES-GCM 256-bit key, no additional data, 120-bit tag, 96-bit iv decryption",
+ "AES-GCM 128-bit key, 32-bit tag, 96-bit iv decryption with altered ciphertext",
+ "AES-GCM 128-bit key, no additional data, 32-bit tag, 96-bit iv decryption with altered ciphertext",
+ "AES-GCM 128-bit key, 64-bit tag, 96-bit iv decryption with altered ciphertext",
+ "AES-GCM 128-bit key, no additional data, 64-bit tag, 96-bit iv decryption with altered ciphertext",
+ "AES-GCM 128-bit key, 96-bit tag, 96-bit iv decryption with altered ciphertext",
+ "AES-GCM 128-bit key, no additional data, 96-bit tag, 96-bit iv decryption with altered ciphertext",
+ "AES-GCM 128-bit key, 104-bit tag, 96-bit iv decryption with altered ciphertext",
+ "AES-GCM 128-bit key, no additional data, 104-bit tag, 96-bit iv decryption with altered ciphertext",
+ "AES-GCM 128-bit key, 112-bit tag, 96-bit iv decryption with altered ciphertext",
+ "AES-GCM 128-bit key, no additional data, 112-bit tag, 96-bit iv decryption with altered ciphertext",
+ "AES-GCM 128-bit key, 120-bit tag, 96-bit iv decryption with altered ciphertext",
+ "AES-GCM 128-bit key, no additional data, 120-bit tag, 96-bit iv decryption with altered ciphertext",
+ "AES-GCM 192-bit key, 32-bit tag, 96-bit iv decryption with altered ciphertext",
+ "AES-GCM 192-bit key, no additional data, 32-bit tag, 96-bit iv decryption with altered ciphertext",
+ "AES-GCM 192-bit key, 64-bit tag, 96-bit iv decryption with altered ciphertext",
+ "AES-GCM 192-bit key, no additional data, 64-bit tag, 96-bit iv decryption with altered ciphertext",
+ "AES-GCM 192-bit key, 96-bit tag, 96-bit iv decryption with altered ciphertext",
+ "AES-GCM 192-bit key, no additional data, 96-bit tag, 96-bit iv decryption with altered ciphertext",
+ "AES-GCM 192-bit key, 104-bit tag, 96-bit iv decryption with altered ciphertext",
+ "AES-GCM 192-bit key, no additional data, 104-bit tag, 96-bit iv decryption with altered ciphertext",
+ "AES-GCM 192-bit key, 112-bit tag, 96-bit iv decryption with altered ciphertext",
+ "AES-GCM 192-bit key, no additional data, 112-bit tag, 96-bit iv decryption with altered ciphertext",
+ "AES-GCM 192-bit key, 120-bit tag, 96-bit iv decryption with altered ciphertext",
+ "AES-GCM 192-bit key, no additional data, 120-bit tag, 96-bit iv decryption with altered ciphertext",
+ "AES-GCM 256-bit key, 32-bit tag, 96-bit iv decryption with altered ciphertext",
+ "AES-GCM 256-bit key, no additional data, 32-bit tag, 96-bit iv decryption with altered ciphertext",
+ "AES-GCM 256-bit key, 64-bit tag, 96-bit iv decryption with altered ciphertext",
+ "AES-GCM 256-bit key, no additional data, 64-bit tag, 96-bit iv decryption with altered ciphertext",
+ "AES-GCM 256-bit key, 96-bit tag, 96-bit iv decryption with altered ciphertext",
+ "AES-GCM 256-bit key, no additional data, 96-bit tag, 96-bit iv decryption with altered ciphertext",
+ "AES-GCM 256-bit key, 104-bit tag, 96-bit iv decryption with altered ciphertext",
+ "AES-GCM 256-bit key, no additional data, 104-bit tag, 96-bit iv decryption with altered ciphertext",
+ "AES-GCM 256-bit key, 112-bit tag, 96-bit iv decryption with altered ciphertext",
+ "AES-GCM 256-bit key, no additional data, 112-bit tag, 96-bit iv decryption with altered ciphertext",
+ "AES-GCM 256-bit key, 120-bit tag, 96-bit iv decryption with altered ciphertext",
+ "AES-GCM 256-bit key, no additional data, 120-bit tag, 96-bit iv decryption with altered ciphertext"
+ ],
+ "rsa_oaep.https.any.html": true,
+ "rsa_oaep.https.any.worker.html": true,
+ "aes_gcm_256_iv.https.any.html": [
+ "AES-GCM 128-bit key, 32-bit tag, 256-bit iv",
+ "AES-GCM 128-bit key, no additional data, 32-bit tag, 256-bit iv",
+ "AES-GCM 128-bit key, 64-bit tag, 256-bit iv",
+ "AES-GCM 128-bit key, no additional data, 64-bit tag, 256-bit iv",
+ "AES-GCM 128-bit key, 96-bit tag, 256-bit iv",
+ "AES-GCM 128-bit key, no additional data, 96-bit tag, 256-bit iv",
+ "AES-GCM 128-bit key, 104-bit tag, 256-bit iv",
+ "AES-GCM 128-bit key, no additional data, 104-bit tag, 256-bit iv",
+ "AES-GCM 128-bit key, 112-bit tag, 256-bit iv",
+ "AES-GCM 128-bit key, no additional data, 112-bit tag, 256-bit iv",
+ "AES-GCM 128-bit key, 120-bit tag, 256-bit iv",
+ "AES-GCM 128-bit key, no additional data, 120-bit tag, 256-bit iv",
+ "AES-GCM 128-bit key, 128-bit tag, 256-bit iv",
+ "AES-GCM 128-bit key, no additional data, 128-bit tag, 256-bit iv",
+ "AES-GCM 192-bit key, 32-bit tag, 256-bit iv",
+ "AES-GCM 192-bit key, no additional data, 32-bit tag, 256-bit iv",
+ "AES-GCM 192-bit key, 64-bit tag, 256-bit iv",
+ "AES-GCM 192-bit key, no additional data, 64-bit tag, 256-bit iv",
+ "AES-GCM 192-bit key, 96-bit tag, 256-bit iv",
+ "AES-GCM 192-bit key, no additional data, 96-bit tag, 256-bit iv",
+ "AES-GCM 192-bit key, 104-bit tag, 256-bit iv",
+ "AES-GCM 192-bit key, no additional data, 104-bit tag, 256-bit iv",
+ "AES-GCM 192-bit key, 112-bit tag, 256-bit iv",
+ "AES-GCM 192-bit key, no additional data, 112-bit tag, 256-bit iv",
+ "AES-GCM 192-bit key, 120-bit tag, 256-bit iv",
+ "AES-GCM 192-bit key, no additional data, 120-bit tag, 256-bit iv",
+ "AES-GCM 192-bit key, 128-bit tag, 256-bit iv",
+ "AES-GCM 192-bit key, no additional data, 128-bit tag, 256-bit iv",
+ "AES-GCM 256-bit key, 32-bit tag, 256-bit iv",
+ "AES-GCM 256-bit key, no additional data, 32-bit tag, 256-bit iv",
+ "AES-GCM 256-bit key, 64-bit tag, 256-bit iv",
+ "AES-GCM 256-bit key, no additional data, 64-bit tag, 256-bit iv",
+ "AES-GCM 256-bit key, 96-bit tag, 256-bit iv",
+ "AES-GCM 256-bit key, no additional data, 96-bit tag, 256-bit iv",
+ "AES-GCM 256-bit key, 104-bit tag, 256-bit iv",
+ "AES-GCM 256-bit key, no additional data, 104-bit tag, 256-bit iv",
+ "AES-GCM 256-bit key, 112-bit tag, 256-bit iv",
+ "AES-GCM 256-bit key, no additional data, 112-bit tag, 256-bit iv",
+ "AES-GCM 256-bit key, 120-bit tag, 256-bit iv",
+ "AES-GCM 256-bit key, no additional data, 120-bit tag, 256-bit iv",
+ "AES-GCM 256-bit key, 128-bit tag, 256-bit iv",
+ "AES-GCM 256-bit key, no additional data, 128-bit tag, 256-bit iv",
+ "AES-GCM 128-bit key, 32-bit tag, 256-bit iv with altered plaintext",
+ "AES-GCM 128-bit key, no additional data, 32-bit tag, 256-bit iv with altered plaintext",
+ "AES-GCM 128-bit key, 64-bit tag, 256-bit iv with altered plaintext",
+ "AES-GCM 128-bit key, no additional data, 64-bit tag, 256-bit iv with altered plaintext",
+ "AES-GCM 128-bit key, 96-bit tag, 256-bit iv with altered plaintext",
+ "AES-GCM 128-bit key, no additional data, 96-bit tag, 256-bit iv with altered plaintext",
+ "AES-GCM 128-bit key, 104-bit tag, 256-bit iv with altered plaintext",
+ "AES-GCM 128-bit key, no additional data, 104-bit tag, 256-bit iv with altered plaintext",
+ "AES-GCM 128-bit key, 112-bit tag, 256-bit iv with altered plaintext",
+ "AES-GCM 128-bit key, no additional data, 112-bit tag, 256-bit iv with altered plaintext",
+ "AES-GCM 128-bit key, 120-bit tag, 256-bit iv with altered plaintext",
+ "AES-GCM 128-bit key, no additional data, 120-bit tag, 256-bit iv with altered plaintext",
+ "AES-GCM 128-bit key, 128-bit tag, 256-bit iv with altered plaintext",
+ "AES-GCM 128-bit key, no additional data, 128-bit tag, 256-bit iv with altered plaintext",
+ "AES-GCM 192-bit key, 32-bit tag, 256-bit iv with altered plaintext",
+ "AES-GCM 192-bit key, no additional data, 32-bit tag, 256-bit iv with altered plaintext",
+ "AES-GCM 192-bit key, 64-bit tag, 256-bit iv with altered plaintext",
+ "AES-GCM 192-bit key, no additional data, 64-bit tag, 256-bit iv with altered plaintext",
+ "AES-GCM 192-bit key, 96-bit tag, 256-bit iv with altered plaintext",
+ "AES-GCM 192-bit key, no additional data, 96-bit tag, 256-bit iv with altered plaintext",
+ "AES-GCM 192-bit key, 104-bit tag, 256-bit iv with altered plaintext",
+ "AES-GCM 192-bit key, no additional data, 104-bit tag, 256-bit iv with altered plaintext",
+ "AES-GCM 192-bit key, 112-bit tag, 256-bit iv with altered plaintext",
+ "AES-GCM 192-bit key, no additional data, 112-bit tag, 256-bit iv with altered plaintext",
+ "AES-GCM 192-bit key, 120-bit tag, 256-bit iv with altered plaintext",
+ "AES-GCM 192-bit key, no additional data, 120-bit tag, 256-bit iv with altered plaintext",
+ "AES-GCM 192-bit key, 128-bit tag, 256-bit iv with altered plaintext",
+ "AES-GCM 192-bit key, no additional data, 128-bit tag, 256-bit iv with altered plaintext",
+ "AES-GCM 256-bit key, 32-bit tag, 256-bit iv with altered plaintext",
+ "AES-GCM 256-bit key, no additional data, 32-bit tag, 256-bit iv with altered plaintext",
+ "AES-GCM 256-bit key, 64-bit tag, 256-bit iv with altered plaintext",
+ "AES-GCM 256-bit key, no additional data, 64-bit tag, 256-bit iv with altered plaintext",
+ "AES-GCM 256-bit key, 96-bit tag, 256-bit iv with altered plaintext",
+ "AES-GCM 256-bit key, no additional data, 96-bit tag, 256-bit iv with altered plaintext",
+ "AES-GCM 256-bit key, 104-bit tag, 256-bit iv with altered plaintext",
+ "AES-GCM 256-bit key, no additional data, 104-bit tag, 256-bit iv with altered plaintext",
+ "AES-GCM 256-bit key, 112-bit tag, 256-bit iv with altered plaintext",
+ "AES-GCM 256-bit key, no additional data, 112-bit tag, 256-bit iv with altered plaintext",
+ "AES-GCM 256-bit key, 120-bit tag, 256-bit iv with altered plaintext",
+ "AES-GCM 256-bit key, no additional data, 120-bit tag, 256-bit iv with altered plaintext",
+ "AES-GCM 256-bit key, 128-bit tag, 256-bit iv with altered plaintext",
+ "AES-GCM 256-bit key, no additional data, 128-bit tag, 256-bit iv with altered plaintext",
+ "AES-GCM 128-bit key, 32-bit tag, 256-bit iv decryption",
+ "AES-GCM 128-bit key, no additional data, 32-bit tag, 256-bit iv decryption",
+ "AES-GCM 128-bit key, 64-bit tag, 256-bit iv decryption",
+ "AES-GCM 128-bit key, no additional data, 64-bit tag, 256-bit iv decryption",
+ "AES-GCM 128-bit key, 96-bit tag, 256-bit iv decryption",
+ "AES-GCM 128-bit key, no additional data, 96-bit tag, 256-bit iv decryption",
+ "AES-GCM 128-bit key, 104-bit tag, 256-bit iv decryption",
+ "AES-GCM 128-bit key, no additional data, 104-bit tag, 256-bit iv decryption",
+ "AES-GCM 128-bit key, 112-bit tag, 256-bit iv decryption",
+ "AES-GCM 128-bit key, no additional data, 112-bit tag, 256-bit iv decryption",
+ "AES-GCM 128-bit key, 120-bit tag, 256-bit iv decryption",
+ "AES-GCM 128-bit key, no additional data, 120-bit tag, 256-bit iv decryption",
+ "AES-GCM 128-bit key, 128-bit tag, 256-bit iv decryption",
+ "AES-GCM 128-bit key, no additional data, 128-bit tag, 256-bit iv decryption",
+ "AES-GCM 192-bit key, 32-bit tag, 256-bit iv decryption",
+ "AES-GCM 192-bit key, no additional data, 32-bit tag, 256-bit iv decryption",
+ "AES-GCM 192-bit key, 64-bit tag, 256-bit iv decryption",
+ "AES-GCM 192-bit key, no additional data, 64-bit tag, 256-bit iv decryption",
+ "AES-GCM 192-bit key, 96-bit tag, 256-bit iv decryption",
+ "AES-GCM 192-bit key, no additional data, 96-bit tag, 256-bit iv decryption",
+ "AES-GCM 192-bit key, 104-bit tag, 256-bit iv decryption",
+ "AES-GCM 192-bit key, no additional data, 104-bit tag, 256-bit iv decryption",
+ "AES-GCM 192-bit key, 112-bit tag, 256-bit iv decryption",
+ "AES-GCM 192-bit key, no additional data, 112-bit tag, 256-bit iv decryption",
+ "AES-GCM 192-bit key, 120-bit tag, 256-bit iv decryption",
+ "AES-GCM 192-bit key, no additional data, 120-bit tag, 256-bit iv decryption",
+ "AES-GCM 192-bit key, 128-bit tag, 256-bit iv decryption",
+ "AES-GCM 192-bit key, no additional data, 128-bit tag, 256-bit iv decryption",
+ "AES-GCM 256-bit key, 32-bit tag, 256-bit iv decryption",
+ "AES-GCM 256-bit key, no additional data, 32-bit tag, 256-bit iv decryption",
+ "AES-GCM 256-bit key, 64-bit tag, 256-bit iv decryption",
+ "AES-GCM 256-bit key, no additional data, 64-bit tag, 256-bit iv decryption",
+ "AES-GCM 256-bit key, 96-bit tag, 256-bit iv decryption",
+ "AES-GCM 256-bit key, no additional data, 96-bit tag, 256-bit iv decryption",
+ "AES-GCM 256-bit key, 104-bit tag, 256-bit iv decryption",
+ "AES-GCM 256-bit key, no additional data, 104-bit tag, 256-bit iv decryption",
+ "AES-GCM 256-bit key, 112-bit tag, 256-bit iv decryption",
+ "AES-GCM 256-bit key, no additional data, 112-bit tag, 256-bit iv decryption",
+ "AES-GCM 256-bit key, 120-bit tag, 256-bit iv decryption",
+ "AES-GCM 256-bit key, no additional data, 120-bit tag, 256-bit iv decryption",
+ "AES-GCM 256-bit key, 128-bit tag, 256-bit iv decryption",
+ "AES-GCM 256-bit key, no additional data, 128-bit tag, 256-bit iv decryption",
+ "AES-GCM 128-bit key, 32-bit tag, 256-bit iv decryption with altered ciphertext",
+ "AES-GCM 128-bit key, no additional data, 32-bit tag, 256-bit iv decryption with altered ciphertext",
+ "AES-GCM 128-bit key, 64-bit tag, 256-bit iv decryption with altered ciphertext",
+ "AES-GCM 128-bit key, no additional data, 64-bit tag, 256-bit iv decryption with altered ciphertext",
+ "AES-GCM 128-bit key, 96-bit tag, 256-bit iv decryption with altered ciphertext",
+ "AES-GCM 128-bit key, no additional data, 96-bit tag, 256-bit iv decryption with altered ciphertext",
+ "AES-GCM 128-bit key, 104-bit tag, 256-bit iv decryption with altered ciphertext",
+ "AES-GCM 128-bit key, no additional data, 104-bit tag, 256-bit iv decryption with altered ciphertext",
+ "AES-GCM 128-bit key, 112-bit tag, 256-bit iv decryption with altered ciphertext",
+ "AES-GCM 128-bit key, no additional data, 112-bit tag, 256-bit iv decryption with altered ciphertext",
+ "AES-GCM 128-bit key, 120-bit tag, 256-bit iv decryption with altered ciphertext",
+ "AES-GCM 128-bit key, no additional data, 120-bit tag, 256-bit iv decryption with altered ciphertext",
+ "AES-GCM 128-bit key, 128-bit tag, 256-bit iv decryption with altered ciphertext",
+ "AES-GCM 128-bit key, no additional data, 128-bit tag, 256-bit iv decryption with altered ciphertext",
+ "AES-GCM 192-bit key, 32-bit tag, 256-bit iv decryption with altered ciphertext",
+ "AES-GCM 192-bit key, no additional data, 32-bit tag, 256-bit iv decryption with altered ciphertext",
+ "AES-GCM 192-bit key, 64-bit tag, 256-bit iv decryption with altered ciphertext",
+ "AES-GCM 192-bit key, no additional data, 64-bit tag, 256-bit iv decryption with altered ciphertext",
+ "AES-GCM 192-bit key, 96-bit tag, 256-bit iv decryption with altered ciphertext",
+ "AES-GCM 192-bit key, no additional data, 96-bit tag, 256-bit iv decryption with altered ciphertext",
+ "AES-GCM 192-bit key, 104-bit tag, 256-bit iv decryption with altered ciphertext",
+ "AES-GCM 192-bit key, no additional data, 104-bit tag, 256-bit iv decryption with altered ciphertext",
+ "AES-GCM 192-bit key, 112-bit tag, 256-bit iv decryption with altered ciphertext",
+ "AES-GCM 192-bit key, no additional data, 112-bit tag, 256-bit iv decryption with altered ciphertext",
+ "AES-GCM 192-bit key, 120-bit tag, 256-bit iv decryption with altered ciphertext",
+ "AES-GCM 192-bit key, no additional data, 120-bit tag, 256-bit iv decryption with altered ciphertext",
+ "AES-GCM 192-bit key, 128-bit tag, 256-bit iv decryption with altered ciphertext",
+ "AES-GCM 192-bit key, no additional data, 128-bit tag, 256-bit iv decryption with altered ciphertext",
+ "AES-GCM 256-bit key, 32-bit tag, 256-bit iv decryption with altered ciphertext",
+ "AES-GCM 256-bit key, no additional data, 32-bit tag, 256-bit iv decryption with altered ciphertext",
+ "AES-GCM 256-bit key, 64-bit tag, 256-bit iv decryption with altered ciphertext",
+ "AES-GCM 256-bit key, no additional data, 64-bit tag, 256-bit iv decryption with altered ciphertext",
+ "AES-GCM 256-bit key, 96-bit tag, 256-bit iv decryption with altered ciphertext",
+ "AES-GCM 256-bit key, no additional data, 96-bit tag, 256-bit iv decryption with altered ciphertext",
+ "AES-GCM 256-bit key, 104-bit tag, 256-bit iv decryption with altered ciphertext",
+ "AES-GCM 256-bit key, no additional data, 104-bit tag, 256-bit iv decryption with altered ciphertext",
+ "AES-GCM 256-bit key, 112-bit tag, 256-bit iv decryption with altered ciphertext",
+ "AES-GCM 256-bit key, no additional data, 112-bit tag, 256-bit iv decryption with altered ciphertext",
+ "AES-GCM 256-bit key, 120-bit tag, 256-bit iv decryption with altered ciphertext",
+ "AES-GCM 256-bit key, no additional data, 120-bit tag, 256-bit iv decryption with altered ciphertext",
+ "AES-GCM 256-bit key, 128-bit tag, 256-bit iv decryption with altered ciphertext",
+ "AES-GCM 256-bit key, no additional data, 128-bit tag, 256-bit iv decryption with altered ciphertext"
+ ],
+ "aes_gcm_256_iv.https.any.worker.html": [
+ "AES-GCM 128-bit key, 32-bit tag, 256-bit iv",
+ "AES-GCM 128-bit key, no additional data, 32-bit tag, 256-bit iv",
+ "AES-GCM 128-bit key, 64-bit tag, 256-bit iv",
+ "AES-GCM 128-bit key, no additional data, 64-bit tag, 256-bit iv",
+ "AES-GCM 128-bit key, 96-bit tag, 256-bit iv",
+ "AES-GCM 128-bit key, no additional data, 96-bit tag, 256-bit iv",
+ "AES-GCM 128-bit key, 104-bit tag, 256-bit iv",
+ "AES-GCM 128-bit key, no additional data, 104-bit tag, 256-bit iv",
+ "AES-GCM 128-bit key, 112-bit tag, 256-bit iv",
+ "AES-GCM 128-bit key, no additional data, 112-bit tag, 256-bit iv",
+ "AES-GCM 128-bit key, 120-bit tag, 256-bit iv",
+ "AES-GCM 128-bit key, no additional data, 120-bit tag, 256-bit iv",
+ "AES-GCM 128-bit key, 128-bit tag, 256-bit iv",
+ "AES-GCM 128-bit key, no additional data, 128-bit tag, 256-bit iv",
+ "AES-GCM 192-bit key, 32-bit tag, 256-bit iv",
+ "AES-GCM 192-bit key, no additional data, 32-bit tag, 256-bit iv",
+ "AES-GCM 192-bit key, 64-bit tag, 256-bit iv",
+ "AES-GCM 192-bit key, no additional data, 64-bit tag, 256-bit iv",
+ "AES-GCM 192-bit key, 96-bit tag, 256-bit iv",
+ "AES-GCM 192-bit key, no additional data, 96-bit tag, 256-bit iv",
+ "AES-GCM 192-bit key, 104-bit tag, 256-bit iv",
+ "AES-GCM 192-bit key, no additional data, 104-bit tag, 256-bit iv",
+ "AES-GCM 192-bit key, 112-bit tag, 256-bit iv",
+ "AES-GCM 192-bit key, no additional data, 112-bit tag, 256-bit iv",
+ "AES-GCM 192-bit key, 120-bit tag, 256-bit iv",
+ "AES-GCM 192-bit key, no additional data, 120-bit tag, 256-bit iv",
+ "AES-GCM 192-bit key, 128-bit tag, 256-bit iv",
+ "AES-GCM 192-bit key, no additional data, 128-bit tag, 256-bit iv",
+ "AES-GCM 256-bit key, 32-bit tag, 256-bit iv",
+ "AES-GCM 256-bit key, no additional data, 32-bit tag, 256-bit iv",
+ "AES-GCM 256-bit key, 64-bit tag, 256-bit iv",
+ "AES-GCM 256-bit key, no additional data, 64-bit tag, 256-bit iv",
+ "AES-GCM 256-bit key, 96-bit tag, 256-bit iv",
+ "AES-GCM 256-bit key, no additional data, 96-bit tag, 256-bit iv",
+ "AES-GCM 256-bit key, 104-bit tag, 256-bit iv",
+ "AES-GCM 256-bit key, no additional data, 104-bit tag, 256-bit iv",
+ "AES-GCM 256-bit key, 112-bit tag, 256-bit iv",
+ "AES-GCM 256-bit key, no additional data, 112-bit tag, 256-bit iv",
+ "AES-GCM 256-bit key, 120-bit tag, 256-bit iv",
+ "AES-GCM 256-bit key, no additional data, 120-bit tag, 256-bit iv",
+ "AES-GCM 256-bit key, 128-bit tag, 256-bit iv",
+ "AES-GCM 256-bit key, no additional data, 128-bit tag, 256-bit iv",
+ "AES-GCM 128-bit key, 32-bit tag, 256-bit iv with altered plaintext",
+ "AES-GCM 128-bit key, no additional data, 32-bit tag, 256-bit iv with altered plaintext",
+ "AES-GCM 128-bit key, 64-bit tag, 256-bit iv with altered plaintext",
+ "AES-GCM 128-bit key, no additional data, 64-bit tag, 256-bit iv with altered plaintext",
+ "AES-GCM 128-bit key, 96-bit tag, 256-bit iv with altered plaintext",
+ "AES-GCM 128-bit key, no additional data, 96-bit tag, 256-bit iv with altered plaintext",
+ "AES-GCM 128-bit key, 104-bit tag, 256-bit iv with altered plaintext",
+ "AES-GCM 128-bit key, no additional data, 104-bit tag, 256-bit iv with altered plaintext",
+ "AES-GCM 128-bit key, 112-bit tag, 256-bit iv with altered plaintext",
+ "AES-GCM 128-bit key, no additional data, 112-bit tag, 256-bit iv with altered plaintext",
+ "AES-GCM 128-bit key, 120-bit tag, 256-bit iv with altered plaintext",
+ "AES-GCM 128-bit key, no additional data, 120-bit tag, 256-bit iv with altered plaintext",
+ "AES-GCM 128-bit key, 128-bit tag, 256-bit iv with altered plaintext",
+ "AES-GCM 128-bit key, no additional data, 128-bit tag, 256-bit iv with altered plaintext",
+ "AES-GCM 192-bit key, 32-bit tag, 256-bit iv with altered plaintext",
+ "AES-GCM 192-bit key, no additional data, 32-bit tag, 256-bit iv with altered plaintext",
+ "AES-GCM 192-bit key, 64-bit tag, 256-bit iv with altered plaintext",
+ "AES-GCM 192-bit key, no additional data, 64-bit tag, 256-bit iv with altered plaintext",
+ "AES-GCM 192-bit key, 96-bit tag, 256-bit iv with altered plaintext",
+ "AES-GCM 192-bit key, no additional data, 96-bit tag, 256-bit iv with altered plaintext",
+ "AES-GCM 192-bit key, 104-bit tag, 256-bit iv with altered plaintext",
+ "AES-GCM 192-bit key, no additional data, 104-bit tag, 256-bit iv with altered plaintext",
+ "AES-GCM 192-bit key, 112-bit tag, 256-bit iv with altered plaintext",
+ "AES-GCM 192-bit key, no additional data, 112-bit tag, 256-bit iv with altered plaintext",
+ "AES-GCM 192-bit key, 120-bit tag, 256-bit iv with altered plaintext",
+ "AES-GCM 192-bit key, no additional data, 120-bit tag, 256-bit iv with altered plaintext",
+ "AES-GCM 192-bit key, 128-bit tag, 256-bit iv with altered plaintext",
+ "AES-GCM 192-bit key, no additional data, 128-bit tag, 256-bit iv with altered plaintext",
+ "AES-GCM 256-bit key, 32-bit tag, 256-bit iv with altered plaintext",
+ "AES-GCM 256-bit key, no additional data, 32-bit tag, 256-bit iv with altered plaintext",
+ "AES-GCM 256-bit key, 64-bit tag, 256-bit iv with altered plaintext",
+ "AES-GCM 256-bit key, no additional data, 64-bit tag, 256-bit iv with altered plaintext",
+ "AES-GCM 256-bit key, 96-bit tag, 256-bit iv with altered plaintext",
+ "AES-GCM 256-bit key, no additional data, 96-bit tag, 256-bit iv with altered plaintext",
+ "AES-GCM 256-bit key, 104-bit tag, 256-bit iv with altered plaintext",
+ "AES-GCM 256-bit key, no additional data, 104-bit tag, 256-bit iv with altered plaintext",
+ "AES-GCM 256-bit key, 112-bit tag, 256-bit iv with altered plaintext",
+ "AES-GCM 256-bit key, no additional data, 112-bit tag, 256-bit iv with altered plaintext",
+ "AES-GCM 256-bit key, 120-bit tag, 256-bit iv with altered plaintext",
+ "AES-GCM 256-bit key, no additional data, 120-bit tag, 256-bit iv with altered plaintext",
+ "AES-GCM 256-bit key, 128-bit tag, 256-bit iv with altered plaintext",
+ "AES-GCM 256-bit key, no additional data, 128-bit tag, 256-bit iv with altered plaintext",
+ "AES-GCM 128-bit key, 32-bit tag, 256-bit iv decryption",
+ "AES-GCM 128-bit key, no additional data, 32-bit tag, 256-bit iv decryption",
+ "AES-GCM 128-bit key, 64-bit tag, 256-bit iv decryption",
+ "AES-GCM 128-bit key, no additional data, 64-bit tag, 256-bit iv decryption",
+ "AES-GCM 128-bit key, 96-bit tag, 256-bit iv decryption",
+ "AES-GCM 128-bit key, no additional data, 96-bit tag, 256-bit iv decryption",
+ "AES-GCM 128-bit key, 104-bit tag, 256-bit iv decryption",
+ "AES-GCM 128-bit key, no additional data, 104-bit tag, 256-bit iv decryption",
+ "AES-GCM 128-bit key, 112-bit tag, 256-bit iv decryption",
+ "AES-GCM 128-bit key, no additional data, 112-bit tag, 256-bit iv decryption",
+ "AES-GCM 128-bit key, 120-bit tag, 256-bit iv decryption",
+ "AES-GCM 128-bit key, no additional data, 120-bit tag, 256-bit iv decryption",
+ "AES-GCM 128-bit key, 128-bit tag, 256-bit iv decryption",
+ "AES-GCM 128-bit key, no additional data, 128-bit tag, 256-bit iv decryption",
+ "AES-GCM 192-bit key, 32-bit tag, 256-bit iv decryption",
+ "AES-GCM 192-bit key, no additional data, 32-bit tag, 256-bit iv decryption",
+ "AES-GCM 192-bit key, 64-bit tag, 256-bit iv decryption",
+ "AES-GCM 192-bit key, no additional data, 64-bit tag, 256-bit iv decryption",
+ "AES-GCM 192-bit key, 96-bit tag, 256-bit iv decryption",
+ "AES-GCM 192-bit key, no additional data, 96-bit tag, 256-bit iv decryption",
+ "AES-GCM 192-bit key, 104-bit tag, 256-bit iv decryption",
+ "AES-GCM 192-bit key, no additional data, 104-bit tag, 256-bit iv decryption",
+ "AES-GCM 192-bit key, 112-bit tag, 256-bit iv decryption",
+ "AES-GCM 192-bit key, no additional data, 112-bit tag, 256-bit iv decryption",
+ "AES-GCM 192-bit key, 120-bit tag, 256-bit iv decryption",
+ "AES-GCM 192-bit key, no additional data, 120-bit tag, 256-bit iv decryption",
+ "AES-GCM 192-bit key, 128-bit tag, 256-bit iv decryption",
+ "AES-GCM 192-bit key, no additional data, 128-bit tag, 256-bit iv decryption",
+ "AES-GCM 256-bit key, 32-bit tag, 256-bit iv decryption",
+ "AES-GCM 256-bit key, no additional data, 32-bit tag, 256-bit iv decryption",
+ "AES-GCM 256-bit key, 64-bit tag, 256-bit iv decryption",
+ "AES-GCM 256-bit key, no additional data, 64-bit tag, 256-bit iv decryption",
+ "AES-GCM 256-bit key, 96-bit tag, 256-bit iv decryption",
+ "AES-GCM 256-bit key, no additional data, 96-bit tag, 256-bit iv decryption",
+ "AES-GCM 256-bit key, 104-bit tag, 256-bit iv decryption",
+ "AES-GCM 256-bit key, no additional data, 104-bit tag, 256-bit iv decryption",
+ "AES-GCM 256-bit key, 112-bit tag, 256-bit iv decryption",
+ "AES-GCM 256-bit key, no additional data, 112-bit tag, 256-bit iv decryption",
+ "AES-GCM 256-bit key, 120-bit tag, 256-bit iv decryption",
+ "AES-GCM 256-bit key, no additional data, 120-bit tag, 256-bit iv decryption",
+ "AES-GCM 256-bit key, 128-bit tag, 256-bit iv decryption",
+ "AES-GCM 256-bit key, no additional data, 128-bit tag, 256-bit iv decryption",
+ "AES-GCM 128-bit key, 32-bit tag, 256-bit iv decryption with altered ciphertext",
+ "AES-GCM 128-bit key, no additional data, 32-bit tag, 256-bit iv decryption with altered ciphertext",
+ "AES-GCM 128-bit key, 64-bit tag, 256-bit iv decryption with altered ciphertext",
+ "AES-GCM 128-bit key, no additional data, 64-bit tag, 256-bit iv decryption with altered ciphertext",
+ "AES-GCM 128-bit key, 96-bit tag, 256-bit iv decryption with altered ciphertext",
+ "AES-GCM 128-bit key, no additional data, 96-bit tag, 256-bit iv decryption with altered ciphertext",
+ "AES-GCM 128-bit key, 104-bit tag, 256-bit iv decryption with altered ciphertext",
+ "AES-GCM 128-bit key, no additional data, 104-bit tag, 256-bit iv decryption with altered ciphertext",
+ "AES-GCM 128-bit key, 112-bit tag, 256-bit iv decryption with altered ciphertext",
+ "AES-GCM 128-bit key, no additional data, 112-bit tag, 256-bit iv decryption with altered ciphertext",
+ "AES-GCM 128-bit key, 120-bit tag, 256-bit iv decryption with altered ciphertext",
+ "AES-GCM 128-bit key, no additional data, 120-bit tag, 256-bit iv decryption with altered ciphertext",
+ "AES-GCM 128-bit key, 128-bit tag, 256-bit iv decryption with altered ciphertext",
+ "AES-GCM 128-bit key, no additional data, 128-bit tag, 256-bit iv decryption with altered ciphertext",
+ "AES-GCM 192-bit key, 32-bit tag, 256-bit iv decryption with altered ciphertext",
+ "AES-GCM 192-bit key, no additional data, 32-bit tag, 256-bit iv decryption with altered ciphertext",
+ "AES-GCM 192-bit key, 64-bit tag, 256-bit iv decryption with altered ciphertext",
+ "AES-GCM 192-bit key, no additional data, 64-bit tag, 256-bit iv decryption with altered ciphertext",
+ "AES-GCM 192-bit key, 96-bit tag, 256-bit iv decryption with altered ciphertext",
+ "AES-GCM 192-bit key, no additional data, 96-bit tag, 256-bit iv decryption with altered ciphertext",
+ "AES-GCM 192-bit key, 104-bit tag, 256-bit iv decryption with altered ciphertext",
+ "AES-GCM 192-bit key, no additional data, 104-bit tag, 256-bit iv decryption with altered ciphertext",
+ "AES-GCM 192-bit key, 112-bit tag, 256-bit iv decryption with altered ciphertext",
+ "AES-GCM 192-bit key, no additional data, 112-bit tag, 256-bit iv decryption with altered ciphertext",
+ "AES-GCM 192-bit key, 120-bit tag, 256-bit iv decryption with altered ciphertext",
+ "AES-GCM 192-bit key, no additional data, 120-bit tag, 256-bit iv decryption with altered ciphertext",
+ "AES-GCM 192-bit key, 128-bit tag, 256-bit iv decryption with altered ciphertext",
+ "AES-GCM 192-bit key, no additional data, 128-bit tag, 256-bit iv decryption with altered ciphertext",
+ "AES-GCM 256-bit key, 32-bit tag, 256-bit iv decryption with altered ciphertext",
+ "AES-GCM 256-bit key, no additional data, 32-bit tag, 256-bit iv decryption with altered ciphertext",
+ "AES-GCM 256-bit key, 64-bit tag, 256-bit iv decryption with altered ciphertext",
+ "AES-GCM 256-bit key, no additional data, 64-bit tag, 256-bit iv decryption with altered ciphertext",
+ "AES-GCM 256-bit key, 96-bit tag, 256-bit iv decryption with altered ciphertext",
+ "AES-GCM 256-bit key, no additional data, 96-bit tag, 256-bit iv decryption with altered ciphertext",
+ "AES-GCM 256-bit key, 104-bit tag, 256-bit iv decryption with altered ciphertext",
+ "AES-GCM 256-bit key, no additional data, 104-bit tag, 256-bit iv decryption with altered ciphertext",
+ "AES-GCM 256-bit key, 112-bit tag, 256-bit iv decryption with altered ciphertext",
+ "AES-GCM 256-bit key, no additional data, 112-bit tag, 256-bit iv decryption with altered ciphertext",
+ "AES-GCM 256-bit key, 120-bit tag, 256-bit iv decryption with altered ciphertext",
+ "AES-GCM 256-bit key, no additional data, 120-bit tag, 256-bit iv decryption with altered ciphertext",
+ "AES-GCM 256-bit key, 128-bit tag, 256-bit iv decryption with altered ciphertext",
+ "AES-GCM 256-bit key, no additional data, 128-bit tag, 256-bit iv decryption with altered ciphertext"
+ ]
+ },
+ "generateKey": {
+ "failures_AES-CBC.https.any.html": true,
+ "failures_AES-CBC.https.any.worker.html": true,
+ "failures_AES-CTR.https.any.html": true,
+ "failures_AES-CTR.https.any.worker.html": true,
+ "failures_AES-GCM.https.any.html": true,
+ "failures_AES-GCM.https.any.worker.html": true,
+ "failures_AES-KW.https.any.html": true,
+ "failures_AES-KW.https.any.worker.html": true,
+ "failures_ECDH.https.any.html": true,
+ "failures_ECDH.https.any.worker.html": true,
+ "failures_ECDSA.https.any.html": true,
+ "failures_ECDSA.https.any.worker.html": true,
+ "failures_HMAC.https.any.html": true,
+ "failures_HMAC.https.any.worker.html": true,
+ "failures_RSA-OAEP.https.any.html": true,
+ "failures_RSA-OAEP.https.any.worker.html": true,
+ "failures_RSA-PSS.https.any.html": true,
+ "failures_RSA-PSS.https.any.worker.html": true,
+ "failures_RSASSA-PKCS1-v1_5.https.any.html": true,
+ "failures_RSASSA-PKCS1-v1_5.https.any.worker.html": true,
+ "successes_AES-CBC.https.any.html": true,
+ "successes_AES-CBC.https.any.worker.html": true,
+ "successes_AES-CTR.https.any.html": true,
+ "successes_AES-CTR.https.any.worker.html": true,
+ "successes_AES-GCM.https.any.html": true,
+ "successes_AES-GCM.https.any.worker.html": true,
+ "successes_AES-KW.https.any.html": true,
+ "successes_AES-KW.https.any.worker.html": true,
+ "successes_HMAC.https.any.html": true,
+ "successes_HMAC.https.any.worker.html": true,
+ "successes_ECDH.https.any.html": true,
+ "successes_ECDH.https.any.worker.html": true,
+ "successes_ECDSA.https.any.html": true,
+ "successes_ECDSA.https.any.worker.html": true,
+ "successes_RSA-OAEP.https.any.html?1-10": true,
+ "successes_RSA-OAEP.https.any.html?101-110": true,
+ "successes_RSA-OAEP.https.any.html?11-20": true,
+ "successes_RSA-OAEP.https.any.html?111-120": true,
+ "successes_RSA-OAEP.https.any.html?121-130": true,
+ "successes_RSA-OAEP.https.any.html?131-140": true,
+ "successes_RSA-OAEP.https.any.html?141-150": true,
+ "successes_RSA-OAEP.https.any.html?151-last": true,
+ "successes_RSA-OAEP.https.any.html?21-30": true,
+ "successes_RSA-OAEP.https.any.html?31-40": true,
+ "successes_RSA-OAEP.https.any.html?41-50": true,
+ "successes_RSA-OAEP.https.any.html?51-60": true,
+ "successes_RSA-OAEP.https.any.html?61-70": true,
+ "successes_RSA-OAEP.https.any.html?71-80": true,
+ "successes_RSA-OAEP.https.any.html?81-90": true,
+ "successes_RSA-OAEP.https.any.html?91-100": true,
+ "successes_RSA-OAEP.https.any.worker.html?1-10": true,
+ "successes_RSA-OAEP.https.any.worker.html?101-110": true,
+ "successes_RSA-OAEP.https.any.worker.html?11-20": true,
+ "successes_RSA-OAEP.https.any.worker.html?111-120": true,
+ "successes_RSA-OAEP.https.any.worker.html?121-130": true,
+ "successes_RSA-OAEP.https.any.worker.html?131-140": true,
+ "successes_RSA-OAEP.https.any.worker.html?141-150": true,
+ "successes_RSA-OAEP.https.any.worker.html?151-last": true,
+ "successes_RSA-OAEP.https.any.worker.html?21-30": true,
+ "successes_RSA-OAEP.https.any.worker.html?31-40": true,
+ "successes_RSA-OAEP.https.any.worker.html?41-50": true,
+ "successes_RSA-OAEP.https.any.worker.html?51-60": true,
+ "successes_RSA-OAEP.https.any.worker.html?61-70": true,
+ "successes_RSA-OAEP.https.any.worker.html?71-80": true,
+ "successes_RSA-OAEP.https.any.worker.html?81-90": true,
+ "successes_RSA-OAEP.https.any.worker.html?91-100": true,
+ "successes_RSA-PSS.https.any.html?1-10": true,
+ "successes_RSA-PSS.https.any.html?11-20": true,
+ "successes_RSA-PSS.https.any.html?21-30": true,
+ "successes_RSA-PSS.https.any.html?31-last": true,
+ "successes_RSA-PSS.https.any.worker.html?1-10": true,
+ "successes_RSA-PSS.https.any.worker.html?11-20": true,
+ "successes_RSA-PSS.https.any.worker.html?21-30": true,
+ "successes_RSA-PSS.https.any.worker.html?31-last": true,
+ "successes_RSASSA-PKCS1-v1_5.https.any.html?1-10": true,
+ "successes_RSASSA-PKCS1-v1_5.https.any.html?11-20": true,
+ "successes_RSASSA-PKCS1-v1_5.https.any.html?21-30": true,
+ "successes_RSASSA-PKCS1-v1_5.https.any.html?31-last": true,
+ "successes_RSASSA-PKCS1-v1_5.https.any.worker.html?1-10": true,
+ "successes_RSASSA-PKCS1-v1_5.https.any.worker.html?11-20": true,
+ "successes_RSASSA-PKCS1-v1_5.https.any.worker.html?21-30": true,
+ "successes_RSASSA-PKCS1-v1_5.https.any.worker.html?31-last": true,
+ "failures_Ed25519.https.any.html": true,
+ "failures_Ed25519.https.any.worker.html": true,
+ "failures_Ed448.https.any.html": [
+ "Bad usages: generateKey({name: Ed448}, true, [encrypt])",
+ "Bad usages: generateKey({name: Ed448}, true, [sign, encrypt])",
+ "Bad usages: generateKey({name: Ed448}, true, [verify, sign, encrypt])",
+ "Bad usages: generateKey({name: Ed448}, true, [sign, verify, sign, sign, verify, encrypt])",
+ "Bad usages: generateKey({name: Ed448}, true, [decrypt])",
+ "Bad usages: generateKey({name: Ed448}, true, [sign, decrypt])",
+ "Bad usages: generateKey({name: Ed448}, true, [verify, sign, decrypt])",
+ "Bad usages: generateKey({name: Ed448}, true, [sign, verify, sign, sign, verify, decrypt])",
+ "Bad usages: generateKey({name: Ed448}, true, [wrapKey])",
+ "Bad usages: generateKey({name: Ed448}, true, [sign, wrapKey])",
+ "Bad usages: generateKey({name: Ed448}, true, [verify, sign, wrapKey])",
+ "Bad usages: generateKey({name: Ed448}, true, [sign, verify, sign, sign, verify, wrapKey])",
+ "Bad usages: generateKey({name: Ed448}, true, [unwrapKey])",
+ "Bad usages: generateKey({name: Ed448}, true, [sign, unwrapKey])",
+ "Bad usages: generateKey({name: Ed448}, true, [verify, sign, unwrapKey])",
+ "Bad usages: generateKey({name: Ed448}, true, [sign, verify, sign, sign, verify, unwrapKey])",
+ "Bad usages: generateKey({name: Ed448}, true, [deriveKey])",
+ "Bad usages: generateKey({name: Ed448}, true, [sign, deriveKey])",
+ "Bad usages: generateKey({name: Ed448}, true, [verify, sign, deriveKey])",
+ "Bad usages: generateKey({name: Ed448}, true, [sign, verify, sign, sign, verify, deriveKey])",
+ "Bad usages: generateKey({name: Ed448}, true, [deriveBits])",
+ "Bad usages: generateKey({name: Ed448}, true, [sign, deriveBits])",
+ "Bad usages: generateKey({name: Ed448}, true, [verify, sign, deriveBits])",
+ "Bad usages: generateKey({name: Ed448}, true, [sign, verify, sign, sign, verify, deriveBits])",
+ "Empty usages: generateKey({name: Ed448}, false, [])",
+ "Empty usages: generateKey({name: Ed448}, true, [])"
+ ],
+ "failures_Ed448.https.any.worker.html": [
+ "Bad usages: generateKey({name: Ed448}, true, [encrypt])",
+ "Bad usages: generateKey({name: Ed448}, true, [sign, encrypt])",
+ "Bad usages: generateKey({name: Ed448}, true, [verify, sign, encrypt])",
+ "Bad usages: generateKey({name: Ed448}, true, [sign, verify, sign, sign, verify, encrypt])",
+ "Bad usages: generateKey({name: Ed448}, true, [decrypt])",
+ "Bad usages: generateKey({name: Ed448}, true, [sign, decrypt])",
+ "Bad usages: generateKey({name: Ed448}, true, [verify, sign, decrypt])",
+ "Bad usages: generateKey({name: Ed448}, true, [sign, verify, sign, sign, verify, decrypt])",
+ "Bad usages: generateKey({name: Ed448}, true, [wrapKey])",
+ "Bad usages: generateKey({name: Ed448}, true, [sign, wrapKey])",
+ "Bad usages: generateKey({name: Ed448}, true, [verify, sign, wrapKey])",
+ "Bad usages: generateKey({name: Ed448}, true, [sign, verify, sign, sign, verify, wrapKey])",
+ "Bad usages: generateKey({name: Ed448}, true, [unwrapKey])",
+ "Bad usages: generateKey({name: Ed448}, true, [sign, unwrapKey])",
+ "Bad usages: generateKey({name: Ed448}, true, [verify, sign, unwrapKey])",
+ "Bad usages: generateKey({name: Ed448}, true, [sign, verify, sign, sign, verify, unwrapKey])",
+ "Bad usages: generateKey({name: Ed448}, true, [deriveKey])",
+ "Bad usages: generateKey({name: Ed448}, true, [sign, deriveKey])",
+ "Bad usages: generateKey({name: Ed448}, true, [verify, sign, deriveKey])",
+ "Bad usages: generateKey({name: Ed448}, true, [sign, verify, sign, sign, verify, deriveKey])",
+ "Bad usages: generateKey({name: Ed448}, true, [deriveBits])",
+ "Bad usages: generateKey({name: Ed448}, true, [sign, deriveBits])",
+ "Bad usages: generateKey({name: Ed448}, true, [verify, sign, deriveBits])",
+ "Bad usages: generateKey({name: Ed448}, true, [sign, verify, sign, sign, verify, deriveBits])",
+ "Empty usages: generateKey({name: Ed448}, false, [])",
+ "Empty usages: generateKey({name: Ed448}, true, [])"
+ ],
+ "failures_X25519.https.any.html": true,
+ "failures_X25519.https.any.worker.html": true,
+ "failures_X448.https.any.html": [
+ "Bad usages: generateKey({name: X448}, true, [encrypt])",
+ "Bad usages: generateKey({name: X448}, true, [deriveKey, encrypt])",
+ "Bad usages: generateKey({name: X448}, true, [deriveBits, deriveKey, encrypt])",
+ "Bad usages: generateKey({name: X448}, true, [deriveBits, encrypt])",
+ "Bad usages: generateKey({name: X448}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits, encrypt])",
+ "Bad usages: generateKey({name: X448}, true, [decrypt])",
+ "Bad usages: generateKey({name: X448}, true, [deriveKey, decrypt])",
+ "Bad usages: generateKey({name: X448}, true, [deriveBits, deriveKey, decrypt])",
+ "Bad usages: generateKey({name: X448}, true, [deriveBits, decrypt])",
+ "Bad usages: generateKey({name: X448}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits, decrypt])",
+ "Bad usages: generateKey({name: X448}, true, [sign])",
+ "Bad usages: generateKey({name: X448}, true, [deriveKey, sign])",
+ "Bad usages: generateKey({name: X448}, true, [deriveBits, deriveKey, sign])",
+ "Bad usages: generateKey({name: X448}, true, [deriveBits, sign])",
+ "Bad usages: generateKey({name: X448}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits, sign])",
+ "Bad usages: generateKey({name: X448}, true, [verify])",
+ "Bad usages: generateKey({name: X448}, true, [deriveKey, verify])",
+ "Bad usages: generateKey({name: X448}, true, [deriveBits, deriveKey, verify])",
+ "Bad usages: generateKey({name: X448}, true, [deriveBits, verify])",
+ "Bad usages: generateKey({name: X448}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits, verify])",
+ "Bad usages: generateKey({name: X448}, true, [wrapKey])",
+ "Bad usages: generateKey({name: X448}, true, [deriveKey, wrapKey])",
+ "Bad usages: generateKey({name: X448}, true, [deriveBits, deriveKey, wrapKey])",
+ "Bad usages: generateKey({name: X448}, true, [deriveBits, wrapKey])",
+ "Bad usages: generateKey({name: X448}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits, wrapKey])",
+ "Bad usages: generateKey({name: X448}, true, [unwrapKey])",
+ "Bad usages: generateKey({name: X448}, true, [deriveKey, unwrapKey])",
+ "Bad usages: generateKey({name: X448}, true, [deriveBits, deriveKey, unwrapKey])",
+ "Bad usages: generateKey({name: X448}, true, [deriveBits, unwrapKey])",
+ "Bad usages: generateKey({name: X448}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits, unwrapKey])",
+ "Empty usages: generateKey({name: X448}, false, [])",
+ "Empty usages: generateKey({name: X448}, true, [])"
+ ],
+ "failures_X448.https.any.worker.html": [
+ "Bad usages: generateKey({name: X448}, true, [encrypt])",
+ "Bad usages: generateKey({name: X448}, true, [deriveKey, encrypt])",
+ "Bad usages: generateKey({name: X448}, true, [deriveBits, deriveKey, encrypt])",
+ "Bad usages: generateKey({name: X448}, true, [deriveBits, encrypt])",
+ "Bad usages: generateKey({name: X448}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits, encrypt])",
+ "Bad usages: generateKey({name: X448}, true, [decrypt])",
+ "Bad usages: generateKey({name: X448}, true, [deriveKey, decrypt])",
+ "Bad usages: generateKey({name: X448}, true, [deriveBits, deriveKey, decrypt])",
+ "Bad usages: generateKey({name: X448}, true, [deriveBits, decrypt])",
+ "Bad usages: generateKey({name: X448}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits, decrypt])",
+ "Bad usages: generateKey({name: X448}, true, [sign])",
+ "Bad usages: generateKey({name: X448}, true, [deriveKey, sign])",
+ "Bad usages: generateKey({name: X448}, true, [deriveBits, deriveKey, sign])",
+ "Bad usages: generateKey({name: X448}, true, [deriveBits, sign])",
+ "Bad usages: generateKey({name: X448}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits, sign])",
+ "Bad usages: generateKey({name: X448}, true, [verify])",
+ "Bad usages: generateKey({name: X448}, true, [deriveKey, verify])",
+ "Bad usages: generateKey({name: X448}, true, [deriveBits, deriveKey, verify])",
+ "Bad usages: generateKey({name: X448}, true, [deriveBits, verify])",
+ "Bad usages: generateKey({name: X448}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits, verify])",
+ "Bad usages: generateKey({name: X448}, true, [wrapKey])",
+ "Bad usages: generateKey({name: X448}, true, [deriveKey, wrapKey])",
+ "Bad usages: generateKey({name: X448}, true, [deriveBits, deriveKey, wrapKey])",
+ "Bad usages: generateKey({name: X448}, true, [deriveBits, wrapKey])",
+ "Bad usages: generateKey({name: X448}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits, wrapKey])",
+ "Bad usages: generateKey({name: X448}, true, [unwrapKey])",
+ "Bad usages: generateKey({name: X448}, true, [deriveKey, unwrapKey])",
+ "Bad usages: generateKey({name: X448}, true, [deriveBits, deriveKey, unwrapKey])",
+ "Bad usages: generateKey({name: X448}, true, [deriveBits, unwrapKey])",
+ "Bad usages: generateKey({name: X448}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits, unwrapKey])",
+ "Empty usages: generateKey({name: X448}, false, [])",
+ "Empty usages: generateKey({name: X448}, true, [])"
+ ],
+ "successes_Ed25519.https.any.html": true,
+ "successes_Ed25519.https.any.worker.html": true,
+ "successes_Ed448.https.any.html": false,
+ "successes_Ed448.https.any.worker.html": false,
+ "successes_X25519.https.any.html": true,
+ "successes_X25519.https.any.worker.html": true,
+ "successes_X448.https.any.html": false,
+ "successes_X448.https.any.worker.html": false
+ },
+ "historical.any.html": false,
+ "historical.any.worker.html": false,
+ "idlharness.https.any.html": [
+ "Window interface: attribute crypto"
+ ],
+ "idlharness.https.any.worker.html": [
+ "WorkerGlobalScope interface: attribute crypto"
+ ],
+ "import_export": {
+ "ec_importKey.https.any.html": [
+ "Good parameters: P-256 bits (spki, buffer(59, compressed), {name: ECDSA, namedCurve: P-256}, true, [verify])",
+ "Good parameters: P-256 bits (raw, buffer(33, compressed), {name: ECDSA, namedCurve: P-256}, true, [verify])",
+ "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-256 bits (spki, buffer(59, compressed), {name: ECDSA, namedCurve: P-256}, true, [verify, verify])",
+ "Good parameters: P-256 bits (raw, buffer(33, compressed), {name: ECDSA, namedCurve: P-256}, true, [verify, verify])",
+ "Empty Usages: P-256 bits (pkcs8, buffer(138), {name: ECDSA, namedCurve: P-256}, true, [])",
+ "Empty Usages: P-256 bits (jwk, object(kty, crv, x, y, d), {name: ECDSA, namedCurve: P-256}, true, [])",
+ "Empty Usages: P-256 bits (pkcs8, buffer(138), {name: ECDSA, namedCurve: P-256}, false, [])",
+ "Empty Usages: P-256 bits (jwk, object(kty, crv, x, y, d), {name: ECDSA, namedCurve: P-256}, false, [])",
+ "Good parameters: P-384 bits (spki, buffer(72, compressed), {name: ECDSA, namedCurve: P-384}, true, [verify])",
+ "Good parameters: P-384 bits (raw, buffer(49, compressed), {name: ECDSA, namedCurve: P-384}, true, [verify])",
+ "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-384 bits (spki, buffer(72, compressed), {name: ECDSA, namedCurve: P-384}, true, [verify, verify])",
+ "Good parameters: P-384 bits (raw, buffer(49, compressed), {name: ECDSA, namedCurve: P-384}, true, [verify, verify])",
+ "Empty Usages: P-384 bits (pkcs8, buffer(185), {name: ECDSA, namedCurve: P-384}, true, [])",
+ "Empty Usages: P-384 bits (jwk, object(kty, crv, x, y, d), {name: ECDSA, namedCurve: P-384}, true, [])",
+ "Empty Usages: P-384 bits (pkcs8, buffer(185), {name: ECDSA, namedCurve: P-384}, false, [])",
+ "Empty Usages: P-384 bits (jwk, object(kty, crv, x, y, d), {name: ECDSA, namedCurve: P-384}, false, [])",
+ "Good parameters: P-521 bits (spki, buffer(158), {name: ECDSA, namedCurve: P-521}, true, [verify])",
+ "Good parameters: P-521 bits (spki, buffer(90, compressed), {name: ECDSA, namedCurve: P-521}, true, [verify])",
+ "Good parameters: P-521 bits (jwk, object(kty, crv, x, y), {name: ECDSA, namedCurve: P-521}, true, [verify])",
+ "Good parameters: P-521 bits (raw, buffer(133), {name: ECDSA, namedCurve: P-521}, true, [verify])",
+ "Good parameters: P-521 bits (raw, buffer(67, compressed), {name: ECDSA, namedCurve: P-521}, true, [verify])",
+ "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 (spki, buffer(158), {name: ECDSA, namedCurve: P-521}, true, [verify, verify])",
+ "Good parameters: P-521 bits (spki, buffer(90, compressed), {name: ECDSA, namedCurve: P-521}, true, [verify, verify])",
+ "Good parameters: P-521 bits (jwk, object(kty, crv, x, y), {name: ECDSA, namedCurve: P-521}, true, [verify, verify])",
+ "Good parameters: P-521 bits (raw, buffer(133), {name: ECDSA, namedCurve: P-521}, true, [verify, verify])",
+ "Good parameters: P-521 bits (raw, buffer(67, compressed), {name: ECDSA, namedCurve: P-521}, true, [verify, verify])",
+ "Good parameters: P-521 bits (pkcs8, buffer(241), {name: ECDSA, namedCurve: P-521}, true, [sign])",
+ "Good parameters: P-521 bits (pkcs8, buffer(241), {name: ECDSA, namedCurve: P-521}, true, [sign, sign])",
+ "Empty Usages: P-521 bits (pkcs8, buffer(241), {name: ECDSA, namedCurve: P-521}, true, [])",
+ "Good parameters: P-521 bits (jwk, object(kty, crv, x, y, d), {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, sign])",
+ "Empty Usages: P-521 bits (jwk, object(kty, crv, x, y, d), {name: ECDSA, namedCurve: P-521}, true, [])",
+ "Good parameters: P-521 bits (pkcs8, buffer(241), {name: ECDSA, namedCurve: P-521}, false, [sign])",
+ "Good parameters: P-521 bits (pkcs8, buffer(241), {name: ECDSA, namedCurve: P-521}, false, [sign, sign])",
+ "Empty Usages: P-521 bits (pkcs8, buffer(241), {name: ECDSA, namedCurve: P-521}, false, [])",
+ "Good parameters: P-521 bits (jwk, object(kty, crv, x, y, d), {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, sign])",
+ "Empty Usages: P-521 bits (jwk, object(kty, crv, x, y, d), {name: ECDSA, namedCurve: P-521}, false, [])",
+ "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, [])",
+ "Empty Usages: P-256 bits (pkcs8, buffer(138), {name: ECDH, namedCurve: P-256}, true, [])",
+ "Empty Usages: P-256 bits (jwk, object(kty, crv, x, y, d), {name: ECDH, namedCurve: P-256}, true, [])",
+ "Empty Usages: P-256 bits (pkcs8, buffer(138), {name: ECDH, namedCurve: P-256}, false, [])",
+ "Empty Usages: P-256 bits (jwk, object(kty, crv, x, y, d), {name: ECDH, namedCurve: P-256}, false, [])",
+ "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, [])",
+ "Empty Usages: P-384 bits (pkcs8, buffer(185), {name: ECDH, namedCurve: P-384}, true, [])",
+ "Empty Usages: P-384 bits (jwk, object(kty, crv, x, y, d), {name: ECDH, namedCurve: P-384}, true, [])",
+ "Empty Usages: P-384 bits (pkcs8, buffer(185), {name: ECDH, namedCurve: P-384}, false, [])",
+ "Empty Usages: P-384 bits (jwk, object(kty, crv, x, y, d), {name: ECDH, namedCurve: P-384}, false, [])",
+ "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 (pkcs8, buffer(241), {name: ECDH, namedCurve: P-521}, true, [deriveBits, deriveKey])",
+ "Good parameters: P-521 bits (pkcs8, buffer(241), {name: ECDH, namedCurve: P-521}, true, [deriveBits])",
+ "Good parameters: P-521 bits (pkcs8, buffer(241), {name: ECDH, namedCurve: P-521}, true, [deriveKey, deriveBits, deriveKey, deriveBits])",
+ "Empty Usages: P-521 bits (pkcs8, buffer(241), {name: ECDH, namedCurve: P-521}, true, [])",
+ "Good parameters: P-521 bits (jwk, object(kty, crv, x, y, d), {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, [deriveBits, deriveKey])",
+ "Good parameters: P-521 bits (jwk, object(kty, crv, x, y, d), {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, [deriveKey, deriveBits, deriveKey, deriveBits])",
+ "Empty Usages: P-521 bits (jwk, object(kty, crv, x, y, d), {name: ECDH, namedCurve: P-521}, true, [])",
+ "Good parameters: P-521 bits (pkcs8, buffer(241), {name: ECDH, namedCurve: P-521}, false, [deriveKey])",
+ "Good parameters: P-521 bits (pkcs8, buffer(241), {name: ECDH, namedCurve: P-521}, false, [deriveBits, deriveKey])",
+ "Good parameters: P-521 bits (pkcs8, buffer(241), {name: ECDH, namedCurve: P-521}, false, [deriveBits])",
+ "Good parameters: P-521 bits (pkcs8, buffer(241), {name: ECDH, namedCurve: P-521}, false, [deriveKey, deriveBits, deriveKey, deriveBits])",
+ "Empty Usages: P-521 bits (pkcs8, buffer(241), {name: ECDH, namedCurve: P-521}, false, [])",
+ "Good parameters: P-521 bits (jwk, object(kty, crv, x, y, d), {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, [deriveBits, deriveKey])",
+ "Good parameters: P-521 bits (jwk, object(kty, crv, x, y, d), {name: ECDH, namedCurve: P-521}, false, [deriveBits])",
+ "Good parameters: P-521 bits (jwk, object(kty, crv, x, y, d), {name: ECDH, namedCurve: P-521}, false, [deriveKey, deriveBits, deriveKey, deriveBits])",
+ "Empty Usages: P-521 bits (jwk, object(kty, crv, x, y, d), {name: ECDH, namedCurve: P-521}, false, [])",
+ "ECDH any JWK alg: P-521 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-521}, true, [deriveKey])",
+ "ECDH any JWK alg: P-521 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-521}, true, [deriveBits, deriveKey])",
+ "ECDH any JWK alg: P-521 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-521}, true, [deriveBits])",
+ "ECDH any JWK alg: P-521 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-521}, true, [deriveKey, deriveBits, deriveKey, deriveBits])",
+ "ECDH any JWK alg: P-521 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-521}, false, [deriveKey])",
+ "ECDH any JWK alg: P-521 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-521}, false, [deriveBits, deriveKey])",
+ "ECDH any JWK alg: P-521 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-521}, false, [deriveBits])",
+ "ECDH any JWK alg: P-521 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-521}, false, [deriveKey, deriveBits, deriveKey, deriveBits])"
+ ],
+ "ec_importKey.https.any.worker.html": [
+ "Good parameters: P-256 bits (spki, buffer(59, compressed), {name: ECDSA, namedCurve: P-256}, true, [verify])",
+ "Good parameters: P-256 bits (raw, buffer(33, compressed), {name: ECDSA, namedCurve: P-256}, true, [verify])",
+ "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-256 bits (spki, buffer(59, compressed), {name: ECDSA, namedCurve: P-256}, true, [verify, verify])",
+ "Good parameters: P-256 bits (raw, buffer(33, compressed), {name: ECDSA, namedCurve: P-256}, true, [verify, verify])",
+ "Empty Usages: P-256 bits (pkcs8, buffer(138), {name: ECDSA, namedCurve: P-256}, true, [])",
+ "Empty Usages: P-256 bits (jwk, object(kty, crv, x, y, d), {name: ECDSA, namedCurve: P-256}, true, [])",
+ "Empty Usages: P-256 bits (pkcs8, buffer(138), {name: ECDSA, namedCurve: P-256}, false, [])",
+ "Empty Usages: P-256 bits (jwk, object(kty, crv, x, y, d), {name: ECDSA, namedCurve: P-256}, false, [])",
+ "Good parameters: P-384 bits (spki, buffer(72, compressed), {name: ECDSA, namedCurve: P-384}, true, [verify])",
+ "Good parameters: P-384 bits (raw, buffer(49, compressed), {name: ECDSA, namedCurve: P-384}, true, [verify])",
+ "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-384 bits (spki, buffer(72, compressed), {name: ECDSA, namedCurve: P-384}, true, [verify, verify])",
+ "Good parameters: P-384 bits (raw, buffer(49, compressed), {name: ECDSA, namedCurve: P-384}, true, [verify, verify])",
+ "Empty Usages: P-384 bits (pkcs8, buffer(185), {name: ECDSA, namedCurve: P-384}, true, [])",
+ "Empty Usages: P-384 bits (jwk, object(kty, crv, x, y, d), {name: ECDSA, namedCurve: P-384}, true, [])",
+ "Empty Usages: P-384 bits (pkcs8, buffer(185), {name: ECDSA, namedCurve: P-384}, false, [])",
+ "Empty Usages: P-384 bits (jwk, object(kty, crv, x, y, d), {name: ECDSA, namedCurve: P-384}, false, [])",
+ "Good parameters: P-521 bits (spki, buffer(158), {name: ECDSA, namedCurve: P-521}, true, [verify])",
+ "Good parameters: P-521 bits (spki, buffer(90, compressed), {name: ECDSA, namedCurve: P-521}, true, [verify])",
+ "Good parameters: P-521 bits (jwk, object(kty, crv, x, y), {name: ECDSA, namedCurve: P-521}, true, [verify])",
+ "Good parameters: P-521 bits (raw, buffer(133), {name: ECDSA, namedCurve: P-521}, true, [verify])",
+ "Good parameters: P-521 bits (raw, buffer(67, compressed), {name: ECDSA, namedCurve: P-521}, true, [verify])",
+ "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 (spki, buffer(158), {name: ECDSA, namedCurve: P-521}, true, [verify, verify])",
+ "Good parameters: P-521 bits (spki, buffer(90, compressed), {name: ECDSA, namedCurve: P-521}, true, [verify, verify])",
+ "Good parameters: P-521 bits (jwk, object(kty, crv, x, y), {name: ECDSA, namedCurve: P-521}, true, [verify, verify])",
+ "Good parameters: P-521 bits (raw, buffer(133), {name: ECDSA, namedCurve: P-521}, true, [verify, verify])",
+ "Good parameters: P-521 bits (raw, buffer(67, compressed), {name: ECDSA, namedCurve: P-521}, true, [verify, verify])",
+ "Good parameters: P-521 bits (pkcs8, buffer(241), {name: ECDSA, namedCurve: P-521}, true, [sign])",
+ "Good parameters: P-521 bits (pkcs8, buffer(241), {name: ECDSA, namedCurve: P-521}, true, [sign, sign])",
+ "Empty Usages: P-521 bits (pkcs8, buffer(241), {name: ECDSA, namedCurve: P-521}, true, [])",
+ "Good parameters: P-521 bits (jwk, object(kty, crv, x, y, d), {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, sign])",
+ "Empty Usages: P-521 bits (jwk, object(kty, crv, x, y, d), {name: ECDSA, namedCurve: P-521}, true, [])",
+ "Good parameters: P-521 bits (pkcs8, buffer(241), {name: ECDSA, namedCurve: P-521}, false, [sign])",
+ "Good parameters: P-521 bits (pkcs8, buffer(241), {name: ECDSA, namedCurve: P-521}, false, [sign, sign])",
+ "Empty Usages: P-521 bits (pkcs8, buffer(241), {name: ECDSA, namedCurve: P-521}, false, [])",
+ "Good parameters: P-521 bits (jwk, object(kty, crv, x, y, d), {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, sign])",
+ "Empty Usages: P-521 bits (jwk, object(kty, crv, x, y, d), {name: ECDSA, namedCurve: P-521}, false, [])",
+ "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, [])",
+ "Empty Usages: P-256 bits (pkcs8, buffer(138), {name: ECDH, namedCurve: P-256}, true, [])",
+ "Empty Usages: P-256 bits (jwk, object(kty, crv, x, y, d), {name: ECDH, namedCurve: P-256}, true, [])",
+ "Empty Usages: P-256 bits (pkcs8, buffer(138), {name: ECDH, namedCurve: P-256}, false, [])",
+ "Empty Usages: P-256 bits (jwk, object(kty, crv, x, y, d), {name: ECDH, namedCurve: P-256}, false, [])",
+ "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, [])",
+ "Empty Usages: P-384 bits (pkcs8, buffer(185), {name: ECDH, namedCurve: P-384}, true, [])",
+ "Empty Usages: P-384 bits (jwk, object(kty, crv, x, y, d), {name: ECDH, namedCurve: P-384}, true, [])",
+ "Empty Usages: P-384 bits (pkcs8, buffer(185), {name: ECDH, namedCurve: P-384}, false, [])",
+ "Empty Usages: P-384 bits (jwk, object(kty, crv, x, y, d), {name: ECDH, namedCurve: P-384}, false, [])",
+ "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 (pkcs8, buffer(241), {name: ECDH, namedCurve: P-521}, true, [deriveBits, deriveKey])",
+ "Good parameters: P-521 bits (pkcs8, buffer(241), {name: ECDH, namedCurve: P-521}, true, [deriveBits])",
+ "Good parameters: P-521 bits (pkcs8, buffer(241), {name: ECDH, namedCurve: P-521}, true, [deriveKey, deriveBits, deriveKey, deriveBits])",
+ "Empty Usages: P-521 bits (pkcs8, buffer(241), {name: ECDH, namedCurve: P-521}, true, [])",
+ "Good parameters: P-521 bits (jwk, object(kty, crv, x, y, d), {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, [deriveBits, deriveKey])",
+ "Good parameters: P-521 bits (jwk, object(kty, crv, x, y, d), {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, [deriveKey, deriveBits, deriveKey, deriveBits])",
+ "Empty Usages: P-521 bits (jwk, object(kty, crv, x, y, d), {name: ECDH, namedCurve: P-521}, true, [])",
+ "Good parameters: P-521 bits (pkcs8, buffer(241), {name: ECDH, namedCurve: P-521}, false, [deriveKey])",
+ "Good parameters: P-521 bits (pkcs8, buffer(241), {name: ECDH, namedCurve: P-521}, false, [deriveBits, deriveKey])",
+ "Good parameters: P-521 bits (pkcs8, buffer(241), {name: ECDH, namedCurve: P-521}, false, [deriveBits])",
+ "Good parameters: P-521 bits (pkcs8, buffer(241), {name: ECDH, namedCurve: P-521}, false, [deriveKey, deriveBits, deriveKey, deriveBits])",
+ "Empty Usages: P-521 bits (pkcs8, buffer(241), {name: ECDH, namedCurve: P-521}, false, [])",
+ "Good parameters: P-521 bits (jwk, object(kty, crv, x, y, d), {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, [deriveBits, deriveKey])",
+ "Good parameters: P-521 bits (jwk, object(kty, crv, x, y, d), {name: ECDH, namedCurve: P-521}, false, [deriveBits])",
+ "Good parameters: P-521 bits (jwk, object(kty, crv, x, y, d), {name: ECDH, namedCurve: P-521}, false, [deriveKey, deriveBits, deriveKey, deriveBits])",
+ "Empty Usages: P-521 bits (jwk, object(kty, crv, x, y, d), {name: ECDH, namedCurve: P-521}, false, [])",
+ "ECDH any JWK alg: P-521 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-521}, true, [deriveKey])",
+ "ECDH any JWK alg: P-521 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-521}, true, [deriveBits, deriveKey])",
+ "ECDH any JWK alg: P-521 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-521}, true, [deriveBits])",
+ "ECDH any JWK alg: P-521 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-521}, true, [deriveKey, deriveBits, deriveKey, deriveBits])",
+ "ECDH any JWK alg: P-521 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-521}, false, [deriveKey])",
+ "ECDH any JWK alg: P-521 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-521}, false, [deriveBits, deriveKey])",
+ "ECDH any JWK alg: P-521 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-521}, false, [deriveBits])",
+ "ECDH any JWK alg: P-521 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-521}, false, [deriveKey, deriveBits, deriveKey, deriveBits])"
+ ],
+ "rsa_importKey.https.any.html": [
+ "Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-OAEP}, true, [])",
+ "Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-OAEP}, true, [])",
+ "Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-OAEP}, false, [])",
+ "Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-OAEP}, false, [])",
+ "Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-OAEP}, true, [])",
+ "Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-OAEP}, true, [])",
+ "Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-OAEP}, false, [])",
+ "Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-OAEP}, false, [])",
+ "Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-OAEP}, true, [])",
+ "Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-OAEP}, true, [])",
+ "Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-OAEP}, false, [])",
+ "Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-OAEP}, false, [])",
+ "Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-OAEP}, true, [])",
+ "Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-OAEP}, true, [])",
+ "Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-OAEP}, false, [])",
+ "Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-OAEP}, false, [])",
+ "Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-OAEP}, true, [])",
+ "Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-OAEP}, true, [])",
+ "Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-OAEP}, false, [])",
+ "Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-OAEP}, false, [])",
+ "Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-OAEP}, true, [])",
+ "Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-OAEP}, true, [])",
+ "Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-OAEP}, false, [])",
+ "Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-OAEP}, false, [])",
+ "Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-OAEP}, true, [])",
+ "Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-OAEP}, true, [])",
+ "Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-OAEP}, false, [])",
+ "Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-OAEP}, false, [])",
+ "Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-OAEP}, true, [])",
+ "Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-OAEP}, true, [])",
+ "Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-OAEP}, false, [])",
+ "Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-OAEP}, false, [])",
+ "Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-OAEP}, true, [])",
+ "Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-OAEP}, true, [])",
+ "Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-OAEP}, false, [])",
+ "Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-OAEP}, false, [])",
+ "Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-OAEP}, true, [])",
+ "Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-OAEP}, true, [])",
+ "Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-OAEP}, false, [])",
+ "Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-OAEP}, false, [])",
+ "Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-OAEP}, true, [])",
+ "Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-OAEP}, true, [])",
+ "Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-OAEP}, false, [])",
+ "Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-OAEP}, false, [])",
+ "Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-OAEP}, true, [])",
+ "Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-OAEP}, true, [])",
+ "Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-OAEP}, false, [])",
+ "Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-OAEP}, false, [])",
+ "Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-PSS}, true, [])",
+ "Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-PSS}, true, [])",
+ "Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-PSS}, false, [])",
+ "Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-PSS}, false, [])",
+ "Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-PSS}, true, [])",
+ "Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-PSS}, true, [])",
+ "Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-PSS}, false, [])",
+ "Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-PSS}, false, [])",
+ "Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-PSS}, true, [])",
+ "Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-PSS}, true, [])",
+ "Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-PSS}, false, [])",
+ "Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-PSS}, false, [])",
+ "Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-PSS}, true, [])",
+ "Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-PSS}, true, [])",
+ "Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-PSS}, false, [])",
+ "Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-PSS}, false, [])",
+ "Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-PSS}, true, [])",
+ "Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-PSS}, true, [])",
+ "Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-PSS}, false, [])",
+ "Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-PSS}, false, [])",
+ "Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-PSS}, true, [])",
+ "Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-PSS}, true, [])",
+ "Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-PSS}, false, [])",
+ "Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-PSS}, false, [])",
+ "Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-PSS}, true, [])",
+ "Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-PSS}, true, [])",
+ "Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-PSS}, false, [])",
+ "Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-PSS}, false, [])",
+ "Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-PSS}, true, [])",
+ "Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-PSS}, true, [])",
+ "Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-PSS}, false, [])",
+ "Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-PSS}, false, [])",
+ "Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-PSS}, true, [])",
+ "Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-PSS}, true, [])",
+ "Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-PSS}, false, [])",
+ "Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-PSS}, false, [])",
+ "Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-PSS}, true, [])",
+ "Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-PSS}, true, [])",
+ "Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-PSS}, false, [])",
+ "Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-PSS}, false, [])",
+ "Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-PSS}, true, [])",
+ "Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-PSS}, true, [])",
+ "Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-PSS}, false, [])",
+ "Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-PSS}, false, [])",
+ "Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-PSS}, true, [])",
+ "Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-PSS}, true, [])",
+ "Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-PSS}, false, [])",
+ "Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-PSS}, false, [])",
+ "Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, [])",
+ "Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, [])",
+ "Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, [])",
+ "Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, [])",
+ "Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, [])",
+ "Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, [])",
+ "Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, [])",
+ "Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, [])",
+ "Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, [])",
+ "Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, [])",
+ "Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, [])",
+ "Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, [])",
+ "Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, [])",
+ "Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, [])",
+ "Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, [])",
+ "Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, [])",
+ "Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, [])",
+ "Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, [])",
+ "Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, [])",
+ "Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, [])",
+ "Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, [])",
+ "Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, [])",
+ "Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, [])",
+ "Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, [])",
+ "Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, [])",
+ "Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, [])",
+ "Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, [])",
+ "Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, [])",
+ "Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, [])",
+ "Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, [])",
+ "Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, [])",
+ "Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, [])",
+ "Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, [])",
+ "Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, [])",
+ "Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, [])",
+ "Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, [])",
+ "Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, [])",
+ "Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, [])",
+ "Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, [])",
+ "Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, [])",
+ "Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, [])",
+ "Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, [])",
+ "Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, [])",
+ "Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, [])",
+ "Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, [])",
+ "Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, [])",
+ "Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, [])",
+ "Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, [])"
+ ],
+ "rsa_importKey.https.any.worker.html": [
+ "Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-OAEP}, true, [])",
+ "Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-OAEP}, true, [])",
+ "Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-OAEP}, false, [])",
+ "Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-OAEP}, false, [])",
+ "Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-OAEP}, true, [])",
+ "Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-OAEP}, true, [])",
+ "Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-OAEP}, false, [])",
+ "Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-OAEP}, false, [])",
+ "Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-OAEP}, true, [])",
+ "Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-OAEP}, true, [])",
+ "Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-OAEP}, false, [])",
+ "Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-OAEP}, false, [])",
+ "Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-OAEP}, true, [])",
+ "Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-OAEP}, true, [])",
+ "Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-OAEP}, false, [])",
+ "Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-OAEP}, false, [])",
+ "Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-OAEP}, true, [])",
+ "Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-OAEP}, true, [])",
+ "Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-OAEP}, false, [])",
+ "Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-OAEP}, false, [])",
+ "Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-OAEP}, true, [])",
+ "Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-OAEP}, true, [])",
+ "Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-OAEP}, false, [])",
+ "Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-OAEP}, false, [])",
+ "Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-OAEP}, true, [])",
+ "Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-OAEP}, true, [])",
+ "Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-OAEP}, false, [])",
+ "Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-OAEP}, false, [])",
+ "Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-OAEP}, true, [])",
+ "Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-OAEP}, true, [])",
+ "Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-OAEP}, false, [])",
+ "Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-OAEP}, false, [])",
+ "Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-OAEP}, true, [])",
+ "Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-OAEP}, true, [])",
+ "Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-OAEP}, false, [])",
+ "Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-OAEP}, false, [])",
+ "Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-OAEP}, true, [])",
+ "Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-OAEP}, true, [])",
+ "Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-OAEP}, false, [])",
+ "Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-OAEP}, false, [])",
+ "Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-OAEP}, true, [])",
+ "Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-OAEP}, true, [])",
+ "Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-OAEP}, false, [])",
+ "Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-OAEP}, false, [])",
+ "Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-OAEP}, true, [])",
+ "Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-OAEP}, true, [])",
+ "Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-OAEP}, false, [])",
+ "Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-OAEP}, false, [])",
+ "Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-PSS}, true, [])",
+ "Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-PSS}, true, [])",
+ "Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-PSS}, false, [])",
+ "Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-PSS}, false, [])",
+ "Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-PSS}, true, [])",
+ "Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-PSS}, true, [])",
+ "Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-PSS}, false, [])",
+ "Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-PSS}, false, [])",
+ "Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-PSS}, true, [])",
+ "Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-PSS}, true, [])",
+ "Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-PSS}, false, [])",
+ "Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-PSS}, false, [])",
+ "Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-PSS}, true, [])",
+ "Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-PSS}, true, [])",
+ "Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-PSS}, false, [])",
+ "Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-PSS}, false, [])",
+ "Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-PSS}, true, [])",
+ "Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-PSS}, true, [])",
+ "Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-PSS}, false, [])",
+ "Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-PSS}, false, [])",
+ "Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-PSS}, true, [])",
+ "Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-PSS}, true, [])",
+ "Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-PSS}, false, [])",
+ "Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-PSS}, false, [])",
+ "Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-PSS}, true, [])",
+ "Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-PSS}, true, [])",
+ "Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-PSS}, false, [])",
+ "Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-PSS}, false, [])",
+ "Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-PSS}, true, [])",
+ "Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-PSS}, true, [])",
+ "Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-PSS}, false, [])",
+ "Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-PSS}, false, [])",
+ "Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-PSS}, true, [])",
+ "Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-PSS}, true, [])",
+ "Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-PSS}, false, [])",
+ "Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-PSS}, false, [])",
+ "Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-PSS}, true, [])",
+ "Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-PSS}, true, [])",
+ "Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-PSS}, false, [])",
+ "Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-PSS}, false, [])",
+ "Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-PSS}, true, [])",
+ "Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-PSS}, true, [])",
+ "Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-PSS}, false, [])",
+ "Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-PSS}, false, [])",
+ "Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-PSS}, true, [])",
+ "Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-PSS}, true, [])",
+ "Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-PSS}, false, [])",
+ "Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-PSS}, false, [])",
+ "Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, [])",
+ "Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, [])",
+ "Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, [])",
+ "Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, [])",
+ "Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, [])",
+ "Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, [])",
+ "Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, [])",
+ "Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, [])",
+ "Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, [])",
+ "Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, [])",
+ "Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, [])",
+ "Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, [])",
+ "Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, [])",
+ "Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, [])",
+ "Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, [])",
+ "Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, [])",
+ "Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, [])",
+ "Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, [])",
+ "Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, [])",
+ "Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, [])",
+ "Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, [])",
+ "Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, [])",
+ "Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, [])",
+ "Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, [])",
+ "Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, [])",
+ "Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, [])",
+ "Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, [])",
+ "Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, [])",
+ "Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, [])",
+ "Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, [])",
+ "Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, [])",
+ "Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, [])",
+ "Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, [])",
+ "Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, [])",
+ "Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, [])",
+ "Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, [])",
+ "Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, [])",
+ "Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, [])",
+ "Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, [])",
+ "Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, [])",
+ "Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, [])",
+ "Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, [])",
+ "Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, [])",
+ "Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, [])",
+ "Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, [])",
+ "Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, [])",
+ "Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, [])",
+ "Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, [])"
+ ],
+ "symmetric_importKey.https.any.html": [
+ "Empty Usages: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-CTR}, true, [])",
+ "Empty Usages: 128 bits (jwk, {alg: A128CTR, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {name: AES-CTR}, true, [])",
+ "Empty Usages: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-CTR}, false, [])",
+ "Empty Usages: 128 bits (jwk, {alg: A128CTR, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {name: AES-CTR}, false, [])",
+ "Empty Usages: 192 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-CTR}, true, [])",
+ "Empty Usages: 192 bits (jwk, {alg: A192CTR, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {name: AES-CTR}, true, [])",
+ "Empty Usages: 192 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-CTR}, false, [])",
+ "Empty Usages: 192 bits (jwk, {alg: A192CTR, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {name: AES-CTR}, false, [])",
+ "Empty Usages: 256 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-CTR}, true, [])",
+ "Empty Usages: 256 bits (jwk, {alg: A256CTR, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {name: AES-CTR}, true, [])",
+ "Empty Usages: 256 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-CTR}, false, [])",
+ "Empty Usages: 256 bits (jwk, {alg: A256CTR, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {name: AES-CTR}, false, [])",
+ "Empty Usages: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-CBC}, true, [])",
+ "Empty Usages: 128 bits (jwk, {alg: A128CBC, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {name: AES-CBC}, true, [])",
+ "Empty Usages: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-CBC}, false, [])",
+ "Empty Usages: 128 bits (jwk, {alg: A128CBC, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {name: AES-CBC}, false, [])",
+ "Empty Usages: 192 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-CBC}, true, [])",
+ "Empty Usages: 192 bits (jwk, {alg: A192CBC, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {name: AES-CBC}, true, [])",
+ "Empty Usages: 192 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-CBC}, false, [])",
+ "Empty Usages: 192 bits (jwk, {alg: A192CBC, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {name: AES-CBC}, false, [])",
+ "Empty Usages: 256 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-CBC}, true, [])",
+ "Empty Usages: 256 bits (jwk, {alg: A256CBC, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {name: AES-CBC}, true, [])",
+ "Empty Usages: 256 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-CBC}, false, [])",
+ "Empty Usages: 256 bits (jwk, {alg: A256CBC, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {name: AES-CBC}, false, [])",
+ "Empty Usages: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-GCM}, true, [])",
+ "Empty Usages: 128 bits (jwk, {alg: A128GCM, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {name: AES-GCM}, true, [])",
+ "Empty Usages: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-GCM}, false, [])",
+ "Empty Usages: 128 bits (jwk, {alg: A128GCM, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {name: AES-GCM}, false, [])",
+ "Empty Usages: 192 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-GCM}, true, [])",
+ "Empty Usages: 192 bits (jwk, {alg: A192GCM, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {name: AES-GCM}, true, [])",
+ "Empty Usages: 192 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-GCM}, false, [])",
+ "Empty Usages: 192 bits (jwk, {alg: A192GCM, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {name: AES-GCM}, false, [])",
+ "Empty Usages: 256 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-GCM}, true, [])",
+ "Empty Usages: 256 bits (jwk, {alg: A256GCM, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {name: AES-GCM}, true, [])",
+ "Empty Usages: 256 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-GCM}, false, [])",
+ "Empty Usages: 256 bits (jwk, {alg: A256GCM, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {name: AES-GCM}, false, [])",
+ "Empty Usages: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-KW}, true, [])",
+ "Empty Usages: 128 bits (jwk, {alg: A128KW, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {name: AES-KW}, true, [])",
+ "Empty Usages: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-KW}, false, [])",
+ "Empty Usages: 128 bits (jwk, {alg: A128KW, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {name: AES-KW}, false, [])",
+ "Empty Usages: 192 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-KW}, true, [])",
+ "Empty Usages: 192 bits (jwk, {alg: A192KW, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {name: AES-KW}, true, [])",
+ "Empty Usages: 192 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-KW}, false, [])",
+ "Empty Usages: 192 bits (jwk, {alg: A192KW, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {name: AES-KW}, false, [])",
+ "Empty Usages: 256 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-KW}, true, [])",
+ "Empty Usages: 256 bits (jwk, {alg: A256KW, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {name: AES-KW}, true, [])",
+ "Empty Usages: 256 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-KW}, false, [])",
+ "Empty Usages: 256 bits (jwk, {alg: A256KW, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {name: AES-KW}, false, [])",
+ "Empty Usages: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {hash: SHA-1, name: HMAC}, false, [])",
+ "Empty Usages: 128 bits (jwk, {alg: HS1, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {hash: SHA-1, name: HMAC}, false, [])",
+ "Empty Usages: 192 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {hash: SHA-1, name: HMAC}, false, [])",
+ "Empty Usages: 192 bits (jwk, {alg: HS1, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {hash: SHA-1, name: HMAC}, false, [])",
+ "Empty Usages: 256 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {hash: SHA-1, name: HMAC}, false, [])",
+ "Empty Usages: 256 bits (jwk, {alg: HS1, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {hash: SHA-1, name: HMAC}, false, [])",
+ "Empty Usages: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {hash: SHA-256, name: HMAC}, false, [])",
+ "Empty Usages: 128 bits (jwk, {alg: HS256, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {hash: SHA-256, name: HMAC}, false, [])",
+ "Empty Usages: 192 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {hash: SHA-256, name: HMAC}, false, [])",
+ "Empty Usages: 192 bits (jwk, {alg: HS256, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {hash: SHA-256, name: HMAC}, false, [])",
+ "Empty Usages: 256 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {hash: SHA-256, name: HMAC}, false, [])",
+ "Empty Usages: 256 bits (jwk, {alg: HS256, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {hash: SHA-256, name: HMAC}, false, [])",
+ "Empty Usages: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {hash: SHA-384, name: HMAC}, false, [])",
+ "Empty Usages: 128 bits (jwk, {alg: HS384, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {hash: SHA-384, name: HMAC}, false, [])",
+ "Empty Usages: 192 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {hash: SHA-384, name: HMAC}, false, [])",
+ "Empty Usages: 192 bits (jwk, {alg: HS384, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {hash: SHA-384, name: HMAC}, false, [])",
+ "Empty Usages: 256 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {hash: SHA-384, name: HMAC}, false, [])",
+ "Empty Usages: 256 bits (jwk, {alg: HS384, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {hash: SHA-384, name: HMAC}, false, [])",
+ "Empty Usages: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {hash: SHA-512, name: HMAC}, false, [])",
+ "Empty Usages: 128 bits (jwk, {alg: HS512, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {hash: SHA-512, name: HMAC}, false, [])",
+ "Empty Usages: 192 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {hash: SHA-512, name: HMAC}, false, [])",
+ "Empty Usages: 192 bits (jwk, {alg: HS512, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {hash: SHA-512, name: HMAC}, false, [])",
+ "Empty Usages: 256 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {hash: SHA-512, name: HMAC}, false, [])",
+ "Empty Usages: 256 bits (jwk, {alg: HS512, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {hash: SHA-512, name: HMAC}, false, [])",
+ "Empty Usages: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: HKDF}, false, [])",
+ "Empty Usages: 192 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: HKDF}, false, [])",
+ "Empty Usages: 256 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: HKDF}, false, [])",
+ "Empty Usages: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: PBKDF2}, false, [])",
+ "Empty Usages: 192 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: PBKDF2}, false, [])",
+ "Empty Usages: 256 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: PBKDF2}, false, [])"
+ ],
+ "symmetric_importKey.https.any.worker.html": [
+ "Empty Usages: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-CTR}, true, [])",
+ "Empty Usages: 128 bits (jwk, {alg: A128CTR, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {name: AES-CTR}, true, [])",
+ "Empty Usages: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-CTR}, false, [])",
+ "Empty Usages: 128 bits (jwk, {alg: A128CTR, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {name: AES-CTR}, false, [])",
+ "Empty Usages: 192 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-CTR}, true, [])",
+ "Empty Usages: 192 bits (jwk, {alg: A192CTR, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {name: AES-CTR}, true, [])",
+ "Empty Usages: 192 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-CTR}, false, [])",
+ "Empty Usages: 192 bits (jwk, {alg: A192CTR, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {name: AES-CTR}, false, [])",
+ "Empty Usages: 256 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-CTR}, true, [])",
+ "Empty Usages: 256 bits (jwk, {alg: A256CTR, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {name: AES-CTR}, true, [])",
+ "Empty Usages: 256 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-CTR}, false, [])",
+ "Empty Usages: 256 bits (jwk, {alg: A256CTR, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {name: AES-CTR}, false, [])",
+ "Empty Usages: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-CBC}, true, [])",
+ "Empty Usages: 128 bits (jwk, {alg: A128CBC, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {name: AES-CBC}, true, [])",
+ "Empty Usages: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-CBC}, false, [])",
+ "Empty Usages: 128 bits (jwk, {alg: A128CBC, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {name: AES-CBC}, false, [])",
+ "Empty Usages: 192 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-CBC}, true, [])",
+ "Empty Usages: 192 bits (jwk, {alg: A192CBC, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {name: AES-CBC}, true, [])",
+ "Empty Usages: 192 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-CBC}, false, [])",
+ "Empty Usages: 192 bits (jwk, {alg: A192CBC, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {name: AES-CBC}, false, [])",
+ "Empty Usages: 256 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-CBC}, true, [])",
+ "Empty Usages: 256 bits (jwk, {alg: A256CBC, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {name: AES-CBC}, true, [])",
+ "Empty Usages: 256 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-CBC}, false, [])",
+ "Empty Usages: 256 bits (jwk, {alg: A256CBC, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {name: AES-CBC}, false, [])",
+ "Empty Usages: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-GCM}, true, [])",
+ "Empty Usages: 128 bits (jwk, {alg: A128GCM, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {name: AES-GCM}, true, [])",
+ "Empty Usages: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-GCM}, false, [])",
+ "Empty Usages: 128 bits (jwk, {alg: A128GCM, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {name: AES-GCM}, false, [])",
+ "Empty Usages: 192 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-GCM}, true, [])",
+ "Empty Usages: 192 bits (jwk, {alg: A192GCM, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {name: AES-GCM}, true, [])",
+ "Empty Usages: 192 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-GCM}, false, [])",
+ "Empty Usages: 192 bits (jwk, {alg: A192GCM, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {name: AES-GCM}, false, [])",
+ "Empty Usages: 256 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-GCM}, true, [])",
+ "Empty Usages: 256 bits (jwk, {alg: A256GCM, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {name: AES-GCM}, true, [])",
+ "Empty Usages: 256 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-GCM}, false, [])",
+ "Empty Usages: 256 bits (jwk, {alg: A256GCM, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {name: AES-GCM}, false, [])",
+ "Empty Usages: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-KW}, true, [])",
+ "Empty Usages: 128 bits (jwk, {alg: A128KW, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {name: AES-KW}, true, [])",
+ "Empty Usages: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-KW}, false, [])",
+ "Empty Usages: 128 bits (jwk, {alg: A128KW, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {name: AES-KW}, false, [])",
+ "Empty Usages: 192 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-KW}, true, [])",
+ "Empty Usages: 192 bits (jwk, {alg: A192KW, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {name: AES-KW}, true, [])",
+ "Empty Usages: 192 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-KW}, false, [])",
+ "Empty Usages: 192 bits (jwk, {alg: A192KW, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {name: AES-KW}, false, [])",
+ "Empty Usages: 256 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-KW}, true, [])",
+ "Empty Usages: 256 bits (jwk, {alg: A256KW, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {name: AES-KW}, true, [])",
+ "Empty Usages: 256 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-KW}, false, [])",
+ "Empty Usages: 256 bits (jwk, {alg: A256KW, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {name: AES-KW}, false, [])",
+ "Empty Usages: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {hash: SHA-1, name: HMAC}, false, [])",
+ "Empty Usages: 128 bits (jwk, {alg: HS1, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {hash: SHA-1, name: HMAC}, false, [])",
+ "Empty Usages: 192 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {hash: SHA-1, name: HMAC}, false, [])",
+ "Empty Usages: 192 bits (jwk, {alg: HS1, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {hash: SHA-1, name: HMAC}, false, [])",
+ "Empty Usages: 256 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {hash: SHA-1, name: HMAC}, false, [])",
+ "Empty Usages: 256 bits (jwk, {alg: HS1, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {hash: SHA-1, name: HMAC}, false, [])",
+ "Empty Usages: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {hash: SHA-256, name: HMAC}, false, [])",
+ "Empty Usages: 128 bits (jwk, {alg: HS256, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {hash: SHA-256, name: HMAC}, false, [])",
+ "Empty Usages: 192 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {hash: SHA-256, name: HMAC}, false, [])",
+ "Empty Usages: 192 bits (jwk, {alg: HS256, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {hash: SHA-256, name: HMAC}, false, [])",
+ "Empty Usages: 256 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {hash: SHA-256, name: HMAC}, false, [])",
+ "Empty Usages: 256 bits (jwk, {alg: HS256, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {hash: SHA-256, name: HMAC}, false, [])",
+ "Empty Usages: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {hash: SHA-384, name: HMAC}, false, [])",
+ "Empty Usages: 128 bits (jwk, {alg: HS384, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {hash: SHA-384, name: HMAC}, false, [])",
+ "Empty Usages: 192 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {hash: SHA-384, name: HMAC}, false, [])",
+ "Empty Usages: 192 bits (jwk, {alg: HS384, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {hash: SHA-384, name: HMAC}, false, [])",
+ "Empty Usages: 256 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {hash: SHA-384, name: HMAC}, false, [])",
+ "Empty Usages: 256 bits (jwk, {alg: HS384, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {hash: SHA-384, name: HMAC}, false, [])",
+ "Empty Usages: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {hash: SHA-512, name: HMAC}, false, [])",
+ "Empty Usages: 128 bits (jwk, {alg: HS512, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {hash: SHA-512, name: HMAC}, false, [])",
+ "Empty Usages: 192 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {hash: SHA-512, name: HMAC}, false, [])",
+ "Empty Usages: 192 bits (jwk, {alg: HS512, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {hash: SHA-512, name: HMAC}, false, [])",
+ "Empty Usages: 256 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {hash: SHA-512, name: HMAC}, false, [])",
+ "Empty Usages: 256 bits (jwk, {alg: HS512, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {hash: SHA-512, name: HMAC}, false, [])",
+ "Empty Usages: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: HKDF}, false, [])",
+ "Empty Usages: 192 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: HKDF}, false, [])",
+ "Empty Usages: 256 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: HKDF}, false, [])",
+ "Empty Usages: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: PBKDF2}, false, [])",
+ "Empty Usages: 192 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: PBKDF2}, false, [])",
+ "Empty Usages: 256 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: PBKDF2}, false, [])"
+ ],
+ "okp_importKey.https.any.html": [
+ "Good parameters: Ed448 bits (spki, buffer(69), {name: Ed448}, true, [verify])",
+ "Good parameters: Ed448 bits (jwk, object(kty, crv, x), {name: Ed448}, true, [verify])",
+ "Good parameters with ignored JWK alg: Ed448 (jwk, object(kty, crv, x), {name: Ed448}, true, [verify])",
+ "Good parameters: Ed448 bits (raw, buffer(57), {name: Ed448}, true, [verify])",
+ "Good parameters: Ed448 bits (spki, buffer(69), {name: Ed448}, true, [])",
+ "Good parameters: Ed448 bits (jwk, object(kty, crv, x), {name: Ed448}, true, [])",
+ "Good parameters with ignored JWK alg: Ed448 (jwk, object(kty, crv, x), {name: Ed448}, true, [])",
+ "Good parameters: Ed448 bits (raw, buffer(57), {name: Ed448}, true, [])",
+ "Good parameters: Ed448 bits (spki, buffer(69), {name: Ed448}, true, [verify, verify])",
+ "Good parameters: Ed448 bits (jwk, object(kty, crv, x), {name: Ed448}, true, [verify, verify])",
+ "Good parameters with ignored JWK alg: Ed448 (jwk, object(kty, crv, x), {name: Ed448}, true, [verify, verify])",
+ "Good parameters: Ed448 bits (raw, buffer(57), {name: Ed448}, true, [verify, verify])",
+ "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 with ignored JWK alg: Ed448 (jwk, object(crv, d, x, kty), {name: Ed448}, true, [sign])",
+ "Good parameters: Ed448 bits (pkcs8, buffer(73), {name: Ed448}, true, [sign, sign])",
+ "Good parameters: Ed448 bits (jwk, object(crv, d, x, kty), {name: Ed448}, true, [sign, sign])",
+ "Good parameters with ignored JWK alg: Ed448 (jwk, object(crv, d, x, kty), {name: Ed448}, true, [sign, sign])",
+ "Good parameters: Ed448 bits (spki, buffer(69), {name: Ed448}, false, [verify])",
+ "Good parameters: Ed448 bits (jwk, object(kty, crv, x), {name: Ed448}, false, [verify])",
+ "Good parameters: Ed448 bits (raw, buffer(57), {name: Ed448}, false, [verify])",
+ "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 (spki, buffer(69), {name: Ed448}, false, [verify, verify])",
+ "Good parameters: Ed448 bits (jwk, object(kty, crv, x), {name: Ed448}, false, [verify, verify])",
+ "Good parameters: Ed448 bits (raw, buffer(57), {name: Ed448}, false, [verify, verify])",
+ "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: Ed448 bits (pkcs8, buffer(73), {name: Ed448}, false, [sign, sign])",
+ "Good parameters: Ed448 bits (jwk, object(crv, d, x, kty), {name: Ed448}, false, [sign, sign])",
+ "Good parameters: X25519 bits (jwk, object(crv, d, x, kty), {name: X25519}, true, [deriveKey])",
+ "Good parameters with ignored JWK alg: X25519 (jwk, object(crv, d, x, kty), {name: X25519}, true, [deriveKey])",
+ "Good parameters: X25519 bits (jwk, object(crv, d, x, kty), {name: X25519}, true, [deriveBits, deriveKey])",
+ "Good parameters with ignored JWK alg: X25519 (jwk, object(crv, d, x, kty), {name: X25519}, true, [deriveBits, deriveKey])",
+ "Good parameters: X25519 bits (jwk, object(crv, d, x, kty), {name: X25519}, true, [deriveBits])",
+ "Good parameters with ignored JWK alg: X25519 (jwk, object(crv, d, x, kty), {name: X25519}, true, [deriveBits])",
+ "Good parameters: X25519 bits (jwk, object(crv, d, x, kty), {name: X25519}, true, [deriveKey, deriveBits, deriveKey, deriveBits])",
+ "Good parameters with ignored JWK alg: X25519 (jwk, object(crv, d, x, kty), {name: X25519}, true, [deriveKey, deriveBits, deriveKey, 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 with ignored JWK alg: X448 (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 with ignored JWK alg: X448 (jwk, object(crv, d, x, kty), {name: X448}, true, [deriveKey])",
+ "Good parameters: X448 bits (pkcs8, buffer(72), {name: X448}, true, [deriveBits, deriveKey])",
+ "Good parameters: X448 bits (jwk, object(crv, d, x, kty), {name: X448}, true, [deriveBits, deriveKey])",
+ "Good parameters with ignored JWK alg: X448 (jwk, object(crv, d, x, kty), {name: X448}, true, [deriveBits, deriveKey])",
+ "Good parameters: X448 bits (pkcs8, buffer(72), {name: X448}, true, [deriveBits])",
+ "Good parameters: X448 bits (jwk, object(crv, d, x, kty), {name: X448}, true, [deriveBits])",
+ "Good parameters with ignored JWK alg: X448 (jwk, object(crv, d, x, kty), {name: X448}, true, [deriveBits])",
+ "Good parameters: X448 bits (pkcs8, buffer(72), {name: X448}, true, [deriveKey, deriveBits, deriveKey, deriveBits])",
+ "Good parameters: X448 bits (jwk, object(crv, d, x, kty), {name: X448}, true, [deriveKey, deriveBits, deriveKey, deriveBits])",
+ "Good parameters with ignored JWK alg: X448 (jwk, object(crv, d, x, kty), {name: X448}, true, [deriveKey, deriveBits, deriveKey, 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])",
+ "Good parameters: X448 bits (pkcs8, buffer(72), {name: X448}, false, [deriveKey, deriveBits, deriveKey, deriveBits])",
+ "Good parameters: X448 bits (jwk, object(crv, d, x, kty), {name: X448}, false, [deriveKey, deriveBits, deriveKey, deriveBits])"
+ ],
+ "okp_importKey.https.any.worker.html": [
+ "Good parameters: Ed448 bits (spki, buffer(69), {name: Ed448}, true, [verify])",
+ "Good parameters: Ed448 bits (jwk, object(kty, crv, x), {name: Ed448}, true, [verify])",
+ "Good parameters with ignored JWK alg: Ed448 (jwk, object(kty, crv, x), {name: Ed448}, true, [verify])",
+ "Good parameters: Ed448 bits (raw, buffer(57), {name: Ed448}, true, [verify])",
+ "Good parameters: Ed448 bits (spki, buffer(69), {name: Ed448}, true, [])",
+ "Good parameters: Ed448 bits (jwk, object(kty, crv, x), {name: Ed448}, true, [])",
+ "Good parameters with ignored JWK alg: Ed448 (jwk, object(kty, crv, x), {name: Ed448}, true, [])",
+ "Good parameters: Ed448 bits (raw, buffer(57), {name: Ed448}, true, [])",
+ "Good parameters: Ed448 bits (spki, buffer(69), {name: Ed448}, true, [verify, verify])",
+ "Good parameters: Ed448 bits (jwk, object(kty, crv, x), {name: Ed448}, true, [verify, verify])",
+ "Good parameters with ignored JWK alg: Ed448 (jwk, object(kty, crv, x), {name: Ed448}, true, [verify, verify])",
+ "Good parameters: Ed448 bits (raw, buffer(57), {name: Ed448}, true, [verify, verify])",
+ "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 with ignored JWK alg: Ed448 (jwk, object(crv, d, x, kty), {name: Ed448}, true, [sign])",
+ "Good parameters: Ed448 bits (pkcs8, buffer(73), {name: Ed448}, true, [sign, sign])",
+ "Good parameters: Ed448 bits (jwk, object(crv, d, x, kty), {name: Ed448}, true, [sign, sign])",
+ "Good parameters with ignored JWK alg: Ed448 (jwk, object(crv, d, x, kty), {name: Ed448}, true, [sign, sign])",
+ "Good parameters: Ed448 bits (spki, buffer(69), {name: Ed448}, false, [verify])",
+ "Good parameters: Ed448 bits (jwk, object(kty, crv, x), {name: Ed448}, false, [verify])",
+ "Good parameters: Ed448 bits (raw, buffer(57), {name: Ed448}, false, [verify])",
+ "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 (spki, buffer(69), {name: Ed448}, false, [verify, verify])",
+ "Good parameters: Ed448 bits (jwk, object(kty, crv, x), {name: Ed448}, false, [verify, verify])",
+ "Good parameters: Ed448 bits (raw, buffer(57), {name: Ed448}, false, [verify, verify])",
+ "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: Ed448 bits (pkcs8, buffer(73), {name: Ed448}, false, [sign, sign])",
+ "Good parameters: Ed448 bits (jwk, object(crv, d, x, kty), {name: Ed448}, false, [sign, sign])",
+ "Good parameters: X25519 bits (jwk, object(crv, d, x, kty), {name: X25519}, true, [deriveKey])",
+ "Good parameters with ignored JWK alg: X25519 (jwk, object(crv, d, x, kty), {name: X25519}, true, [deriveKey])",
+ "Good parameters: X25519 bits (jwk, object(crv, d, x, kty), {name: X25519}, true, [deriveBits, deriveKey])",
+ "Good parameters with ignored JWK alg: X25519 (jwk, object(crv, d, x, kty), {name: X25519}, true, [deriveBits, deriveKey])",
+ "Good parameters: X25519 bits (jwk, object(crv, d, x, kty), {name: X25519}, true, [deriveBits])",
+ "Good parameters with ignored JWK alg: X25519 (jwk, object(crv, d, x, kty), {name: X25519}, true, [deriveBits])",
+ "Good parameters: X25519 bits (jwk, object(crv, d, x, kty), {name: X25519}, true, [deriveKey, deriveBits, deriveKey, deriveBits])",
+ "Good parameters with ignored JWK alg: X25519 (jwk, object(crv, d, x, kty), {name: X25519}, true, [deriveKey, deriveBits, deriveKey, 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 with ignored JWK alg: X448 (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 with ignored JWK alg: X448 (jwk, object(crv, d, x, kty), {name: X448}, true, [deriveKey])",
+ "Good parameters: X448 bits (pkcs8, buffer(72), {name: X448}, true, [deriveBits, deriveKey])",
+ "Good parameters: X448 bits (jwk, object(crv, d, x, kty), {name: X448}, true, [deriveBits, deriveKey])",
+ "Good parameters with ignored JWK alg: X448 (jwk, object(crv, d, x, kty), {name: X448}, true, [deriveBits, deriveKey])",
+ "Good parameters: X448 bits (pkcs8, buffer(72), {name: X448}, true, [deriveBits])",
+ "Good parameters: X448 bits (jwk, object(crv, d, x, kty), {name: X448}, true, [deriveBits])",
+ "Good parameters with ignored JWK alg: X448 (jwk, object(crv, d, x, kty), {name: X448}, true, [deriveBits])",
+ "Good parameters: X448 bits (pkcs8, buffer(72), {name: X448}, true, [deriveKey, deriveBits, deriveKey, deriveBits])",
+ "Good parameters: X448 bits (jwk, object(crv, d, x, kty), {name: X448}, true, [deriveKey, deriveBits, deriveKey, deriveBits])",
+ "Good parameters with ignored JWK alg: X448 (jwk, object(crv, d, x, kty), {name: X448}, true, [deriveKey, deriveBits, deriveKey, 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])",
+ "Good parameters: X448 bits (pkcs8, buffer(72), {name: X448}, false, [deriveKey, deriveBits, deriveKey, deriveBits])",
+ "Good parameters: X448 bits (jwk, object(crv, d, x, kty), {name: X448}, false, [deriveKey, deriveBits, deriveKey, deriveBits])"
+ ],
+ "okp_importKey_failures_Ed25519.https.any.html": [
+ "Empty usages: importKey(pkcs8, {name: Ed25519}, true, [])",
+ "Empty usages: importKey(pkcs8, {name: Ed25519}, false, [])",
+ "Empty usages: importKey(jwk(private), {name: Ed25519}, true, [])",
+ "Empty usages: importKey(jwk(private), {name: Ed25519}, false, [])",
+ "Bad key length: importKey(raw, {name: Ed25519}, true, [verify])",
+ "Bad key length: importKey(raw, {name: Ed25519}, false, [verify])",
+ "Bad key length: importKey(raw, {name: Ed25519}, true, [verify, verify])",
+ "Bad key length: importKey(raw, {name: Ed25519}, false, [verify, verify])",
+ "Missing JWK 'x' parameter: importKey(jwk(private), {name: Ed25519}, true, [sign])",
+ "Missing JWK 'x' parameter: importKey(jwk(private), {name: Ed25519}, false, [sign])",
+ "Missing JWK 'x' parameter: importKey(jwk(private), {name: Ed25519}, true, [sign, sign])",
+ "Missing JWK 'x' parameter: importKey(jwk(private), {name: Ed25519}, false, [sign, sign])",
+ "Invalid key pair: importKey(jwk(private), {name: Ed25519}, true, [sign])",
+ "Invalid key pair: importKey(jwk(private), {name: Ed25519}, true, [sign, sign])"
+ ],
+ "okp_importKey_failures_Ed25519.https.any.worker.html": [
+ "Empty usages: importKey(pkcs8, {name: Ed25519}, true, [])",
+ "Empty usages: importKey(pkcs8, {name: Ed25519}, false, [])",
+ "Empty usages: importKey(jwk(private), {name: Ed25519}, true, [])",
+ "Empty usages: importKey(jwk(private), {name: Ed25519}, false, [])",
+ "Bad key length: importKey(raw, {name: Ed25519}, true, [verify])",
+ "Bad key length: importKey(raw, {name: Ed25519}, false, [verify])",
+ "Bad key length: importKey(raw, {name: Ed25519}, true, [verify, verify])",
+ "Bad key length: importKey(raw, {name: Ed25519}, false, [verify, verify])",
+ "Missing JWK 'x' parameter: importKey(jwk(private), {name: Ed25519}, true, [sign])",
+ "Missing JWK 'x' parameter: importKey(jwk(private), {name: Ed25519}, false, [sign])",
+ "Missing JWK 'x' parameter: importKey(jwk(private), {name: Ed25519}, true, [sign, sign])",
+ "Missing JWK 'x' parameter: importKey(jwk(private), {name: Ed25519}, false, [sign, sign])",
+ "Invalid key pair: importKey(jwk(private), {name: Ed25519}, true, [sign])",
+ "Invalid key pair: importKey(jwk(private), {name: Ed25519}, true, [sign, sign])"
+ ],
+ "okp_importKey_failures_Ed448.https.any.html": false,
+ "okp_importKey_failures_Ed448.https.any.worker.html": false,
+ "okp_importKey_failures_X25519.https.any.html": [
+ "Empty usages: importKey(pkcs8, {name: X25519}, true, [])",
+ "Empty usages: importKey(pkcs8, {name: X25519}, false, [])",
+ "Empty usages: importKey(jwk(private), {name: X25519}, true, [])",
+ "Empty usages: importKey(jwk(private), {name: X25519}, false, [])",
+ "Bad key length: importKey(raw, {name: X25519}, true, [])",
+ "Bad key length: importKey(raw, {name: X25519}, false, [])",
+ "Bad key length: importKey(jwk (public) , {name: X25519}, true, [])",
+ "Bad key length: importKey(jwk (public) , {name: X25519}, false, [])",
+ "Bad key length: importKey(jwk(private), {name: X25519}, true, [deriveKey])",
+ "Bad key length: importKey(jwk(private), {name: X25519}, false, [deriveKey])",
+ "Bad key length: importKey(jwk(private), {name: X25519}, true, [deriveBits, deriveKey])",
+ "Bad key length: importKey(jwk(private), {name: X25519}, false, [deriveBits, deriveKey])",
+ "Bad key length: importKey(jwk(private), {name: X25519}, true, [deriveBits])",
+ "Bad key length: importKey(jwk(private), {name: X25519}, false, [deriveBits])",
+ "Bad key length: importKey(jwk(private), {name: X25519}, true, [deriveKey, deriveBits, deriveKey, deriveBits])",
+ "Bad key length: importKey(jwk(private), {name: X25519}, false, [deriveKey, deriveBits, deriveKey, deriveBits])",
+ "Missing JWK 'x' parameter: importKey(jwk(private), {name: X25519}, true, [deriveKey])",
+ "Missing JWK 'x' parameter: importKey(jwk(private), {name: X25519}, false, [deriveKey])",
+ "Missing JWK 'x' parameter: importKey(jwk(private), {name: X25519}, true, [deriveBits, deriveKey])",
+ "Missing JWK 'x' parameter: importKey(jwk(private), {name: X25519}, false, [deriveBits, deriveKey])",
+ "Missing JWK 'x' parameter: importKey(jwk(private), {name: X25519}, true, [deriveBits])",
+ "Missing JWK 'x' parameter: importKey(jwk(private), {name: X25519}, false, [deriveBits])",
+ "Missing JWK 'x' parameter: importKey(jwk(private), {name: X25519}, true, [deriveKey, deriveBits, deriveKey, deriveBits])",
+ "Missing JWK 'x' parameter: importKey(jwk(private), {name: X25519}, false, [deriveKey, deriveBits, deriveKey, deriveBits])",
+ "Invalid key pair: importKey(jwk(private), {name: X25519}, true, [deriveKey])",
+ "Invalid key pair: importKey(jwk(private), {name: X25519}, true, [deriveBits, deriveKey])",
+ "Invalid key pair: importKey(jwk(private), {name: X25519}, true, [deriveBits])",
+ "Invalid key pair: importKey(jwk(private), {name: X25519}, true, [deriveKey, deriveBits, deriveKey, deriveBits])"
+ ],
+ "okp_importKey_failures_X25519.https.any.worker.html": [
+ "Empty usages: importKey(pkcs8, {name: X25519}, true, [])",
+ "Empty usages: importKey(pkcs8, {name: X25519}, false, [])",
+ "Empty usages: importKey(jwk(private), {name: X25519}, true, [])",
+ "Empty usages: importKey(jwk(private), {name: X25519}, false, [])",
+ "Bad key length: importKey(raw, {name: X25519}, true, [])",
+ "Bad key length: importKey(raw, {name: X25519}, false, [])",
+ "Bad key length: importKey(jwk (public) , {name: X25519}, true, [])",
+ "Bad key length: importKey(jwk (public) , {name: X25519}, false, [])",
+ "Bad key length: importKey(jwk(private), {name: X25519}, true, [deriveKey])",
+ "Bad key length: importKey(jwk(private), {name: X25519}, false, [deriveKey])",
+ "Bad key length: importKey(jwk(private), {name: X25519}, true, [deriveBits, deriveKey])",
+ "Bad key length: importKey(jwk(private), {name: X25519}, false, [deriveBits, deriveKey])",
+ "Bad key length: importKey(jwk(private), {name: X25519}, true, [deriveBits])",
+ "Bad key length: importKey(jwk(private), {name: X25519}, false, [deriveBits])",
+ "Bad key length: importKey(jwk(private), {name: X25519}, true, [deriveKey, deriveBits, deriveKey, deriveBits])",
+ "Bad key length: importKey(jwk(private), {name: X25519}, false, [deriveKey, deriveBits, deriveKey, deriveBits])",
+ "Missing JWK 'x' parameter: importKey(jwk(private), {name: X25519}, true, [deriveKey])",
+ "Missing JWK 'x' parameter: importKey(jwk(private), {name: X25519}, false, [deriveKey])",
+ "Missing JWK 'x' parameter: importKey(jwk(private), {name: X25519}, true, [deriveBits, deriveKey])",
+ "Missing JWK 'x' parameter: importKey(jwk(private), {name: X25519}, false, [deriveBits, deriveKey])",
+ "Missing JWK 'x' parameter: importKey(jwk(private), {name: X25519}, true, [deriveBits])",
+ "Missing JWK 'x' parameter: importKey(jwk(private), {name: X25519}, false, [deriveBits])",
+ "Missing JWK 'x' parameter: importKey(jwk(private), {name: X25519}, true, [deriveKey, deriveBits, deriveKey, deriveBits])",
+ "Missing JWK 'x' parameter: importKey(jwk(private), {name: X25519}, false, [deriveKey, deriveBits, deriveKey, deriveBits])",
+ "Invalid key pair: importKey(jwk(private), {name: X25519}, true, [deriveKey])",
+ "Invalid key pair: importKey(jwk(private), {name: X25519}, true, [deriveBits, deriveKey])",
+ "Invalid key pair: importKey(jwk(private), {name: X25519}, true, [deriveBits])",
+ "Invalid key pair: importKey(jwk(private), {name: X25519}, true, [deriveKey, deriveBits, deriveKey, deriveBits])"
+ ],
+ "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,
+ "sign_verify": {
+ "ecdsa.https.any.html": [
+ "ECDSA P-256 with SHA-1 verification",
+ "ECDSA P-256 with SHA-384 verification",
+ "ECDSA P-256 with SHA-512 verification",
+ "ECDSA P-384 with SHA-1 verification",
+ "ECDSA P-384 with SHA-256 verification",
+ "ECDSA P-384 with SHA-512 verification",
+ "importVectorKeys step: ECDSA P-521 with SHA-1 verification",
+ "importVectorKeys step: ECDSA P-521 with SHA-256 verification",
+ "importVectorKeys step: ECDSA P-521 with SHA-384 verification",
+ "importVectorKeys step: ECDSA P-521 with SHA-512 verification",
+ "ECDSA P-256 with SHA-1 verification with altered signature after call",
+ "ECDSA P-256 with SHA-384 verification with altered signature after call",
+ "ECDSA P-256 with SHA-512 verification with altered signature after call",
+ "ECDSA P-384 with SHA-1 verification with altered signature after call",
+ "ECDSA P-384 with SHA-256 verification with altered signature after call",
+ "ECDSA P-384 with SHA-512 verification with altered signature after call",
+ "importVectorKeys step: ECDSA P-521 with SHA-1 verification with altered signature after call",
+ "importVectorKeys step: ECDSA P-521 with SHA-256 verification with altered signature after call",
+ "importVectorKeys step: ECDSA P-521 with SHA-384 verification with altered signature after call",
+ "importVectorKeys step: ECDSA P-521 with SHA-512 verification with altered signature after call",
+ "ECDSA P-256 with SHA-1 with altered plaintext after call",
+ "ECDSA P-256 with SHA-384 with altered plaintext after call",
+ "ECDSA P-256 with SHA-512 with altered plaintext after call",
+ "ECDSA P-384 with SHA-1 with altered plaintext after call",
+ "ECDSA P-384 with SHA-256 with altered plaintext after call",
+ "ECDSA P-384 with SHA-512 with altered plaintext after call",
+ "importVectorKeys step: ECDSA P-521 with SHA-1 with altered plaintext after call",
+ "importVectorKeys step: ECDSA P-521 with SHA-256 with altered plaintext after call",
+ "importVectorKeys step: ECDSA P-521 with SHA-384 with altered plaintext after call",
+ "importVectorKeys step: ECDSA P-521 with SHA-512 with altered plaintext after call",
+ "importVectorKeys step: ECDSA P-521 with SHA-1 using privateKey to verify",
+ "importVectorKeys step: ECDSA P-521 with SHA-256 using privateKey to verify",
+ "importVectorKeys step: ECDSA P-521 with SHA-384 using privateKey to verify",
+ "importVectorKeys step: ECDSA P-521 with SHA-512 using privateKey to verify",
+ "importVectorKeys step: ECDSA P-521 with SHA-1 using publicKey to sign",
+ "importVectorKeys step: ECDSA P-521 with SHA-256 using publicKey to sign",
+ "importVectorKeys step: ECDSA P-521 with SHA-384 using publicKey to sign",
+ "importVectorKeys step: ECDSA P-521 with SHA-512 using publicKey to sign",
+ "importVectorKeys step: ECDSA P-521 with SHA-1 no verify usage",
+ "importVectorKeys step: ECDSA P-521 with SHA-256 no verify usage",
+ "importVectorKeys step: ECDSA P-521 with SHA-384 no verify usage",
+ "importVectorKeys step: ECDSA P-521 with SHA-512 no verify usage",
+ "ECDSA P-256 with SHA-1 round trip",
+ "ECDSA P-256 with SHA-384 round trip",
+ "ECDSA P-256 with SHA-512 round trip",
+ "ECDSA P-384 with SHA-1 round trip",
+ "ECDSA P-384 with SHA-256 round trip",
+ "ECDSA P-384 with SHA-512 round trip",
+ "importVectorKeys step: ECDSA P-521 with SHA-1 round trip",
+ "importVectorKeys step: ECDSA P-521 with SHA-256 round trip",
+ "importVectorKeys step: ECDSA P-521 with SHA-384 round trip",
+ "importVectorKeys step: ECDSA P-521 with SHA-512 round trip",
+ "ECDSA P-256 with SHA-1 verification failure due to altered signature",
+ "ECDSA P-256 with SHA-384 verification failure due to altered signature",
+ "ECDSA P-256 with SHA-512 verification failure due to altered signature",
+ "ECDSA P-384 with SHA-1 verification failure due to altered signature",
+ "ECDSA P-384 with SHA-256 verification failure due to altered signature",
+ "ECDSA P-384 with SHA-512 verification failure due to altered signature",
+ "importVectorKeys step: ECDSA P-521 with SHA-1 verification failure due to altered signature",
+ "importVectorKeys step: ECDSA P-521 with SHA-256 verification failure due to altered signature",
+ "importVectorKeys step: ECDSA P-521 with SHA-384 verification failure due to altered signature",
+ "importVectorKeys step: ECDSA P-521 with SHA-512 verification failure due to altered signature",
+ "ECDSA P-256 with SHA-256 verification failure due to wrong hash",
+ "ECDSA P-256 with SHA-384 verification failure due to wrong hash",
+ "ECDSA P-256 with SHA-512 verification failure due to wrong hash",
+ "ECDSA P-384 with SHA-1 verification failure due to wrong hash",
+ "ECDSA P-384 with SHA-256 verification failure due to wrong hash",
+ "ECDSA P-384 with SHA-384 verification failure due to wrong hash",
+ "ECDSA P-384 with SHA-512 verification failure due to wrong hash",
+ "importVectorKeys step: ECDSA P-521 with SHA-1 verification failure due to wrong hash",
+ "importVectorKeys step: ECDSA P-521 with SHA-256 verification failure due to wrong hash",
+ "importVectorKeys step: ECDSA P-521 with SHA-384 verification failure due to wrong hash",
+ "importVectorKeys step: ECDSA P-521 with SHA-512 verification failure due to wrong hash",
+ "importVectorKeys step: ECDSA P-521 with SHA-1 verification failure due to bad hash name",
+ "importVectorKeys step: ECDSA P-521 with SHA-256 verification failure due to bad hash name",
+ "importVectorKeys step: ECDSA P-521 with SHA-384 verification failure due to bad hash name",
+ "importVectorKeys step: ECDSA P-521 with SHA-512 verification failure due to bad hash name",
+ "ECDSA P-256 with SHA-1 verification failure due to shortened signature",
+ "ECDSA P-256 with SHA-384 verification failure due to shortened signature",
+ "ECDSA P-256 with SHA-512 verification failure due to shortened signature",
+ "ECDSA P-384 with SHA-1 verification failure due to shortened signature",
+ "ECDSA P-384 with SHA-256 verification failure due to shortened signature",
+ "ECDSA P-384 with SHA-512 verification failure due to shortened signature",
+ "importVectorKeys step: ECDSA P-521 with SHA-1 verification failure due to shortened signature",
+ "importVectorKeys step: ECDSA P-521 with SHA-256 verification failure due to shortened signature",
+ "importVectorKeys step: ECDSA P-521 with SHA-384 verification failure due to shortened signature",
+ "importVectorKeys step: ECDSA P-521 with SHA-512 verification failure due to shortened signature",
+ "ECDSA P-256 with SHA-1 verification failure due to altered plaintext",
+ "ECDSA P-256 with SHA-384 verification failure due to altered plaintext",
+ "ECDSA P-256 with SHA-512 verification failure due to altered plaintext",
+ "ECDSA P-384 with SHA-1 verification failure due to altered plaintext",
+ "ECDSA P-384 with SHA-256 verification failure due to altered plaintext",
+ "ECDSA P-384 with SHA-512 verification failure due to altered plaintext",
+ "importVectorKeys step: ECDSA P-521 with SHA-1 verification failure due to altered plaintext",
+ "importVectorKeys step: ECDSA P-521 with SHA-256 verification failure due to altered plaintext",
+ "importVectorKeys step: ECDSA P-521 with SHA-384 verification failure due to altered plaintext",
+ "importVectorKeys step: ECDSA P-521 with SHA-512 verification failure due to altered plaintext",
+ "ECDSA P-256 with SHA-1 - The signature was truncated by 1 byte verification",
+ "ECDSA P-256 with SHA-1 - The signature was made using SHA-1, however verification is being done using SHA-384 verification",
+ "ECDSA P-256 with SHA-1 - The signature was made using SHA-1, however verification is being done using SHA-512 verification",
+ "ECDSA P-256 with SHA-1 - Signature has excess padding verification",
+ "ECDSA P-256 with SHA-1 - The signature is empty verification",
+ "ECDSA P-256 with SHA-1 - The signature is all zeroes verification",
+ "ECDSA P-256 with SHA-256 - The signature was made using SHA-256, however verification is being done using SHA-1 verification",
+ "ECDSA P-256 with SHA-256 - The signature was made using SHA-256, however verification is being done using SHA-384 verification",
+ "ECDSA P-256 with SHA-256 - The signature was made using SHA-256, however verification is being done using SHA-512 verification",
+ "ECDSA P-256 with SHA-384 - The signature was truncated by 1 byte verification",
+ "ECDSA P-256 with SHA-384 - The signature was made using SHA-384, however verification is being done using SHA-1 verification",
+ "ECDSA P-256 with SHA-384 - The signature was made using SHA-384, however verification is being done using SHA-512 verification",
+ "ECDSA P-256 with SHA-384 - Signature has excess padding verification",
+ "ECDSA P-256 with SHA-384 - The signature is empty verification",
+ "ECDSA P-256 with SHA-384 - The signature is all zeroes verification",
+ "ECDSA P-256 with SHA-512 - The signature was truncated by 1 byte verification",
+ "ECDSA P-256 with SHA-512 - The signature was made using SHA-512, however verification is being done using SHA-1 verification",
+ "ECDSA P-256 with SHA-512 - The signature was made using SHA-512, however verification is being done using SHA-384 verification",
+ "ECDSA P-256 with SHA-512 - Signature has excess padding verification",
+ "ECDSA P-256 with SHA-512 - The signature is empty verification",
+ "ECDSA P-256 with SHA-512 - The signature is all zeroes verification",
+ "ECDSA P-384 with SHA-1 - The signature was truncated by 1 byte verification",
+ "ECDSA P-384 with SHA-1 - The signature was made using SHA-1, however verification is being done using SHA-256 verification",
+ "ECDSA P-384 with SHA-1 - The signature was made using SHA-1, however verification is being done using SHA-512 verification",
+ "ECDSA P-384 with SHA-1 - Signature has excess padding verification",
+ "ECDSA P-384 with SHA-1 - The signature is empty verification",
+ "ECDSA P-384 with SHA-1 - The signature is all zeroes verification",
+ "ECDSA P-384 with SHA-256 - The signature was truncated by 1 byte verification",
+ "ECDSA P-384 with SHA-256 - The signature was made using SHA-256, however verification is being done using SHA-1 verification",
+ "ECDSA P-384 with SHA-256 - The signature was made using SHA-256, however verification is being done using SHA-512 verification",
+ "ECDSA P-384 with SHA-256 - Signature has excess padding verification",
+ "ECDSA P-384 with SHA-256 - The signature is empty verification",
+ "ECDSA P-384 with SHA-256 - The signature is all zeroes verification",
+ "ECDSA P-384 with SHA-384 - The signature was made using SHA-384, however verification is being done using SHA-1 verification",
+ "ECDSA P-384 with SHA-384 - The signature was made using SHA-384, however verification is being done using SHA-256 verification",
+ "ECDSA P-384 with SHA-384 - The signature was made using SHA-384, however verification is being done using SHA-512 verification",
+ "ECDSA P-384 with SHA-512 - The signature was truncated by 1 byte verification",
+ "ECDSA P-384 with SHA-512 - The signature was made using SHA-512, however verification is being done using SHA-1 verification",
+ "ECDSA P-384 with SHA-512 - The signature was made using SHA-512, however verification is being done using SHA-256 verification",
+ "ECDSA P-384 with SHA-512 - Signature has excess padding verification",
+ "ECDSA P-384 with SHA-512 - The signature is empty verification",
+ "ECDSA P-384 with SHA-512 - The signature is all zeroes verification",
+ "importVectorKeys step: ECDSA P-521 with SHA-1 - The signature was truncated by 1 byte verification",
+ "importVectorKeys step: ECDSA P-521 with SHA-1 - The signature was made using SHA-1, however verification is being done using SHA-256 verification",
+ "importVectorKeys step: ECDSA P-521 with SHA-1 - The signature was made using SHA-1, however verification is being done using SHA-384 verification",
+ "importVectorKeys step: ECDSA P-521 with SHA-1 - The signature was made using SHA-1, however verification is being done using SHA-512 verification",
+ "importVectorKeys step: ECDSA P-521 with SHA-1 - Signature has excess padding verification",
+ "importVectorKeys step: ECDSA P-521 with SHA-1 - The signature is empty verification",
+ "importVectorKeys step: ECDSA P-521 with SHA-1 - The signature is all zeroes verification",
+ "importVectorKeys step: ECDSA P-521 with SHA-256 - The signature was truncated by 1 byte verification",
+ "importVectorKeys step: ECDSA P-521 with SHA-256 - The signature was made using SHA-256, however verification is being done using SHA-1 verification",
+ "importVectorKeys step: ECDSA P-521 with SHA-256 - The signature was made using SHA-256, however verification is being done using SHA-384 verification",
+ "importVectorKeys step: ECDSA P-521 with SHA-256 - The signature was made using SHA-256, however verification is being done using SHA-512 verification",
+ "importVectorKeys step: ECDSA P-521 with SHA-256 - Signature has excess padding verification",
+ "importVectorKeys step: ECDSA P-521 with SHA-256 - The signature is empty verification",
+ "importVectorKeys step: ECDSA P-521 with SHA-256 - The signature is all zeroes verification",
+ "importVectorKeys step: ECDSA P-521 with SHA-384 - The signature was truncated by 1 byte verification",
+ "importVectorKeys step: ECDSA P-521 with SHA-384 - The signature was made using SHA-384, however verification is being done using SHA-1 verification",
+ "importVectorKeys step: ECDSA P-521 with SHA-384 - The signature was made using SHA-384, however verification is being done using SHA-256 verification",
+ "importVectorKeys step: ECDSA P-521 with SHA-384 - The signature was made using SHA-384, however verification is being done using SHA-512 verification",
+ "importVectorKeys step: ECDSA P-521 with SHA-384 - Signature has excess padding verification",
+ "importVectorKeys step: ECDSA P-521 with SHA-384 - The signature is empty verification",
+ "importVectorKeys step: ECDSA P-521 with SHA-384 - The signature is all zeroes verification",
+ "importVectorKeys step: ECDSA P-521 with SHA-512 - The signature was truncated by 1 byte verification",
+ "importVectorKeys step: ECDSA P-521 with SHA-512 - The signature was made using SHA-512, however verification is being done using SHA-1 verification",
+ "importVectorKeys step: ECDSA P-521 with SHA-512 - The signature was made using SHA-512, however verification is being done using SHA-256 verification",
+ "importVectorKeys step: ECDSA P-521 with SHA-512 - The signature was made using SHA-512, however verification is being done using SHA-384 verification",
+ "importVectorKeys step: ECDSA P-521 with SHA-512 - Signature has excess padding verification",
+ "importVectorKeys step: ECDSA P-521 with SHA-512 - The signature is empty verification",
+ "importVectorKeys step: ECDSA P-521 with SHA-512 - The signature is all zeroes verification",
+ "importVectorKeys step: ECDSA P-521 with SHA-1 signing with wrong algorithm name",
+ "importVectorKeys step: ECDSA P-521 with SHA-256 signing with wrong algorithm name",
+ "importVectorKeys step: ECDSA P-521 with SHA-384 signing with wrong algorithm name",
+ "importVectorKeys step: ECDSA P-521 with SHA-512 signing with wrong algorithm name",
+ "importVectorKeys step: ECDSA P-521 with SHA-1 verifying with wrong algorithm name",
+ "importVectorKeys step: ECDSA P-521 with SHA-256 verifying with wrong algorithm name",
+ "importVectorKeys step: ECDSA P-521 with SHA-384 verifying with wrong algorithm name",
+ "importVectorKeys step: ECDSA P-521 with SHA-512 verifying with wrong algorithm name"
+ ],
+ "ecdsa.https.any.worker.html": [
+ "ECDSA P-256 with SHA-1 verification",
+ "ECDSA P-256 with SHA-384 verification",
+ "ECDSA P-256 with SHA-512 verification",
+ "ECDSA P-384 with SHA-1 verification",
+ "ECDSA P-384 with SHA-256 verification",
+ "ECDSA P-384 with SHA-512 verification",
+ "importVectorKeys step: ECDSA P-521 with SHA-1 verification",
+ "importVectorKeys step: ECDSA P-521 with SHA-256 verification",
+ "importVectorKeys step: ECDSA P-521 with SHA-384 verification",
+ "importVectorKeys step: ECDSA P-521 with SHA-512 verification",
+ "ECDSA P-256 with SHA-1 verification with altered signature after call",
+ "ECDSA P-256 with SHA-384 verification with altered signature after call",
+ "ECDSA P-256 with SHA-512 verification with altered signature after call",
+ "ECDSA P-384 with SHA-1 verification with altered signature after call",
+ "ECDSA P-384 with SHA-256 verification with altered signature after call",
+ "ECDSA P-384 with SHA-512 verification with altered signature after call",
+ "importVectorKeys step: ECDSA P-521 with SHA-1 verification with altered signature after call",
+ "importVectorKeys step: ECDSA P-521 with SHA-256 verification with altered signature after call",
+ "importVectorKeys step: ECDSA P-521 with SHA-384 verification with altered signature after call",
+ "importVectorKeys step: ECDSA P-521 with SHA-512 verification with altered signature after call",
+ "ECDSA P-256 with SHA-1 with altered plaintext after call",
+ "ECDSA P-256 with SHA-384 with altered plaintext after call",
+ "ECDSA P-256 with SHA-512 with altered plaintext after call",
+ "ECDSA P-384 with SHA-1 with altered plaintext after call",
+ "ECDSA P-384 with SHA-256 with altered plaintext after call",
+ "ECDSA P-384 with SHA-512 with altered plaintext after call",
+ "importVectorKeys step: ECDSA P-521 with SHA-1 with altered plaintext after call",
+ "importVectorKeys step: ECDSA P-521 with SHA-256 with altered plaintext after call",
+ "importVectorKeys step: ECDSA P-521 with SHA-384 with altered plaintext after call",
+ "importVectorKeys step: ECDSA P-521 with SHA-512 with altered plaintext after call",
+ "importVectorKeys step: ECDSA P-521 with SHA-1 using privateKey to verify",
+ "importVectorKeys step: ECDSA P-521 with SHA-256 using privateKey to verify",
+ "importVectorKeys step: ECDSA P-521 with SHA-384 using privateKey to verify",
+ "importVectorKeys step: ECDSA P-521 with SHA-512 using privateKey to verify",
+ "importVectorKeys step: ECDSA P-521 with SHA-1 using publicKey to sign",
+ "importVectorKeys step: ECDSA P-521 with SHA-256 using publicKey to sign",
+ "importVectorKeys step: ECDSA P-521 with SHA-384 using publicKey to sign",
+ "importVectorKeys step: ECDSA P-521 with SHA-512 using publicKey to sign",
+ "importVectorKeys step: ECDSA P-521 with SHA-1 no verify usage",
+ "importVectorKeys step: ECDSA P-521 with SHA-256 no verify usage",
+ "importVectorKeys step: ECDSA P-521 with SHA-384 no verify usage",
+ "importVectorKeys step: ECDSA P-521 with SHA-512 no verify usage",
+ "ECDSA P-256 with SHA-1 round trip",
+ "ECDSA P-256 with SHA-384 round trip",
+ "ECDSA P-256 with SHA-512 round trip",
+ "ECDSA P-384 with SHA-1 round trip",
+ "ECDSA P-384 with SHA-256 round trip",
+ "ECDSA P-384 with SHA-512 round trip",
+ "importVectorKeys step: ECDSA P-521 with SHA-1 round trip",
+ "importVectorKeys step: ECDSA P-521 with SHA-256 round trip",
+ "importVectorKeys step: ECDSA P-521 with SHA-384 round trip",
+ "importVectorKeys step: ECDSA P-521 with SHA-512 round trip",
+ "ECDSA P-256 with SHA-1 verification failure due to altered signature",
+ "ECDSA P-256 with SHA-384 verification failure due to altered signature",
+ "ECDSA P-256 with SHA-512 verification failure due to altered signature",
+ "ECDSA P-384 with SHA-1 verification failure due to altered signature",
+ "ECDSA P-384 with SHA-256 verification failure due to altered signature",
+ "ECDSA P-384 with SHA-512 verification failure due to altered signature",
+ "importVectorKeys step: ECDSA P-521 with SHA-1 verification failure due to altered signature",
+ "importVectorKeys step: ECDSA P-521 with SHA-256 verification failure due to altered signature",
+ "importVectorKeys step: ECDSA P-521 with SHA-384 verification failure due to altered signature",
+ "importVectorKeys step: ECDSA P-521 with SHA-512 verification failure due to altered signature",
+ "ECDSA P-256 with SHA-256 verification failure due to wrong hash",
+ "ECDSA P-256 with SHA-384 verification failure due to wrong hash",
+ "ECDSA P-256 with SHA-512 verification failure due to wrong hash",
+ "ECDSA P-384 with SHA-1 verification failure due to wrong hash",
+ "ECDSA P-384 with SHA-256 verification failure due to wrong hash",
+ "ECDSA P-384 with SHA-384 verification failure due to wrong hash",
+ "ECDSA P-384 with SHA-512 verification failure due to wrong hash",
+ "importVectorKeys step: ECDSA P-521 with SHA-1 verification failure due to wrong hash",
+ "importVectorKeys step: ECDSA P-521 with SHA-256 verification failure due to wrong hash",
+ "importVectorKeys step: ECDSA P-521 with SHA-384 verification failure due to wrong hash",
+ "importVectorKeys step: ECDSA P-521 with SHA-512 verification failure due to wrong hash",
+ "importVectorKeys step: ECDSA P-521 with SHA-1 verification failure due to bad hash name",
+ "importVectorKeys step: ECDSA P-521 with SHA-256 verification failure due to bad hash name",
+ "importVectorKeys step: ECDSA P-521 with SHA-384 verification failure due to bad hash name",
+ "importVectorKeys step: ECDSA P-521 with SHA-512 verification failure due to bad hash name",
+ "ECDSA P-256 with SHA-1 verification failure due to shortened signature",
+ "ECDSA P-256 with SHA-384 verification failure due to shortened signature",
+ "ECDSA P-256 with SHA-512 verification failure due to shortened signature",
+ "ECDSA P-384 with SHA-1 verification failure due to shortened signature",
+ "ECDSA P-384 with SHA-256 verification failure due to shortened signature",
+ "ECDSA P-384 with SHA-512 verification failure due to shortened signature",
+ "importVectorKeys step: ECDSA P-521 with SHA-1 verification failure due to shortened signature",
+ "importVectorKeys step: ECDSA P-521 with SHA-256 verification failure due to shortened signature",
+ "importVectorKeys step: ECDSA P-521 with SHA-384 verification failure due to shortened signature",
+ "importVectorKeys step: ECDSA P-521 with SHA-512 verification failure due to shortened signature",
+ "ECDSA P-256 with SHA-1 verification failure due to altered plaintext",
+ "ECDSA P-256 with SHA-384 verification failure due to altered plaintext",
+ "ECDSA P-256 with SHA-512 verification failure due to altered plaintext",
+ "ECDSA P-384 with SHA-1 verification failure due to altered plaintext",
+ "ECDSA P-384 with SHA-256 verification failure due to altered plaintext",
+ "ECDSA P-384 with SHA-512 verification failure due to altered plaintext",
+ "importVectorKeys step: ECDSA P-521 with SHA-1 verification failure due to altered plaintext",
+ "importVectorKeys step: ECDSA P-521 with SHA-256 verification failure due to altered plaintext",
+ "importVectorKeys step: ECDSA P-521 with SHA-384 verification failure due to altered plaintext",
+ "importVectorKeys step: ECDSA P-521 with SHA-512 verification failure due to altered plaintext",
+ "ECDSA P-256 with SHA-1 - The signature was truncated by 1 byte verification",
+ "ECDSA P-256 with SHA-1 - The signature was made using SHA-1, however verification is being done using SHA-384 verification",
+ "ECDSA P-256 with SHA-1 - The signature was made using SHA-1, however verification is being done using SHA-512 verification",
+ "ECDSA P-256 with SHA-1 - Signature has excess padding verification",
+ "ECDSA P-256 with SHA-1 - The signature is empty verification",
+ "ECDSA P-256 with SHA-1 - The signature is all zeroes verification",
+ "ECDSA P-256 with SHA-256 - The signature was made using SHA-256, however verification is being done using SHA-1 verification",
+ "ECDSA P-256 with SHA-256 - The signature was made using SHA-256, however verification is being done using SHA-384 verification",
+ "ECDSA P-256 with SHA-256 - The signature was made using SHA-256, however verification is being done using SHA-512 verification",
+ "ECDSA P-256 with SHA-384 - The signature was truncated by 1 byte verification",
+ "ECDSA P-256 with SHA-384 - The signature was made using SHA-384, however verification is being done using SHA-1 verification",
+ "ECDSA P-256 with SHA-384 - The signature was made using SHA-384, however verification is being done using SHA-512 verification",
+ "ECDSA P-256 with SHA-384 - Signature has excess padding verification",
+ "ECDSA P-256 with SHA-384 - The signature is empty verification",
+ "ECDSA P-256 with SHA-384 - The signature is all zeroes verification",
+ "ECDSA P-256 with SHA-512 - The signature was truncated by 1 byte verification",
+ "ECDSA P-256 with SHA-512 - The signature was made using SHA-512, however verification is being done using SHA-1 verification",
+ "ECDSA P-256 with SHA-512 - The signature was made using SHA-512, however verification is being done using SHA-384 verification",
+ "ECDSA P-256 with SHA-512 - Signature has excess padding verification",
+ "ECDSA P-256 with SHA-512 - The signature is empty verification",
+ "ECDSA P-256 with SHA-512 - The signature is all zeroes verification",
+ "ECDSA P-384 with SHA-1 - The signature was truncated by 1 byte verification",
+ "ECDSA P-384 with SHA-1 - The signature was made using SHA-1, however verification is being done using SHA-256 verification",
+ "ECDSA P-384 with SHA-1 - The signature was made using SHA-1, however verification is being done using SHA-512 verification",
+ "ECDSA P-384 with SHA-1 - Signature has excess padding verification",
+ "ECDSA P-384 with SHA-1 - The signature is empty verification",
+ "ECDSA P-384 with SHA-1 - The signature is all zeroes verification",
+ "ECDSA P-384 with SHA-256 - The signature was truncated by 1 byte verification",
+ "ECDSA P-384 with SHA-256 - The signature was made using SHA-256, however verification is being done using SHA-1 verification",
+ "ECDSA P-384 with SHA-256 - The signature was made using SHA-256, however verification is being done using SHA-512 verification",
+ "ECDSA P-384 with SHA-256 - Signature has excess padding verification",
+ "ECDSA P-384 with SHA-256 - The signature is empty verification",
+ "ECDSA P-384 with SHA-256 - The signature is all zeroes verification",
+ "ECDSA P-384 with SHA-384 - The signature was made using SHA-384, however verification is being done using SHA-1 verification",
+ "ECDSA P-384 with SHA-384 - The signature was made using SHA-384, however verification is being done using SHA-256 verification",
+ "ECDSA P-384 with SHA-384 - The signature was made using SHA-384, however verification is being done using SHA-512 verification",
+ "ECDSA P-384 with SHA-512 - The signature was truncated by 1 byte verification",
+ "ECDSA P-384 with SHA-512 - The signature was made using SHA-512, however verification is being done using SHA-1 verification",
+ "ECDSA P-384 with SHA-512 - The signature was made using SHA-512, however verification is being done using SHA-256 verification",
+ "ECDSA P-384 with SHA-512 - Signature has excess padding verification",
+ "ECDSA P-384 with SHA-512 - The signature is empty verification",
+ "ECDSA P-384 with SHA-512 - The signature is all zeroes verification",
+ "importVectorKeys step: ECDSA P-521 with SHA-1 - The signature was truncated by 1 byte verification",
+ "importVectorKeys step: ECDSA P-521 with SHA-1 - The signature was made using SHA-1, however verification is being done using SHA-256 verification",
+ "importVectorKeys step: ECDSA P-521 with SHA-1 - The signature was made using SHA-1, however verification is being done using SHA-384 verification",
+ "importVectorKeys step: ECDSA P-521 with SHA-1 - The signature was made using SHA-1, however verification is being done using SHA-512 verification",
+ "importVectorKeys step: ECDSA P-521 with SHA-1 - Signature has excess padding verification",
+ "importVectorKeys step: ECDSA P-521 with SHA-1 - The signature is empty verification",
+ "importVectorKeys step: ECDSA P-521 with SHA-1 - The signature is all zeroes verification",
+ "importVectorKeys step: ECDSA P-521 with SHA-256 - The signature was truncated by 1 byte verification",
+ "importVectorKeys step: ECDSA P-521 with SHA-256 - The signature was made using SHA-256, however verification is being done using SHA-1 verification",
+ "importVectorKeys step: ECDSA P-521 with SHA-256 - The signature was made using SHA-256, however verification is being done using SHA-384 verification",
+ "importVectorKeys step: ECDSA P-521 with SHA-256 - The signature was made using SHA-256, however verification is being done using SHA-512 verification",
+ "importVectorKeys step: ECDSA P-521 with SHA-256 - Signature has excess padding verification",
+ "importVectorKeys step: ECDSA P-521 with SHA-256 - The signature is empty verification",
+ "importVectorKeys step: ECDSA P-521 with SHA-256 - The signature is all zeroes verification",
+ "importVectorKeys step: ECDSA P-521 with SHA-384 - The signature was truncated by 1 byte verification",
+ "importVectorKeys step: ECDSA P-521 with SHA-384 - The signature was made using SHA-384, however verification is being done using SHA-1 verification",
+ "importVectorKeys step: ECDSA P-521 with SHA-384 - The signature was made using SHA-384, however verification is being done using SHA-256 verification",
+ "importVectorKeys step: ECDSA P-521 with SHA-384 - The signature was made using SHA-384, however verification is being done using SHA-512 verification",
+ "importVectorKeys step: ECDSA P-521 with SHA-384 - Signature has excess padding verification",
+ "importVectorKeys step: ECDSA P-521 with SHA-384 - The signature is empty verification",
+ "importVectorKeys step: ECDSA P-521 with SHA-384 - The signature is all zeroes verification",
+ "importVectorKeys step: ECDSA P-521 with SHA-512 - The signature was truncated by 1 byte verification",
+ "importVectorKeys step: ECDSA P-521 with SHA-512 - The signature was made using SHA-512, however verification is being done using SHA-1 verification",
+ "importVectorKeys step: ECDSA P-521 with SHA-512 - The signature was made using SHA-512, however verification is being done using SHA-256 verification",
+ "importVectorKeys step: ECDSA P-521 with SHA-512 - The signature was made using SHA-512, however verification is being done using SHA-384 verification",
+ "importVectorKeys step: ECDSA P-521 with SHA-512 - Signature has excess padding verification",
+ "importVectorKeys step: ECDSA P-521 with SHA-512 - The signature is empty verification",
+ "importVectorKeys step: ECDSA P-521 with SHA-512 - The signature is all zeroes verification",
+ "importVectorKeys step: ECDSA P-521 with SHA-1 signing with wrong algorithm name",
+ "importVectorKeys step: ECDSA P-521 with SHA-256 signing with wrong algorithm name",
+ "importVectorKeys step: ECDSA P-521 with SHA-384 signing with wrong algorithm name",
+ "importVectorKeys step: ECDSA P-521 with SHA-512 signing with wrong algorithm name",
+ "importVectorKeys step: ECDSA P-521 with SHA-1 verifying with wrong algorithm name",
+ "importVectorKeys step: ECDSA P-521 with SHA-256 verifying with wrong algorithm name",
+ "importVectorKeys step: ECDSA P-521 with SHA-384 verifying with wrong algorithm name",
+ "importVectorKeys step: ECDSA P-521 with SHA-512 verifying with wrong algorithm name"
+ ],
+ "hmac.https.any.html": true,
+ "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,
+ "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",
+ "importVectorKeys step: EdDSA Ed448 using privateKey to verify",
+ "importVectorKeys step: EdDSA Ed448 using publicKey to sign",
+ "importVectorKeys step: EdDSA Ed448 no verify usage",
+ "importVectorKeys step: EdDSA Ed448 round trip",
+ "importVectorKeys step: EdDSA Ed448 verification failure due to altered signature",
+ "importVectorKeys step: EdDSA Ed448 verification failure due to shortened signature",
+ "importVectorKeys step: EdDSA Ed448 verification failure due to altered data",
+ "importVectorKeys step: EdDSA Ed448 signing with wrong algorithm name",
+ "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",
+ "importVectorKeys step: EdDSA Ed448 using privateKey to verify",
+ "importVectorKeys step: EdDSA Ed448 using publicKey to sign",
+ "importVectorKeys step: EdDSA Ed448 no verify usage",
+ "importVectorKeys step: EdDSA Ed448 round trip",
+ "importVectorKeys step: EdDSA Ed448 verification failure due to altered signature",
+ "importVectorKeys step: EdDSA Ed448 verification failure due to shortened signature",
+ "importVectorKeys step: EdDSA Ed448 verification failure due to altered data",
+ "importVectorKeys step: EdDSA Ed448 signing with wrong algorithm name",
+ "importVectorKeys step: EdDSA Ed448 verifying with wrong algorithm name"
+ ]
+ },
+ "algorithm-discards-context.https.window.html": false
+ },
+ "console": {
+ "console-is-a-namespace.any.html": true,
+ "console-is-a-namespace.any.worker.html": true,
+ "console-label-conversion.any.html": true,
+ "console-label-conversion.any.worker.html": true,
+ "console-namespace-object-class-string.any.html": true,
+ "console-namespace-object-class-string.any.worker.html": true,
+ "console-tests-historical.any.html": true,
+ "console-tests-historical.any.worker.html": true,
+ "idlharness.any.html": true,
+ "idlharness.any.worker.html": true,
+ "idlharness-shadowrealm.window.html": false
+ },
+ "dom": {
+ "abort": {
+ "AbortSignal.any.html": true,
+ "AbortSignal.any.worker.html": true,
+ "event.any.html": true,
+ "event.any.worker.html": true,
+ "abort-signal-any.any.html": true,
+ "abort-signal-any.any.worker.html": true
+ },
+ "events": {
+ "AddEventListenerOptions-once.any.html": true,
+ "AddEventListenerOptions-once.any.worker.html": true,
+ "AddEventListenerOptions-passive.any.html": [
+ "returnValue should be ignored if-and-only-if the passive option is true"
+ ],
+ "AddEventListenerOptions-passive.any.worker.html": [
+ "returnValue should be ignored if-and-only-if the passive option is true"
+ ],
+ "AddEventListenerOptions-signal.any.html": true,
+ "AddEventListenerOptions-signal.any.worker.html": true,
+ "Event-isTrusted.any.html": false,
+ "Event-isTrusted.any.worker.html": false,
+ "EventTarget-add-remove-listener.any.html": true,
+ "EventTarget-add-remove-listener.any.worker.html": true,
+ "EventTarget-addEventListener.any.html": true,
+ "EventTarget-addEventListener.any.worker.html": true,
+ "EventTarget-removeEventListener.any.html": true,
+ "EventTarget-removeEventListener.any.worker.html": true,
+ "EventTarget-constructible.any.html": true,
+ "EventTarget-constructible.any.worker.html": true,
+ "Event-constructors.any.html": [
+ "Event constructors 3",
+ "Event constructors 4"
+ ],
+ "Event-constructors.any.worker.html": [
+ "Event constructors 3",
+ "Event constructors 4"
+ ],
+ "event-global.worker.html": true,
+ "Event-dispatch-listener-order.window.html": false,
+ "EventListener-addEventListener.sub.window.html": false,
+ "event-global-extra.window.html": false,
+ "event-global-set-before-handleEvent-lookup.window.html": false,
+ "legacy-pre-activation-behavior.window.html": false,
+ "relatedTarget.window.html": false
+ },
+ "idlharness-shadowrealm.window.html": false,
+ "idlharness.window.html?exclude=Node": [
+ "Event interface: attribute srcElement",
+ "Event interface: operation composedPath()",
+ "Event interface: constant NONE on interface object",
+ "Event interface: constant NONE on interface prototype object",
+ "Event interface: constant CAPTURING_PHASE on interface object",
+ "Event interface: constant CAPTURING_PHASE on interface prototype object",
+ "Event interface: constant AT_TARGET on interface object",
+ "Event interface: constant AT_TARGET on interface prototype object",
+ "Event interface: constant BUBBLING_PHASE on interface object",
+ "Event interface: constant BUBBLING_PHASE on interface prototype object",
+ "Event interface: operation stopPropagation()",
+ "Event interface: attribute cancelBubble",
+ "Event interface: operation stopImmediatePropagation()",
+ "Event interface: attribute returnValue",
+ "Event interface: operation preventDefault()",
+ "Event interface: attribute defaultPrevented",
+ "Event interface: operation initEvent(DOMString, optional boolean, optional boolean)",
+ "CustomEvent interface: operation initCustomEvent(DOMString, optional boolean, optional boolean, optional any)",
+ "EventTarget interface: operation addEventListener(DOMString, EventListener?, optional (AddEventListenerOptions or boolean))",
+ "EventTarget interface: operation removeEventListener(DOMString, EventListener?, optional (EventListenerOptions or boolean))",
+ "AbortController interface: operation abort(optional any)",
+ "AbortSignal interface: attribute onabort",
+ "NodeList interface: existence and properties of interface object",
+ "NodeList interface object length",
+ "NodeList interface object name",
+ "NodeList interface: existence and properties of interface prototype object",
+ "NodeList interface: existence and properties of interface prototype object's \"constructor\" property",
+ "NodeList interface: existence and properties of interface prototype object's @@unscopables property",
+ "NodeList interface: operation item(unsigned long)",
+ "NodeList interface: attribute length",
+ "NodeList interface: iterable<Node>",
+ "HTMLCollection interface: existence and properties of interface object",
+ "HTMLCollection interface object length",
+ "HTMLCollection interface object name",
+ "HTMLCollection interface: existence and properties of interface prototype object",
+ "HTMLCollection interface: existence and properties of interface prototype object's \"constructor\" property",
+ "HTMLCollection interface: existence and properties of interface prototype object's @@unscopables property",
+ "HTMLCollection interface: attribute length",
+ "HTMLCollection interface: operation item(unsigned long)",
+ "HTMLCollection interface: operation namedItem(DOMString)",
+ "MutationObserver interface: existence and properties of interface object",
+ "MutationObserver interface object length",
+ "MutationObserver interface object name",
+ "MutationObserver interface: existence and properties of interface prototype object",
+ "MutationObserver interface: existence and properties of interface prototype object's \"constructor\" property",
+ "MutationObserver interface: existence and properties of interface prototype object's @@unscopables property",
+ "MutationObserver interface: operation observe(Node, optional MutationObserverInit)",
+ "MutationObserver interface: operation disconnect()",
+ "MutationObserver interface: operation takeRecords()",
+ "MutationRecord interface: existence and properties of interface object",
+ "MutationRecord interface object length",
+ "MutationRecord interface object name",
+ "MutationRecord interface: existence and properties of interface prototype object",
+ "MutationRecord interface: existence and properties of interface prototype object's \"constructor\" property",
+ "MutationRecord interface: existence and properties of interface prototype object's @@unscopables property",
+ "MutationRecord interface: attribute type",
+ "MutationRecord interface: attribute target",
+ "MutationRecord interface: attribute addedNodes",
+ "MutationRecord interface: attribute removedNodes",
+ "MutationRecord interface: attribute previousSibling",
+ "MutationRecord interface: attribute nextSibling",
+ "MutationRecord interface: attribute attributeName",
+ "MutationRecord interface: attribute attributeNamespace",
+ "MutationRecord interface: attribute oldValue",
+ "Document interface: existence and properties of interface object",
+ "Document interface object length",
+ "Document interface object name",
+ "Document interface: existence and properties of interface prototype object",
+ "Document interface: existence and properties of interface prototype object's \"constructor\" property",
+ "Document interface: existence and properties of interface prototype object's @@unscopables property",
+ "Document interface: attribute implementation",
+ "Document interface: attribute URL",
+ "Document interface: attribute documentURI",
+ "Document interface: attribute compatMode",
+ "Document interface: attribute characterSet",
+ "Document interface: attribute charset",
+ "Document interface: attribute inputEncoding",
+ "Document interface: attribute contentType",
+ "Document interface: attribute doctype",
+ "Document interface: attribute documentElement",
+ "Document interface: operation getElementsByTagName(DOMString)",
+ "Document interface: operation getElementsByTagNameNS(DOMString?, DOMString)",
+ "Document interface: operation getElementsByClassName(DOMString)",
+ "Document interface: operation createElement(DOMString, optional (DOMString or ElementCreationOptions))",
+ "Document interface: operation createElementNS(DOMString?, DOMString, optional (DOMString or ElementCreationOptions))",
+ "Document interface: operation createDocumentFragment()",
+ "Document interface: operation createTextNode(DOMString)",
+ "Document interface: operation createCDATASection(DOMString)",
+ "Document interface: operation createComment(DOMString)",
+ "Document interface: operation createProcessingInstruction(DOMString, DOMString)",
+ "Document interface: operation importNode(Node, optional boolean)",
+ "Document interface: operation adoptNode(Node)",
+ "Document interface: operation createAttribute(DOMString)",
+ "Document interface: operation createAttributeNS(DOMString?, DOMString)",
+ "Document interface: operation createEvent(DOMString)",
+ "Document interface: operation createRange()",
+ "Document interface: operation createNodeIterator(Node, optional unsigned long, optional NodeFilter?)",
+ "Document interface: operation createTreeWalker(Node, optional unsigned long, optional NodeFilter?)",
+ "Document interface: attribute fullscreenEnabled",
+ "Document interface: attribute fullscreen",
+ "Document interface: operation exitFullscreen()",
+ "Document interface: attribute onfullscreenchange",
+ "Document interface: attribute onfullscreenerror",
+ "Document interface: operation getElementById(DOMString)",
+ "Document interface: attribute fullscreenElement",
+ "Document interface: attribute children",
+ "Document interface: attribute firstElementChild",
+ "Document interface: attribute lastElementChild",
+ "Document interface: attribute childElementCount",
+ "Document interface: operation prepend((Node or DOMString)...)",
+ "Document interface: operation append((Node or DOMString)...)",
+ "Document interface: operation replaceChildren((Node or DOMString)...)",
+ "Document interface: operation querySelector(DOMString)",
+ "Document interface: operation querySelectorAll(DOMString)",
+ "Document interface: operation createExpression(DOMString, optional XPathNSResolver?)",
+ "Document interface: operation createNSResolver(Node)",
+ "Document interface: operation evaluate(DOMString, Node, optional XPathNSResolver?, optional unsigned short, optional XPathResult?)",
+ "XMLDocument interface: existence and properties of interface object",
+ "XMLDocument interface object length",
+ "XMLDocument interface object name",
+ "XMLDocument interface: existence and properties of interface prototype object",
+ "XMLDocument interface: existence and properties of interface prototype object's \"constructor\" property",
+ "XMLDocument interface: existence and properties of interface prototype object's @@unscopables property",
+ "DOMImplementation interface: existence and properties of interface object",
+ "DOMImplementation interface object length",
+ "DOMImplementation interface object name",
+ "DOMImplementation interface: existence and properties of interface prototype object",
+ "DOMImplementation interface: existence and properties of interface prototype object's \"constructor\" property",
+ "DOMImplementation interface: existence and properties of interface prototype object's @@unscopables property",
+ "DOMImplementation interface: operation createDocumentType(DOMString, DOMString, DOMString)",
+ "DOMImplementation interface: operation createDocument(DOMString?, DOMString, optional DocumentType?)",
+ "DOMImplementation interface: operation createHTMLDocument(optional DOMString)",
+ "DOMImplementation interface: operation hasFeature()",
+ "DocumentType interface: existence and properties of interface object",
+ "DocumentType interface object length",
+ "DocumentType interface object name",
+ "DocumentType interface: existence and properties of interface prototype object",
+ "DocumentType interface: existence and properties of interface prototype object's \"constructor\" property",
+ "DocumentType interface: existence and properties of interface prototype object's @@unscopables property",
+ "DocumentType interface: attribute name",
+ "DocumentType interface: attribute publicId",
+ "DocumentType interface: attribute systemId",
+ "DocumentType interface: operation before((Node or DOMString)...)",
+ "DocumentType interface: operation after((Node or DOMString)...)",
+ "DocumentType interface: operation replaceWith((Node or DOMString)...)",
+ "DocumentType interface: operation remove()",
+ "DocumentFragment interface: existence and properties of interface object",
+ "DocumentFragment interface object length",
+ "DocumentFragment interface object name",
+ "DocumentFragment interface: existence and properties of interface prototype object",
+ "DocumentFragment interface: existence and properties of interface prototype object's \"constructor\" property",
+ "DocumentFragment interface: existence and properties of interface prototype object's @@unscopables property",
+ "DocumentFragment interface: operation getElementById(DOMString)",
+ "DocumentFragment interface: attribute children",
+ "DocumentFragment interface: attribute firstElementChild",
+ "DocumentFragment interface: attribute lastElementChild",
+ "DocumentFragment interface: attribute childElementCount",
+ "DocumentFragment interface: operation prepend((Node or DOMString)...)",
+ "DocumentFragment interface: operation append((Node or DOMString)...)",
+ "DocumentFragment interface: operation replaceChildren((Node or DOMString)...)",
+ "DocumentFragment interface: operation querySelector(DOMString)",
+ "DocumentFragment interface: operation querySelectorAll(DOMString)",
+ "ShadowRoot interface: existence and properties of interface object",
+ "ShadowRoot interface object length",
+ "ShadowRoot interface object name",
+ "ShadowRoot interface: existence and properties of interface prototype object",
+ "ShadowRoot interface: existence and properties of interface prototype object's \"constructor\" property",
+ "ShadowRoot interface: existence and properties of interface prototype object's @@unscopables property",
+ "ShadowRoot interface: attribute mode",
+ "ShadowRoot interface: attribute delegatesFocus",
+ "ShadowRoot interface: attribute slotAssignment",
+ "ShadowRoot interface: attribute host",
+ "ShadowRoot interface: attribute onslotchange",
+ "ShadowRoot interface: attribute fullscreenElement",
+ "Element interface: existence and properties of interface object",
+ "Element interface object length",
+ "Element interface object name",
+ "Element interface: existence and properties of interface prototype object",
+ "Element interface: existence and properties of interface prototype object's \"constructor\" property",
+ "Element interface: existence and properties of interface prototype object's @@unscopables property",
+ "Element interface: attribute namespaceURI",
+ "Element interface: attribute prefix",
+ "Element interface: attribute localName",
+ "Element interface: attribute tagName",
+ "Element interface: attribute id",
+ "Element interface: attribute className",
+ "Element interface: attribute classList",
+ "Element interface: attribute slot",
+ "Element interface: operation hasAttributes()",
+ "Element interface: attribute attributes",
+ "Element interface: operation getAttributeNames()",
+ "Element interface: operation getAttribute(DOMString)",
+ "Element interface: operation getAttributeNS(DOMString?, DOMString)",
+ "Element interface: operation setAttribute(DOMString, DOMString)",
+ "Element interface: operation setAttributeNS(DOMString?, DOMString, DOMString)",
+ "Element interface: operation removeAttribute(DOMString)",
+ "Element interface: operation removeAttributeNS(DOMString?, DOMString)",
+ "Element interface: operation toggleAttribute(DOMString, optional boolean)",
+ "Element interface: operation hasAttribute(DOMString)",
+ "Element interface: operation hasAttributeNS(DOMString?, DOMString)",
+ "Element interface: operation getAttributeNode(DOMString)",
+ "Element interface: operation getAttributeNodeNS(DOMString?, DOMString)",
+ "Element interface: operation setAttributeNode(Attr)",
+ "Element interface: operation setAttributeNodeNS(Attr)",
+ "Element interface: operation removeAttributeNode(Attr)",
+ "Element interface: operation attachShadow(ShadowRootInit)",
+ "Element interface: attribute shadowRoot",
+ "Element interface: operation closest(DOMString)",
+ "Element interface: operation matches(DOMString)",
+ "Element interface: operation webkitMatchesSelector(DOMString)",
+ "Element interface: operation getElementsByTagName(DOMString)",
+ "Element interface: operation getElementsByTagNameNS(DOMString?, DOMString)",
+ "Element interface: operation getElementsByClassName(DOMString)",
+ "Element interface: operation insertAdjacentElement(DOMString, Element)",
+ "Element interface: operation insertAdjacentText(DOMString, DOMString)",
+ "Element interface: operation requestFullscreen(optional FullscreenOptions)",
+ "Element interface: attribute onfullscreenchange",
+ "Element interface: attribute onfullscreenerror",
+ "Element interface: attribute children",
+ "Element interface: attribute firstElementChild",
+ "Element interface: attribute lastElementChild",
+ "Element interface: attribute childElementCount",
+ "Element interface: operation prepend((Node or DOMString)...)",
+ "Element interface: operation append((Node or DOMString)...)",
+ "Element interface: operation replaceChildren((Node or DOMString)...)",
+ "Element interface: operation querySelector(DOMString)",
+ "Element interface: operation querySelectorAll(DOMString)",
+ "Element interface: attribute previousElementSibling",
+ "Element interface: attribute nextElementSibling",
+ "Element interface: operation before((Node or DOMString)...)",
+ "Element interface: operation after((Node or DOMString)...)",
+ "Element interface: operation replaceWith((Node or DOMString)...)",
+ "Element interface: operation remove()",
+ "Element interface: attribute assignedSlot",
+ "NamedNodeMap interface: existence and properties of interface object",
+ "NamedNodeMap interface object length",
+ "NamedNodeMap interface object name",
+ "NamedNodeMap interface: existence and properties of interface prototype object",
+ "NamedNodeMap interface: existence and properties of interface prototype object's \"constructor\" property",
+ "NamedNodeMap interface: existence and properties of interface prototype object's @@unscopables property",
+ "NamedNodeMap interface: attribute length",
+ "NamedNodeMap interface: operation item(unsigned long)",
+ "NamedNodeMap interface: operation getNamedItem(DOMString)",
+ "NamedNodeMap interface: operation getNamedItemNS(DOMString?, DOMString)",
+ "NamedNodeMap interface: operation setNamedItem(Attr)",
+ "NamedNodeMap interface: operation setNamedItemNS(Attr)",
+ "NamedNodeMap interface: operation removeNamedItem(DOMString)",
+ "NamedNodeMap interface: operation removeNamedItemNS(DOMString?, DOMString)",
+ "Attr interface: existence and properties of interface object",
+ "Attr interface object length",
+ "Attr interface object name",
+ "Attr interface: existence and properties of interface prototype object",
+ "Attr interface: existence and properties of interface prototype object's \"constructor\" property",
+ "Attr interface: existence and properties of interface prototype object's @@unscopables property",
+ "Attr interface: attribute namespaceURI",
+ "Attr interface: attribute prefix",
+ "Attr interface: attribute localName",
+ "Attr interface: attribute name",
+ "Attr interface: attribute value",
+ "Attr interface: attribute ownerElement",
+ "Attr interface: attribute specified",
+ "CharacterData interface: existence and properties of interface object",
+ "CharacterData interface object length",
+ "CharacterData interface object name",
+ "CharacterData interface: existence and properties of interface prototype object",
+ "CharacterData interface: existence and properties of interface prototype object's \"constructor\" property",
+ "CharacterData interface: existence and properties of interface prototype object's @@unscopables property",
+ "CharacterData interface: attribute data",
+ "CharacterData interface: attribute length",
+ "CharacterData interface: operation substringData(unsigned long, unsigned long)",
+ "CharacterData interface: operation appendData(DOMString)",
+ "CharacterData interface: operation insertData(unsigned long, DOMString)",
+ "CharacterData interface: operation deleteData(unsigned long, unsigned long)",
+ "CharacterData interface: operation replaceData(unsigned long, unsigned long, DOMString)",
+ "CharacterData interface: attribute previousElementSibling",
+ "CharacterData interface: attribute nextElementSibling",
+ "CharacterData interface: operation before((Node or DOMString)...)",
+ "CharacterData interface: operation after((Node or DOMString)...)",
+ "CharacterData interface: operation replaceWith((Node or DOMString)...)",
+ "CharacterData interface: operation remove()",
+ "Text interface: existence and properties of interface object",
+ "Text interface object length",
+ "Text interface object name",
+ "Text interface: existence and properties of interface prototype object",
+ "Text interface: existence and properties of interface prototype object's \"constructor\" property",
+ "Text interface: existence and properties of interface prototype object's @@unscopables property",
+ "Text interface: operation splitText(unsigned long)",
+ "Text interface: attribute wholeText",
+ "Text interface: attribute assignedSlot",
+ "CDATASection interface: existence and properties of interface object",
+ "CDATASection interface object length",
+ "CDATASection interface object name",
+ "CDATASection interface: existence and properties of interface prototype object",
+ "CDATASection interface: existence and properties of interface prototype object's \"constructor\" property",
+ "CDATASection interface: existence and properties of interface prototype object's @@unscopables property",
+ "ProcessingInstruction interface: existence and properties of interface object",
+ "ProcessingInstruction interface object length",
+ "ProcessingInstruction interface object name",
+ "ProcessingInstruction interface: existence and properties of interface prototype object",
+ "ProcessingInstruction interface: existence and properties of interface prototype object's \"constructor\" property",
+ "ProcessingInstruction interface: existence and properties of interface prototype object's @@unscopables property",
+ "ProcessingInstruction interface: attribute target",
+ "Comment interface: existence and properties of interface object",
+ "Comment interface object length",
+ "Comment interface object name",
+ "Comment interface: existence and properties of interface prototype object",
+ "Comment interface: existence and properties of interface prototype object's \"constructor\" property",
+ "Comment interface: existence and properties of interface prototype object's @@unscopables property",
+ "AbstractRange interface: existence and properties of interface object",
+ "AbstractRange interface object length",
+ "AbstractRange interface object name",
+ "AbstractRange interface: existence and properties of interface prototype object",
+ "AbstractRange interface: existence and properties of interface prototype object's \"constructor\" property",
+ "AbstractRange interface: existence and properties of interface prototype object's @@unscopables property",
+ "AbstractRange interface: attribute startContainer",
+ "AbstractRange interface: attribute startOffset",
+ "AbstractRange interface: attribute endContainer",
+ "AbstractRange interface: attribute endOffset",
+ "AbstractRange interface: attribute collapsed",
+ "StaticRange interface: existence and properties of interface object",
+ "StaticRange interface object length",
+ "StaticRange interface object name",
+ "StaticRange interface: existence and properties of interface prototype object",
+ "StaticRange interface: existence and properties of interface prototype object's \"constructor\" property",
+ "StaticRange interface: existence and properties of interface prototype object's @@unscopables property",
+ "Range interface: existence and properties of interface object",
+ "Range interface object length",
+ "Range interface object name",
+ "Range interface: existence and properties of interface prototype object",
+ "Range interface: existence and properties of interface prototype object's \"constructor\" property",
+ "Range interface: existence and properties of interface prototype object's @@unscopables property",
+ "Range interface: attribute commonAncestorContainer",
+ "Range interface: operation setStart(Node, unsigned long)",
+ "Range interface: operation setEnd(Node, unsigned long)",
+ "Range interface: operation setStartBefore(Node)",
+ "Range interface: operation setStartAfter(Node)",
+ "Range interface: operation setEndBefore(Node)",
+ "Range interface: operation setEndAfter(Node)",
+ "Range interface: operation collapse(optional boolean)",
+ "Range interface: operation selectNode(Node)",
+ "Range interface: operation selectNodeContents(Node)",
+ "Range interface: constant START_TO_START on interface object",
+ "Range interface: constant START_TO_START on interface prototype object",
+ "Range interface: constant START_TO_END on interface object",
+ "Range interface: constant START_TO_END on interface prototype object",
+ "Range interface: constant END_TO_END on interface object",
+ "Range interface: constant END_TO_END on interface prototype object",
+ "Range interface: constant END_TO_START on interface object",
+ "Range interface: constant END_TO_START on interface prototype object",
+ "Range interface: operation compareBoundaryPoints(unsigned short, Range)",
+ "Range interface: operation deleteContents()",
+ "Range interface: operation extractContents()",
+ "Range interface: operation cloneContents()",
+ "Range interface: operation insertNode(Node)",
+ "Range interface: operation surroundContents(Node)",
+ "Range interface: operation cloneRange()",
+ "Range interface: operation detach()",
+ "Range interface: operation isPointInRange(Node, unsigned long)",
+ "Range interface: operation comparePoint(Node, unsigned long)",
+ "Range interface: operation intersectsNode(Node)",
+ "Range interface: stringifier",
+ "NodeIterator interface: existence and properties of interface object",
+ "NodeIterator interface object length",
+ "NodeIterator interface object name",
+ "NodeIterator interface: existence and properties of interface prototype object",
+ "NodeIterator interface: existence and properties of interface prototype object's \"constructor\" property",
+ "NodeIterator interface: existence and properties of interface prototype object's @@unscopables property",
+ "NodeIterator interface: attribute root",
+ "NodeIterator interface: attribute referenceNode",
+ "NodeIterator interface: attribute pointerBeforeReferenceNode",
+ "NodeIterator interface: attribute whatToShow",
+ "NodeIterator interface: attribute filter",
+ "NodeIterator interface: operation nextNode()",
+ "NodeIterator interface: operation previousNode()",
+ "NodeIterator interface: operation detach()",
+ "TreeWalker interface: existence and properties of interface object",
+ "TreeWalker interface object length",
+ "TreeWalker interface object name",
+ "TreeWalker interface: existence and properties of interface prototype object",
+ "TreeWalker interface: existence and properties of interface prototype object's \"constructor\" property",
+ "TreeWalker interface: existence and properties of interface prototype object's @@unscopables property",
+ "TreeWalker interface: attribute root",
+ "TreeWalker interface: attribute whatToShow",
+ "TreeWalker interface: attribute filter",
+ "TreeWalker interface: attribute currentNode",
+ "TreeWalker interface: operation parentNode()",
+ "TreeWalker interface: operation firstChild()",
+ "TreeWalker interface: operation lastChild()",
+ "TreeWalker interface: operation previousSibling()",
+ "TreeWalker interface: operation nextSibling()",
+ "TreeWalker interface: operation previousNode()",
+ "TreeWalker interface: operation nextNode()",
+ "NodeFilter interface: existence and properties of interface object",
+ "NodeFilter interface object name",
+ "NodeFilter interface: existence and properties of interface prototype object",
+ "NodeFilter interface: existence and properties of interface prototype object's \"constructor\" property",
+ "NodeFilter interface: existence and properties of interface prototype object's @@unscopables property",
+ "NodeFilter interface: constant FILTER_ACCEPT on interface object",
+ "NodeFilter interface: constant FILTER_ACCEPT on interface prototype object",
+ "NodeFilter interface: constant FILTER_REJECT on interface object",
+ "NodeFilter interface: constant FILTER_REJECT on interface prototype object",
+ "NodeFilter interface: constant FILTER_SKIP on interface object",
+ "NodeFilter interface: constant FILTER_SKIP on interface prototype object",
+ "NodeFilter interface: constant SHOW_ALL on interface object",
+ "NodeFilter interface: constant SHOW_ALL on interface prototype object",
+ "NodeFilter interface: constant SHOW_ELEMENT on interface object",
+ "NodeFilter interface: constant SHOW_ELEMENT on interface prototype object",
+ "NodeFilter interface: constant SHOW_ATTRIBUTE on interface object",
+ "NodeFilter interface: constant SHOW_ATTRIBUTE on interface prototype object",
+ "NodeFilter interface: constant SHOW_TEXT on interface object",
+ "NodeFilter interface: constant SHOW_TEXT on interface prototype object",
+ "NodeFilter interface: constant SHOW_CDATA_SECTION on interface object",
+ "NodeFilter interface: constant SHOW_CDATA_SECTION on interface prototype object",
+ "NodeFilter interface: constant SHOW_ENTITY_REFERENCE on interface object",
+ "NodeFilter interface: constant SHOW_ENTITY_REFERENCE on interface prototype object",
+ "NodeFilter interface: constant SHOW_ENTITY on interface object",
+ "NodeFilter interface: constant SHOW_ENTITY on interface prototype object",
+ "NodeFilter interface: constant SHOW_PROCESSING_INSTRUCTION on interface object",
+ "NodeFilter interface: constant SHOW_PROCESSING_INSTRUCTION on interface prototype object",
+ "NodeFilter interface: constant SHOW_COMMENT on interface object",
+ "NodeFilter interface: constant SHOW_COMMENT on interface prototype object",
+ "NodeFilter interface: constant SHOW_DOCUMENT on interface object",
+ "NodeFilter interface: constant SHOW_DOCUMENT on interface prototype object",
+ "NodeFilter interface: constant SHOW_DOCUMENT_TYPE on interface object",
+ "NodeFilter interface: constant SHOW_DOCUMENT_TYPE on interface prototype object",
+ "NodeFilter interface: constant SHOW_DOCUMENT_FRAGMENT on interface object",
+ "NodeFilter interface: constant SHOW_DOCUMENT_FRAGMENT on interface prototype object",
+ "NodeFilter interface: constant SHOW_NOTATION on interface object",
+ "NodeFilter interface: constant SHOW_NOTATION on interface prototype object",
+ "NodeFilter interface: operation acceptNode(Node)",
+ "DOMTokenList interface: existence and properties of interface object",
+ "DOMTokenList interface object length",
+ "DOMTokenList interface object name",
+ "DOMTokenList interface: existence and properties of interface prototype object",
+ "DOMTokenList interface: existence and properties of interface prototype object's \"constructor\" property",
+ "DOMTokenList interface: existence and properties of interface prototype object's @@unscopables property",
+ "DOMTokenList interface: attribute length",
+ "DOMTokenList interface: operation item(unsigned long)",
+ "DOMTokenList interface: operation contains(DOMString)",
+ "DOMTokenList interface: operation add(DOMString...)",
+ "DOMTokenList interface: operation remove(DOMString...)",
+ "DOMTokenList interface: operation toggle(DOMString, optional boolean)",
+ "DOMTokenList interface: operation replace(DOMString, DOMString)",
+ "DOMTokenList interface: operation supports(DOMString)",
+ "DOMTokenList interface: attribute value",
+ "DOMTokenList interface: stringifier",
+ "DOMTokenList interface: iterable<DOMString>",
+ "XPathResult interface: existence and properties of interface object",
+ "XPathResult interface object length",
+ "XPathResult interface object name",
+ "XPathResult interface: existence and properties of interface prototype object",
+ "XPathResult interface: existence and properties of interface prototype object's \"constructor\" property",
+ "XPathResult interface: existence and properties of interface prototype object's @@unscopables property",
+ "XPathResult interface: constant ANY_TYPE on interface object",
+ "XPathResult interface: constant ANY_TYPE on interface prototype object",
+ "XPathResult interface: constant NUMBER_TYPE on interface object",
+ "XPathResult interface: constant NUMBER_TYPE on interface prototype object",
+ "XPathResult interface: constant STRING_TYPE on interface object",
+ "XPathResult interface: constant STRING_TYPE on interface prototype object",
+ "XPathResult interface: constant BOOLEAN_TYPE on interface object",
+ "XPathResult interface: constant BOOLEAN_TYPE on interface prototype object",
+ "XPathResult interface: constant UNORDERED_NODE_ITERATOR_TYPE on interface object",
+ "XPathResult interface: constant UNORDERED_NODE_ITERATOR_TYPE on interface prototype object",
+ "XPathResult interface: constant ORDERED_NODE_ITERATOR_TYPE on interface object",
+ "XPathResult interface: constant ORDERED_NODE_ITERATOR_TYPE on interface prototype object",
+ "XPathResult interface: constant UNORDERED_NODE_SNAPSHOT_TYPE on interface object",
+ "XPathResult interface: constant UNORDERED_NODE_SNAPSHOT_TYPE on interface prototype object",
+ "XPathResult interface: constant ORDERED_NODE_SNAPSHOT_TYPE on interface object",
+ "XPathResult interface: constant ORDERED_NODE_SNAPSHOT_TYPE on interface prototype object",
+ "XPathResult interface: constant ANY_UNORDERED_NODE_TYPE on interface object",
+ "XPathResult interface: constant ANY_UNORDERED_NODE_TYPE on interface prototype object",
+ "XPathResult interface: constant FIRST_ORDERED_NODE_TYPE on interface object",
+ "XPathResult interface: constant FIRST_ORDERED_NODE_TYPE on interface prototype object",
+ "XPathResult interface: attribute resultType",
+ "XPathResult interface: attribute numberValue",
+ "XPathResult interface: attribute stringValue",
+ "XPathResult interface: attribute booleanValue",
+ "XPathResult interface: attribute singleNodeValue",
+ "XPathResult interface: attribute invalidIteratorState",
+ "XPathResult interface: attribute snapshotLength",
+ "XPathResult interface: operation iterateNext()",
+ "XPathResult interface: operation snapshotItem(unsigned long)",
+ "XPathExpression interface: existence and properties of interface object",
+ "XPathExpression interface object length",
+ "XPathExpression interface object name",
+ "XPathExpression interface: existence and properties of interface prototype object",
+ "XPathExpression interface: existence and properties of interface prototype object's \"constructor\" property",
+ "XPathExpression interface: existence and properties of interface prototype object's @@unscopables property",
+ "XPathExpression interface: operation evaluate(Node, optional unsigned short, optional XPathResult?)",
+ "XPathEvaluator interface: existence and properties of interface object",
+ "XPathEvaluator interface object length",
+ "XPathEvaluator interface object name",
+ "XPathEvaluator interface: existence and properties of interface prototype object",
+ "XPathEvaluator interface: existence and properties of interface prototype object's \"constructor\" property",
+ "XPathEvaluator interface: existence and properties of interface prototype object's @@unscopables property",
+ "XPathEvaluator interface: operation createExpression(DOMString, optional XPathNSResolver?)",
+ "XPathEvaluator interface: operation createNSResolver(Node)",
+ "XPathEvaluator interface: operation evaluate(DOMString, Node, optional XPathNSResolver?, optional unsigned short, optional XPathResult?)",
+ "XSLTProcessor interface: existence and properties of interface object",
+ "XSLTProcessor interface object length",
+ "XSLTProcessor interface object name",
+ "XSLTProcessor interface: existence and properties of interface prototype object",
+ "XSLTProcessor interface: existence and properties of interface prototype object's \"constructor\" property",
+ "XSLTProcessor interface: existence and properties of interface prototype object's @@unscopables property",
+ "XSLTProcessor interface: operation importStylesheet(Node)",
+ "XSLTProcessor interface: operation transformToFragment(Node, Document)",
+ "XSLTProcessor interface: operation transformToDocument(Node)",
+ "XSLTProcessor interface: operation setParameter(DOMString, DOMString, any)",
+ "XSLTProcessor interface: operation getParameter(DOMString, DOMString)",
+ "XSLTProcessor interface: operation removeParameter(DOMString, DOMString)",
+ "XSLTProcessor interface: operation clearParameters()",
+ "XSLTProcessor interface: operation reset()",
+ "Window interface: attribute event",
+ "idl_test setup",
+ "ShadowRoot interface: attribute clonable"
+ ],
+ "idlharness.window.html?include=Node": [
+ "Node interface: existence and properties of interface object",
+ "Node interface object length",
+ "Node interface object name",
+ "Node interface: existence and properties of interface prototype object",
+ "Node interface: existence and properties of interface prototype object's \"constructor\" property",
+ "Node interface: existence and properties of interface prototype object's @@unscopables property",
+ "Node interface: constant ELEMENT_NODE on interface object",
+ "Node interface: constant ELEMENT_NODE on interface prototype object",
+ "Node interface: constant ATTRIBUTE_NODE on interface object",
+ "Node interface: constant ATTRIBUTE_NODE on interface prototype object",
+ "Node interface: constant TEXT_NODE on interface object",
+ "Node interface: constant TEXT_NODE on interface prototype object",
+ "Node interface: constant CDATA_SECTION_NODE on interface object",
+ "Node interface: constant CDATA_SECTION_NODE on interface prototype object",
+ "Node interface: constant ENTITY_REFERENCE_NODE on interface object",
+ "Node interface: constant ENTITY_REFERENCE_NODE on interface prototype object",
+ "Node interface: constant ENTITY_NODE on interface object",
+ "Node interface: constant ENTITY_NODE on interface prototype object",
+ "Node interface: constant PROCESSING_INSTRUCTION_NODE on interface object",
+ "Node interface: constant PROCESSING_INSTRUCTION_NODE on interface prototype object",
+ "Node interface: constant COMMENT_NODE on interface object",
+ "Node interface: constant COMMENT_NODE on interface prototype object",
+ "Node interface: constant DOCUMENT_NODE on interface object",
+ "Node interface: constant DOCUMENT_NODE on interface prototype object",
+ "Node interface: constant DOCUMENT_TYPE_NODE on interface object",
+ "Node interface: constant DOCUMENT_TYPE_NODE on interface prototype object",
+ "Node interface: constant DOCUMENT_FRAGMENT_NODE on interface object",
+ "Node interface: constant DOCUMENT_FRAGMENT_NODE on interface prototype object",
+ "Node interface: constant NOTATION_NODE on interface object",
+ "Node interface: constant NOTATION_NODE on interface prototype object",
+ "Node interface: attribute nodeType",
+ "Node interface: attribute nodeName",
+ "Node interface: attribute baseURI",
+ "Node interface: attribute isConnected",
+ "Node interface: attribute ownerDocument",
+ "Node interface: operation getRootNode(optional GetRootNodeOptions)",
+ "Node interface: attribute parentNode",
+ "Node interface: attribute parentElement",
+ "Node interface: operation hasChildNodes()",
+ "Node interface: attribute childNodes",
+ "Node interface: attribute firstChild",
+ "Node interface: attribute lastChild",
+ "Node interface: attribute previousSibling",
+ "Node interface: attribute nextSibling",
+ "Node interface: attribute nodeValue",
+ "Node interface: attribute textContent",
+ "Node interface: operation normalize()",
+ "Node interface: operation cloneNode(optional boolean)",
+ "Node interface: operation isEqualNode(Node?)",
+ "Node interface: operation isSameNode(Node?)",
+ "Node interface: constant DOCUMENT_POSITION_DISCONNECTED on interface object",
+ "Node interface: constant DOCUMENT_POSITION_DISCONNECTED on interface prototype object",
+ "Node interface: constant DOCUMENT_POSITION_PRECEDING on interface object",
+ "Node interface: constant DOCUMENT_POSITION_PRECEDING on interface prototype object",
+ "Node interface: constant DOCUMENT_POSITION_FOLLOWING on interface object",
+ "Node interface: constant DOCUMENT_POSITION_FOLLOWING on interface prototype object",
+ "Node interface: constant DOCUMENT_POSITION_CONTAINS on interface object",
+ "Node interface: constant DOCUMENT_POSITION_CONTAINS on interface prototype object",
+ "Node interface: constant DOCUMENT_POSITION_CONTAINED_BY on interface object",
+ "Node interface: constant DOCUMENT_POSITION_CONTAINED_BY on interface prototype object",
+ "Node interface: constant DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC on interface object",
+ "Node interface: constant DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC on interface prototype object",
+ "Node interface: operation compareDocumentPosition(Node)",
+ "Node interface: operation contains(Node?)",
+ "Node interface: operation lookupPrefix(DOMString?)",
+ "Node interface: operation lookupNamespaceURI(DOMString?)",
+ "Node interface: operation isDefaultNamespace(DOMString?)",
+ "Node interface: operation insertBefore(Node, Node?)",
+ "Node interface: operation appendChild(Node)",
+ "Node interface: operation replaceChild(Node, Node)",
+ "Node interface: operation removeChild(Node)",
+ "idl_test setup"
+ ]
+ },
+ "encoding": {
+ "api-basics.any.html": true,
+ "api-basics.any.worker.html": true,
+ "api-invalid-label.any.html?1-1000": true,
+ "api-invalid-label.any.html?1001-2000": true,
+ "api-invalid-label.any.html?2001-3000": true,
+ "api-invalid-label.any.html?3001-last": true,
+ "api-invalid-label.any.worker.html?1-1000": true,
+ "api-invalid-label.any.worker.html?1001-2000": true,
+ "api-invalid-label.any.worker.html?2001-3000": true,
+ "api-invalid-label.any.worker.html?3001-last": true,
+ "api-replacement-encodings.any.html": true,
+ "api-replacement-encodings.any.worker.html": true,
+ "api-surrogates-utf8.any.html": true,
+ "api-surrogates-utf8.any.worker.html": true,
+ "encodeInto.any.html": true,
+ "encodeInto.any.worker.html": true,
+ "idlharness.any.html": true,
+ "idlharness.any.worker.html": true,
+ "iso-2022-jp-decoder.any.html": true,
+ "iso-2022-jp-decoder.any.worker.html": true,
+ "legacy-mb-schinese": {
+ "gb18030": {
+ "gb18030-decoder.any.html": [
+ "gb18030 decoder: GB18030-2022 1",
+ "gb18030 decoder: GB18030-2022 2",
+ "gb18030 decoder: GB18030-2022 3",
+ "gb18030 decoder: GB18030-2022 4",
+ "gb18030 decoder: GB18030-2022 5",
+ "gb18030 decoder: GB18030-2022 6",
+ "gb18030 decoder: GB18030-2022 7",
+ "gb18030 decoder: GB18030-2022 8",
+ "gb18030 decoder: GB18030-2022 9",
+ "gb18030 decoder: GB18030-2022 10",
+ "gb18030 decoder: GB18030-2022 11",
+ "gb18030 decoder: GB18030-2022 12",
+ "gb18030 decoder: GB18030-2022 13",
+ "gb18030 decoder: GB18030-2022 14",
+ "gb18030 decoder: GB18030-2022 15",
+ "gb18030 decoder: GB18030-2022 16",
+ "gb18030 decoder: GB18030-2022 17",
+ "gb18030 decoder: GB18030-2022 18",
+ "gb18030 decoder: GB18030-2022 19",
+ "gb18030 decoder: GB18030-2022 20",
+ "gb18030 decoder: GB18030-2022 21",
+ "gb18030 decoder: GB18030-2022 22",
+ "gb18030 decoder: GB18030-2022 23",
+ "gb18030 decoder: GB18030-2022 24",
+ "gb18030 decoder: GB18030-2022 25",
+ "gb18030 decoder: GB18030-2022 26",
+ "gb18030 decoder: GB18030-2022 27",
+ "gb18030 decoder: GB18030-2022 28",
+ "gb18030 decoder: GB18030-2022 29",
+ "gb18030 decoder: GB18030-2022 30",
+ "gb18030 decoder: GB18030-2022 31",
+ "gb18030 decoder: GB18030-2022 32",
+ "gb18030 decoder: GB18030-2022 33",
+ "gb18030 decoder: GB18030-2022 34",
+ "gb18030 decoder: GB18030-2022 35",
+ "gb18030 decoder: GB18030-2022 36"
+ ],
+ "gb18030-decoder.any.worker.html": [
+ "gb18030 decoder: GB18030-2022 1",
+ "gb18030 decoder: GB18030-2022 2",
+ "gb18030 decoder: GB18030-2022 3",
+ "gb18030 decoder: GB18030-2022 4",
+ "gb18030 decoder: GB18030-2022 5",
+ "gb18030 decoder: GB18030-2022 6",
+ "gb18030 decoder: GB18030-2022 7",
+ "gb18030 decoder: GB18030-2022 8",
+ "gb18030 decoder: GB18030-2022 9",
+ "gb18030 decoder: GB18030-2022 10",
+ "gb18030 decoder: GB18030-2022 11",
+ "gb18030 decoder: GB18030-2022 12",
+ "gb18030 decoder: GB18030-2022 13",
+ "gb18030 decoder: GB18030-2022 14",
+ "gb18030 decoder: GB18030-2022 15",
+ "gb18030 decoder: GB18030-2022 16",
+ "gb18030 decoder: GB18030-2022 17",
+ "gb18030 decoder: GB18030-2022 18",
+ "gb18030 decoder: GB18030-2022 19",
+ "gb18030 decoder: GB18030-2022 20",
+ "gb18030 decoder: GB18030-2022 21",
+ "gb18030 decoder: GB18030-2022 22",
+ "gb18030 decoder: GB18030-2022 23",
+ "gb18030 decoder: GB18030-2022 24",
+ "gb18030 decoder: GB18030-2022 25",
+ "gb18030 decoder: GB18030-2022 26",
+ "gb18030 decoder: GB18030-2022 27",
+ "gb18030 decoder: GB18030-2022 28",
+ "gb18030 decoder: GB18030-2022 29",
+ "gb18030 decoder: GB18030-2022 30",
+ "gb18030 decoder: GB18030-2022 31",
+ "gb18030 decoder: GB18030-2022 32",
+ "gb18030 decoder: GB18030-2022 33",
+ "gb18030 decoder: GB18030-2022 34",
+ "gb18030 decoder: GB18030-2022 35",
+ "gb18030 decoder: GB18030-2022 36"
+ ]
+ },
+ "gbk": {
+ "gbk-decoder.any.html": true,
+ "gbk-decoder.any.worker.html": true
+ }
+ },
+ "replacement-encodings.any.html": false,
+ "replacement-encodings.any.worker.html": false,
+ "streams": {
+ "backpressure.any.html": true,
+ "backpressure.any.worker.html": true,
+ "decode-attributes.any.html": true,
+ "decode-attributes.any.worker.html": true,
+ "decode-bad-chunks.any.html": true,
+ "decode-bad-chunks.any.worker.html": true,
+ "decode-ignore-bom.any.html": true,
+ "decode-ignore-bom.any.worker.html": true,
+ "decode-incomplete-input.any.html": true,
+ "decode-incomplete-input.any.worker.html": true,
+ "decode-non-utf8.any.html": true,
+ "decode-non-utf8.any.worker.html": true,
+ "decode-split-character.any.html": true,
+ "decode-split-character.any.worker.html": true,
+ "decode-utf8.any.html": true,
+ "decode-utf8.any.worker.html": true,
+ "encode-bad-chunks.any.html": true,
+ "encode-bad-chunks.any.worker.html": true,
+ "encode-utf8.any.html": true,
+ "encode-utf8.any.worker.html": true,
+ "readable-writable-properties.any.html": true,
+ "readable-writable-properties.any.worker.html": true,
+ "realms.window.html": false,
+ "invalid-realm.window.html": false
+ },
+ "textdecoder-arguments.any.html": true,
+ "textdecoder-arguments.any.worker.html": true,
+ "textdecoder-byte-order-marks.any.html": true,
+ "textdecoder-byte-order-marks.any.worker.html": true,
+ "textdecoder-copy.any.html": true,
+ "textdecoder-copy.any.worker.html": true,
+ "textdecoder-fatal-single-byte.any.html?1-1000": true,
+ "textdecoder-fatal-single-byte.any.html?1001-2000": true,
+ "textdecoder-fatal-single-byte.any.html?2001-3000": true,
+ "textdecoder-fatal-single-byte.any.html?3001-4000": true,
+ "textdecoder-fatal-single-byte.any.html?4001-5000": true,
+ "textdecoder-fatal-single-byte.any.html?5001-6000": true,
+ "textdecoder-fatal-single-byte.any.html?6001-7000": true,
+ "textdecoder-fatal-single-byte.any.html?7001-last": true,
+ "textdecoder-fatal-single-byte.any.worker.html?1-1000": true,
+ "textdecoder-fatal-single-byte.any.worker.html?1001-2000": true,
+ "textdecoder-fatal-single-byte.any.worker.html?2001-3000": true,
+ "textdecoder-fatal-single-byte.any.worker.html?3001-4000": true,
+ "textdecoder-fatal-single-byte.any.worker.html?4001-5000": true,
+ "textdecoder-fatal-single-byte.any.worker.html?5001-6000": true,
+ "textdecoder-fatal-single-byte.any.worker.html?6001-7000": true,
+ "textdecoder-fatal-single-byte.any.worker.html?7001-last": true,
+ "textdecoder-fatal-streaming.any.html": true,
+ "textdecoder-fatal-streaming.any.worker.html": true,
+ "textdecoder-fatal.any.html": true,
+ "textdecoder-fatal.any.worker.html": true,
+ "textdecoder-ignorebom.any.html": true,
+ "textdecoder-ignorebom.any.worker.html": true,
+ "textdecoder-labels.any.html": true,
+ "textdecoder-labels.any.worker.html": true,
+ "textdecoder-streaming.any.html": true,
+ "textdecoder-streaming.any.worker.html": true,
+ "textdecoder-utf16-surrogates.any.html": true,
+ "textdecoder-utf16-surrogates.any.worker.html": true,
+ "textencoder-constructor-non-utf.any.html": true,
+ "textencoder-constructor-non-utf.any.worker.html": true,
+ "textencoder-utf16-surrogates.any.html": true,
+ "textencoder-utf16-surrogates.any.worker.html": true,
+ "unsupported-encodings.any.html": false,
+ "unsupported-encodings.any.worker.html": false,
+ "single-byte-decoder.window.html?TextDecoder": true,
+ "textdecoder-eof.any.html": true,
+ "textdecoder-eof.any.worker.html": true,
+ "idlharness-shadowrealm.window.html": false,
+ "single-byte-decoder.window.html?XMLHttpRequest": false,
+ "single-byte-decoder.window.html?document": false,
+ "unsupported-labels.window.html": false
+ },
+ "hr-time": {
+ "monotonic-clock.any.html": true,
+ "monotonic-clock.any.worker.html": true,
+ "basic.any.html": true,
+ "basic.any.worker.html": true,
+ "idlharness.any.html": [
+ "Window interface: attribute performance"
+ ],
+ "idlharness.any.worker.html": [
+ "WorkerGlobalScope interface: attribute performance",
+ "WorkerGlobalScope interface: self must inherit property \"performance\" with the proper type"
+ ],
+ "window-worker-timeOrigin.window.html": true,
+ "idlharness-shadowrealm.window.html": false
+ },
+ "streams": {
+ "idlharness.any.html": true,
+ "idlharness.any.worker.html": true,
+ "piping": {
+ "abort.any.html": true,
+ "abort.any.worker.html": true,
+ "close-propagation-backward.any.html": true,
+ "close-propagation-backward.any.worker.html": true,
+ "close-propagation-forward.any.html": true,
+ "close-propagation-forward.any.worker.html": true,
+ "error-propagation-backward.any.html": true,
+ "error-propagation-backward.any.worker.html": true,
+ "error-propagation-forward.any.html": true,
+ "error-propagation-forward.any.worker.html": true,
+ "flow-control.any.html": true,
+ "flow-control.any.worker.html": true,
+ "general.any.html": true,
+ "general.any.worker.html": true,
+ "multiple-propagation.any.html": true,
+ "multiple-propagation.any.worker.html": true,
+ "pipe-through.any.html": true,
+ "pipe-through.any.worker.html": true,
+ "then-interception.any.html": true,
+ "then-interception.any.worker.html": true,
+ "throwing-options.any.html": true,
+ "throwing-options.any.worker.html": true,
+ "transform-streams.any.html": true,
+ "transform-streams.any.worker.html": true
+ },
+ "queuing-strategies.any.html": true,
+ "queuing-strategies.any.worker.html": true,
+ "readable-byte-streams": {
+ "bad-buffers-and-views.any.html": true,
+ "bad-buffers-and-views.any.worker.html": true,
+ "construct-byob-request.any.html": true,
+ "construct-byob-request.any.worker.html": true,
+ "general.any.html": true,
+ "general.any.worker.html": true,
+ "non-transferable-buffers.any.html": true,
+ "non-transferable-buffers.any.worker.html": true,
+ "tee.any.html": true,
+ "tee.any.worker.html": true,
+ "respond-after-enqueue.any.html": true,
+ "respond-after-enqueue.any.worker.html": true,
+ "enqueue-with-detached-buffer.any.html": true,
+ "enqueue-with-detached-buffer.any.worker.html": true,
+ "read-min.any.html": true,
+ "read-min.any.worker.html": true
+ },
+ "readable-streams": {
+ "async-iterator.any.html": true,
+ "bad-strategies.any.html": true,
+ "bad-strategies.any.worker.html": true,
+ "bad-underlying-sources.any.html": true,
+ "bad-underlying-sources.any.worker.html": true,
+ "cancel.any.html": true,
+ "cancel.any.worker.html": true,
+ "constructor.any.html": true,
+ "constructor.any.worker.html": true,
+ "count-queuing-strategy-integration.any.html": true,
+ "count-queuing-strategy-integration.any.worker.html": true,
+ "default-reader.any.html": true,
+ "default-reader.any.worker.html": true,
+ "floating-point-total-queue-size.any.html": true,
+ "floating-point-total-queue-size.any.worker.html": true,
+ "garbage-collection.any.html": true,
+ "garbage-collection.any.worker.html": true,
+ "general.any.html": true,
+ "general.any.worker.html": true,
+ "patched-global.any.html": true,
+ "patched-global.any.worker.html": true,
+ "reentrant-strategies.any.html": true,
+ "reentrant-strategies.any.worker.html": true,
+ "tee.any.html": true,
+ "tee.any.worker.html": true,
+ "templated.any.html": true,
+ "templated.any.worker.html": true,
+ "async-iterator.any.worker.html": true,
+ "cross-realm-crash.window.html": false,
+ "owning-type-message-port.any.html": false,
+ "owning-type-message-port.any.worker.html": false,
+ "owning-type.any.html": false,
+ "owning-type.any.worker.html": false,
+ "from.any.html": true,
+ "from.any.worker.html": true
+ },
+ "transform-streams": {
+ "backpressure.any.html": true,
+ "backpressure.any.worker.html": true,
+ "errors.any.html": true,
+ "errors.any.worker.html": true,
+ "flush.any.html": true,
+ "flush.any.worker.html": true,
+ "general.any.html": true,
+ "general.any.worker.html": true,
+ "lipfuzz.any.html": true,
+ "lipfuzz.any.worker.html": true,
+ "patched-global.any.html": true,
+ "patched-global.any.worker.html": true,
+ "properties.any.html": true,
+ "properties.any.worker.html": true,
+ "reentrant-strategies.any.html": true,
+ "reentrant-strategies.any.worker.html": true,
+ "strategies.any.html": true,
+ "strategies.any.worker.html": true,
+ "terminate.any.html": true,
+ "terminate.any.worker.html": true
+ },
+ "writable-streams": {
+ "aborting.any.html": true,
+ "aborting.any.worker.html": true,
+ "bad-strategies.any.html": true,
+ "bad-strategies.any.worker.html": true,
+ "bad-underlying-sinks.any.html": true,
+ "bad-underlying-sinks.any.worker.html": true,
+ "byte-length-queuing-strategy.any.html": true,
+ "byte-length-queuing-strategy.any.worker.html": true,
+ "close.any.html": true,
+ "close.any.worker.html": true,
+ "constructor.any.html": true,
+ "constructor.any.worker.html": true,
+ "count-queuing-strategy.any.html": true,
+ "count-queuing-strategy.any.worker.html": true,
+ "error.any.html": true,
+ "error.any.worker.html": true,
+ "floating-point-total-queue-size.any.html": true,
+ "floating-point-total-queue-size.any.worker.html": true,
+ "general.any.html": true,
+ "general.any.worker.html": true,
+ "properties.any.html": true,
+ "properties.any.worker.html": true,
+ "reentrant-strategy.any.html": true,
+ "reentrant-strategy.any.worker.html": true,
+ "start.any.html": true,
+ "start.any.worker.html": true,
+ "write.any.html": true,
+ "write.any.worker.html": true
+ },
+ "queuing-strategies-size-function-per-global.window.html": false,
+ "transferable": {
+ "deserialize-error.window.html": false,
+ "transfer-with-messageport.window.html": false
+ },
+ "idlharness-shadowrealm.window.html": false
+ },
+ "user-timing": {
+ "buffered-flag.any.html": false,
+ "buffered-flag.any.worker.html": false,
+ "case-sensitivity.any.html": false,
+ "case-sensitivity.any.worker.html": false,
+ "clear_all_marks.any.html": true,
+ "clear_all_marks.any.worker.html": true,
+ "clear_all_measures.any.html": true,
+ "clear_all_measures.any.worker.html": true,
+ "clear_non_existent_mark.any.html": true,
+ "clear_non_existent_mark.any.worker.html": true,
+ "clear_non_existent_measure.any.html": true,
+ "clear_non_existent_measure.any.worker.html": true,
+ "clear_one_mark.any.html": true,
+ "clear_one_mark.any.worker.html": true,
+ "clear_one_measure.any.html": true,
+ "clear_one_measure.any.worker.html": true,
+ "entry_type.any.html": true,
+ "entry_type.any.worker.html": true,
+ "idlharness.any.html": true,
+ "idlharness.any.worker.html": true,
+ "mark-entry-constructor.any.html": true,
+ "mark-entry-constructor.any.worker.html": true,
+ "mark-errors.any.html": true,
+ "mark-errors.any.worker.html": true,
+ "mark-l3.any.html": false,
+ "mark-l3.any.worker.html": false,
+ "mark-measure-return-objects.any.html": true,
+ "mark-measure-return-objects.any.worker.html": true,
+ "mark.any.html": true,
+ "mark.any.worker.html": true,
+ "measure-l3.any.html": true,
+ "measure-l3.any.worker.html": true,
+ "measure-with-dict.any.html": [
+ "measure entries' detail and start/end are customizable"
+ ],
+ "measure-with-dict.any.worker.html": [
+ "measure entries' detail and start/end are customizable"
+ ],
+ "measure_syntax_err.any.html": true,
+ "measure_syntax_err.any.worker.html": true,
+ "structured-serialize-detail.any.html": true,
+ "structured-serialize-detail.any.worker.html": true,
+ "supported-usertiming-types.any.html": false,
+ "supported-usertiming-types.any.worker.html": false,
+ "user_timing_exists.any.html": true,
+ "user_timing_exists.any.worker.html": true,
+ "invoke_with_timing_attributes.worker.html": true,
+ "performance-measure-invalid.worker.html": false,
+ "idlharness-shadowrealm.window.html": false
+ },
+ "wasm": {
+ "jsapi": {
+ "constructor": {
+ "compile.any.html": true,
+ "compile.any.worker.html": true,
+ "instantiate-bad-imports.any.html": true,
+ "instantiate-bad-imports.any.worker.html": true,
+ "instantiate.any.html": [
+ "Synchronous options handling: Buffer argument"
+ ],
+ "instantiate.any.worker.html": [
+ "Synchronous options handling: Buffer argument"
+ ],
+ "multi-value.any.html": true,
+ "multi-value.any.worker.html": true,
+ "toStringTag.any.html": true,
+ "toStringTag.any.worker.html": true,
+ "validate.any.html": true,
+ "validate.any.worker.html": true
+ },
+ "global": {
+ "constructor.any.html": true,
+ "constructor.any.worker.html": true,
+ "toString.any.html": true,
+ "toString.any.worker.html": true,
+ "type.tentative.any.html": false,
+ "type.tentative.any.worker.html": false,
+ "value-get-set.any.html": true,
+ "value-get-set.any.worker.html": true,
+ "valueOf.any.html": true,
+ "valueOf.any.worker.html": true
+ },
+ "idlharness.any.html": true,
+ "idlharness.any.worker.html": true,
+ "instance": {
+ "constructor-bad-imports.any.html": true,
+ "constructor-bad-imports.any.worker.html": true,
+ "constructor-caching.any.html": true,
+ "constructor-caching.any.worker.html": true,
+ "constructor.any.html": true,
+ "constructor.any.worker.html": true,
+ "exports.any.html": true,
+ "exports.any.worker.html": true,
+ "toString.any.html": true,
+ "toString.any.worker.html": true
+ },
+ "interface.any.html": true,
+ "interface.any.worker.html": true,
+ "memory": {
+ "buffer.any.html": true,
+ "buffer.any.worker.html": true,
+ "constructor.any.html": true,
+ "constructor.any.worker.html": true,
+ "grow.any.html": true,
+ "grow.any.worker.html": true,
+ "toString.any.html": true,
+ "toString.any.worker.html": true,
+ "type.tentative.any.html": false,
+ "type.tentative.any.worker.html": false,
+ "constructor-shared.tentative.any.html": true,
+ "constructor-shared.tentative.any.worker.html": true,
+ "constructor-types.tentative.any.html": false,
+ "constructor-types.tentative.any.worker.html": false
+ },
+ "module": {
+ "constructor.any.html": true,
+ "constructor.any.worker.html": true,
+ "customSections.any.html": true,
+ "customSections.any.worker.html": true,
+ "exports.any.html": true,
+ "exports.any.worker.html": true,
+ "imports.any.html": true,
+ "imports.any.worker.html": true,
+ "toString.any.html": true,
+ "toString.any.worker.html": true
+ },
+ "prototypes.any.html": true,
+ "prototypes.any.worker.html": true,
+ "table": {
+ "constructor.any.html": true,
+ "constructor.any.worker.html": true,
+ "get-set.any.html": true,
+ "get-set.any.worker.html": true,
+ "grow.any.html": true,
+ "grow.any.worker.html": true,
+ "length.any.html": true,
+ "length.any.worker.html": true,
+ "toString.any.html": true,
+ "toString.any.worker.html": true,
+ "constructor-types.tentative.any.html": false,
+ "constructor-types.tentative.any.worker.html": false,
+ "type.tentative.any.html": false,
+ "type.tentative.any.worker.html": false
+ },
+ "exception": {
+ "basic.tentative.any.html": true,
+ "basic.tentative.any.worker.html": true,
+ "constructor.tentative.any.html": true,
+ "constructor.tentative.any.worker.html": true,
+ "getArg.tentative.any.html": [
+ "Getting out-of-range argument"
+ ],
+ "getArg.tentative.any.worker.html": [
+ "Getting out-of-range argument"
+ ],
+ "is.tentative.any.html": true,
+ "is.tentative.any.worker.html": true,
+ "toString.tentative.any.html": true,
+ "toString.tentative.any.worker.html": true,
+ "identity.tentative.any.html": true,
+ "identity.tentative.any.worker.html": true
+ },
+ "tag": {
+ "constructor.tentative.any.html": true,
+ "constructor.tentative.any.worker.html": true,
+ "toString.tentative.any.html": true,
+ "toString.tentative.any.worker.html": true,
+ "type.tentative.any.html": false,
+ "type.tentative.any.worker.html": false
+ },
+ "function": {
+ "call.tentative.any.html": false,
+ "call.tentative.any.worker.html": false,
+ "constructor.tentative.any.html": false,
+ "constructor.tentative.any.worker.html": false,
+ "table.tentative.any.html": false,
+ "table.tentative.any.worker.html": false,
+ "type.tentative.any.html": false,
+ "type.tentative.any.worker.html": false
+ }
+ },
+ "serialization": {
+ "module": {
+ "serialization-via-idb.any.html": false,
+ "serialization-via-idb.any.worker.html": false,
+ "serialization-via-notifications-api.any.html": false,
+ "serialization-via-notifications-api.any.worker.html": false,
+ "nested-worker-success.any.worker.html": true
+ },
+ "arraybuffer": {
+ "transfer.window.html": false
+ }
+ },
+ "webapi": {
+ "abort.any.html": true,
+ "abort.any.worker.html": true,
+ "body.any.html": true,
+ "body.any.worker.html": true,
+ "contenttype.any.html": true,
+ "contenttype.any.worker.html": true,
+ "empty-body.any.html": true,
+ "empty-body.any.worker.html": true,
+ "historical.any.html": false,
+ "historical.any.worker.html": false,
+ "idlharness.any.html": true,
+ "idlharness.any.worker.html": true,
+ "instantiateStreaming-bad-imports.any.html": true,
+ "instantiateStreaming-bad-imports.any.worker.html": true,
+ "instantiateStreaming.any.html": true,
+ "instantiateStreaming.any.worker.html": true,
+ "invalid-args.any.html": true,
+ "invalid-args.any.worker.html": true,
+ "invalid-code.any.html": true,
+ "invalid-code.any.worker.html": true,
+ "modified-contenttype.any.html": true,
+ "modified-contenttype.any.worker.html": true,
+ "origin.sub.any.html": [
+ "Opaque response: compileStreaming",
+ "Opaque response: instantiateStreaming"
+ ],
+ "origin.sub.any.worker.html": [
+ "Opaque response: compileStreaming",
+ "Opaque response: instantiateStreaming"
+ ],
+ "rejected-arg.any.html": true,
+ "rejected-arg.any.worker.html": true,
+ "status.any.html": true,
+ "status.any.worker.html": true
+ },
+ "create_multiple_memory.worker.html": true
+ },
+ "webidl": {
+ "ecmascript-binding": {
+ "es-exceptions": {
+ "DOMException-constants.any.html": true,
+ "DOMException-constants.any.worker.html": true,
+ "DOMException-constructor-and-prototype.any.html": true,
+ "DOMException-constructor-and-prototype.any.worker.html": true,
+ "DOMException-constructor-behavior.any.html": true,
+ "DOMException-constructor-behavior.any.worker.html": true,
+ "DOMException-custom-bindings.any.html": true,
+ "DOMException-custom-bindings.any.worker.html": true
+ },
+ "class-string-interface.any.html": true,
+ "class-string-interface.any.worker.html": true,
+ "class-string-iterator-prototype-object.any.html": [
+ "Object.prototype.toString applied after deleting @@toStringTag"
+ ],
+ "class-string-iterator-prototype-object.any.worker.html": [
+ "Object.prototype.toString applied after deleting @@toStringTag"
+ ],
+ "class-string-named-properties-object.window.html": false,
+ "global-immutable-prototype.any.html": [
+ "Setting to a different prototype"
+ ],
+ "global-object-implicit-this-value.any.html": [
+ "Global object's getter throws when called on incompatible object",
+ "Global object's setter throws when called on incompatible object",
+ "Global object's operation throws when called on incompatible object",
+ "Global object's getter works when called on null / undefined",
+ "Global object's setter works when called on null / undefined"
+ ],
+ "global-object-implicit-this-value.any.worker.html": [
+ "Global object's getter throws when called on incompatible object",
+ "Global object's setter throws when called on incompatible object",
+ "Global object's operation throws when called on incompatible object",
+ "Global object's getter works when called on null / undefined",
+ "Global object's setter works when called on null / undefined"
+ ],
+ "legacy-factor-function-subclass.window.html": false,
+ "no-regexp-special-casing.any.html": [
+ "Conversion to a sequence works"
+ ],
+ "no-regexp-special-casing.any.worker.html": [
+ "Conversion to a sequence works"
+ ],
+ "builtin-function-properties.any.html": true,
+ "builtin-function-properties.any.worker.html": true,
+ "observable-array-no-leak-of-internals.window.html": false,
+ "observable-array-ownkeys.window.html": false
+ },
+ "idlharness.any.html": true,
+ "idlharness.any.worker.html": true,
+ "idlharness-shadowrealm.window.html": false
+ },
+ "url": {
+ "historical.any.html": [
+ "<a> and <area>.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"
+ ],
+ "idlharness.any.html": true,
+ "idlharness.any.worker.html": true,
+ "toascii.window.html": [
+ "aa-- (using <a>.host)",
+ "aa-- (using <a>.hostname)",
+ "aa-- (using <area>.host)",
+ "aa-- (using <area>.hostname)",
+ "a†-- (using <a>.host)",
+ "a†-- (using <a>.hostname)",
+ "a†-- (using <area>.host)",
+ "a†-- (using <area>.hostname)",
+ "ab--c (using <a>.host)",
+ "ab--c (using <a>.hostname)",
+ "ab--c (using <area>.host)",
+ "ab--c (using <area>.hostname)",
+ "-x (using <a>.host)",
+ "-x (using <a>.hostname)",
+ "-x (using <area>.host)",
+ "-x (using <area>.hostname)",
+ "-† (using <a>.host)",
+ "-† (using <a>.hostname)",
+ "-† (using <area>.host)",
+ "-† (using <area>.hostname)",
+ "-x.xn--zca (using <a>.host)",
+ "-x.xn--zca (using <a>.hostname)",
+ "-x.xn--zca (using <area>.host)",
+ "-x.xn--zca (using <area>.hostname)",
+ "-x.ß (using <a>.host)",
+ "-x.ß (using <a>.hostname)",
+ "-x.ß (using <area>.host)",
+ "-x.ß (using <area>.hostname)",
+ "x-.xn--zca (using <a>.host)",
+ "x-.xn--zca (using <a>.hostname)",
+ "x-.xn--zca (using <area>.host)",
+ "x-.xn--zca (using <area>.hostname)",
+ "x-.ß (using <a>.host)",
+ "x-.ß (using <a>.hostname)",
+ "x-.ß (using <area>.host)",
+ "x-.ß (using <area>.hostname)",
+ "x..xn--zca (using <a>.host)",
+ "x..xn--zca (using <a>.hostname)",
+ "x..xn--zca (using <area>.host)",
+ "x..xn--zca (using <area>.hostname)",
+ "x..ß (using <a>.host)",
+ "x..ß (using <a>.hostname)",
+ "x..ß (using <area>.host)",
+ "x..ß (using <area>.hostname)",
+ "xn--a (using <a>)",
+ "xn--a (using <a>.host)",
+ "xn--a (using <a>.hostname)",
+ "xn--a (using <area>)",
+ "xn--a (using <area>.host)",
+ "xn--a (using <area>.hostname)",
+ "xn--a.xn--zca (using <a>)",
+ "xn--a.xn--zca (using <a>.host)",
+ "xn--a.xn--zca (using <a>.hostname)",
+ "xn--a.xn--zca (using <area>)",
+ "xn--a.xn--zca (using <area>.host)",
+ "xn--a.xn--zca (using <area>.hostname)",
+ "xn--a.ß (using <a>)",
+ "xn--a.ß (using <a>.host)",
+ "xn--a.ß (using <a>.hostname)",
+ "xn--a.ß (using <area>)",
+ "xn--a.ß (using <area>.host)",
+ "xn--a.ß (using <area>.hostname)",
+ "xn--ls8h= (using <a>)",
+ "xn--ls8h= (using <a>.host)",
+ "xn--ls8h= (using <a>.hostname)",
+ "xn--ls8h= (using <area>)",
+ "xn--ls8h= (using <area>.host)",
+ "xn--ls8h= (using <area>.hostname)",
+ "xn--tešla (using <a>)",
+ "xn--tešla (using <a>.host)",
+ "xn--tešla (using <a>.hostname)",
+ "xn--tešla (using <area>)",
+ "xn--tešla (using <area>.host)",
+ "xn--tešla (using <area>.hostname)",
+ "xn--zca.xn--zca (using <a>.host)",
+ "xn--zca.xn--zca (using <a>.hostname)",
+ "xn--zca.xn--zca (using <area>.host)",
+ "xn--zca.xn--zca (using <area>.hostname)",
+ "xn--zca.ß (using <a>.host)",
+ "xn--zca.ß (using <a>.hostname)",
+ "xn--zca.ß (using <area>.host)",
+ "xn--zca.ß (using <area>.hostname)",
+ "ab--c.xn--zca (using <a>.host)",
+ "ab--c.xn--zca (using <a>.hostname)",
+ "ab--c.xn--zca (using <area>.host)",
+ "ab--c.xn--zca (using <area>.hostname)",
+ "ab--c.ß (using <a>.host)",
+ "ab--c.ß (using <a>.hostname)",
+ "ab--c.ß (using <area>.host)",
+ "ab--c.ß (using <area>.hostname)",
+ "‍.example (using URL)",
+ "‍.example (using URL.host)",
+ "‍.example (using URL.hostname)",
+ "‍.example (using <a>)",
+ "‍.example (using <a>.host)",
+ "‍.example (using <a>.hostname)",
+ "‍.example (using <area>)",
+ "‍.example (using <area>.host)",
+ "‍.example (using <area>.hostname)",
+ "xn--1ug.example (using URL)",
+ "xn--1ug.example (using URL.host)",
+ "xn--1ug.example (using URL.hostname)",
+ "xn--1ug.example (using <a>)",
+ "xn--1ug.example (using <a>.host)",
+ "xn--1ug.example (using <a>.hostname)",
+ "xn--1ug.example (using <area>)",
+ "xn--1ug.example (using <area>.host)",
+ "xn--1ug.example (using <area>.hostname)",
+ "يa (using <a>)",
+ "يa (using <a>.host)",
+ "يa (using <a>.hostname)",
+ "يa (using <area>)",
+ "يa (using <area>.host)",
+ "يa (using <area>.hostname)",
+ "xn--a-yoc (using <a>)",
+ "xn--a-yoc (using <a>.host)",
+ "xn--a-yoc (using <a>.hostname)",
+ "xn--a-yoc (using <area>)",
+ "xn--a-yoc (using <area>.host)",
+ "xn--a-yoc (using <area>.hostname)",
+ "ශ්‍රී (using <a>.host)",
+ "ශ්‍රී (using <a>.hostname)",
+ "ශ්‍රී (using <area>.host)",
+ "ශ්‍රී (using <area>.hostname)",
+ "نامه‌ای (using <a>.host)",
+ "نامه‌ای (using <a>.hostname)",
+ "نامه‌ای (using <area>.host)",
+ "نامه‌ای (using <area>.hostname)",
+ "�.com (using <a>)",
+ "�.com (using <a>.host)",
+ "�.com (using <a>.hostname)",
+ "�.com (using <area>)",
+ "�.com (using <area>.host)",
+ "�.com (using <area>.hostname)",
+ "xn--zn7c.com (using <a>)",
+ "xn--zn7c.com (using <a>.host)",
+ "xn--zn7c.com (using <a>.hostname)",
+ "xn--zn7c.com (using <area>)",
+ "xn--zn7c.com (using <area>.host)",
+ "xn--zn7c.com (using <area>.hostname)",
+ "x01234567890123456789012345678901234567890123456789012345678901x (using <a>.host)",
+ "x01234567890123456789012345678901234567890123456789012345678901x (using <a>.hostname)",
+ "x01234567890123456789012345678901234567890123456789012345678901x (using <area>.host)",
+ "x01234567890123456789012345678901234567890123456789012345678901x (using <area>.hostname)",
+ "x01234567890123456789012345678901234567890123456789012345678901† (using <a>.host)",
+ "x01234567890123456789012345678901234567890123456789012345678901† (using <a>.hostname)",
+ "x01234567890123456789012345678901234567890123456789012345678901† (using <area>.host)",
+ "x01234567890123456789012345678901234567890123456789012345678901† (using <area>.hostname)",
+ "x01234567890123456789012345678901234567890123456789012345678901x.xn--zca (using <a>.host)",
+ "x01234567890123456789012345678901234567890123456789012345678901x.xn--zca (using <a>.hostname)",
+ "x01234567890123456789012345678901234567890123456789012345678901x.xn--zca (using <area>.host)",
+ "x01234567890123456789012345678901234567890123456789012345678901x.xn--zca (using <area>.hostname)",
+ "x01234567890123456789012345678901234567890123456789012345678901x.ß (using <a>.host)",
+ "x01234567890123456789012345678901234567890123456789012345678901x.ß (using <a>.hostname)",
+ "x01234567890123456789012345678901234567890123456789012345678901x.ß (using <area>.host)",
+ "x01234567890123456789012345678901234567890123456789012345678901x.ß (using <area>.hostname)",
+ "01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.0123456789012345678901234567890123456789012345678.x (using <a>.host)",
+ "01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.0123456789012345678901234567890123456789012345678.x (using <a>.hostname)",
+ "01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.0123456789012345678901234567890123456789012345678.x (using <area>.host)",
+ "01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.0123456789012345678901234567890123456789012345678.x (using <area>.hostname)",
+ "01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.0123456789012345678901234567890123456789012345678.xn--zca (using <a>.host)",
+ "01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.0123456789012345678901234567890123456789012345678.xn--zca (using <a>.hostname)",
+ "01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.0123456789012345678901234567890123456789012345678.xn--zca (using <area>.host)",
+ "01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.0123456789012345678901234567890123456789012345678.xn--zca (using <area>.hostname)",
+ "01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.0123456789012345678901234567890123456789012345678.ß (using <a>.host)",
+ "01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.0123456789012345678901234567890123456789012345678.ß (using <a>.hostname)",
+ "01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.0123456789012345678901234567890123456789012345678.ß (using <area>.host)",
+ "01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.0123456789012345678901234567890123456789012345678.ß (using <area>.hostname)",
+ "a­b (using <a>.host)",
+ "a­b (using <a>.hostname)",
+ "a­b (using <area>.host)",
+ "a­b (using <area>.hostname)",
+ "≠ (using <a>.host)",
+ "≠ (using <a>.hostname)",
+ "≠ (using <area>.host)",
+ "≠ (using <area>.hostname)",
+ "≮ (using <a>.host)",
+ "≮ (using <a>.hostname)",
+ "≮ (using <area>.host)",
+ "≮ (using <area>.hostname)",
+ "≯ (using <a>.host)",
+ "≯ (using <a>.hostname)",
+ "≯ (using <area>.host)",
+ "≯ (using <area>.hostname)"
+ ],
+ "url-origin.any.html": [
+ "Origin parsing: <blob:blob:https://example.org/> without base",
+ "Origin parsing: <blob:ftp://host/path> without base",
+ "Origin parsing: <blob:ws://example.org/> without base",
+ "Origin parsing: <blob:wss://example.org/> without base"
+ ],
+ "url-origin.any.worker.html": [
+ "Origin parsing: <blob:blob:https://example.org/> without base",
+ "Origin parsing: <blob:ftp://host/path> without base",
+ "Origin parsing: <blob:ws://example.org/> without base",
+ "Origin parsing: <blob:wss://example.org/> without base"
+ ],
+ "url-searchparams.any.html": true,
+ "url-searchparams.any.worker.html": true,
+ "url-setters-stripping.any.html": [
+ "Setting port with leading U+0000 (https:)",
+ "Setting port with leading U+001F (https:)",
+ "Setting port with leading U+0000 (wpt++:)",
+ "Setting port with leading U+001F (wpt++:)"
+ ],
+ "url-setters-stripping.any.worker.html": [
+ "Setting port with leading U+0000 (https:)",
+ "Setting port with leading U+001F (https:)",
+ "Setting port with leading U+0000 (wpt++:)",
+ "Setting port with leading U+001F (wpt++:)"
+ ],
+ "url-tojson.any.html": true,
+ "url-tojson.any.worker.html": true,
+ "urlencoded-parser.any.html": true,
+ "urlencoded-parser.any.worker.html": true,
+ "urlsearchparams-append.any.html": true,
+ "urlsearchparams-append.any.worker.html": true,
+ "urlsearchparams-constructor.any.html": true,
+ "urlsearchparams-constructor.any.worker.html": true,
+ "urlsearchparams-delete.any.html": [
+ "Changing the query of a URL with an opaque path can impact the path if the URL has no fragment"
+ ],
+ "urlsearchparams-delete.any.worker.html": [
+ "Changing the query of a URL with an opaque path can impact the path if the URL has no fragment"
+ ],
+ "urlsearchparams-foreach.any.html": true,
+ "urlsearchparams-foreach.any.worker.html": true,
+ "urlsearchparams-get.any.html": true,
+ "urlsearchparams-get.any.worker.html": true,
+ "urlsearchparams-getall.any.html": true,
+ "urlsearchparams-getall.any.worker.html": true,
+ "urlsearchparams-has.any.html": true,
+ "urlsearchparams-has.any.worker.html": true,
+ "urlsearchparams-set.any.html": true,
+ "urlsearchparams-set.any.worker.html": true,
+ "urlsearchparams-size.any.html": true,
+ "urlsearchparams-sort.any.html": true,
+ "urlsearchparams-sort.any.worker.html": true,
+ "urlsearchparams-stringifier.any.html": true,
+ "urlsearchparams-stringifier.any.worker.html": true,
+ "idlharness-shadowrealm.window.html": false,
+ "percent-encoding.window.html": [
+ "Input † with encoding big5",
+ "Input † with encoding euc-kr",
+ "Input † with encoding utf-8",
+ "Input † with encoding windows-1252",
+ "Input \u000eA with encoding big5",
+ "Input \u000eA with encoding iso-2022-jp",
+ "Input \u000eA with encoding utf-8",
+ "Input ‾\\ with encoding iso-2022-jp",
+ "Input ‾\\ with encoding utf-8",
+ "Input  with encoding gb18030",
+ "Input  with encoding utf-8",
+ "Input − with encoding shift_jis",
+ "Input − with encoding utf-8",
+ "Input á| with encoding utf-8"
+ ],
+ "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"
+ ],
+ "javascript-urls.window.html": false,
+ "url-constructor.any.html?exclude=(file|javascript|mailto)": [
+ "Parsing: <non-spec:/.//> without base",
+ "Parsing: <non-spec:/..//> without base",
+ "Parsing: <non-spec:/a/..//> without base",
+ "Parsing: <non-spec:/.//path> without base",
+ "Parsing: <non-spec:/..//path> without base",
+ "Parsing: <non-spec:/a/..//path> without base",
+ "Parsing: </.//path> against <non-spec:/p>",
+ "Parsing: </..//path> against <non-spec:/p>",
+ "Parsing: <..//path> against <non-spec:/p>",
+ "Parsing: <a/..//path> against <non-spec:/p>",
+ "Parsing: <> against <non-spec:/..//p>",
+ "Parsing: <path> against <non-spec:/..//p>",
+ "Parsing: <///test> against <http://example.org/>",
+ "Parsing: <///\\//\\//test> against <http://example.org/>",
+ "Parsing: <///example.org/path> against <http://example.org/>",
+ "Parsing: <///example.org/../path> against <http://example.org/>",
+ "Parsing: <///example.org/../../> against <http://example.org/>",
+ "Parsing: <///example.org/../path/../../> against <http://example.org/>",
+ "Parsing: <///example.org/../path/../../path> against <http://example.org/>",
+ "Parsing: </\\//\\/a/../> against <file:///>"
+ ],
+ "url-constructor.any.html?include=file": [
+ "Parsing: </> against <file://h/C:/a/b>",
+ "Parsing: <file:\\\\//> without base",
+ "Parsing: <file:\\\\\\\\> without base",
+ "Parsing: <file:\\\\\\\\?fox> without base",
+ "Parsing: <file:\\\\\\\\#guppy> without base",
+ "Parsing: <file://spider///> without base",
+ "Parsing: <file:\\\\localhost//> without base",
+ "Parsing: <file://\\/localhost//cat> without base",
+ "Parsing: <file://localhost//a//../..//> without base",
+ "Parsing: </////mouse> against <file:///elephant>",
+ "Parsing: <\\/localhost//pig> against <file://lion/>",
+ "Parsing: <//localhost//pig> against <file://lion/>",
+ "Parsing: </..//localhost//pig> against <file://lion/>",
+ "Parsing: <C|> against <file://host/dir/file>",
+ "Parsing: <C|> against <file://host/D:/dir1/dir2/file>",
+ "Parsing: <C|#> against <file://host/dir/file>",
+ "Parsing: <C|?> against <file://host/dir/file>",
+ "Parsing: <C|/> against <file://host/dir/file>",
+ "Parsing: <C|\n/> against <file://host/dir/file>",
+ "Parsing: <C|\\> against <file://host/dir/file>",
+ "Parsing: </c:/foo/bar> against <file://host/path>",
+ "Parsing: <file://example.net/C:/> without base",
+ "Parsing: <file://1.2.3.4/C:/> without base",
+ "Parsing: <file://[1::8]/C:/> without base",
+ "Parsing: <C|/> against <file://host/>",
+ "Parsing: </C:/> against <file://host/>",
+ "Parsing: <file:C:/> against <file://host/>",
+ "Parsing: <file:/C:/> against <file://host/>",
+ "Parsing: <file://localhost//a//../..//foo> without base",
+ "Parsing: <file://localhost////foo> without base",
+ "Parsing: <file:////foo> without base",
+ "Parsing: <file:////one/two> against <file:///>",
+ "Parsing: <////one/two> against <file:///>",
+ "Parsing: <file:///.//> against <file:////>",
+ "Parsing: <file:.//p> without base",
+ "Parsing: <file:/.//p> without base",
+ "Parsing: </\\//\\/a/../> against <file:///>"
+ ],
+ "url-constructor.any.html?include=javascript": true,
+ "url-constructor.any.html?include=mailto": true,
+ "url-constructor.any.worker.html?exclude=(file|javascript|mailto)": [
+ "Parsing: <non-spec:/.//> without base",
+ "Parsing: <non-spec:/..//> without base",
+ "Parsing: <non-spec:/a/..//> without base",
+ "Parsing: <non-spec:/.//path> without base",
+ "Parsing: <non-spec:/..//path> without base",
+ "Parsing: <non-spec:/a/..//path> without base",
+ "Parsing: </.//path> against <non-spec:/p>",
+ "Parsing: </..//path> against <non-spec:/p>",
+ "Parsing: <..//path> against <non-spec:/p>",
+ "Parsing: <a/..//path> against <non-spec:/p>",
+ "Parsing: <> against <non-spec:/..//p>",
+ "Parsing: <path> against <non-spec:/..//p>",
+ "Parsing: <///test> against <http://example.org/>",
+ "Parsing: <///\\//\\//test> against <http://example.org/>",
+ "Parsing: <///example.org/path> against <http://example.org/>",
+ "Parsing: <///example.org/../path> against <http://example.org/>",
+ "Parsing: <///example.org/../../> against <http://example.org/>",
+ "Parsing: <///example.org/../path/../../> against <http://example.org/>",
+ "Parsing: <///example.org/../path/../../path> against <http://example.org/>",
+ "Parsing: </\\//\\/a/../> against <file:///>"
+ ],
+ "url-constructor.any.worker.html?include=file": [
+ "Parsing: </> against <file://h/C:/a/b>",
+ "Parsing: <file:\\\\//> without base",
+ "Parsing: <file:\\\\\\\\> without base",
+ "Parsing: <file:\\\\\\\\?fox> without base",
+ "Parsing: <file:\\\\\\\\#guppy> without base",
+ "Parsing: <file://spider///> without base",
+ "Parsing: <file:\\\\localhost//> without base",
+ "Parsing: <file://\\/localhost//cat> without base",
+ "Parsing: <file://localhost//a//../..//> without base",
+ "Parsing: </////mouse> against <file:///elephant>",
+ "Parsing: <\\/localhost//pig> against <file://lion/>",
+ "Parsing: <//localhost//pig> against <file://lion/>",
+ "Parsing: </..//localhost//pig> against <file://lion/>",
+ "Parsing: <C|> against <file://host/dir/file>",
+ "Parsing: <C|> against <file://host/D:/dir1/dir2/file>",
+ "Parsing: <C|#> against <file://host/dir/file>",
+ "Parsing: <C|?> against <file://host/dir/file>",
+ "Parsing: <C|/> against <file://host/dir/file>",
+ "Parsing: <C|\n/> against <file://host/dir/file>",
+ "Parsing: <C|\\> against <file://host/dir/file>",
+ "Parsing: </c:/foo/bar> against <file://host/path>",
+ "Parsing: <file://example.net/C:/> without base",
+ "Parsing: <file://1.2.3.4/C:/> without base",
+ "Parsing: <file://[1::8]/C:/> without base",
+ "Parsing: <C|/> against <file://host/>",
+ "Parsing: </C:/> against <file://host/>",
+ "Parsing: <file:C:/> against <file://host/>",
+ "Parsing: <file:/C:/> against <file://host/>",
+ "Parsing: <file://localhost//a//../..//foo> without base",
+ "Parsing: <file://localhost////foo> without base",
+ "Parsing: <file:////foo> without base",
+ "Parsing: <file:////one/two> against <file:///>",
+ "Parsing: <////one/two> against <file:///>",
+ "Parsing: <file:///.//> against <file:////>",
+ "Parsing: <file:.//p> without base",
+ "Parsing: <file:/.//p> without base",
+ "Parsing: </\\//\\/a/../> against <file:///>"
+ ],
+ "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)": [
+ "<a>: Setting <a://example.net>.protocol = '' The empty string is not a valid scheme. Setter leaves the URL unchanged.",
+ "<area>: Setting <a://example.net>.protocol = '' The empty string is not a valid scheme. Setter leaves the URL unchanged.",
+ "<a>: Setting <a://example.net>.protocol = 'b'",
+ "<area>: Setting <a://example.net>.protocol = 'b'",
+ "<a>: Setting <a://example.net>.protocol = 'B' Upper-case ASCII is lower-cased",
+ "<area>: Setting <a://example.net>.protocol = 'B' Upper-case ASCII is lower-cased",
+ "<a>: Setting <a://example.net>.protocol = 'é' Non-ASCII is rejected",
+ "<area>: Setting <a://example.net>.protocol = 'é' Non-ASCII is rejected",
+ "<a>: Setting <a://example.net>.protocol = '0b' No leading digit",
+ "<area>: Setting <a://example.net>.protocol = '0b' No leading digit",
+ "<a>: Setting <a://example.net>.protocol = '+b' No leading punctuation",
+ "<area>: Setting <a://example.net>.protocol = '+b' No leading punctuation",
+ "<a>: Setting <a://example.net>.protocol = 'bC0+-.'",
+ "<area>: Setting <a://example.net>.protocol = 'bC0+-.'",
+ "<a>: Setting <a://example.net>.protocol = 'b,c' Only some punctuation is acceptable",
+ "<area>: Setting <a://example.net>.protocol = 'b,c' Only some punctuation is acceptable",
+ "<a>: Setting <a://example.net>.protocol = 'bé' Non-ASCII is rejected",
+ "<area>: Setting <a://example.net>.protocol = 'bé' Non-ASCII is rejected",
+ "<a>: Setting <http://test@example.net>.protocol = 'file' Can’t switch from URL containing username/password/port to file",
+ "<area>: Setting <http://test@example.net>.protocol = 'file' Can’t switch from URL containing username/password/port to file",
+ "<a>: Setting <https://example.net:1234>.protocol = 'file'",
+ "<area>: Setting <https://example.net:1234>.protocol = 'file'",
+ "<a>: Setting <wss://x:x@example.net:1234>.protocol = 'file'",
+ "<area>: Setting <wss://x:x@example.net:1234>.protocol = 'file'",
+ "<a>: Setting <http://example.net>.protocol = 'b' Can’t switch from special scheme to non-special",
+ "<area>: Setting <http://example.net>.protocol = 'b' Can’t switch from special scheme to non-special",
+ "<a>: Setting <https://example.net>.protocol = 's'",
+ "<area>: Setting <https://example.net>.protocol = 's'",
+ "<a>: Setting <ftp://example.net>.protocol = 'test'",
+ "<area>: Setting <ftp://example.net>.protocol = 'test'",
+ "<a>: Setting <ssh://me@example.net>.protocol = 'http' Can’t switch from non-special scheme to special",
+ "<area>: Setting <ssh://me@example.net>.protocol = 'http' Can’t switch from non-special scheme to special",
+ "<a>: Setting <ssh://me@example.net>.protocol = 'https'",
+ "<area>: Setting <ssh://me@example.net>.protocol = 'https'",
+ "<a>: Setting <ssh://me@example.net>.protocol = 'file'",
+ "<area>: Setting <ssh://me@example.net>.protocol = 'file'",
+ "<a>: Setting <ssh://example.net>.protocol = 'file'",
+ "<area>: Setting <ssh://example.net>.protocol = 'file'",
+ "<a>: Setting <nonsense:///test>.protocol = 'https'",
+ "<area>: Setting <nonsense:///test>.protocol = 'https'",
+ "<a>: Setting <http://example.net>.protocol = 'https:foo : bar' Stuff after the first ':' is ignored",
+ "<area>: Setting <http://example.net>.protocol = 'https:foo : bar' Stuff after the first ':' is ignored",
+ "<a>: Setting <data:text/html,<p>Test>.protocol = 'view-source+data:foo : bar' Stuff after the first ':' is ignored",
+ "<area>: Setting <data:text/html,<p>Test>.protocol = 'view-source+data:foo : bar' Stuff after the first ':' is ignored",
+ "<a>: Setting <http://foo.com:443/>.protocol = 'https' Port is set to null if it is the default for new scheme.",
+ "<area>: Setting <http://foo.com:443/>.protocol = 'https' Port is set to null if it is the default for new scheme.",
+ "<a>: Setting <http://test/>.protocol = 'h\r\ntt\tps' Tab and newline are stripped",
+ "<area>: Setting <http://test/>.protocol = 'h\r\ntt\tps' Tab and newline are stripped",
+ "<a>: Setting <http://test/>.protocol = 'https\r'",
+ "<area>: Setting <http://test/>.protocol = 'https\r'",
+ "<a>: Setting <http://test/>.protocol = 'https\u0000' Non-tab/newline C0 controls result in no-op",
+ "<area>: Setting <http://test/>.protocol = 'https\u0000' Non-tab/newline C0 controls result in no-op",
+ "<a>: Setting <http://test/>.protocol = 'https\f'",
+ "<area>: Setting <http://test/>.protocol = 'https\f'",
+ "<a>: Setting <http://test/>.protocol = 'https\u000e'",
+ "<area>: Setting <http://test/>.protocol = 'https\u000e'",
+ "<a>: Setting <http://test/>.protocol = 'https '",
+ "<area>: Setting <http://test/>.protocol = 'https '",
+ "<a>: Setting <unix:/run/foo.socket>.username = 'me' No host means no username",
+ "<area>: Setting <unix:/run/foo.socket>.username = 'me' No host means no username",
+ "<a>: Setting <http://example.net>.username = 'me'",
+ "<area>: Setting <http://example.net>.username = 'me'",
+ "<a>: Setting <http://:secret@example.net>.username = 'me'",
+ "<area>: Setting <http://:secret@example.net>.username = 'me'",
+ "<a>: Setting <http://me@example.net>.username = ''",
+ "<area>: Setting <http://me@example.net>.username = ''",
+ "<a>: Setting <http://me:secret@example.net>.username = ''",
+ "<area>: Setting <http://me:secret@example.net>.username = ''",
+ "<a>: Setting <http://example.net>.username = '\u0000\u0001\t\n\r\u001f !\"#$%&'()*+,-./09:;<=>?@AZ[\\]^_`az{|}~€Éé' UTF-8 percent encoding with the userinfo encode set.",
+ "<area>: Setting <http://example.net>.username = '\u0000\u0001\t\n\r\u001f !\"#$%&'()*+,-./09:;<=>?@AZ[\\]^_`az{|}~€Éé' UTF-8 percent encoding with the userinfo encode set.",
+ "<a>: Setting <http://example.net>.username = '%c3%89té' Bytes already percent-encoded are left as-is.",
+ "<area>: Setting <http://example.net>.username = '%c3%89té' Bytes already percent-encoded are left as-is.",
+ "<a>: Setting <sc:///>.username = 'x'",
+ "<area>: Setting <sc:///>.username = 'x'",
+ "<a>: Setting <unix:/run/foo.socket>.password = 'secret' No host means no password",
+ "<area>: Setting <unix:/run/foo.socket>.password = 'secret' No host means no password",
+ "<a>: Setting <http://example.net>.password = 'secret'",
+ "<area>: Setting <http://example.net>.password = 'secret'",
+ "<a>: Setting <http://me@example.net>.password = 'secret'",
+ "<area>: Setting <http://me@example.net>.password = 'secret'",
+ "<a>: Setting <http://:secret@example.net>.password = ''",
+ "<area>: Setting <http://:secret@example.net>.password = ''",
+ "<a>: Setting <http://me:secret@example.net>.password = ''",
+ "<area>: Setting <http://me:secret@example.net>.password = ''",
+ "<a>: Setting <http://example.net>.password = '\u0000\u0001\t\n\r\u001f !\"#$%&'()*+,-./09:;<=>?@AZ[\\]^_`az{|}~€Éé' UTF-8 percent encoding with the userinfo encode set.",
+ "<area>: Setting <http://example.net>.password = '\u0000\u0001\t\n\r\u001f !\"#$%&'()*+,-./09:;<=>?@AZ[\\]^_`az{|}~€Éé' UTF-8 percent encoding with the userinfo encode set.",
+ "<a>: Setting <http://example.net>.password = '%c3%89té' Bytes already percent-encoded are left as-is.",
+ "<area>: Setting <http://example.net>.password = '%c3%89té' Bytes already percent-encoded are left as-is.",
+ "<a>: Setting <sc:///>.password = 'x'",
+ "<area>: Setting <sc:///>.password = 'x'",
+ "<a>: Setting <sc://x/>.host = '\u0000' Non-special scheme",
+ "<area>: Setting <sc://x/>.host = '\u0000' Non-special scheme",
+ "<a>: Setting <sc://x/>.host = '\t'",
+ "<area>: Setting <sc://x/>.host = '\t'",
+ "<a>: Setting <sc://x/>.host = '\n'",
+ "<area>: Setting <sc://x/>.host = '\n'",
+ "<a>: Setting <sc://x/>.host = '\r'",
+ "<area>: Setting <sc://x/>.host = '\r'",
+ "<a>: Setting <sc://x/>.host = ' '",
+ "<area>: Setting <sc://x/>.host = ' '",
+ "<a>: Setting <sc://x/>.host = '#'",
+ "<area>: Setting <sc://x/>.host = '#'",
+ "<a>: Setting <sc://x/>.host = '/'",
+ "<area>: Setting <sc://x/>.host = '/'",
+ "<a>: Setting <sc://x/>.host = '?'",
+ "<area>: Setting <sc://x/>.host = '?'",
+ "<a>: Setting <sc://x/>.host = '@'",
+ "<area>: Setting <sc://x/>.host = '@'",
+ "<a>: Setting <sc://x/>.host = 'ß'",
+ "<area>: Setting <sc://x/>.host = 'ß'",
+ "<a>: Setting <https://x/>.host = 'ß' IDNA Nontransitional_Processing",
+ "<area>: Setting <https://x/>.host = 'ß' IDNA Nontransitional_Processing",
+ "<a>: Setting <data:text/plain,Stuff>.host = 'example.net' Cannot-be-a-base means no host",
+ "<area>: Setting <data:text/plain,Stuff>.host = 'example.net' Cannot-be-a-base means no host",
+ "<a>: Setting <http://example.net>.host = 'example.com:8080'",
+ "<area>: Setting <http://example.net>.host = 'example.com:8080'",
+ "<a>: Setting <http://example.net:8080>.host = 'example.com' Port number is unchanged if not specified in the new value",
+ "<area>: Setting <http://example.net:8080>.host = 'example.com' Port number is unchanged if not specified in the new value",
+ "<a>: Setting <http://example.net:8080>.host = 'example.com:' Port number is unchanged if not specified",
+ "<area>: Setting <http://example.net:8080>.host = 'example.com:' Port number is unchanged if not specified",
+ "<a>: Setting <http://example.net>.host = '' The empty host is not valid for special schemes",
+ "<area>: Setting <http://example.net>.host = '' The empty host is not valid for special schemes",
+ "<a>: Setting <view-source+http://example.net/foo>.host = '' The empty host is OK for non-special schemes",
+ "<area>: Setting <view-source+http://example.net/foo>.host = '' The empty host is OK for non-special schemes",
+ "<a>: Setting <a:/foo>.host = 'example.net' Path-only URLs can gain a host",
+ "<area>: Setting <a:/foo>.host = 'example.net' Path-only URLs can gain a host",
+ "<a>: Setting <http://example.net>.host = '0x7F000001:8080' IPv4 address syntax is normalized",
+ "<area>: Setting <http://example.net>.host = '0x7F000001:8080' IPv4 address syntax is normalized",
+ "<a>: Setting <http://example.net>.host = '[::0:01]:2' IPv6 address syntax is normalized",
+ "<area>: Setting <http://example.net>.host = '[::0:01]:2' IPv6 address syntax is normalized",
+ "<a>: Setting <http://example.net>.host = '[2001:db8::2]:4002' IPv6 literal address with port, crbug.com/1012416",
+ "<area>: Setting <http://example.net>.host = '[2001:db8::2]:4002' IPv6 literal address with port, crbug.com/1012416",
+ "<a>: Setting <http://example.net>.host = 'example.com:80' Default port number is removed",
+ "<area>: Setting <http://example.net>.host = 'example.com:80' Default port number is removed",
+ "<a>: Setting <https://example.net>.host = 'example.com:443' Default port number is removed",
+ "<area>: Setting <https://example.net>.host = 'example.com:443' Default port number is removed",
+ "<a>: Setting <https://example.net>.host = 'example.com:80' Default port number is only removed for the relevant scheme",
+ "<area>: Setting <https://example.net>.host = 'example.com:80' Default port number is only removed for the relevant scheme",
+ "<a>: Setting <http://example.net:8080>.host = 'example.com:80' Port number is removed if new port is scheme default and existing URL has a non-default port",
+ "<area>: Setting <http://example.net:8080>.host = 'example.com:80' Port number is removed if new port is scheme default and existing URL has a non-default port",
+ "<a>: Setting <http://example.net/path>.host = 'example.com/stuff' Stuff after a / delimiter is ignored",
+ "<area>: Setting <http://example.net/path>.host = 'example.com/stuff' Stuff after a / delimiter is ignored",
+ "<a>: Setting <http://example.net/path>.host = 'example.com:8080/stuff' Stuff after a / delimiter is ignored",
+ "<area>: Setting <http://example.net/path>.host = 'example.com:8080/stuff' Stuff after a / delimiter is ignored",
+ "<a>: Setting <http://example.net/path>.host = 'example.com?stuff' Stuff after a ? delimiter is ignored",
+ "<area>: Setting <http://example.net/path>.host = 'example.com?stuff' Stuff after a ? delimiter is ignored",
+ "<a>: Setting <http://example.net/path>.host = 'example.com:8080?stuff' Stuff after a ? delimiter is ignored",
+ "<area>: Setting <http://example.net/path>.host = 'example.com:8080?stuff' Stuff after a ? delimiter is ignored",
+ "<a>: Setting <http://example.net/path>.host = 'example.com#stuff' Stuff after a # delimiter is ignored",
+ "<area>: Setting <http://example.net/path>.host = 'example.com#stuff' Stuff after a # delimiter is ignored",
+ "<a>: Setting <http://example.net/path>.host = 'example.com:8080#stuff' Stuff after a # delimiter is ignored",
+ "<area>: Setting <http://example.net/path>.host = 'example.com:8080#stuff' Stuff after a # delimiter is ignored",
+ "<a>: Setting <http://example.net/path>.host = 'example.com\\stuff' Stuff after a \\ delimiter is ignored for special schemes",
+ "<area>: Setting <http://example.net/path>.host = 'example.com\\stuff' Stuff after a \\ delimiter is ignored for special schemes",
+ "<a>: Setting <http://example.net/path>.host = 'example.com:8080\\stuff' Stuff after a \\ delimiter is ignored for special schemes",
+ "<area>: Setting <http://example.net/path>.host = 'example.com:8080\\stuff' Stuff after a \\ delimiter is ignored for special schemes",
+ "<a>: Setting <view-source+http://example.net/path>.host = 'example.com\\stuff' \\ is not a delimiter for non-special schemes, but still forbidden in hosts",
+ "<area>: Setting <view-source+http://example.net/path>.host = 'example.com\\stuff' \\ is not a delimiter for non-special schemes, but still forbidden in hosts",
+ "<a>: Setting <view-source+http://example.net/path>.host = 'example.com:8080stuff2' Anything other than ASCII digit stops the port parser in a setter but is not an error",
+ "<area>: Setting <view-source+http://example.net/path>.host = 'example.com:8080stuff2' Anything other than ASCII digit stops the port parser in a setter but is not an error",
+ "<a>: Setting <http://example.net/path>.host = 'example.com:8080stuff2' Anything other than ASCII digit stops the port parser in a setter but is not an error",
+ "<area>: Setting <http://example.net/path>.host = 'example.com:8080stuff2' Anything other than ASCII digit stops the port parser in a setter but is not an error",
+ "<a>: Setting <http://example.net/path>.host = 'example.com:8080+2' Anything other than ASCII digit stops the port parser in a setter but is not an error",
+ "<area>: Setting <http://example.net/path>.host = 'example.com:8080+2' Anything other than ASCII digit stops the port parser in a setter but is not an error",
+ "<a>: Setting <http://example.net/path>.host = 'example.com:65535' Port numbers are 16 bit integers",
+ "<area>: Setting <http://example.net/path>.host = 'example.com:65535' Port numbers are 16 bit integers",
+ "<a>: Setting <http://example.net/path>.host = 'example.com:65536' Port numbers are 16 bit integers, overflowing is an error. Hostname is still set, though.",
+ "<area>: Setting <http://example.net/path>.host = 'example.com:65536' Port numbers are 16 bit integers, overflowing is an error. Hostname is still set, though.",
+ "<a>: Setting <http://example.net/>.host = '[google.com]' Broken IPv6",
+ "<area>: Setting <http://example.net/>.host = '[google.com]' Broken IPv6",
+ "<a>: Setting <http://example.net/>.host = '[::1.2.3.4x]'",
+ "<area>: Setting <http://example.net/>.host = '[::1.2.3.4x]'",
+ "<a>: Setting <http://example.net/>.host = '[::1.2.3.]'",
+ "<area>: Setting <http://example.net/>.host = '[::1.2.3.]'",
+ "<a>: Setting <http://example.net/>.host = '[::1.2.]'",
+ "<area>: Setting <http://example.net/>.host = '[::1.2.]'",
+ "<a>: Setting <http://example.net/>.host = '[::1.]'",
+ "<area>: Setting <http://example.net/>.host = '[::1.]'",
+ "<a>: Setting <sc://test@test/>.host = ''",
+ "<area>: Setting <sc://test@test/>.host = ''",
+ "<a>: Setting <sc://test:12/>.host = ''",
+ "<area>: Setting <sc://test:12/>.host = ''",
+ "<a>: Setting <http://example.com/>.host = '///bad.com' Leading / is not stripped",
+ "<area>: Setting <http://example.com/>.host = '///bad.com' Leading / is not stripped",
+ "<a>: Setting <sc://example.com/>.host = '///bad.com' Leading / is not stripped",
+ "<area>: Setting <sc://example.com/>.host = '///bad.com' Leading / is not stripped",
+ "<a>: Setting <https://example.com/>.host = 'a%C2%ADb'",
+ "<area>: Setting <https://example.com/>.host = 'a%C2%ADb'",
+ "<a>: Setting <https://example.com/>.host = '­'",
+ "<area>: Setting <https://example.com/>.host = '­'",
+ "<a>: Setting <https://example.com/>.host = '%C2%AD'",
+ "<area>: Setting <https://example.com/>.host = '%C2%AD'",
+ "<a>: Setting <https://example.com/>.host = 'xn--'",
+ "<area>: Setting <https://example.com/>.host = 'xn--'",
+ "<a>: Setting <sc://x/>.hostname = '\u0000' Non-special scheme",
+ "<area>: Setting <sc://x/>.hostname = '\u0000' Non-special scheme",
+ "<a>: Setting <sc://x/>.hostname = '\t'",
+ "<area>: Setting <sc://x/>.hostname = '\t'",
+ "<a>: Setting <sc://x/>.hostname = '\n'",
+ "<area>: Setting <sc://x/>.hostname = '\n'",
+ "<a>: Setting <sc://x/>.hostname = '\r'",
+ "<area>: Setting <sc://x/>.hostname = '\r'",
+ "<a>: Setting <sc://x/>.hostname = ' '",
+ "<area>: Setting <sc://x/>.hostname = ' '",
+ "<a>: Setting <sc://x/>.hostname = '#'",
+ "<area>: Setting <sc://x/>.hostname = '#'",
+ "<a>: Setting <sc://x/>.hostname = '/'",
+ "<area>: Setting <sc://x/>.hostname = '/'",
+ "<a>: Setting <sc://x/>.hostname = '?'",
+ "<area>: Setting <sc://x/>.hostname = '?'",
+ "<a>: Setting <sc://x/>.hostname = '@'",
+ "<area>: Setting <sc://x/>.hostname = '@'",
+ "<a>: Setting <data:text/plain,Stuff>.hostname = 'example.net' Cannot-be-a-base means no host",
+ "<area>: Setting <data:text/plain,Stuff>.hostname = 'example.net' Cannot-be-a-base means no host",
+ "<a>: Setting <http://example.net:8080>.hostname = 'example.com'",
+ "<area>: Setting <http://example.net:8080>.hostname = 'example.com'",
+ "<a>: Setting <http://example.net>.hostname = '' The empty host is not valid for special schemes",
+ "<area>: Setting <http://example.net>.hostname = '' The empty host is not valid for special schemes",
+ "<a>: Setting <view-source+http://example.net/foo>.hostname = '' The empty host is OK for non-special schemes",
+ "<area>: Setting <view-source+http://example.net/foo>.hostname = '' The empty host is OK for non-special schemes",
+ "<a>: Setting <a:/foo>.hostname = 'example.net' Path-only URLs can gain a host",
+ "<area>: Setting <a:/foo>.hostname = 'example.net' Path-only URLs can gain a host",
+ "<a>: Setting <http://example.net:8080>.hostname = '0x7F000001' IPv4 address syntax is normalized",
+ "<area>: Setting <http://example.net:8080>.hostname = '0x7F000001' IPv4 address syntax is normalized",
+ "<a>: Setting <http://example.net>.hostname = '[::0:01]' IPv6 address syntax is normalized",
+ "<area>: Setting <http://example.net>.hostname = '[::0:01]' IPv6 address syntax is normalized",
+ "<a>: Setting <http://example.net/path>.hostname = 'example.com:8080' : delimiter invalidates entire value",
+ "<area>: Setting <http://example.net/path>.hostname = 'example.com:8080' : delimiter invalidates entire value",
+ "<a>: Setting <http://example.net:8080/path>.hostname = 'example.com:' : delimiter invalidates entire value",
+ "<area>: Setting <http://example.net:8080/path>.hostname = 'example.com:' : delimiter invalidates entire value",
+ "<a>: Setting <http://example.net/path>.hostname = 'example.com/stuff' Stuff after a / delimiter is ignored",
+ "<area>: Setting <http://example.net/path>.hostname = 'example.com/stuff' Stuff after a / delimiter is ignored",
+ "<a>: Setting <http://example.net/path>.hostname = 'example.com?stuff' Stuff after a ? delimiter is ignored",
+ "<area>: Setting <http://example.net/path>.hostname = 'example.com?stuff' Stuff after a ? delimiter is ignored",
+ "<a>: Setting <http://example.net/path>.hostname = 'example.com#stuff' Stuff after a # delimiter is ignored",
+ "<area>: Setting <http://example.net/path>.hostname = 'example.com#stuff' Stuff after a # delimiter is ignored",
+ "<a>: Setting <http://example.net/path>.hostname = 'example.com\\stuff' Stuff after a \\ delimiter is ignored for special schemes",
+ "<area>: Setting <http://example.net/path>.hostname = 'example.com\\stuff' Stuff after a \\ delimiter is ignored for special schemes",
+ "<a>: Setting <view-source+http://example.net/path>.hostname = 'example.com\\stuff' \\ is not a delimiter for non-special schemes, but still forbidden in hosts",
+ "<area>: Setting <view-source+http://example.net/path>.hostname = 'example.com\\stuff' \\ is not a delimiter for non-special schemes, but still forbidden in hosts",
+ "<a>: Setting <http://example.net/>.hostname = '[google.com]' Broken IPv6",
+ "<area>: Setting <http://example.net/>.hostname = '[google.com]' Broken IPv6",
+ "<a>: Setting <http://example.net/>.hostname = '[::1.2.3.4x]'",
+ "<area>: Setting <http://example.net/>.hostname = '[::1.2.3.4x]'",
+ "<a>: Setting <http://example.net/>.hostname = '[::1.2.3.]'",
+ "<area>: Setting <http://example.net/>.hostname = '[::1.2.3.]'",
+ "<a>: Setting <http://example.net/>.hostname = '[::1.2.]'",
+ "<area>: Setting <http://example.net/>.hostname = '[::1.2.]'",
+ "<a>: Setting <http://example.net/>.hostname = '[::1.]'",
+ "<area>: Setting <http://example.net/>.hostname = '[::1.]'",
+ "<a>: Setting <sc://test@test/>.hostname = ''",
+ "<area>: Setting <sc://test@test/>.hostname = ''",
+ "<a>: Setting <sc://test:12/>.hostname = ''",
+ "<area>: Setting <sc://test:12/>.hostname = ''",
+ "<a>: Setting <non-spec:/.//p>.hostname = 'h' Drop /. from path",
+ "<area>: Setting <non-spec:/.//p>.hostname = 'h' Drop /. from path",
+ "<a>: Setting <non-spec:/.//p>.hostname = ''",
+ "<area>: Setting <non-spec:/.//p>.hostname = ''",
+ "<a>: Setting <http://example.com/>.hostname = '///bad.com' Leading / is not stripped",
+ "<area>: Setting <http://example.com/>.hostname = '///bad.com' Leading / is not stripped",
+ "<a>: Setting <sc://example.com/>.hostname = '///bad.com' Leading / is not stripped",
+ "<area>: Setting <sc://example.com/>.hostname = '///bad.com' Leading / is not stripped",
+ "<a>: Setting <https://example.com/>.hostname = 'a%C2%ADb'",
+ "<area>: Setting <https://example.com/>.hostname = 'a%C2%ADb'",
+ "<a>: Setting <https://example.com/>.hostname = '­'",
+ "<area>: Setting <https://example.com/>.hostname = '­'",
+ "<a>: Setting <https://example.com/>.hostname = '%C2%AD'",
+ "<area>: Setting <https://example.com/>.hostname = '%C2%AD'",
+ "<a>: Setting <https://example.com/>.hostname = 'xn--'",
+ "<area>: Setting <https://example.com/>.hostname = 'xn--'",
+ "<a>: Setting <http://example.net>.port = '8080'",
+ "<area>: Setting <http://example.net>.port = '8080'",
+ "<a>: Setting <http://example.net:8080>.port = '' Port number is removed if empty is the new value",
+ "<area>: Setting <http://example.net:8080>.port = '' Port number is removed if empty is the new value",
+ "<a>: Setting <http://example.net:8080>.port = '80' Default port number is removed",
+ "<area>: Setting <http://example.net:8080>.port = '80' Default port number is removed",
+ "<a>: Setting <https://example.net:4433>.port = '443' Default port number is removed",
+ "<area>: Setting <https://example.net:4433>.port = '443' Default port number is removed",
+ "<a>: Setting <https://example.net>.port = '80' Default port number is only removed for the relevant scheme",
+ "<area>: Setting <https://example.net>.port = '80' Default port number is only removed for the relevant scheme",
+ "<a>: Setting <http://example.net/path>.port = '8080/stuff' Stuff after a / delimiter is ignored",
+ "<area>: Setting <http://example.net/path>.port = '8080/stuff' Stuff after a / delimiter is ignored",
+ "<a>: Setting <http://example.net/path>.port = '8080?stuff' Stuff after a ? delimiter is ignored",
+ "<area>: Setting <http://example.net/path>.port = '8080?stuff' Stuff after a ? delimiter is ignored",
+ "<a>: Setting <http://example.net/path>.port = '8080#stuff' Stuff after a # delimiter is ignored",
+ "<area>: Setting <http://example.net/path>.port = '8080#stuff' Stuff after a # delimiter is ignored",
+ "<a>: Setting <http://example.net/path>.port = '8080\\stuff' Stuff after a \\ delimiter is ignored for special schemes",
+ "<area>: Setting <http://example.net/path>.port = '8080\\stuff' Stuff after a \\ delimiter is ignored for special schemes",
+ "<a>: Setting <view-source+http://example.net/path>.port = '8080stuff2' Anything other than ASCII digit stops the port parser in a setter but is not an error",
+ "<area>: Setting <view-source+http://example.net/path>.port = '8080stuff2' Anything other than ASCII digit stops the port parser in a setter but is not an error",
+ "<a>: Setting <http://example.net/path>.port = '8080stuff2' Anything other than ASCII digit stops the port parser in a setter but is not an error",
+ "<area>: Setting <http://example.net/path>.port = '8080stuff2' Anything other than ASCII digit stops the port parser in a setter but is not an error",
+ "<a>: Setting <http://example.net/path>.port = '8080+2' Anything other than ASCII digit stops the port parser in a setter but is not an error",
+ "<area>: Setting <http://example.net/path>.port = '8080+2' Anything other than ASCII digit stops the port parser in a setter but is not an error",
+ "<a>: Setting <http://example.net/path>.port = '65535' Port numbers are 16 bit integers",
+ "<area>: Setting <http://example.net/path>.port = '65535' Port numbers are 16 bit integers",
+ "<a>: Setting <http://example.net:8080/path>.port = '65536' Port numbers are 16 bit integers, overflowing is an error",
+ "<area>: Setting <http://example.net:8080/path>.port = '65536' Port numbers are 16 bit integers, overflowing is an error",
+ "<a>: Setting <http://example.net:8080/path>.port = 'randomstring' Setting port to a string that doesn't parse as a number",
+ "<area>: Setting <http://example.net:8080/path>.port = 'randomstring' Setting port to a string that doesn't parse as a number",
+ "<a>: Setting <non-special://example.net:8080/path>.port = '65536' Port numbers are 16 bit integers, overflowing is an error",
+ "<area>: Setting <non-special://example.net:8080/path>.port = '65536' Port numbers are 16 bit integers, overflowing is an error",
+ "<a>: Setting <non-base:value>.port = '12'",
+ "<area>: Setting <non-base:value>.port = '12'",
+ "<a>: Setting <sc:///>.port = '12'",
+ "<area>: Setting <sc:///>.port = '12'",
+ "<a>: Setting <sc://x/>.port = '12'",
+ "<area>: Setting <sc://x/>.port = '12'",
+ "<a>: Setting <https://domain.com:443>.port = '\t8080' Leading u0009 on special scheme",
+ "<area>: Setting <https://domain.com:443>.port = '\t8080' Leading u0009 on special scheme",
+ "<a>: Setting <wpt++://domain.com:443>.port = '\t8080' Leading u0009 on non-special scheme",
+ "<area>: Setting <wpt++://domain.com:443>.port = '\t8080' Leading u0009 on non-special scheme",
+ "<a>: Setting <https://www.google.com:4343>.port = '4wpt' Should use all ascii prefixed characters as port",
+ "<area>: Setting <https://www.google.com:4343>.port = '4wpt' Should use all ascii prefixed characters as port",
+ "<a>: Setting <data:original>.pathname = 'new value'",
+ "<area>: Setting <data:original>.pathname = 'new value'",
+ "<a>: Setting <sc:original>.pathname = 'new value'",
+ "<area>: Setting <sc:original>.pathname = 'new value'",
+ "<a>: Setting <foo://somehost/some/path>.pathname = '' Non-special URLs can have their paths erased",
+ "<area>: Setting <foo://somehost/some/path>.pathname = '' Non-special URLs can have their paths erased",
+ "<a>: Setting <foo:///some/path>.pathname = '' Non-special URLs with an empty host can have their paths erased",
+ "<area>: Setting <foo:///some/path>.pathname = '' Non-special URLs with an empty host can have their paths erased",
+ "<a>: Setting <foo:/some/path>.pathname = '' Path-only URLs cannot have their paths erased",
+ "<area>: Setting <foo:/some/path>.pathname = '' Path-only URLs cannot have their paths erased",
+ "<a>: Setting <foo:/some/path>.pathname = 'test' Path-only URLs always have an initial slash",
+ "<area>: Setting <foo:/some/path>.pathname = 'test' Path-only URLs always have an initial slash",
+ "<a>: Setting <unix:/run/foo.socket?timeout=10>.pathname = '/var/log/../run/bar.socket'",
+ "<area>: Setting <unix:/run/foo.socket?timeout=10>.pathname = '/var/log/../run/bar.socket'",
+ "<a>: Setting <https://example.net#nav>.pathname = 'home'",
+ "<area>: Setting <https://example.net#nav>.pathname = 'home'",
+ "<a>: Setting <https://example.net#nav>.pathname = '../home'",
+ "<area>: Setting <https://example.net#nav>.pathname = '../home'",
+ "<a>: Setting <http://example.net/home?lang=fr#nav>.pathname = '\\a\\%2E\\b\\%2e.\\c' \\ is a segment delimiter for 'special' URLs",
+ "<area>: Setting <http://example.net/home?lang=fr#nav>.pathname = '\\a\\%2E\\b\\%2e.\\c' \\ is a segment delimiter for 'special' URLs",
+ "<a>: Setting <view-source+http://example.net/home?lang=fr#nav>.pathname = '\\a\\%2E\\b\\%2e.\\c' \\ is *not* a segment delimiter for non-'special' URLs",
+ "<area>: Setting <view-source+http://example.net/home?lang=fr#nav>.pathname = '\\a\\%2E\\b\\%2e.\\c' \\ is *not* a segment delimiter for non-'special' URLs",
+ "<a>: Setting <a:/>.pathname = '\u0000\u0001\t\n\r\u001f !\"#$%&'()*+,-./09:;<=>?@AZ[\\]^_`az{|}~€Éé' UTF-8 percent encoding with the default encode set. Tabs and newlines are removed.",
+ "<area>: Setting <a:/>.pathname = '\u0000\u0001\t\n\r\u001f !\"#$%&'()*+,-./09:;<=>?@AZ[\\]^_`az{|}~€Éé' UTF-8 percent encoding with the default encode set. Tabs and newlines are removed.",
+ "<a>: Setting <http://example.net>.pathname = '%2e%2E%c3%89té' Bytes already percent-encoded are left as-is, including %2E outside dotted segments.",
+ "<area>: Setting <http://example.net>.pathname = '%2e%2E%c3%89té' Bytes already percent-encoded are left as-is, including %2E outside dotted segments.",
+ "<a>: Setting <http://example.net>.pathname = '?' ? needs to be encoded",
+ "<area>: Setting <http://example.net>.pathname = '?' ? needs to be encoded",
+ "<a>: Setting <http://example.net>.pathname = '#' # needs to be encoded",
+ "<area>: Setting <http://example.net>.pathname = '#' # needs to be encoded",
+ "<a>: Setting <sc://example.net>.pathname = '?' ? needs to be encoded, non-special scheme",
+ "<area>: Setting <sc://example.net>.pathname = '?' ? needs to be encoded, non-special scheme",
+ "<a>: Setting <sc://example.net>.pathname = '#' # needs to be encoded, non-special scheme",
+ "<area>: Setting <sc://example.net>.pathname = '#' # needs to be encoded, non-special scheme",
+ "<a>: Setting <http://example.net>.pathname = '/?é' ? doesn't mess up encoding",
+ "<area>: Setting <http://example.net>.pathname = '/?é' ? doesn't mess up encoding",
+ "<a>: Setting <http://example.net>.pathname = '/#é' # doesn't mess up encoding",
+ "<area>: Setting <http://example.net>.pathname = '/#é' # doesn't mess up encoding",
+ "<a>: Setting <non-spec:/>.pathname = '/.//p' Serialize /. in path",
+ "<area>: Setting <non-spec:/>.pathname = '/.//p' Serialize /. in path",
+ "<a>: Setting <non-spec:/>.pathname = '/..//p'",
+ "<area>: Setting <non-spec:/>.pathname = '/..//p'",
+ "<a>: Setting <non-spec:/>.pathname = '//p'",
+ "<area>: Setting <non-spec:/>.pathname = '//p'",
+ "<a>: Setting <non-spec:/.//>.pathname = 'p' Drop /. from path",
+ "<area>: Setting <non-spec:/.//>.pathname = 'p' Drop /. from path",
+ "<a>: Setting <data:/nospace>.pathname = 'space ' Non-special URLs with non-opaque paths percent-encode U+0020",
+ "<area>: Setting <data:/nospace>.pathname = 'space ' Non-special URLs with non-opaque paths percent-encode U+0020",
+ "<a>: Setting <sc:/nospace>.pathname = 'space '",
+ "<area>: Setting <sc:/nospace>.pathname = 'space '",
+ "<a>: Setting <http://example.net>.pathname = ' ' Trailing space should be encoded",
+ "<area>: Setting <http://example.net>.pathname = ' ' Trailing space should be encoded",
+ "<a>: Setting <http://example.net>.pathname = '\u0000' Trailing C0 control should be encoded",
+ "<area>: Setting <http://example.net>.pathname = '\u0000' Trailing C0 control should be encoded",
+ "<a>: Setting <https://example.net#nav>.search = 'lang=fr'",
+ "<area>: Setting <https://example.net#nav>.search = 'lang=fr'",
+ "<a>: Setting <https://example.net?lang=en-US#nav>.search = 'lang=fr'",
+ "<area>: Setting <https://example.net?lang=en-US#nav>.search = 'lang=fr'",
+ "<a>: Setting <https://example.net?lang=en-US#nav>.search = '?lang=fr'",
+ "<area>: Setting <https://example.net?lang=en-US#nav>.search = '?lang=fr'",
+ "<a>: Setting <https://example.net?lang=en-US#nav>.search = '??lang=fr'",
+ "<area>: Setting <https://example.net?lang=en-US#nav>.search = '??lang=fr'",
+ "<a>: Setting <https://example.net?lang=en-US#nav>.search = '?'",
+ "<area>: Setting <https://example.net?lang=en-US#nav>.search = '?'",
+ "<a>: Setting <https://example.net?lang=en-US#nav>.search = ''",
+ "<area>: Setting <https://example.net?lang=en-US#nav>.search = ''",
+ "<a>: Setting <https://example.net?lang=en-US>.search = ''",
+ "<area>: Setting <https://example.net?lang=en-US>.search = ''",
+ "<a>: Setting <https://example.net>.search = ''",
+ "<area>: Setting <https://example.net>.search = ''",
+ "<a>: Setting <a:/>.search = '\u0000\u0001\t\n\r\u001f !\"#$%&'()*+,-./09:;<=>?@AZ[\\]^_`az{|}~€Éé' UTF-8 percent encoding with the query encode set. Tabs and newlines are removed.",
+ "<area>: Setting <a:/>.search = '\u0000\u0001\t\n\r\u001f !\"#$%&'()*+,-./09:;<=>?@AZ[\\]^_`az{|}~€Éé' UTF-8 percent encoding with the query encode set. Tabs and newlines are removed.",
+ "<a>: Setting <http://example.net>.search = '%c3%89té' Bytes already percent-encoded are left as-is",
+ "<area>: Setting <http://example.net>.search = '%c3%89té' Bytes already percent-encoded are left as-is",
+ "<a>: Setting <data:space ?query>.search = '' Drop trailing spaces from trailing opaque paths",
+ "<area>: Setting <data:space ?query>.search = '' Drop trailing spaces from trailing opaque paths",
+ "<a>: Setting <sc:space ?query>.search = ''",
+ "<area>: Setting <sc:space ?query>.search = ''",
+ "<a>: Setting <data:space ?query#fragment>.search = '' Do not drop trailing spaces from non-trailing opaque paths",
+ "<area>: Setting <data:space ?query#fragment>.search = '' Do not drop trailing spaces from non-trailing opaque paths",
+ "<a>: Setting <sc:space ?query#fragment>.search = ''",
+ "<area>: Setting <sc:space ?query#fragment>.search = ''",
+ "<a>: Setting <http://example.net>.search = ' ' Trailing space should be encoded",
+ "<area>: Setting <http://example.net>.search = ' ' Trailing space should be encoded",
+ "<a>: Setting <http://example.net>.search = '\u0000' Trailing C0 control should be encoded",
+ "<area>: Setting <http://example.net>.search = '\u0000' Trailing C0 control should be encoded",
+ "<a>: Setting <https://example.net>.hash = 'main'",
+ "<area>: Setting <https://example.net>.hash = 'main'",
+ "<a>: Setting <https://example.net#nav>.hash = 'main'",
+ "<area>: Setting <https://example.net#nav>.hash = 'main'",
+ "<a>: Setting <https://example.net?lang=en-US>.hash = '##nav'",
+ "<area>: Setting <https://example.net?lang=en-US>.hash = '##nav'",
+ "<a>: Setting <https://example.net?lang=en-US#nav>.hash = '#main'",
+ "<area>: Setting <https://example.net?lang=en-US#nav>.hash = '#main'",
+ "<a>: Setting <https://example.net?lang=en-US#nav>.hash = '#'",
+ "<area>: Setting <https://example.net?lang=en-US#nav>.hash = '#'",
+ "<a>: Setting <https://example.net?lang=en-US#nav>.hash = ''",
+ "<area>: Setting <https://example.net?lang=en-US#nav>.hash = ''",
+ "<a>: Setting <http://example.net>.hash = '#foo bar'",
+ "<area>: Setting <http://example.net>.hash = '#foo bar'",
+ "<a>: Setting <http://example.net>.hash = '#foo\"bar'",
+ "<area>: Setting <http://example.net>.hash = '#foo\"bar'",
+ "<a>: Setting <http://example.net>.hash = '#foo<bar'",
+ "<area>: Setting <http://example.net>.hash = '#foo<bar'",
+ "<a>: Setting <http://example.net>.hash = '#foo>bar'",
+ "<area>: Setting <http://example.net>.hash = '#foo>bar'",
+ "<a>: Setting <http://example.net>.hash = '#foo`bar'",
+ "<area>: Setting <http://example.net>.hash = '#foo`bar'",
+ "<a>: Setting <a:/>.hash = '\u0000\u0001\t\n\r\u001f !\"#$%&'()*+,-./09:;<=>?@AZ[\\]^_`az{|}~€Éé' Simple percent-encoding; tabs and newlines are removed",
+ "<area>: Setting <a:/>.hash = '\u0000\u0001\t\n\r\u001f !\"#$%&'()*+,-./09:;<=>?@AZ[\\]^_`az{|}~€Éé' Simple percent-encoding; tabs and newlines are removed",
+ "<a>: Setting <http://example.net>.hash = 'a\u0000b' Percent-encode NULLs in fragment",
+ "<area>: Setting <http://example.net>.hash = 'a\u0000b' Percent-encode NULLs in fragment",
+ "<a>: Setting <non-spec:/>.hash = 'a\u0000b' Percent-encode NULLs in fragment",
+ "<area>: Setting <non-spec:/>.hash = 'a\u0000b' Percent-encode NULLs in fragment",
+ "<a>: Setting <http://example.net>.hash = '%c3%89té' Bytes already percent-encoded are left as-is",
+ "<area>: Setting <http://example.net>.hash = '%c3%89té' Bytes already percent-encoded are left as-is",
+ "<a>: Setting <data:space #fragment>.hash = '' Drop trailing spaces from trailing opaque paths",
+ "<area>: Setting <data:space #fragment>.hash = '' Drop trailing spaces from trailing opaque paths",
+ "<a>: Setting <sc:space #fragment>.hash = ''",
+ "<area>: Setting <sc:space #fragment>.hash = ''",
+ "<a>: Setting <data:space ?query#fragment>.hash = '' Do not drop trailing spaces from non-trailing opaque paths",
+ "<area>: Setting <data:space ?query#fragment>.hash = '' Do not drop trailing spaces from non-trailing opaque paths",
+ "<a>: Setting <sc:space ?query#fragment>.hash = ''",
+ "<area>: Setting <sc:space ?query#fragment>.hash = ''",
+ "<a>: Setting <http://example.net>.hash = ' ' Trailing space should be encoded",
+ "<area>: Setting <http://example.net>.hash = ' ' Trailing space should be encoded",
+ "<a>: Setting <http://example.net>.hash = '\u0000' Trailing C0 control should be encoded",
+ "<area>: Setting <http://example.net>.hash = '\u0000' Trailing C0 control should be encoded"
+ ],
+ "url-setters-a-area.window.html?include=file": [
+ "<a>: Setting <file://localhost/>.protocol = 'http' Can’t switch from file URL with no host",
+ "<area>: Setting <file://localhost/>.protocol = 'http' Can’t switch from file URL with no host",
+ "<a>: Setting <file:///test>.protocol = 'https'",
+ "<area>: Setting <file:///test>.protocol = 'https'",
+ "<a>: Setting <file:>.protocol = 'wss'",
+ "<area>: Setting <file:>.protocol = 'wss'",
+ "<a>: Setting <file://hi/path>.protocol = 's'",
+ "<area>: Setting <file://hi/path>.protocol = 's'",
+ "<a>: Setting <file:///home/you/index.html>.username = 'me' No host means no username",
+ "<area>: Setting <file:///home/you/index.html>.username = 'me' No host means no username",
+ "<a>: Setting <file://test/>.username = 'test'",
+ "<area>: Setting <file://test/>.username = 'test'",
+ "<a>: Setting <file:///home/me/index.html>.password = 'secret' No host means no password",
+ "<area>: Setting <file:///home/me/index.html>.password = 'secret' No host means no password",
+ "<a>: Setting <file://test/>.password = 'test'",
+ "<area>: Setting <file://test/>.password = 'test'",
+ "<a>: Setting <file://y/>.host = 'x:123'",
+ "<area>: Setting <file://y/>.host = 'x:123'",
+ "<a>: Setting <file://y/>.host = 'loc%41lhost'",
+ "<area>: Setting <file://y/>.host = 'loc%41lhost'",
+ "<a>: Setting <file://hi/x>.host = ''",
+ "<area>: Setting <file://hi/x>.host = ''",
+ "<a>: Setting <file://y/>.hostname = 'x:123'",
+ "<area>: Setting <file://y/>.hostname = 'x:123'",
+ "<a>: Setting <file://y/>.hostname = 'loc%41lhost'",
+ "<area>: Setting <file://y/>.hostname = 'loc%41lhost'",
+ "<a>: Setting <file://hi/x>.hostname = ''",
+ "<area>: Setting <file://hi/x>.hostname = ''",
+ "<a>: Setting <file://test/>.port = '12'",
+ "<area>: Setting <file://test/>.port = '12'",
+ "<a>: Setting <file://localhost/>.port = '12'",
+ "<area>: Setting <file://localhost/>.port = '12'",
+ "<a>: Setting <file:///some/path>.pathname = '' Special URLs cannot have their paths erased",
+ "<area>: Setting <file:///some/path>.pathname = '' Special URLs cannot have their paths erased",
+ "<a>: Setting <file://monkey/>.pathname = '\\\\' File URLs and (back)slashes",
+ "<area>: Setting <file://monkey/>.pathname = '\\\\' File URLs and (back)slashes",
+ "<a>: Setting <file:///unicorn>.pathname = '//\\/' File URLs and (back)slashes",
+ "<area>: Setting <file:///unicorn>.pathname = '//\\/' File URLs and (back)slashes",
+ "<a>: Setting <file:///unicorn>.pathname = '//monkey/..//' File URLs and (back)slashes",
+ "<area>: Setting <file:///unicorn>.pathname = '//monkey/..//' File URLs and (back)slashes",
+ "<a>: Setting <file:///var/log/system.log>.href = 'http://0300.168.0xF0'",
+ "<area>: Setting <file:///var/log/system.log>.href = 'http://0300.168.0xF0'"
+ ],
+ "url-setters-a-area.window.html?include=javascript": [
+ "<a>: Setting <javascript:alert(1)>.protocol = 'defuse'",
+ "<area>: Setting <javascript:alert(1)>.protocol = 'defuse'",
+ "<a>: Setting <javascript:alert(1)>.username = 'wario'",
+ "<area>: Setting <javascript:alert(1)>.username = 'wario'",
+ "<a>: Setting <javascript://x/>.username = 'wario'",
+ "<area>: Setting <javascript://x/>.username = 'wario'",
+ "<a>: Setting <javascript://x/>.password = 'bowser'",
+ "<area>: Setting <javascript://x/>.password = 'bowser'",
+ "<a>: Setting <javascript://x/>.port = '12'",
+ "<area>: Setting <javascript://x/>.port = '12'",
+ "<a>: Setting <javascript:alert(1)>.hash = 'castle'",
+ "<area>: Setting <javascript:alert(1)>.hash = 'castle'"
+ ],
+ "url-setters-a-area.window.html?include=mailto": [
+ "<a>: Setting <mailto:me@example.net>.protocol = 'http' Cannot-be-a-base URL doesn’t have a host, but URL in a special scheme must.",
+ "<area>: Setting <mailto:me@example.net>.protocol = 'http' Cannot-be-a-base URL doesn’t have a host, but URL in a special scheme must.",
+ "<a>: Setting <mailto:you@example.net>.username = 'me' Cannot-be-a-base means no username",
+ "<area>: Setting <mailto:you@example.net>.username = 'me' Cannot-be-a-base means no username",
+ "<a>: Setting <mailto:me@example.net>.password = 'secret' Cannot-be-a-base means no password",
+ "<area>: Setting <mailto:me@example.net>.password = 'secret' Cannot-be-a-base means no password",
+ "<a>: Setting <mailto:me@example.net>.host = 'example.com' Cannot-be-a-base means no host",
+ "<area>: Setting <mailto:me@example.net>.host = 'example.com' Cannot-be-a-base means no host",
+ "<a>: Setting <mailto:me@example.net>.hostname = 'example.com' Cannot-be-a-base means no host",
+ "<area>: Setting <mailto:me@example.net>.hostname = 'example.com' Cannot-be-a-base means no host",
+ "<a>: Setting <mailto:me@example.net>.pathname = '/foo' Opaque paths cannot be set",
+ "<area>: Setting <mailto:me@example.net>.pathname = '/foo' Opaque paths cannot be set"
+ ],
+ "url-setters.any.html?exclude=(file|javascript|mailto)": [
+ "URL: Setting <http://example.net/path>.hostname = 'example.com:8080' : delimiter invalidates entire value",
+ "URL: Setting <http://example.net:8080/path>.hostname = 'example.com:' : delimiter invalidates entire value",
+ "URL: Setting <non-spec:/.//p>.hostname = 'h' Drop /. from path",
+ "URL: Setting <non-spec:/.//p>.hostname = ''",
+ "URL: Setting <http://example.net:8080/path>.port = 'randomstring' Setting port to a string that doesn't parse as a number",
+ "URL: Setting <foo://somehost/some/path>.pathname = '' Non-special URLs can have their paths erased",
+ "URL: Setting <foo:///some/path>.pathname = '' Non-special URLs with an empty host can have their paths erased",
+ "URL: Setting <non-spec:/>.pathname = '/.//p' Serialize /. in path",
+ "URL: Setting <non-spec:/>.pathname = '/..//p'",
+ "URL: Setting <non-spec:/>.pathname = '//p'",
+ "URL: Setting <non-spec:/.//>.pathname = 'p' Drop /. from path",
+ "URL: Setting <data:space ?query#fragment>.search = '' Do not drop trailing spaces from non-trailing opaque paths",
+ "URL: Setting <sc:space ?query#fragment>.search = ''"
+ ],
+ "url-setters.any.html?include=file": [
+ "URL: Setting <file://monkey/>.pathname = '\\\\' File URLs and (back)slashes",
+ "URL: Setting <file:///unicorn>.pathname = '//\\/' File URLs and (back)slashes",
+ "URL: Setting <file:///unicorn>.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 <http://example.net/path>.hostname = 'example.com:8080' : delimiter invalidates entire value",
+ "URL: Setting <http://example.net:8080/path>.hostname = 'example.com:' : delimiter invalidates entire value",
+ "URL: Setting <non-spec:/.//p>.hostname = 'h' Drop /. from path",
+ "URL: Setting <non-spec:/.//p>.hostname = ''",
+ "URL: Setting <http://example.net:8080/path>.port = 'randomstring' Setting port to a string that doesn't parse as a number",
+ "URL: Setting <foo://somehost/some/path>.pathname = '' Non-special URLs can have their paths erased",
+ "URL: Setting <foo:///some/path>.pathname = '' Non-special URLs with an empty host can have their paths erased",
+ "URL: Setting <non-spec:/>.pathname = '/.//p' Serialize /. in path",
+ "URL: Setting <non-spec:/>.pathname = '/..//p'",
+ "URL: Setting <non-spec:/>.pathname = '//p'",
+ "URL: Setting <non-spec:/.//>.pathname = 'p' Drop /. from path",
+ "URL: Setting <data:space ?query#fragment>.search = '' Do not drop trailing spaces from non-trailing opaque paths",
+ "URL: Setting <sc:space ?query#fragment>.search = ''"
+ ],
+ "url-setters.any.worker.html?include=file": [
+ "URL: Setting <file://monkey/>.pathname = '\\\\' File URLs and (back)slashes",
+ "URL: Setting <file:///unicorn>.pathname = '//\\/' File URLs and (back)slashes",
+ "URL: Setting <file:///unicorn>.pathname = '//monkey/..//' File URLs and (back)slashes"
+ ],
+ "url-setters.any.worker.html?include=javascript": true,
+ "url-setters.any.worker.html?include=mailto": true,
+ "url-statics-canparse.any.html": true,
+ "url-statics-canparse.any.worker.html": true,
+ "urlsearchparams-size.any.worker.html": true
+ },
+ "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\"",
+ "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 \"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,
+ "request-bad-port.any.html": false,
+ "request-bad-port.any.worker.html": false,
+ "request-cache-default-conditional.any.html": true,
+ "request-cache-default-conditional.any.worker.html": true,
+ "request-cache-default.any.html": [
+ "RequestCache \"default\" mode checks the cache for previously cached content and avoids going to the network if a fresh response exists with Etag and fresh response",
+ "RequestCache \"default\" mode checks the cache for previously cached content and avoids going to the network if a fresh response exists with Last-Modified and fresh response"
+ ],
+ "request-cache-default.any.worker.html": [
+ "RequestCache \"default\" mode checks the cache for previously cached content and avoids going to the network if a fresh response exists with Etag and fresh response",
+ "RequestCache \"default\" mode checks the cache for previously cached content and avoids going to the network if a fresh response exists with Last-Modified and fresh response"
+ ],
+ "request-cache-force-cache.any.html": [
+ "RequestCache \"force-cache\" mode checks the cache for previously cached content and avoid revalidation for stale responses with Etag and stale response",
+ "RequestCache \"force-cache\" mode checks the cache for previously cached content and avoid revalidation for stale responses with Last-Modified and stale response",
+ "RequestCache \"force-cache\" mode checks the cache for previously cached content and avoid revalidation for fresh responses with Etag and fresh response",
+ "RequestCache \"force-cache\" mode checks the cache for previously cached content and avoid revalidation for fresh responses with Last-Modified and fresh response",
+ "RequestCache \"force-cache\" stores the response in the cache if it goes to the network with Etag and fresh response",
+ "RequestCache \"force-cache\" stores the response in the cache if it goes to the network with Last-Modified and fresh response"
+ ],
+ "request-cache-force-cache.any.worker.html": [
+ "RequestCache \"force-cache\" mode checks the cache for previously cached content and avoid revalidation for stale responses with Etag and stale response",
+ "RequestCache \"force-cache\" mode checks the cache for previously cached content and avoid revalidation for stale responses with Last-Modified and stale response",
+ "RequestCache \"force-cache\" mode checks the cache for previously cached content and avoid revalidation for fresh responses with Etag and fresh response",
+ "RequestCache \"force-cache\" mode checks the cache for previously cached content and avoid revalidation for fresh responses with Last-Modified and fresh response",
+ "RequestCache \"force-cache\" stores the response in the cache if it goes to the network with Etag and fresh response",
+ "RequestCache \"force-cache\" stores the response in the cache if it goes to the network with Last-Modified and fresh response"
+ ],
+ "request-cache-no-cache.any.html": true,
+ "request-cache-no-cache.any.worker.html": true,
+ "request-cache-no-store.any.html": true,
+ "request-cache-no-store.any.worker.html": true,
+ "request-cache-only-if-cached.any.html": false,
+ "request-cache-only-if-cached.any.worker.html": false,
+ "request-cache-reload.any.html": [
+ "RequestCache \"reload\" mode does store the response in the cache with Etag and fresh response",
+ "RequestCache \"reload\" mode does store the response in the cache with Last-Modified and fresh response",
+ "RequestCache \"reload\" mode does store the response in the cache even if a previous response is already stored with Etag and fresh response",
+ "RequestCache \"reload\" mode does store the response in the cache even if a previous response is already stored with Last-Modified and fresh response"
+ ],
+ "request-cache-reload.any.worker.html": [
+ "RequestCache \"reload\" mode does store the response in the cache with Etag and fresh response",
+ "RequestCache \"reload\" mode does store the response in the cache with Last-Modified and fresh response",
+ "RequestCache \"reload\" mode does store the response in the cache even if a previous response is already stored with Etag and fresh response",
+ "RequestCache \"reload\" mode does store the response in the cache even if a previous response is already stored with Last-Modified and fresh response"
+ ],
+ "request-init-priority.any.html": [
+ "new Request() throws a TypeError if any of RequestInit's members' values are invalid",
+ "fetch() with an invalid priority returns a rejected promise with a TypeError"
+ ],
+ "request-init-priority.any.worker.html": [
+ "new Request() throws a TypeError if any of RequestInit's members' values are invalid",
+ "fetch() with an invalid priority returns a rejected promise with a TypeError"
+ ],
+ "request-keepalive.any.html": false,
+ "request-keepalive.any.worker.html": false
+ },
+ "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",
+ "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.any.html": [
+ "XMLHttpRequest with value x%00x needs to throw",
+ "XMLHttpRequest with value x%0Ax needs to throw",
+ "XMLHttpRequest with value x%0Dx needs to throw",
+ "XMLHttpRequest with all valid values",
+ "fetch() with all valid values"
+ ],
+ "header-values.any.worker.html": [
+ "fetch() with all valid values"
+ ],
+ "headers-basic.any.html": true,
+ "headers-casing.any.html": true,
+ "headers-combine.any.html": true,
+ "headers-errors.any.html": true,
+ "headers-normalize.any.html": true,
+ "headers-record.any.html": true,
+ "headers-structure.any.html": true,
+ "headers-basic.any.worker.html": true,
+ "headers-casing.any.worker.html": true,
+ "headers-combine.any.worker.html": true,
+ "headers-errors.any.worker.html": true,
+ "headers-no-cors.any.html": [
+ "\"no-cors\" Headers object cannot have accept set to sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss, , sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss",
+ "\"no-cors\" Headers object cannot have accept-language set to sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss, , sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss",
+ "\"no-cors\" Headers object cannot have content-language set to sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss, , sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss",
+ "\"no-cors\" Headers object cannot have accept set to , sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss",
+ "\"no-cors\" Headers object cannot have accept-language set to , sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss",
+ "\"no-cors\" Headers object cannot have content-language set to , sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss",
+ "\"no-cors\" Headers object cannot have content-type set to text/plain;ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss, text/plain",
+ "\"no-cors\" Headers object cannot have accept/\" as header",
+ "\"no-cors\" Headers object cannot have accept/012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678 as header",
+ "\"no-cors\" Headers object cannot have accept-language/\u0001 as header",
+ "\"no-cors\" Headers object cannot have accept-language/@ as header",
+ "\"no-cors\" Headers object cannot have authorization/basics as header",
+ "\"no-cors\" Headers object cannot have content-language/\u0001 as header",
+ "\"no-cors\" Headers object cannot have content-language/@ as header",
+ "\"no-cors\" Headers object cannot have content-type/text/html as header",
+ "\"no-cors\" Headers object cannot have content-type/text/plain; long=0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901 as header",
+ "\"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 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",
+ "\"no-cors\" Headers object cannot have unknown/doesitmatter as header"
+ ],
+ "headers-no-cors.any.worker.html": [
+ "\"no-cors\" Headers object cannot have accept set to sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss, , sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss",
+ "\"no-cors\" Headers object cannot have accept-language set to sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss, , sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss",
+ "\"no-cors\" Headers object cannot have content-language set to sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss, , sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss",
+ "\"no-cors\" Headers object cannot have accept set to , sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss",
+ "\"no-cors\" Headers object cannot have accept-language set to , sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss",
+ "\"no-cors\" Headers object cannot have content-language set to , sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss",
+ "\"no-cors\" Headers object cannot have content-type set to text/plain;ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss, text/plain",
+ "\"no-cors\" Headers object cannot have accept/\" as header",
+ "\"no-cors\" Headers object cannot have accept/012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678 as header",
+ "\"no-cors\" Headers object cannot have accept-language/\u0001 as header",
+ "\"no-cors\" Headers object cannot have accept-language/@ as header",
+ "\"no-cors\" Headers object cannot have authorization/basics as header",
+ "\"no-cors\" Headers object cannot have content-language/\u0001 as header",
+ "\"no-cors\" Headers object cannot have content-language/@ as header",
+ "\"no-cors\" Headers object cannot have content-type/text/html as header",
+ "\"no-cors\" Headers object cannot have content-type/text/plain; long=0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901 as header",
+ "\"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 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",
+ "\"no-cors\" Headers object cannot have unknown/doesitmatter as header"
+ ],
+ "headers-normalize.any.worker.html": true,
+ "headers-record.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,
+ "request-head.any.worker.html": true,
+ "request-headers-case.any.html": false,
+ "request-headers-case.any.worker.html": false,
+ "request-headers-nonascii.any.html": true,
+ "request-headers-nonascii.any.worker.html": true,
+ "request-headers.any.html": [
+ "Fetch with PUT without body",
+ "Fetch with PUT with body",
+ "Fetch with POST without body",
+ "Fetch with POST with text body",
+ "Fetch with POST with FormData body",
+ "Fetch with POST with URLSearchParams body",
+ "Fetch with POST with Blob body",
+ "Fetch with POST with ArrayBuffer body",
+ "Fetch with POST with Uint8Array body",
+ "Fetch with POST with Int8Array body",
+ "Fetch with POST with Float32Array body",
+ "Fetch with POST with Float64Array body",
+ "Fetch with POST with DataView body",
+ "Fetch with POST with Blob body with mime type",
+ "Fetch with Chicken",
+ "Fetch with Chicken with body",
+ "Fetch with POST and mode \"same-origin\" needs an Origin header",
+ "Fetch with POST and mode \"no-cors\" needs an Origin header",
+ "Fetch with PUT and mode \"same-origin\" needs an Origin header",
+ "Fetch with TacO and mode \"same-origin\" needs an Origin header",
+ "Fetch with TacO and mode \"cors\" needs an Origin header"
+ ],
+ "request-headers.any.worker.html": [
+ "Fetch with PUT without body",
+ "Fetch with PUT with body",
+ "Fetch with POST without body",
+ "Fetch with POST with text body",
+ "Fetch with POST with FormData body",
+ "Fetch with POST with URLSearchParams body",
+ "Fetch with POST with Blob body",
+ "Fetch with POST with ArrayBuffer body",
+ "Fetch with POST with Uint8Array body",
+ "Fetch with POST with Int8Array body",
+ "Fetch with POST with Float32Array body",
+ "Fetch with POST with Float64Array body",
+ "Fetch with POST with DataView body",
+ "Fetch with POST with Blob body with mime type",
+ "Fetch with Chicken",
+ "Fetch with Chicken with body",
+ "Fetch with POST and mode \"same-origin\" needs an Origin header",
+ "Fetch with POST and mode \"no-cors\" needs an Origin header",
+ "Fetch with PUT and mode \"same-origin\" needs an Origin header",
+ "Fetch with TacO and mode \"same-origin\" needs an Origin header",
+ "Fetch with TacO and mode \"cors\" needs an Origin header"
+ ],
+ "text-utf8.any.html": true,
+ "text-utf8.any.worker.html": true,
+ "accept-header.any.html": true,
+ "accept-header.any.worker.html": true,
+ "conditional-get.any.html": false,
+ "conditional-get.any.worker.html": false,
+ "header-value-combining.any.html": false,
+ "header-value-combining.any.worker.html": false,
+ "header-value-null-byte.any.html": true,
+ "header-value-null-byte.any.worker.html": true,
+ "historical.any.html": true,
+ "historical.any.worker.html": true,
+ "http-response-code.any.html": true,
+ "http-response-code.any.worker.html": true,
+ "response-url.sub.any.html": true,
+ "response-url.sub.any.worker.html": true,
+ "scheme-about.any.html": true,
+ "scheme-about.any.worker.html": true,
+ "scheme-blob.sub.any.html": [
+ "Fetching URL.createObjectURL(invalid_type_blob) is OK"
+ ],
+ "scheme-blob.sub.any.worker.html": [
+ "Fetching URL.createObjectURL(invalid_type_blob) is OK"
+ ],
+ "scheme-data.any.html": true,
+ "scheme-data.any.worker.html": true,
+ "scheme-others.sub.any.html": true,
+ "scheme-others.sub.any.worker.html": true,
+ "stream-response.any.html": true,
+ "stream-response.any.worker.html": true,
+ "stream-safe-creation.any.html": [
+ "throwing Object.prototype.start accessor should not affect stream creation by 'fetch'",
+ "Object.prototype.start accessor returning invalid value should not affect stream creation by 'fetch'"
+ ],
+ "stream-safe-creation.any.worker.html": [
+ "throwing Object.prototype.start accessor should not affect stream creation by 'fetch'",
+ "Object.prototype.start accessor returning invalid value should not affect stream creation by 'fetch'"
+ ],
+ "integrity.sub.any.html": [
+ "Invalid integrity",
+ "Multiple integrities: invalid stronger than valid",
+ "Multiple integrities: both are invalid",
+ "CORS invalid integrity",
+ "Empty string integrity for opaque response",
+ "SHA-* integrity for opaque response"
+ ],
+ "integrity.sub.any.worker.html": [
+ "Invalid integrity",
+ "Multiple integrities: invalid stronger than valid",
+ "Multiple integrities: both are invalid",
+ "CORS invalid integrity",
+ "Empty string integrity for opaque response",
+ "SHA-* integrity for opaque response"
+ ],
+ "error-after-response.any.worker.html": false,
+ "keepalive.any.html": false,
+ "mediasource.window.html": false,
+ "mode-same-origin.any.html": [
+ "Fetch https://web-platform.test:8443/fetch/api/resources/top.txt with same-origin mode",
+ "Fetch http://www1.web-platform.test:8000/fetch/api/resources/top.txt with same-origin mode",
+ "Fetch /fetch/api/basic/../resources/redirect.py?location=https://web-platform.test:8443/fetch/api/resources/top.txt with same-origin mode",
+ "Fetch /fetch/api/basic/../resources/redirect.py?location=http://www1.web-platform.test:8000/fetch/api/resources/top.txt with same-origin mode"
+ ],
+ "mode-same-origin.any.worker.html": [
+ "Fetch https://web-platform.test:8443/fetch/api/resources/top.txt with same-origin mode",
+ "Fetch http://www1.web-platform.test:8000/fetch/api/resources/top.txt with same-origin mode",
+ "Fetch /fetch/api/basic/../resources/redirect.py?location=https://web-platform.test:8443/fetch/api/resources/top.txt with same-origin mode",
+ "Fetch /fetch/api/basic/../resources/redirect.py?location=http://www1.web-platform.test:8000/fetch/api/resources/top.txt with same-origin mode"
+ ],
+ "referrer.any.html": false,
+ "referrer.any.worker.html": false,
+ "request-forbidden-headers.any.html": [
+ "Accept-Charset is a forbidden request header",
+ "Accept-Encoding is a forbidden request header",
+ "Access-Control-Request-Headers is a forbidden request header",
+ "Access-Control-Request-Method is a forbidden request header",
+ "Connection is a forbidden request header",
+ "Cookie is a forbidden request header",
+ "Cookie2 is a forbidden request header",
+ "Date is a forbidden request header",
+ "DNT is a forbidden request header",
+ "Expect is a forbidden request header",
+ "Keep-Alive is a forbidden request header",
+ "Origin is a forbidden request header",
+ "Referer is a forbidden request header",
+ "TE is a forbidden request header",
+ "Trailer is a forbidden request header",
+ "Upgrade is a forbidden request header",
+ "Via is a forbidden request header",
+ "Proxy- is a forbidden request header",
+ "Proxy-Test is a forbidden request header",
+ "Sec- is a forbidden request header",
+ "Sec-Test is a forbidden request header",
+ "header x-http-method-override is forbidden to use value TRACE",
+ "header x-http-method is forbidden to use value TRACE",
+ "header x-method-override is forbidden to use value TRACE",
+ "header X-HTTP-METHOD-OVERRIDE is forbidden to use value TRACE",
+ "header X-HTTP-METHOD is forbidden to use value TRACE",
+ "header X-METHOD-OVERRIDE is forbidden to use value TRACE",
+ "header x-http-method-override is forbidden to use value TRACK",
+ "header x-http-method is forbidden to use value TRACK",
+ "header x-method-override is forbidden to use value TRACK",
+ "header X-HTTP-METHOD-OVERRIDE is forbidden to use value TRACK",
+ "header X-HTTP-METHOD is forbidden to use value TRACK",
+ "header X-METHOD-OVERRIDE is forbidden to use value TRACK",
+ "header x-http-method-override is forbidden to use value CONNECT",
+ "header x-http-method is forbidden to use value CONNECT",
+ "header x-method-override is forbidden to use value CONNECT",
+ "header X-HTTP-METHOD-OVERRIDE is forbidden to use value CONNECT",
+ "header X-HTTP-METHOD is forbidden to use value CONNECT",
+ "header X-METHOD-OVERRIDE is forbidden to use value CONNECT",
+ "header x-http-method-override is forbidden to use value trace",
+ "header x-http-method is forbidden to use value trace",
+ "header x-method-override is forbidden to use value trace",
+ "header X-HTTP-METHOD-OVERRIDE is forbidden to use value trace",
+ "header X-HTTP-METHOD is forbidden to use value trace",
+ "header X-METHOD-OVERRIDE is forbidden to use value trace",
+ "header x-http-method-override is forbidden to use value track",
+ "header x-http-method is forbidden to use value track",
+ "header x-method-override is forbidden to use value track",
+ "header X-HTTP-METHOD-OVERRIDE is forbidden to use value track",
+ "header X-HTTP-METHOD is forbidden to use value track",
+ "header X-METHOD-OVERRIDE is forbidden to use value track",
+ "header x-http-method-override is forbidden to use value connect",
+ "header x-http-method is forbidden to use value connect",
+ "header x-method-override is forbidden to use value connect",
+ "header X-HTTP-METHOD-OVERRIDE is forbidden to use value connect",
+ "header X-HTTP-METHOD is forbidden to use value connect",
+ "header X-METHOD-OVERRIDE is forbidden to use value connect",
+ "header x-http-method-override is forbidden to use value trace,",
+ "header x-http-method is forbidden to use value trace,",
+ "header x-method-override is forbidden to use value trace,",
+ "header X-HTTP-METHOD-OVERRIDE is forbidden to use value trace,",
+ "header X-HTTP-METHOD is forbidden to use value trace,",
+ "header X-METHOD-OVERRIDE is forbidden to use value trace,"
+ ],
+ "request-forbidden-headers.any.worker.html": [
+ "Accept-Charset is a forbidden request header",
+ "Accept-Encoding is a forbidden request header",
+ "Access-Control-Request-Headers is a forbidden request header",
+ "Access-Control-Request-Method is a forbidden request header",
+ "Connection is a forbidden request header",
+ "Cookie is a forbidden request header",
+ "Cookie2 is a forbidden request header",
+ "Date is a forbidden request header",
+ "DNT is a forbidden request header",
+ "Expect is a forbidden request header",
+ "Keep-Alive is a forbidden request header",
+ "Origin is a forbidden request header",
+ "Referer is a forbidden request header",
+ "TE is a forbidden request header",
+ "Trailer is a forbidden request header",
+ "Upgrade is a forbidden request header",
+ "Via is a forbidden request header",
+ "Proxy- is a forbidden request header",
+ "Proxy-Test is a forbidden request header",
+ "Sec- is a forbidden request header",
+ "Sec-Test is a forbidden request header",
+ "header x-http-method-override is forbidden to use value TRACE",
+ "header x-http-method is forbidden to use value TRACE",
+ "header x-method-override is forbidden to use value TRACE",
+ "header X-HTTP-METHOD-OVERRIDE is forbidden to use value TRACE",
+ "header X-HTTP-METHOD is forbidden to use value TRACE",
+ "header X-METHOD-OVERRIDE is forbidden to use value TRACE",
+ "header x-http-method-override is forbidden to use value TRACK",
+ "header x-http-method is forbidden to use value TRACK",
+ "header x-method-override is forbidden to use value TRACK",
+ "header X-HTTP-METHOD-OVERRIDE is forbidden to use value TRACK",
+ "header X-HTTP-METHOD is forbidden to use value TRACK",
+ "header X-METHOD-OVERRIDE is forbidden to use value TRACK",
+ "header x-http-method-override is forbidden to use value CONNECT",
+ "header x-http-method is forbidden to use value CONNECT",
+ "header x-method-override is forbidden to use value CONNECT",
+ "header X-HTTP-METHOD-OVERRIDE is forbidden to use value CONNECT",
+ "header X-HTTP-METHOD is forbidden to use value CONNECT",
+ "header X-METHOD-OVERRIDE is forbidden to use value CONNECT",
+ "header x-http-method-override is forbidden to use value trace",
+ "header x-http-method is forbidden to use value trace",
+ "header x-method-override is forbidden to use value trace",
+ "header X-HTTP-METHOD-OVERRIDE is forbidden to use value trace",
+ "header X-HTTP-METHOD is forbidden to use value trace",
+ "header X-METHOD-OVERRIDE is forbidden to use value trace",
+ "header x-http-method-override is forbidden to use value track",
+ "header x-http-method is forbidden to use value track",
+ "header x-method-override is forbidden to use value track",
+ "header X-HTTP-METHOD-OVERRIDE is forbidden to use value track",
+ "header X-HTTP-METHOD is forbidden to use value track",
+ "header X-METHOD-OVERRIDE is forbidden to use value track",
+ "header x-http-method-override is forbidden to use value connect",
+ "header x-http-method is forbidden to use value connect",
+ "header x-method-override is forbidden to use value connect",
+ "header X-HTTP-METHOD-OVERRIDE is forbidden to use value connect",
+ "header X-HTTP-METHOD is forbidden to use value connect",
+ "header X-METHOD-OVERRIDE is forbidden to use value connect",
+ "header x-http-method-override is forbidden to use value trace,",
+ "header x-http-method is forbidden to use value trace,",
+ "header x-method-override is forbidden to use value trace,",
+ "header X-HTTP-METHOD-OVERRIDE is forbidden to use value trace,",
+ "header X-HTTP-METHOD is forbidden to use value trace,",
+ "header X-METHOD-OVERRIDE is forbidden to use value trace,"
+ ],
+ "request-referrer.any.html": false,
+ "request-referrer.any.worker.html": false,
+ "error-after-response.any.html": false,
+ "mode-no-cors.sub.any.html": {
+ "ignore": true
+ },
+ "mode-no-cors.sub.any.worker.html": {
+ "ignore": true
+ },
+ "request-private-network-headers.tentative.any.html": false,
+ "request-private-network-headers.tentative.any.worker.html": false,
+ "response-null-body.any.html": {
+ "ignore": true
+ },
+ "response-null-body.any.worker.html": {
+ "ignore": true
+ }
+ },
+ "response": {
+ "json.any.html": true,
+ "json.any.worker.html": true,
+ "response-init-001.any.html": true,
+ "response-init-001.any.worker.html": true,
+ "response-init-002.any.html": true,
+ "response-init-002.any.worker.html": true,
+ "response-static-error.any.html": true,
+ "response-static-error.any.worker.html": true,
+ "response-static-redirect.any.html": true,
+ "response-static-redirect.any.worker.html": true,
+ "response-stream-bad-chunk.any.html": true,
+ "response-stream-bad-chunk.any.worker.html": true,
+ "response-stream-disturbed-1.any.html": true,
+ "response-stream-disturbed-1.any.worker.html": true,
+ "response-stream-disturbed-2.any.html": true,
+ "response-stream-disturbed-2.any.worker.html": true,
+ "response-stream-disturbed-3.any.html": true,
+ "response-stream-disturbed-3.any.worker.html": true,
+ "response-stream-disturbed-4.any.html": true,
+ "response-stream-disturbed-4.any.worker.html": true,
+ "response-stream-disturbed-5.any.html": true,
+ "response-stream-disturbed-5.any.worker.html": true,
+ "response-stream-disturbed-6.any.html": true,
+ "response-stream-disturbed-6.any.worker.html": true,
+ "response-stream-disturbed-by-pipe.any.html": true,
+ "response-stream-disturbed-by-pipe.any.worker.html": true,
+ "response-stream-with-broken-then.any.html": [
+ "Attempt to inject {done: false, value: bye} via Object.prototype.then.",
+ "Attempt to inject value: undefined via Object.prototype.then.",
+ "Attempt to inject undefined via Object.prototype.then.",
+ "Attempt to inject 8.2 via Object.prototype.then.",
+ "intercepting arraybuffer to text conversion via Object.prototype.then should not be possible"
+ ],
+ "response-stream-with-broken-then.any.worker.html": [
+ "Attempt to inject {done: false, value: bye} via Object.prototype.then.",
+ "Attempt to inject value: undefined via Object.prototype.then.",
+ "Attempt to inject undefined via Object.prototype.then.",
+ "Attempt to inject 8.2 via Object.prototype.then.",
+ "intercepting arraybuffer to text conversion via Object.prototype.then should not be possible"
+ ],
+ "response-error-from-stream.any.html": true,
+ "response-error-from-stream.any.worker.html": true,
+ "response-error.any.html": true,
+ "response-error.any.worker.html": true,
+ "response-from-stream.any.html": true,
+ "response-from-stream.any.worker.html": true,
+ "response-cancel-stream.any.html": true,
+ "response-cancel-stream.any.worker.html": true,
+ "response-clone.any.html": true,
+ "response-clone.any.worker.html": true,
+ "response-consume-empty.any.html": [
+ "Consume empty FormData response body as text"
+ ],
+ "response-consume-empty.any.worker.html": [
+ "Consume empty FormData response body as text"
+ ],
+ "response-consume-stream.any.html": [
+ "Read text response's body as readableStream with mode=byob",
+ "Read URLSearchParams response's body as readableStream with mode=byob",
+ "Read array buffer response's body as readableStream with mode=byob",
+ "Reading with offset from Response stream"
+ ],
+ "response-consume-stream.any.worker.html": [
+ "Read text response's body as readableStream with mode=byob",
+ "Read URLSearchParams response's body as readableStream with mode=byob",
+ "Read array buffer response's body as readableStream with mode=byob",
+ "Reading with offset from Response stream"
+ ],
+ "response-init-contenttype.any.html": true,
+ "response-init-contenttype.any.worker.html": true,
+ "response-static-json.any.html": true,
+ "response-static-json.any.worker.html": true,
+ "response-clone-iframe.window.html": false
+ },
+ "body": {
+ "formdata.any.html": true,
+ "formdata.any.worker.html": true,
+ "mime-type.any.html": [
+ "Response: Extract a MIME type with clone"
+ ],
+ "mime-type.any.worker.html": [
+ "Response: Extract a MIME type with clone"
+ ]
+ },
+ "redirect": {
+ "redirect-count.any.html": true,
+ "redirect-count.any.worker.html": true,
+ "redirect-empty-location.any.html": [
+ "redirect response with empty Location, manual mode"
+ ],
+ "redirect-empty-location.any.worker.html": [
+ "redirect response with empty Location, manual mode"
+ ],
+ "redirect-location-escape.tentative.any.html": [
+ "Redirect to unescaped UTF-8",
+ "Redirect to escaped and unescaped UTF-8",
+ "Escaping produces double-percent",
+ "Redirect to invalid UTF-8"
+ ],
+ "redirect-location-escape.tentative.any.worker.html": [
+ "Redirect to unescaped UTF-8",
+ "Redirect to escaped and unescaped UTF-8",
+ "Escaping produces double-percent",
+ "Redirect to invalid UTF-8"
+ ],
+ "redirect-location.any.html": [
+ "Redirect 301 in \"manual\" mode without location",
+ "Redirect 301 in \"manual\" mode with valid location",
+ "Redirect 301 in \"manual\" mode with invalid location",
+ "Redirect 301 in \"manual\" mode with data location",
+ "Redirect 302 in \"manual\" mode without location",
+ "Redirect 302 in \"manual\" mode with valid location",
+ "Redirect 302 in \"manual\" mode with invalid location",
+ "Redirect 302 in \"manual\" mode with data location",
+ "Redirect 303 in \"manual\" mode without location",
+ "Redirect 303 in \"manual\" mode with valid location",
+ "Redirect 303 in \"manual\" mode with invalid location",
+ "Redirect 303 in \"manual\" mode with data location",
+ "Redirect 307 in \"manual\" mode without location",
+ "Redirect 307 in \"manual\" mode with valid location",
+ "Redirect 307 in \"manual\" mode with invalid location",
+ "Redirect 307 in \"manual\" mode with data location",
+ "Redirect 308 in \"manual\" mode without location",
+ "Redirect 308 in \"manual\" mode with valid location",
+ "Redirect 308 in \"manual\" mode with invalid location",
+ "Redirect 308 in \"manual\" mode with data location"
+ ],
+ "redirect-location.any.worker.html": [
+ "Redirect 301 in \"manual\" mode without location",
+ "Redirect 301 in \"manual\" mode with valid location",
+ "Redirect 301 in \"manual\" mode with invalid location",
+ "Redirect 301 in \"manual\" mode with data location",
+ "Redirect 302 in \"manual\" mode without location",
+ "Redirect 302 in \"manual\" mode with valid location",
+ "Redirect 302 in \"manual\" mode with invalid location",
+ "Redirect 302 in \"manual\" mode with data location",
+ "Redirect 303 in \"manual\" mode without location",
+ "Redirect 303 in \"manual\" mode with valid location",
+ "Redirect 303 in \"manual\" mode with invalid location",
+ "Redirect 303 in \"manual\" mode with data location",
+ "Redirect 307 in \"manual\" mode without location",
+ "Redirect 307 in \"manual\" mode with valid location",
+ "Redirect 307 in \"manual\" mode with invalid location",
+ "Redirect 307 in \"manual\" mode with data location",
+ "Redirect 308 in \"manual\" mode without location",
+ "Redirect 308 in \"manual\" mode with valid location",
+ "Redirect 308 in \"manual\" mode with invalid location",
+ "Redirect 308 in \"manual\" mode with data location"
+ ],
+ "redirect-method.any.html": true,
+ "redirect-method.any.worker.html": true,
+ "redirect-schemes.any.html": true,
+ "redirect-schemes.any.worker.html": true,
+ "redirect-to-dataurl.any.html": true,
+ "redirect-to-dataurl.any.worker.html": true,
+ "redirect-back-to-original-origin.any.html": false,
+ "redirect-back-to-original-origin.any.worker.html": false,
+ "redirect-keepalive.any.html": false,
+ "redirect-mode.any.html": [
+ "same-origin redirect 301 in manual redirect and cors mode",
+ "same-origin redirect 301 in manual redirect and no-cors mode",
+ "same-origin redirect 302 in manual redirect and cors mode",
+ "same-origin redirect 302 in manual redirect and no-cors mode",
+ "same-origin redirect 303 in manual redirect and cors mode",
+ "same-origin redirect 303 in manual redirect and no-cors mode",
+ "same-origin redirect 307 in manual redirect and cors mode",
+ "same-origin redirect 307 in manual redirect and no-cors mode",
+ "same-origin redirect 308 in manual redirect and cors mode",
+ "same-origin redirect 308 in manual redirect and no-cors mode",
+ "cross-origin redirect 301 in manual redirect and cors mode",
+ "cross-origin redirect 301 in manual redirect and no-cors mode",
+ "cross-origin redirect 301 in follow redirect and no-cors mode",
+ "cross-origin redirect 302 in manual redirect and cors mode",
+ "cross-origin redirect 302 in manual redirect and no-cors mode",
+ "cross-origin redirect 302 in follow redirect and no-cors mode",
+ "cross-origin redirect 303 in manual redirect and cors mode",
+ "cross-origin redirect 303 in manual redirect and no-cors mode",
+ "cross-origin redirect 303 in follow redirect and no-cors mode",
+ "cross-origin redirect 307 in manual redirect and cors mode",
+ "cross-origin redirect 307 in manual redirect and no-cors mode",
+ "cross-origin redirect 307 in follow redirect and no-cors mode",
+ "cross-origin redirect 308 in manual redirect and cors mode",
+ "cross-origin redirect 308 in manual redirect and no-cors mode",
+ "cross-origin redirect 308 in follow redirect and no-cors mode",
+ "manual redirect with a CORS error should be rejected"
+ ],
+ "redirect-mode.any.worker.html": [
+ "same-origin redirect 301 in manual redirect and cors mode",
+ "same-origin redirect 301 in manual redirect and no-cors mode",
+ "same-origin redirect 302 in manual redirect and cors mode",
+ "same-origin redirect 302 in manual redirect and no-cors mode",
+ "same-origin redirect 303 in manual redirect and cors mode",
+ "same-origin redirect 303 in manual redirect and no-cors mode",
+ "same-origin redirect 307 in manual redirect and cors mode",
+ "same-origin redirect 307 in manual redirect and no-cors mode",
+ "same-origin redirect 308 in manual redirect and cors mode",
+ "same-origin redirect 308 in manual redirect and no-cors mode",
+ "cross-origin redirect 301 in manual redirect and cors mode",
+ "cross-origin redirect 301 in manual redirect and no-cors mode",
+ "cross-origin redirect 301 in follow redirect and no-cors mode",
+ "cross-origin redirect 302 in manual redirect and cors mode",
+ "cross-origin redirect 302 in manual redirect and no-cors mode",
+ "cross-origin redirect 302 in follow redirect and no-cors mode",
+ "cross-origin redirect 303 in manual redirect and cors mode",
+ "cross-origin redirect 303 in manual redirect and no-cors mode",
+ "cross-origin redirect 303 in follow redirect and no-cors mode",
+ "cross-origin redirect 307 in manual redirect and cors mode",
+ "cross-origin redirect 307 in manual redirect and no-cors mode",
+ "cross-origin redirect 307 in follow redirect and no-cors mode",
+ "cross-origin redirect 308 in manual redirect and cors mode",
+ "cross-origin redirect 308 in manual redirect and no-cors mode",
+ "cross-origin redirect 308 in follow redirect and no-cors mode",
+ "manual redirect with a CORS error should be rejected"
+ ],
+ "redirect-origin.any.html": [
+ "[GET] Redirect 301 Same origin to other origin",
+ "[GET] Redirect 301 Other origin to other origin",
+ "[GET] Redirect 301 Other origin to same origin",
+ "[POST] Redirect 301 Same origin to other origin",
+ "[POST] Redirect 301 Other origin to other origin",
+ "[POST] Redirect 301 Other origin to same origin",
+ "[GET] Redirect 302 Same origin to other origin",
+ "[GET] Redirect 302 Other origin to other origin",
+ "[GET] Redirect 302 Other origin to same origin",
+ "[POST] Redirect 302 Same origin to other origin",
+ "[POST] Redirect 302 Other origin to other origin",
+ "[POST] Redirect 302 Other origin to same origin",
+ "[GET] Redirect 303 Same origin to other origin",
+ "[GET] Redirect 303 Other origin to other origin",
+ "[GET] Redirect 303 Other origin to same origin",
+ "[POST] Redirect 303 Same origin to other origin",
+ "[POST] Redirect 303 Other origin to other origin",
+ "[POST] Redirect 303 Other origin to same origin",
+ "[GET] Redirect 307 Same origin to other origin",
+ "[GET] Redirect 307 Other origin to other origin",
+ "[GET] Redirect 307 Other origin to same origin",
+ "[POST] Redirect 307 Same origin to other origin",
+ "[POST] Redirect 307 Other origin to other origin",
+ "[POST] Redirect 307 Other origin to same origin",
+ "[GET] Redirect 308 Same origin to other origin",
+ "[GET] Redirect 308 Other origin to other origin",
+ "[GET] Redirect 308 Other origin to same origin",
+ "[POST] Redirect 308 Same origin to other origin",
+ "[POST] Redirect 308 Other origin to other origin",
+ "[POST] Redirect 308 Other origin to same origin"
+ ],
+ "redirect-origin.any.worker.html": [
+ "[GET] Redirect 301 Same origin to other origin",
+ "[GET] Redirect 301 Other origin to other origin",
+ "[GET] Redirect 301 Other origin to same origin",
+ "[POST] Redirect 301 Same origin to other origin",
+ "[POST] Redirect 301 Other origin to other origin",
+ "[POST] Redirect 301 Other origin to same origin",
+ "[GET] Redirect 302 Same origin to other origin",
+ "[GET] Redirect 302 Other origin to other origin",
+ "[GET] Redirect 302 Other origin to same origin",
+ "[POST] Redirect 302 Same origin to other origin",
+ "[POST] Redirect 302 Other origin to other origin",
+ "[POST] Redirect 302 Other origin to same origin",
+ "[GET] Redirect 303 Same origin to other origin",
+ "[GET] Redirect 303 Other origin to other origin",
+ "[GET] Redirect 303 Other origin to same origin",
+ "[POST] Redirect 303 Same origin to other origin",
+ "[POST] Redirect 303 Other origin to other origin",
+ "[POST] Redirect 303 Other origin to same origin",
+ "[GET] Redirect 307 Same origin to other origin",
+ "[GET] Redirect 307 Other origin to other origin",
+ "[GET] Redirect 307 Other origin to same origin",
+ "[POST] Redirect 307 Same origin to other origin",
+ "[POST] Redirect 307 Other origin to other origin",
+ "[POST] Redirect 307 Other origin to same origin",
+ "[GET] Redirect 308 Same origin to other origin",
+ "[GET] Redirect 308 Other origin to other origin",
+ "[GET] Redirect 308 Other origin to same origin",
+ "[POST] Redirect 308 Same origin to other origin",
+ "[POST] Redirect 308 Other origin to other origin",
+ "[POST] Redirect 308 Other origin to same origin"
+ ],
+ "redirect-referrer-override.any.html": [
+ "Same origin redirection, no-referrer-when-downgrade init, no-referrer-when-downgrade redirect header ",
+ "Cross origin redirection, no-referrer-when-downgrade init, no-referrer-when-downgrade redirect header ",
+ "Same origin redirection, no-referrer-when-downgrade init, origin redirect header ",
+ "Cross origin redirection, no-referrer-when-downgrade init, origin redirect header ",
+ "Same origin redirection, no-referrer-when-downgrade init, origin-when-cross-origin redirect header ",
+ "Cross origin redirection, no-referrer-when-downgrade init, origin-when-cross-origin redirect header ",
+ "Same origin redirection, no-referrer-when-downgrade init, same-origin redirect header ",
+ "Same origin redirection, no-referrer-when-downgrade init, strict-origin redirect header ",
+ "Cross origin redirection, no-referrer-when-downgrade init, strict-origin redirect header ",
+ "Same origin redirection, no-referrer-when-downgrade init, strict-origin-when-cross-origin redirect header ",
+ "Cross origin redirection, no-referrer-when-downgrade init, strict-origin-when-cross-origin redirect header ",
+ "Same origin redirection, no-referrer-when-downgrade init, unsafe-url redirect header ",
+ "Cross origin redirection, no-referrer-when-downgrade init, unsafe-url redirect header ",
+ "Same origin redirection, origin init, no-referrer-when-downgrade redirect header ",
+ "Cross origin redirection, origin init, no-referrer-when-downgrade redirect header ",
+ "Same origin redirection, origin init, origin redirect header ",
+ "Cross origin redirection, origin init, origin redirect header ",
+ "Same origin redirection, origin init, origin-when-cross-origin redirect header ",
+ "Cross origin redirection, origin init, origin-when-cross-origin redirect header ",
+ "Same origin redirection, origin init, same-origin redirect header ",
+ "Same origin redirection, origin init, strict-origin redirect header ",
+ "Cross origin redirection, origin init, strict-origin redirect header ",
+ "Same origin redirection, origin init, strict-origin-when-cross-origin redirect header ",
+ "Cross origin redirection, origin init, strict-origin-when-cross-origin redirect header ",
+ "Same origin redirection, origin init, unsafe-url redirect header ",
+ "Cross origin redirection, origin init, unsafe-url redirect header ",
+ "Same origin redirection, origin-when-cross-origin init, no-referrer-when-downgrade redirect header ",
+ "Cross origin redirection, origin-when-cross-origin init, no-referrer-when-downgrade redirect header ",
+ "Same origin redirection, origin-when-cross-origin init, origin redirect header ",
+ "Cross origin redirection, origin-when-cross-origin init, origin redirect header ",
+ "Same origin redirection, origin-when-cross-origin init, origin-when-cross-origin redirect header ",
+ "Cross origin redirection, origin-when-cross-origin init, origin-when-cross-origin redirect header ",
+ "Same origin redirection, origin-when-cross-origin init, same-origin redirect header ",
+ "Same origin redirection, origin-when-cross-origin init, strict-origin redirect header ",
+ "Cross origin redirection, origin-when-cross-origin init, strict-origin redirect header ",
+ "Same origin redirection, origin-when-cross-origin init, strict-origin-when-cross-origin redirect header ",
+ "Cross origin redirection, origin-when-cross-origin init, strict-origin-when-cross-origin redirect header ",
+ "Same origin redirection, origin-when-cross-origin init, unsafe-url redirect header ",
+ "Cross origin redirection, origin-when-cross-origin init, unsafe-url redirect header ",
+ "Same origin redirection, same-origin init, no-referrer-when-downgrade redirect header ",
+ "Cross origin redirection, same-origin init, no-referrer-when-downgrade redirect header ",
+ "Same origin redirection, same-origin init, origin redirect header ",
+ "Cross origin redirection, same-origin init, origin redirect header ",
+ "Same origin redirection, same-origin init, origin-when-cross-origin redirect header ",
+ "Cross origin redirection, same-origin init, origin-when-cross-origin redirect header ",
+ "Same origin redirection, same-origin init, same-origin redirect header ",
+ "Same origin redirection, same-origin init, strict-origin redirect header ",
+ "Cross origin redirection, same-origin init, strict-origin redirect header ",
+ "Same origin redirection, same-origin init, strict-origin-when-cross-origin redirect header ",
+ "Cross origin redirection, same-origin init, strict-origin-when-cross-origin redirect header ",
+ "Same origin redirection, same-origin init, unsafe-url redirect header ",
+ "Cross origin redirection, same-origin init, unsafe-url redirect header ",
+ "Same origin redirection, strict-origin init, no-referrer-when-downgrade redirect header ",
+ "Cross origin redirection, strict-origin init, no-referrer-when-downgrade redirect header ",
+ "Same origin redirection, strict-origin init, origin redirect header ",
+ "Cross origin redirection, strict-origin init, origin redirect header ",
+ "Same origin redirection, strict-origin init, origin-when-cross-origin redirect header ",
+ "Cross origin redirection, strict-origin init, origin-when-cross-origin redirect header ",
+ "Same origin redirection, strict-origin init, same-origin redirect header ",
+ "Same origin redirection, strict-origin init, strict-origin redirect header ",
+ "Cross origin redirection, strict-origin init, strict-origin redirect header ",
+ "Same origin redirection, strict-origin init, strict-origin-when-cross-origin redirect header ",
+ "Cross origin redirection, strict-origin init, strict-origin-when-cross-origin redirect header ",
+ "Same origin redirection, strict-origin init, unsafe-url redirect header ",
+ "Cross origin redirection, strict-origin init, unsafe-url redirect header ",
+ "Same origin redirection, strict-origin-when-cross-origin init, no-referrer-when-downgrade redirect header ",
+ "Cross origin redirection, strict-origin-when-cross-origin init, no-referrer-when-downgrade redirect header ",
+ "Same origin redirection, strict-origin-when-cross-origin init, origin redirect header ",
+ "Cross origin redirection, strict-origin-when-cross-origin init, origin redirect header ",
+ "Same origin redirection, strict-origin-when-cross-origin init, origin-when-cross-origin redirect header ",
+ "Cross origin redirection, strict-origin-when-cross-origin init, origin-when-cross-origin redirect header ",
+ "Same origin redirection, strict-origin-when-cross-origin init, same-origin redirect header ",
+ "Same origin redirection, strict-origin-when-cross-origin init, strict-origin redirect header ",
+ "Cross origin redirection, strict-origin-when-cross-origin init, strict-origin redirect header ",
+ "Same origin redirection, strict-origin-when-cross-origin init, strict-origin-when-cross-origin redirect header ",
+ "Cross origin redirection, strict-origin-when-cross-origin init, strict-origin-when-cross-origin redirect header ",
+ "Same origin redirection, strict-origin-when-cross-origin init, unsafe-url redirect header ",
+ "Cross origin redirection, strict-origin-when-cross-origin init, unsafe-url redirect header ",
+ "Same origin redirection, unsafe-url init, no-referrer-when-downgrade redirect header ",
+ "Cross origin redirection, unsafe-url init, no-referrer-when-downgrade redirect header ",
+ "Same origin redirection, unsafe-url init, origin redirect header ",
+ "Cross origin redirection, unsafe-url init, origin redirect header ",
+ "Same origin redirection, unsafe-url init, origin-when-cross-origin redirect header ",
+ "Cross origin redirection, unsafe-url init, origin-when-cross-origin redirect header ",
+ "Same origin redirection, unsafe-url init, same-origin redirect header ",
+ "Same origin redirection, unsafe-url init, strict-origin redirect header ",
+ "Cross origin redirection, unsafe-url init, strict-origin redirect header ",
+ "Same origin redirection, unsafe-url init, strict-origin-when-cross-origin redirect header ",
+ "Cross origin redirection, unsafe-url init, strict-origin-when-cross-origin redirect header ",
+ "Same origin redirection, unsafe-url init, unsafe-url redirect header ",
+ "Cross origin redirection, unsafe-url init, unsafe-url redirect header "
+ ],
+ "redirect-referrer-override.any.worker.html": [
+ "Same origin redirection, no-referrer-when-downgrade init, no-referrer-when-downgrade redirect header ",
+ "Cross origin redirection, no-referrer-when-downgrade init, no-referrer-when-downgrade redirect header ",
+ "Same origin redirection, no-referrer-when-downgrade init, origin redirect header ",
+ "Cross origin redirection, no-referrer-when-downgrade init, origin redirect header ",
+ "Same origin redirection, no-referrer-when-downgrade init, origin-when-cross-origin redirect header ",
+ "Cross origin redirection, no-referrer-when-downgrade init, origin-when-cross-origin redirect header ",
+ "Same origin redirection, no-referrer-when-downgrade init, same-origin redirect header ",
+ "Same origin redirection, no-referrer-when-downgrade init, strict-origin redirect header ",
+ "Cross origin redirection, no-referrer-when-downgrade init, strict-origin redirect header ",
+ "Same origin redirection, no-referrer-when-downgrade init, strict-origin-when-cross-origin redirect header ",
+ "Cross origin redirection, no-referrer-when-downgrade init, strict-origin-when-cross-origin redirect header ",
+ "Same origin redirection, no-referrer-when-downgrade init, unsafe-url redirect header ",
+ "Cross origin redirection, no-referrer-when-downgrade init, unsafe-url redirect header ",
+ "Same origin redirection, origin init, no-referrer-when-downgrade redirect header ",
+ "Cross origin redirection, origin init, no-referrer-when-downgrade redirect header ",
+ "Same origin redirection, origin init, origin redirect header ",
+ "Cross origin redirection, origin init, origin redirect header ",
+ "Same origin redirection, origin init, origin-when-cross-origin redirect header ",
+ "Cross origin redirection, origin init, origin-when-cross-origin redirect header ",
+ "Same origin redirection, origin init, same-origin redirect header ",
+ "Same origin redirection, origin init, strict-origin redirect header ",
+ "Cross origin redirection, origin init, strict-origin redirect header ",
+ "Same origin redirection, origin init, strict-origin-when-cross-origin redirect header ",
+ "Cross origin redirection, origin init, strict-origin-when-cross-origin redirect header ",
+ "Same origin redirection, origin init, unsafe-url redirect header ",
+ "Cross origin redirection, origin init, unsafe-url redirect header ",
+ "Same origin redirection, origin-when-cross-origin init, no-referrer-when-downgrade redirect header ",
+ "Cross origin redirection, origin-when-cross-origin init, no-referrer-when-downgrade redirect header ",
+ "Same origin redirection, origin-when-cross-origin init, origin redirect header ",
+ "Cross origin redirection, origin-when-cross-origin init, origin redirect header ",
+ "Same origin redirection, origin-when-cross-origin init, origin-when-cross-origin redirect header ",
+ "Cross origin redirection, origin-when-cross-origin init, origin-when-cross-origin redirect header ",
+ "Same origin redirection, origin-when-cross-origin init, same-origin redirect header ",
+ "Same origin redirection, origin-when-cross-origin init, strict-origin redirect header ",
+ "Cross origin redirection, origin-when-cross-origin init, strict-origin redirect header ",
+ "Same origin redirection, origin-when-cross-origin init, strict-origin-when-cross-origin redirect header ",
+ "Cross origin redirection, origin-when-cross-origin init, strict-origin-when-cross-origin redirect header ",
+ "Same origin redirection, origin-when-cross-origin init, unsafe-url redirect header ",
+ "Cross origin redirection, origin-when-cross-origin init, unsafe-url redirect header ",
+ "Same origin redirection, same-origin init, no-referrer-when-downgrade redirect header ",
+ "Cross origin redirection, same-origin init, no-referrer-when-downgrade redirect header ",
+ "Same origin redirection, same-origin init, origin redirect header ",
+ "Cross origin redirection, same-origin init, origin redirect header ",
+ "Same origin redirection, same-origin init, origin-when-cross-origin redirect header ",
+ "Cross origin redirection, same-origin init, origin-when-cross-origin redirect header ",
+ "Same origin redirection, same-origin init, same-origin redirect header ",
+ "Same origin redirection, same-origin init, strict-origin redirect header ",
+ "Cross origin redirection, same-origin init, strict-origin redirect header ",
+ "Same origin redirection, same-origin init, strict-origin-when-cross-origin redirect header ",
+ "Cross origin redirection, same-origin init, strict-origin-when-cross-origin redirect header ",
+ "Same origin redirection, same-origin init, unsafe-url redirect header ",
+ "Cross origin redirection, same-origin init, unsafe-url redirect header ",
+ "Same origin redirection, strict-origin init, no-referrer-when-downgrade redirect header ",
+ "Cross origin redirection, strict-origin init, no-referrer-when-downgrade redirect header ",
+ "Same origin redirection, strict-origin init, origin redirect header ",
+ "Cross origin redirection, strict-origin init, origin redirect header ",
+ "Same origin redirection, strict-origin init, origin-when-cross-origin redirect header ",
+ "Cross origin redirection, strict-origin init, origin-when-cross-origin redirect header ",
+ "Same origin redirection, strict-origin init, same-origin redirect header ",
+ "Same origin redirection, strict-origin init, strict-origin redirect header ",
+ "Cross origin redirection, strict-origin init, strict-origin redirect header ",
+ "Same origin redirection, strict-origin init, strict-origin-when-cross-origin redirect header ",
+ "Cross origin redirection, strict-origin init, strict-origin-when-cross-origin redirect header ",
+ "Same origin redirection, strict-origin init, unsafe-url redirect header ",
+ "Cross origin redirection, strict-origin init, unsafe-url redirect header ",
+ "Same origin redirection, strict-origin-when-cross-origin init, no-referrer-when-downgrade redirect header ",
+ "Cross origin redirection, strict-origin-when-cross-origin init, no-referrer-when-downgrade redirect header ",
+ "Same origin redirection, strict-origin-when-cross-origin init, origin redirect header ",
+ "Cross origin redirection, strict-origin-when-cross-origin init, origin redirect header ",
+ "Same origin redirection, strict-origin-when-cross-origin init, origin-when-cross-origin redirect header ",
+ "Cross origin redirection, strict-origin-when-cross-origin init, origin-when-cross-origin redirect header ",
+ "Same origin redirection, strict-origin-when-cross-origin init, same-origin redirect header ",
+ "Same origin redirection, strict-origin-when-cross-origin init, strict-origin redirect header ",
+ "Cross origin redirection, strict-origin-when-cross-origin init, strict-origin redirect header ",
+ "Same origin redirection, strict-origin-when-cross-origin init, strict-origin-when-cross-origin redirect header ",
+ "Cross origin redirection, strict-origin-when-cross-origin init, strict-origin-when-cross-origin redirect header ",
+ "Same origin redirection, strict-origin-when-cross-origin init, unsafe-url redirect header ",
+ "Cross origin redirection, strict-origin-when-cross-origin init, unsafe-url redirect header ",
+ "Same origin redirection, unsafe-url init, no-referrer-when-downgrade redirect header ",
+ "Cross origin redirection, unsafe-url init, no-referrer-when-downgrade redirect header ",
+ "Same origin redirection, unsafe-url init, origin redirect header ",
+ "Cross origin redirection, unsafe-url init, origin redirect header ",
+ "Same origin redirection, unsafe-url init, origin-when-cross-origin redirect header ",
+ "Cross origin redirection, unsafe-url init, origin-when-cross-origin redirect header ",
+ "Same origin redirection, unsafe-url init, same-origin redirect header ",
+ "Same origin redirection, unsafe-url init, strict-origin redirect header ",
+ "Cross origin redirection, unsafe-url init, strict-origin redirect header ",
+ "Same origin redirection, unsafe-url init, strict-origin-when-cross-origin redirect header ",
+ "Cross origin redirection, unsafe-url init, strict-origin-when-cross-origin redirect header ",
+ "Same origin redirection, unsafe-url init, unsafe-url redirect header ",
+ "Cross origin redirection, unsafe-url init, unsafe-url redirect header "
+ ],
+ "redirect-referrer.any.html": [
+ "Same origin redirection, empty init, unsafe-url redirect header ",
+ "Same origin redirection, empty init, no-referrer-when-downgrade redirect header ",
+ "Same origin redirection, empty init, same-origin redirect header ",
+ "Same origin redirection, empty init, origin redirect header ",
+ "Same origin redirection, empty init, origin-when-cross-origin redirect header ",
+ "Same origin redirection, empty init, strict-origin redirect header ",
+ "Same origin redirection, empty init, strict-origin-when-cross-origin redirect header ",
+ "Same origin redirection, empty redirect header, unsafe-url init ",
+ "Same origin redirection, empty redirect header, no-referrer-when-downgrade init ",
+ "Same origin redirection, empty redirect header, same-origin init ",
+ "Same origin redirection, empty redirect header, origin init ",
+ "Same origin redirection, empty redirect header, origin-when-cross-origin init ",
+ "Same origin redirection, empty redirect header, strict-origin init ",
+ "Same origin redirection, empty redirect header, strict-origin-when-cross-origin init ",
+ "Cross origin redirection, empty init, unsafe-url redirect header ",
+ "Cross origin redirection, empty init, no-referrer-when-downgrade redirect header ",
+ "Cross origin redirection, empty init, origin redirect header ",
+ "Cross origin redirection, empty init, origin-when-cross-origin redirect header ",
+ "Cross origin redirection, empty init, strict-origin redirect header ",
+ "Cross origin redirection, empty init, strict-origin-when-cross-origin redirect header ",
+ "Cross origin redirection, empty redirect header, unsafe-url init ",
+ "Cross origin redirection, empty redirect header, no-referrer-when-downgrade init ",
+ "Cross origin redirection, empty redirect header, origin init ",
+ "Cross origin redirection, empty redirect header, origin-when-cross-origin init ",
+ "Cross origin redirection, empty redirect header, strict-origin init ",
+ "Cross origin redirection, empty redirect header, strict-origin-when-cross-origin init "
+ ],
+ "redirect-referrer.any.worker.html": [
+ "Same origin redirection, empty init, unsafe-url redirect header ",
+ "Same origin redirection, empty init, no-referrer-when-downgrade redirect header ",
+ "Same origin redirection, empty init, same-origin redirect header ",
+ "Same origin redirection, empty init, origin redirect header ",
+ "Same origin redirection, empty init, origin-when-cross-origin redirect header ",
+ "Same origin redirection, empty init, strict-origin redirect header ",
+ "Same origin redirection, empty init, strict-origin-when-cross-origin redirect header ",
+ "Same origin redirection, empty redirect header, unsafe-url init ",
+ "Same origin redirection, empty redirect header, no-referrer-when-downgrade init ",
+ "Same origin redirection, empty redirect header, same-origin init ",
+ "Same origin redirection, empty redirect header, origin init ",
+ "Same origin redirection, empty redirect header, origin-when-cross-origin init ",
+ "Same origin redirection, empty redirect header, strict-origin init ",
+ "Same origin redirection, empty redirect header, strict-origin-when-cross-origin init ",
+ "Cross origin redirection, empty init, unsafe-url redirect header ",
+ "Cross origin redirection, empty init, no-referrer-when-downgrade redirect header ",
+ "Cross origin redirection, empty init, origin redirect header ",
+ "Cross origin redirection, empty init, origin-when-cross-origin redirect header ",
+ "Cross origin redirection, empty init, strict-origin redirect header ",
+ "Cross origin redirection, empty init, strict-origin-when-cross-origin redirect header ",
+ "Cross origin redirection, empty redirect header, unsafe-url init ",
+ "Cross origin redirection, empty redirect header, no-referrer-when-downgrade init ",
+ "Cross origin redirection, empty redirect header, origin init ",
+ "Cross origin redirection, empty redirect header, origin-when-cross-origin init ",
+ "Cross origin redirection, empty redirect header, strict-origin init ",
+ "Cross origin redirection, empty redirect header, strict-origin-when-cross-origin init "
+ ]
+ },
+ "idlharness.any.html": [
+ "Request interface: attribute destination",
+ "Request interface: attribute referrer",
+ "Request interface: attribute referrerPolicy",
+ "Request interface: attribute mode",
+ "Request interface: attribute credentials",
+ "Request interface: attribute cache",
+ "Request interface: attribute integrity",
+ "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: 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",
+ "Request interface: new Request('about:blank') must inherit property \"mode\" with the proper type",
+ "Request interface: new Request('about:blank') must inherit property \"credentials\" with the proper type",
+ "Request interface: new Request('about:blank') must inherit property \"cache\" with the proper type",
+ "Request interface: new Request('about:blank') must inherit property \"integrity\" with the proper type",
+ "Request interface: new Request('about:blank') must inherit property \"keepalive\" with the proper type",
+ "Request interface: new Request('about:blank') must inherit property \"isReloadNavigation\" with the proper type",
+ "Request interface: new Request('about:blank') must inherit property \"isHistoryNavigation\" with the proper type",
+ "Request interface: new Request('about:blank') must inherit property \"duplex\" with the proper type",
+ "Response interface: operation json(any, optional ResponseInit)",
+ "Response interface: attribute body",
+ "Response interface: attribute bodyUsed",
+ "Response interface: calling redirect(USVString, optional unsigned short) on new Response() with too few arguments must throw TypeError",
+ "Window interface: operation fetch(RequestInfo, optional RequestInit)"
+ ],
+ "idlharness.any.worker.html": [
+ "Request interface: attribute destination",
+ "Request interface: attribute referrer",
+ "Request interface: attribute referrerPolicy",
+ "Request interface: attribute mode",
+ "Request interface: attribute credentials",
+ "Request interface: attribute cache",
+ "Request interface: attribute integrity",
+ "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: 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",
+ "Request interface: new Request('about:blank') must inherit property \"mode\" with the proper type",
+ "Request interface: new Request('about:blank') must inherit property \"credentials\" with the proper type",
+ "Request interface: new Request('about:blank') must inherit property \"cache\" with the proper type",
+ "Request interface: new Request('about:blank') must inherit property \"integrity\" with the proper type",
+ "Request interface: new Request('about:blank') must inherit property \"keepalive\" with the proper type",
+ "Request interface: new Request('about:blank') must inherit property \"isReloadNavigation\" with the proper type",
+ "Request interface: new Request('about:blank') must inherit property \"isHistoryNavigation\" with the proper type",
+ "Request interface: new Request('about:blank') must inherit property \"duplex\" with the proper type",
+ "Response interface: operation json(any, optional ResponseInit)",
+ "Response interface: attribute body",
+ "Response interface: attribute bodyUsed",
+ "Response interface: calling redirect(USVString, optional unsigned short) on new Response() with too few arguments must throw TypeError",
+ "WorkerGlobalScope interface: operation fetch(RequestInfo, optional RequestInit)",
+ "WorkerGlobalScope interface: self must inherit property \"fetch(RequestInfo, optional RequestInit)\" with the proper type",
+ "WorkerGlobalScope interface: calling fetch(RequestInfo, optional RequestInit) on self with too few arguments must throw TypeError"
+ ],
+ "abort": {
+ "request.any.html": true,
+ "request.any.worker.html": true,
+ "general.any.html": true,
+ "general.any.worker.html": true,
+ "cache.https.any.html": false,
+ "cache.https.any.worker.html": false
+ },
+ "cors": {
+ "cors-basic.any.html": false,
+ "cors-basic.any.worker.html": false,
+ "cors-cookies-redirect.any.html": [
+ "Testing credentials after cross-origin redirection with CORS and no preflight",
+ "Testing credentials after cross-origin redirection with CORS and preflight"
+ ],
+ "cors-cookies-redirect.any.worker.html": [
+ "Testing credentials after cross-origin redirection with CORS and no preflight",
+ "Testing credentials after cross-origin redirection with CORS and preflight"
+ ],
+ "cors-cookies.any.html": [
+ "Include mode: 1 cookie"
+ ],
+ "cors-cookies.any.worker.html": [
+ "Include mode: 1 cookie"
+ ],
+ "cors-expose-star.sub.any.html": false,
+ "cors-expose-star.sub.any.worker.html": false,
+ "cors-filtering.sub.any.html": false,
+ "cors-filtering.sub.any.worker.html": false,
+ "cors-multiple-origins.sub.any.html": false,
+ "cors-multiple-origins.sub.any.worker.html": false,
+ "cors-no-preflight.any.html": true,
+ "cors-no-preflight.any.worker.html": true,
+ "cors-origin.any.html": [
+ "Cross domain different subdomain [origin KO]",
+ "Same domain different port [origin KO]",
+ "Cross domain different port [origin KO]",
+ "Cross domain different protocol [origin KO]",
+ "Same domain different protocol different port [origin KO]",
+ "Cross domain [POST] [origin KO]",
+ "Cross domain [HEAD] [origin KO]",
+ "CORS preflight [PUT] [origin KO]",
+ "Allowed origin: \"\" [origin KO]"
+ ],
+ "cors-origin.any.worker.html": [
+ "Cross domain different subdomain [origin KO]",
+ "Same domain different port [origin KO]",
+ "Cross domain different port [origin KO]",
+ "Cross domain different protocol [origin KO]",
+ "Same domain different protocol different port [origin KO]",
+ "Cross domain [POST] [origin KO]",
+ "Cross domain [HEAD] [origin KO]",
+ "CORS preflight [PUT] [origin KO]",
+ "Allowed origin: \"\" [origin KO]"
+ ],
+ "cors-preflight-cache.any.html": false,
+ "cors-preflight-cache.any.worker.html": false,
+ "cors-preflight-not-cors-safelisted.any.html": [
+ "Need CORS-preflight for accept/\" header",
+ "Need CORS-preflight for accept/012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678 header",
+ "Need CORS-preflight for accept-language/\u0001 header",
+ "Need CORS-preflight for accept-language/@ header",
+ "Need CORS-preflight for authorization/basics header",
+ "Need CORS-preflight for content-language/\u0001 header",
+ "Need CORS-preflight for content-language/@ header",
+ "Need CORS-preflight for content-type/text/html header",
+ "Need CORS-preflight for content-type/text/plain; long=0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901 header",
+ "Need CORS-preflight for range/bytes 0- header",
+ "Need CORS-preflight for test/hi header"
+ ],
+ "cors-preflight-not-cors-safelisted.any.worker.html": [
+ "Need CORS-preflight for accept/\" header",
+ "Need CORS-preflight for accept/012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678 header",
+ "Need CORS-preflight for accept-language/\u0001 header",
+ "Need CORS-preflight for accept-language/@ header",
+ "Need CORS-preflight for authorization/basics header",
+ "Need CORS-preflight for content-language/\u0001 header",
+ "Need CORS-preflight for content-language/@ header",
+ "Need CORS-preflight for content-type/text/html header",
+ "Need CORS-preflight for content-type/text/plain; long=0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901 header",
+ "Need CORS-preflight for range/bytes 0- header",
+ "Need CORS-preflight for test/hi header"
+ ],
+ "cors-preflight-redirect.any.html": false,
+ "cors-preflight-redirect.any.worker.html": false,
+ "cors-preflight-referrer.any.html": false,
+ "cors-preflight-referrer.any.worker.html": false,
+ "cors-preflight-response-validation.any.html": false,
+ "cors-preflight-response-validation.any.worker.html": false,
+ "cors-preflight-star.any.html": false,
+ "cors-preflight-star.any.worker.html": false,
+ "cors-preflight-status.any.html": false,
+ "cors-preflight-status.any.worker.html": false,
+ "cors-preflight.any.html": [
+ "CORS [DELETE], server allows",
+ "CORS [DELETE], server refuses",
+ "CORS [PUT], server allows",
+ "CORS [PUT], server allows, check preflight has user agent",
+ "CORS [PUT], server refuses",
+ "CORS [PATCH], server allows",
+ "CORS [PATCH], server refuses",
+ "CORS [patcH], server allows",
+ "CORS [patcH], server refuses",
+ "CORS [NEW], server allows",
+ "CORS [NEW], server refuses",
+ "CORS [chicken], server allows",
+ "CORS [chicken], server refuses",
+ "CORS [GET] [x-test-header: allowed], server allows",
+ "CORS [GET] [x-test-header: refused], server refuses",
+ "CORS [GET] [several headers], server allows",
+ "CORS [GET] [several headers], server refuses",
+ "CORS [PUT] [several headers], server allows",
+ "CORS [PUT] [several headers], server refuses",
+ "CORS [PUT] [only safe headers], server allows",
+ "\"authorization\" should not be covered by the wildcard symbol"
+ ],
+ "cors-preflight.any.worker.html": [
+ "CORS [DELETE], server allows",
+ "CORS [DELETE], server refuses",
+ "CORS [PUT], server allows",
+ "CORS [PUT], server allows, check preflight has user agent",
+ "CORS [PUT], server refuses",
+ "CORS [PATCH], server allows",
+ "CORS [PATCH], server refuses",
+ "CORS [patcH], server allows",
+ "CORS [patcH], server refuses",
+ "CORS [NEW], server allows",
+ "CORS [NEW], server refuses",
+ "CORS [chicken], server allows",
+ "CORS [chicken], server refuses",
+ "CORS [GET] [x-test-header: allowed], server allows",
+ "CORS [GET] [x-test-header: refused], server refuses",
+ "CORS [GET] [several headers], server allows",
+ "CORS [GET] [several headers], server refuses",
+ "CORS [PUT] [several headers], server allows",
+ "CORS [PUT] [several headers], server refuses",
+ "CORS [PUT] [only safe headers], server allows",
+ "\"authorization\" should not be covered by the wildcard symbol"
+ ],
+ "cors-redirect-credentials.any.html": [
+ "Redirect 301 from same origin to remote with user and password",
+ "Redirect 301 from same origin to remote with user",
+ "Redirect 301 from same origin to remote with password",
+ "Redirect 301 from remote to same origin with user and password",
+ "Redirect 301 from remote to same origin with user",
+ "Redirect 301 from remote to same origin with password",
+ "Redirect 301 from remote to same remote with user and password",
+ "Redirect 301 from remote to same remote with user",
+ "Redirect 301 from remote to same remote with password",
+ "Redirect 301 from remote to another remote with user and password",
+ "Redirect 301 from remote to another remote with user",
+ "Redirect 301 from remote to another remote with password",
+ "Redirect 302 from same origin to remote with user and password",
+ "Redirect 302 from same origin to remote with user",
+ "Redirect 302 from same origin to remote with password",
+ "Redirect 302 from remote to same origin with user and password",
+ "Redirect 302 from remote to same origin with user",
+ "Redirect 302 from remote to same origin with password",
+ "Redirect 302 from remote to same remote with user and password",
+ "Redirect 302 from remote to same remote with user",
+ "Redirect 302 from remote to same remote with password",
+ "Redirect 302 from remote to another remote with user and password",
+ "Redirect 302 from remote to another remote with user",
+ "Redirect 302 from remote to another remote with password",
+ "Redirect 303 from same origin to remote with user and password",
+ "Redirect 303 from same origin to remote with user",
+ "Redirect 303 from same origin to remote with password",
+ "Redirect 303 from remote to same origin with user and password",
+ "Redirect 303 from remote to same origin with user",
+ "Redirect 303 from remote to same origin with password",
+ "Redirect 303 from remote to same remote with user and password",
+ "Redirect 303 from remote to same remote with user",
+ "Redirect 303 from remote to same remote with password",
+ "Redirect 303 from remote to another remote with user and password",
+ "Redirect 303 from remote to another remote with user",
+ "Redirect 303 from remote to another remote with password",
+ "Redirect 307 from same origin to remote with user and password",
+ "Redirect 307 from same origin to remote with user",
+ "Redirect 307 from same origin to remote with password",
+ "Redirect 307 from remote to same origin with user and password",
+ "Redirect 307 from remote to same origin with user",
+ "Redirect 307 from remote to same origin with password",
+ "Redirect 307 from remote to same remote with user and password",
+ "Redirect 307 from remote to same remote with user",
+ "Redirect 307 from remote to same remote with password",
+ "Redirect 307 from remote to another remote with user and password",
+ "Redirect 307 from remote to another remote with user",
+ "Redirect 307 from remote to another remote with password",
+ "Redirect 308 from same origin to remote with user and password",
+ "Redirect 308 from same origin to remote with user",
+ "Redirect 308 from same origin to remote with password",
+ "Redirect 308 from remote to same origin with user and password",
+ "Redirect 308 from remote to same origin with user",
+ "Redirect 308 from remote to same origin with password",
+ "Redirect 308 from remote to same remote with user and password",
+ "Redirect 308 from remote to same remote with user",
+ "Redirect 308 from remote to same remote with password",
+ "Redirect 308 from remote to another remote with user and password",
+ "Redirect 308 from remote to another remote with user",
+ "Redirect 308 from remote to another remote with password"
+ ],
+ "cors-redirect-credentials.any.worker.html": [
+ "Redirect 301 from same origin to remote with user and password",
+ "Redirect 301 from same origin to remote with user",
+ "Redirect 301 from same origin to remote with password",
+ "Redirect 301 from remote to same origin with user and password",
+ "Redirect 301 from remote to same origin with user",
+ "Redirect 301 from remote to same origin with password",
+ "Redirect 301 from remote to same remote with user and password",
+ "Redirect 301 from remote to same remote with user",
+ "Redirect 301 from remote to same remote with password",
+ "Redirect 301 from remote to another remote with user and password",
+ "Redirect 301 from remote to another remote with user",
+ "Redirect 301 from remote to another remote with password",
+ "Redirect 302 from same origin to remote with user and password",
+ "Redirect 302 from same origin to remote with user",
+ "Redirect 302 from same origin to remote with password",
+ "Redirect 302 from remote to same origin with user and password",
+ "Redirect 302 from remote to same origin with user",
+ "Redirect 302 from remote to same origin with password",
+ "Redirect 302 from remote to same remote with user and password",
+ "Redirect 302 from remote to same remote with user",
+ "Redirect 302 from remote to same remote with password",
+ "Redirect 302 from remote to another remote with user and password",
+ "Redirect 302 from remote to another remote with user",
+ "Redirect 302 from remote to another remote with password",
+ "Redirect 303 from same origin to remote with user and password",
+ "Redirect 303 from same origin to remote with user",
+ "Redirect 303 from same origin to remote with password",
+ "Redirect 303 from remote to same origin with user and password",
+ "Redirect 303 from remote to same origin with user",
+ "Redirect 303 from remote to same origin with password",
+ "Redirect 303 from remote to same remote with user and password",
+ "Redirect 303 from remote to same remote with user",
+ "Redirect 303 from remote to same remote with password",
+ "Redirect 303 from remote to another remote with user and password",
+ "Redirect 303 from remote to another remote with user",
+ "Redirect 303 from remote to another remote with password",
+ "Redirect 307 from same origin to remote with user and password",
+ "Redirect 307 from same origin to remote with user",
+ "Redirect 307 from same origin to remote with password",
+ "Redirect 307 from remote to same origin with user and password",
+ "Redirect 307 from remote to same origin with user",
+ "Redirect 307 from remote to same origin with password",
+ "Redirect 307 from remote to same remote with user and password",
+ "Redirect 307 from remote to same remote with user",
+ "Redirect 307 from remote to same remote with password",
+ "Redirect 307 from remote to another remote with user and password",
+ "Redirect 307 from remote to another remote with user",
+ "Redirect 307 from remote to another remote with password",
+ "Redirect 308 from same origin to remote with user and password",
+ "Redirect 308 from same origin to remote with user",
+ "Redirect 308 from same origin to remote with password",
+ "Redirect 308 from remote to same origin with user and password",
+ "Redirect 308 from remote to same origin with user",
+ "Redirect 308 from remote to same origin with password",
+ "Redirect 308 from remote to same remote with user and password",
+ "Redirect 308 from remote to same remote with user",
+ "Redirect 308 from remote to same remote with password",
+ "Redirect 308 from remote to another remote with user and password",
+ "Redirect 308 from remote to another remote with user",
+ "Redirect 308 from remote to another remote with password"
+ ],
+ "cors-redirect-preflight.any.html": false,
+ "cors-redirect-preflight.any.worker.html": false,
+ "cors-redirect.any.html": false,
+ "cors-redirect.any.worker.html": false
+ },
+ "credentials": {
+ "authentication-basic.any.html": true,
+ "authentication-basic.any.worker.html": true,
+ "authentication-redirection.any.html": [
+ "getAuthorizationHeaderValue - cross origin redirection"
+ ],
+ "authentication-redirection.any.worker.html": [
+ "getAuthorizationHeaderValue - cross origin redirection"
+ ],
+ "cookies.any.html": [
+ "Include mode: 1 cookie",
+ "Include mode: 2 cookies",
+ "Same-origin mode: 1 cookie",
+ "Same-origin mode: 2 cookies"
+ ],
+ "cookies.any.worker.html": [
+ "Include mode: 1 cookie",
+ "Include mode: 2 cookies",
+ "Same-origin mode: 1 cookie",
+ "Same-origin mode: 2 cookies"
+ ]
+ }
+ },
+ "content-length": {
+ "api-and-duplicate-headers.any.html": false,
+ "api-and-duplicate-headers.any.worker.html": false,
+ "too-long.window.html": true,
+ "parsing.window.html": [
+ "Input: \"Content-Length: aaaah\\r\\nContent-Length: aaaah\". Expected: 42.",
+ "Input: \"Content-Length: aaaah, aaaah\". Expected: 42.",
+ "Input: \"Content-Length: aaaah\". Expected: 42.",
+ "Input: \"Content-Length: 42s\". Expected: 42.",
+ "Input: \"Content-Length: 30s\". Expected: 42.",
+ "Input: \"Content-Length: -1\". Expected: 42.",
+ "Input: \"Content-Length: 0x20\". Expected: 42.",
+ "Input: \"Content-Length: 030\\r\\nContent-Length: 30\". Expected: network error.",
+ "Input: \"Content-Length: 030, 30\". Expected: network error.",
+ "Input: \"Content-Length: \\\"30\\\"\". Expected: 42.",
+ "Input: \"Content-Length: \". Expected: 42."
+ ]
+ },
+ "content-type": {
+ "multipart.window.html": true,
+ "multipart-malformed.any.html": false,
+ "multipart-malformed.any.worker.html": false,
+ "response.window.html": [
+ "<iframe>: separate response Content-Type: text/plain",
+ "<iframe>: combined response Content-Type: text/plain",
+ "<iframe>: separate response Content-Type: text/plain ",
+ "<iframe>: combined response Content-Type: text/plain ",
+ "<iframe>: separate response Content-Type: text/html text/plain",
+ "<iframe>: combined response Content-Type: text/html text/plain",
+ "<iframe>: separate response Content-Type: text/plain;charset=gbk text/html",
+ "<iframe>: combined response Content-Type: text/plain;charset=gbk text/html",
+ "<iframe>: separate response Content-Type: text/plain;charset=gbk text/html;charset=windows-1254",
+ "<iframe>: combined response Content-Type: text/plain;charset=gbk text/html;charset=windows-1254",
+ "<iframe>: separate response Content-Type: text/plain;charset=gbk text/plain",
+ "<iframe>: combined response Content-Type: text/plain;charset=gbk text/plain",
+ "<iframe>: separate response Content-Type: text/plain;charset=gbk text/plain;charset=windows-1252",
+ "<iframe>: combined response Content-Type: text/plain;charset=gbk text/plain;charset=windows-1252",
+ "<iframe>: separate response Content-Type: text/html;charset=gbk text/html;x=\",text/plain",
+ "<iframe>: combined response Content-Type: text/html;charset=gbk text/html;x=\",text/plain",
+ "<iframe>: separate response Content-Type: text/plain;charset=gbk;x=foo text/plain",
+ "<iframe>: combined response Content-Type: text/plain;charset=gbk;x=foo text/plain",
+ "<iframe>: separate response Content-Type: text/html;charset=gbk text/plain text/html",
+ "<iframe>: combined response Content-Type: text/html;charset=gbk text/plain text/html",
+ "<iframe>: separate response Content-Type: text/plain */*",
+ "<iframe>: combined response Content-Type: text/plain */*",
+ "<iframe>: separate response Content-Type: text/html */*",
+ "<iframe>: combined response Content-Type: text/html */*",
+ "<iframe>: separate response Content-Type: */* text/html",
+ "<iframe>: combined response Content-Type: */* text/html",
+ "<iframe>: separate response Content-Type: text/plain */*;charset=gbk",
+ "<iframe>: combined response Content-Type: text/plain */*;charset=gbk",
+ "<iframe>: separate response Content-Type: text/html */*;charset=gbk",
+ "<iframe>: combined response Content-Type: text/html */*;charset=gbk",
+ "<iframe>: separate response Content-Type: text/html;x=\" text/plain",
+ "<iframe>: combined response Content-Type: text/html;x=\" text/plain",
+ "<iframe>: separate response Content-Type: text/html;\" text/plain",
+ "<iframe>: combined response Content-Type: text/html;\" text/plain",
+ "<iframe>: separate response Content-Type: text/html;\" \\\" text/plain",
+ "<iframe>: combined response Content-Type: text/html;\" \\\" text/plain",
+ "<iframe>: separate response Content-Type: text/html;\" \\\" text/plain \";charset=GBK",
+ "<iframe>: combined response Content-Type: text/html;\" \\\" text/plain \";charset=GBK",
+ "<iframe>: separate response Content-Type: text/html;\" \" text/plain",
+ "<iframe>: combined response Content-Type: text/html;\" \" text/plain",
+ "fetch(): combined response Content-Type: text/html;x=\" text/plain",
+ "fetch(): separate response Content-Type: text/html;\" \\\" text/plain \";charset=GBK",
+ "fetch(): combined response Content-Type: text/html;\" \\\" text/plain \";charset=GBK",
+ "Request: combined response Content-Type: text/html;\" \\\" text/plain \";charset=GBK",
+ "Response: combined response Content-Type: text/html;\" \\\" text/plain \";charset=GBK"
+ ],
+ "script.window.html": [
+ "separate text/javascript;charset=windows-1252",
+ "separate text/javascript;\";charset=windows-1252",
+ "separate text/javascript\f",
+ "separate \"text/javascript\"",
+ "separate text/ javascript",
+ "separate text /javascript",
+ "separate x/x text/javascript",
+ "combined x/x text/javascript",
+ "separate x/x;charset=windows-1252 text/javascript",
+ "combined x/x;charset=windows-1252 text/javascript",
+ "separate text/javascript x/x",
+ "combined text/javascript x/x",
+ "separate text/javascript; charset=windows-1252 text/javascript",
+ "combined text/javascript; charset=windows-1252 text/javascript",
+ "separate text/javascript;\" x/x",
+ "combined text/javascript;\" x/x",
+ "separate text/javascript ",
+ "combined text/javascript ",
+ "separate text/javascript error",
+ "combined text/javascript error",
+ "separate text/javascript;charset=windows-1252 x/x text/javascript",
+ "combined text/javascript;charset=windows-1252 x/x text/javascript",
+ "separate text/javascript;charset=windows-1252 error text/javascript",
+ "combined text/javascript;charset=windows-1252 error text/javascript",
+ "separate text/javascript;charset=windows-1252 text/javascript",
+ "combined text/javascript;charset=windows-1252 text/javascript",
+ "separate text/javascript;charset=windows-1252;\" \\\" x/x",
+ "combined text/javascript;charset=windows-1252;\" \\\" x/x",
+ "separate x/x;\" x/y;\\\" text/javascript;charset=windows-1252;\" text/javascript",
+ "combined x/x;\" x/y;\\\" text/javascript;charset=windows-1252;\" text/javascript"
+ ]
+ },
+ "data-urls": {
+ "base64.any.html": true,
+ "base64.any.worker.html": true,
+ "processing.any.html": true,
+ "processing.any.worker.html": true
+ },
+ "h1-parsing": {
+ "lone-cr.window.html": [
+ "Parsing response with a lone CR before message-body (HTTP/1.1 200 OK\nHeader: Value\r\n\nBody)"
+ ],
+ "status-code.window.html": [
+ "HTTP/1.1 0 OK ",
+ "HTTP/1.1 1 OK ",
+ "HTTP/1.1 99 NOT OK ",
+ "HTTP/1.1 077 77 ",
+ "HTTP/1.1 099 HELLO ",
+ "HTTP/1.1 200 ",
+ "HTTP/1.1 999 DOES IT MATTER "
+ ],
+ "resources-with-0x00-in-header.window.html": false
+ },
+ "range": {
+ "general.any.html": [
+ "Privileged header not allowed for guard type: request-no-cors",
+ "Cross Origin Fetch with non safe range header"
+ ],
+ "general.any.worker.html": [
+ "Privileged header not allowed for guard type: request-no-cors",
+ "Cross Origin Fetch with non safe range header"
+ ],
+ "general.window.html": false,
+ "blob.any.html": false,
+ "blob.any.worker.html": false,
+ "data.any.html": true,
+ "data.any.worker.html": true,
+ "sw.https.window.html": false
+ },
+ "cross-origin-resource-policy": {
+ "fetch.any.html": [
+ "Cross-origin no-cors fetch with a 'Cross-Origin-Resource-Policy: same-origin' response header.",
+ "Cross-origin no-cors fetch with a 'Cross-Origin-Resource-Policy: same-site' response header.",
+ "Cross-scheme (HTTP to HTTPS) no-cors fetch to a same-site URL with a 'Cross-Origin-Resource-Policy: same-site' response header.",
+ "Cross-origin no-cors fetch to a same-site URL with a 'Cross-Origin-Resource-Policy: same-origin' response header.",
+ "Valid cross-origin no-cors fetch with a 'Cross-Origin-Resource-Policy: same-site' response header.",
+ "Cross-origin no-cors fetch with a 'Cross-Origin-Resource-Policy: same-origin' response header after a redirection.",
+ "Cross-origin no-cors fetch with a 'Cross-Origin-Resource-Policy: same-origin' redirect response header."
+ ],
+ "fetch.any.worker.html": [
+ "Cross-origin no-cors fetch with a 'Cross-Origin-Resource-Policy: same-origin' response header.",
+ "Cross-origin no-cors fetch with a 'Cross-Origin-Resource-Policy: same-site' response header.",
+ "Cross-scheme (HTTP to HTTPS) no-cors fetch to a same-site URL with a 'Cross-Origin-Resource-Policy: same-site' response header.",
+ "Cross-origin no-cors fetch to a same-site URL with a 'Cross-Origin-Resource-Policy: same-origin' response header.",
+ "Valid cross-origin no-cors fetch with a 'Cross-Origin-Resource-Policy: same-site' response header.",
+ "Cross-origin no-cors fetch with a 'Cross-Origin-Resource-Policy: same-origin' response header after a redirection.",
+ "Cross-origin no-cors fetch with a 'Cross-Origin-Resource-Policy: same-origin' redirect response header."
+ ],
+ "fetch.https.any.html": [
+ "Cross-origin no-cors fetch with a 'Cross-Origin-Resource-Policy: same-origin' response header.",
+ "Cross-origin no-cors fetch with a 'Cross-Origin-Resource-Policy: same-site' response header.",
+ "Cross-origin no-cors fetch with a 'Cross-Origin-Resource-Policy: same-origin' response header after a redirection.",
+ "Cross-origin no-cors fetch with a 'Cross-Origin-Resource-Policy: same-origin' redirect response header."
+ ],
+ "fetch.https.any.worker.html": [
+ "Cross-origin no-cors fetch with a 'Cross-Origin-Resource-Policy: same-origin' response header.",
+ "Cross-origin no-cors fetch with a 'Cross-Origin-Resource-Policy: same-site' response header.",
+ "Cross-origin no-cors fetch with a 'Cross-Origin-Resource-Policy: same-origin' response header after a redirection.",
+ "Cross-origin no-cors fetch with a 'Cross-Origin-Resource-Policy: same-origin' redirect response header."
+ ],
+ "scheme-restriction.any.html": false,
+ "scheme-restriction.any.worker.html": false,
+ "scheme-restriction.https.window.html": false,
+ "syntax.any.html": true,
+ "syntax.any.worker.html": true
+ },
+ "http-cache": {
+ "304-update.any.html": false,
+ "304-update.any.worker.html": false,
+ "cache-mode.any.html": [
+ "Fetch sends Cache-Control: max-age=0 when cache mode is no-cache",
+ "Fetch sends Cache-Control: no-cache and Pragma: no-cache when cache mode is no-store"
+ ],
+ "cache-mode.any.worker.html": [
+ "Fetch sends Cache-Control: max-age=0 when cache mode is no-cache",
+ "Fetch sends Cache-Control: no-cache and Pragma: no-cache when cache mode is no-store"
+ ],
+ "cc-request.any.html": [
+ "HTTP cache does use aged stale response when request contains Cache-Control: max-stale that permits its use",
+ "HTTP cache does reuse stale response with Age header when request contains Cache-Control: max-stale that permits its use",
+ "HTTP cache generates 504 status code when nothing is in cache and request contains Cache-Control: only-if-cached"
+ ],
+ "cc-request.any.worker.html": [
+ "HTTP cache does use aged stale response when request contains Cache-Control: max-stale that permits its use",
+ "HTTP cache does reuse stale response with Age header when request contains Cache-Control: max-stale that permits its use",
+ "HTTP cache generates 504 status code when nothing is in cache and request contains Cache-Control: only-if-cached"
+ ],
+ "credentials.tentative.any.html": false,
+ "credentials.tentative.any.worker.html": false,
+ "freshness.any.html": [
+ "HTTP cache reuses a response with a future Expires",
+ "HTTP cache reuses a response with positive Cache-Control: max-age",
+ "HTTP cache reuses a response with positive Cache-Control: max-age and a past Expires",
+ "HTTP cache reuses a response with positive Cache-Control: max-age and an invalid Expires",
+ "HTTP cache stores a response with Cache-Control: no-cache, but revalidates upon use",
+ "HTTP cache stores a response with Cache-Control: no-cache, but revalidates upon use, even with max-age and Expires"
+ ],
+ "freshness.any.worker.html": [
+ "HTTP cache reuses a response with a future Expires",
+ "HTTP cache reuses a response with positive Cache-Control: max-age",
+ "HTTP cache reuses a response with positive Cache-Control: max-age and a past Expires",
+ "HTTP cache reuses a response with positive Cache-Control: max-age and an invalid Expires",
+ "HTTP cache stores a response with Cache-Control: no-cache, but revalidates upon use",
+ "HTTP cache stores a response with Cache-Control: no-cache, but revalidates upon use, even with max-age and Expires"
+ ],
+ "heuristic.any.html": [
+ "HTTP cache reuses an unknown response with Last-Modified based upon heuristic freshness when Cache-Control: public is present",
+ "HTTP cache reuses a 200 OK response with Last-Modified based upon heuristic freshness",
+ "HTTP cache reuses a 203 Non-Authoritative Information response with Last-Modified based upon heuristic freshness",
+ "HTTP cache reuses a 204 No Content response with Last-Modified based upon heuristic freshness",
+ "HTTP cache reuses a 404 Not Found response with Last-Modified based upon heuristic freshness",
+ "HTTP cache reuses a 405 Method Not Allowed response with Last-Modified based upon heuristic freshness",
+ "HTTP cache reuses a 410 Gone response with Last-Modified based upon heuristic freshness",
+ "HTTP cache reuses a 414 URI Too Long response with Last-Modified based upon heuristic freshness",
+ "HTTP cache reuses a 501 Not Implemented response with Last-Modified based upon heuristic freshness"
+ ],
+ "heuristic.any.worker.html": [
+ "HTTP cache reuses an unknown response with Last-Modified based upon heuristic freshness when Cache-Control: public is present",
+ "HTTP cache reuses a 200 OK response with Last-Modified based upon heuristic freshness",
+ "HTTP cache reuses a 203 Non-Authoritative Information response with Last-Modified based upon heuristic freshness",
+ "HTTP cache reuses a 204 No Content response with Last-Modified based upon heuristic freshness",
+ "HTTP cache reuses a 404 Not Found response with Last-Modified based upon heuristic freshness",
+ "HTTP cache reuses a 405 Method Not Allowed response with Last-Modified based upon heuristic freshness",
+ "HTTP cache reuses a 410 Gone response with Last-Modified based upon heuristic freshness",
+ "HTTP cache reuses a 414 URI Too Long response with Last-Modified based upon heuristic freshness",
+ "HTTP cache reuses a 501 Not Implemented response with Last-Modified based upon heuristic freshness"
+ ],
+ "invalidate.any.html": [
+ "HTTP cache does not invalidate after a failed response from an unsafe request",
+ "HTTP cache does not invalidate Location URL after a failed response from an unsafe request",
+ "HTTP cache does not invalidate Content-Location URL after a failed response from an unsafe request"
+ ],
+ "invalidate.any.worker.html": [
+ "HTTP cache does not invalidate after a failed response from an unsafe request",
+ "HTTP cache does not invalidate Location URL after a failed response from an unsafe request",
+ "HTTP cache does not invalidate Content-Location URL after a failed response from an unsafe request"
+ ],
+ "partial.any.html": false,
+ "partial.any.worker.html": false,
+ "post-patch.any.html": false,
+ "post-patch.any.worker.html": false,
+ "status.any.html": [
+ "HTTP cache avoids going to the network if it has a fresh 200 response",
+ "HTTP cache avoids going to the network if it has a fresh 203 response",
+ "HTTP cache avoids going to the network if it has a fresh 204 response",
+ "HTTP cache avoids going to the network if it has a fresh 299 response",
+ "HTTP cache avoids going to the network if it has a fresh 400 response",
+ "HTTP cache avoids going to the network if it has a fresh 404 response",
+ "HTTP cache avoids going to the network if it has a fresh 410 response",
+ "HTTP cache avoids going to the network if it has a fresh 499 response",
+ "HTTP cache avoids going to the network if it has a fresh 500 response",
+ "HTTP cache avoids going to the network if it has a fresh 502 response",
+ "HTTP cache avoids going to the network if it has a fresh 503 response",
+ "HTTP cache avoids going to the network if it has a fresh 504 response",
+ "HTTP cache avoids going to the network if it has a fresh 599 response"
+ ],
+ "status.any.worker.html": [
+ "HTTP cache avoids going to the network if it has a fresh 200 response",
+ "HTTP cache avoids going to the network if it has a fresh 203 response",
+ "HTTP cache avoids going to the network if it has a fresh 204 response",
+ "HTTP cache avoids going to the network if it has a fresh 299 response",
+ "HTTP cache avoids going to the network if it has a fresh 400 response",
+ "HTTP cache avoids going to the network if it has a fresh 404 response",
+ "HTTP cache avoids going to the network if it has a fresh 410 response",
+ "HTTP cache avoids going to the network if it has a fresh 499 response",
+ "HTTP cache avoids going to the network if it has a fresh 500 response",
+ "HTTP cache avoids going to the network if it has a fresh 502 response",
+ "HTTP cache avoids going to the network if it has a fresh 503 response",
+ "HTTP cache avoids going to the network if it has a fresh 504 response",
+ "HTTP cache avoids going to the network if it has a fresh 599 response"
+ ],
+ "vary.any.html": [
+ "HTTP cache reuses Vary response when request matches",
+ "HTTP cache doesn't invalidate existing Vary response",
+ "HTTP cache doesn't pay attention to headers not listed in Vary",
+ "HTTP cache reuses two-way Vary response when request matches",
+ "HTTP cache reuses three-way Vary response when request matches",
+ "HTTP cache uses three-way Vary response when both request and the original request omited a variant header"
+ ],
+ "vary.any.worker.html": [
+ "HTTP cache reuses Vary response when request matches",
+ "HTTP cache doesn't invalidate existing Vary response",
+ "HTTP cache doesn't pay attention to headers not listed in Vary",
+ "HTTP cache reuses two-way Vary response when request matches",
+ "HTTP cache reuses three-way Vary response when request matches",
+ "HTTP cache uses three-way Vary response when both request and the original request omited a variant header"
+ ]
+ },
+ "metadata": {
+ "fetch-preflight.https.sub.any.html": [
+ "Same-site fetch with preflight: sec-fetch-dest",
+ "Same-site fetch with preflight: sec-fetch-mode",
+ "Same-site fetch with preflight: sec-fetch-site",
+ "Cross-site fetch with preflight: sec-fetch-dest",
+ "Cross-site fetch with preflight: sec-fetch-mode",
+ "Cross-site fetch with preflight: sec-fetch-site"
+ ],
+ "fetch-preflight.https.sub.any.worker.html": [
+ "Same-site fetch with preflight: sec-fetch-dest",
+ "Same-site fetch with preflight: sec-fetch-mode",
+ "Same-site fetch with preflight: sec-fetch-site",
+ "Cross-site fetch with preflight: sec-fetch-dest",
+ "Cross-site fetch with preflight: sec-fetch-mode",
+ "Cross-site fetch with preflight: sec-fetch-site"
+ ],
+ "fetch.https.sub.any.html": [
+ "Same-origin fetch: sec-fetch-dest",
+ "Same-origin fetch: sec-fetch-mode",
+ "Same-origin fetch: sec-fetch-site",
+ "Same-site fetch: sec-fetch-dest",
+ "Same-site fetch: sec-fetch-mode",
+ "Same-site fetch: sec-fetch-site",
+ "Cross-site fetch: sec-fetch-dest",
+ "Cross-site fetch: sec-fetch-mode",
+ "Cross-site fetch: sec-fetch-site",
+ "Same-origin mode: sec-fetch-dest",
+ "Same-origin mode: sec-fetch-mode",
+ "Same-origin mode: sec-fetch-site",
+ "CORS mode: sec-fetch-dest",
+ "CORS mode: sec-fetch-mode",
+ "CORS mode: sec-fetch-site",
+ "no-CORS mode: sec-fetch-dest",
+ "no-CORS mode: sec-fetch-mode",
+ "no-CORS mode: sec-fetch-site"
+ ],
+ "fetch.https.sub.any.worker.html": [
+ "Same-origin fetch: sec-fetch-dest",
+ "Same-origin fetch: sec-fetch-mode",
+ "Same-origin fetch: sec-fetch-site",
+ "Same-site fetch: sec-fetch-dest",
+ "Same-site fetch: sec-fetch-mode",
+ "Same-site fetch: sec-fetch-site",
+ "Cross-site fetch: sec-fetch-dest",
+ "Cross-site fetch: sec-fetch-mode",
+ "Cross-site fetch: sec-fetch-site",
+ "Same-origin mode: sec-fetch-dest",
+ "Same-origin mode: sec-fetch-mode",
+ "Same-origin mode: sec-fetch-site",
+ "CORS mode: sec-fetch-dest",
+ "CORS mode: sec-fetch-mode",
+ "CORS mode: sec-fetch-site",
+ "no-CORS mode: sec-fetch-dest",
+ "no-CORS mode: sec-fetch-mode",
+ "no-CORS mode: sec-fetch-site"
+ ],
+ "trailing-dot.https.sub.any.html": [
+ "Fetching a resource from the same origin, but spelled with a trailing dot.: sec-fetch-dest",
+ "Fetching a resource from the same origin, but spelled with a trailing dot.: sec-fetch-mode",
+ "Fetching a resource from the same origin, but spelled with a trailing dot.: sec-fetch-site",
+ "Fetching a resource from the same site, but spelled with a trailing dot.: sec-fetch-dest",
+ "Fetching a resource from the same site, but spelled with a trailing dot.: sec-fetch-mode",
+ "Fetching a resource from the same site, but spelled with a trailing dot.: sec-fetch-site",
+ "Fetching a resource from a cross-site host, spelled with a trailing dot.: sec-fetch-dest",
+ "Fetching a resource from a cross-site host, spelled with a trailing dot.: sec-fetch-mode",
+ "Fetching a resource from a cross-site host, spelled with a trailing dot.: sec-fetch-site"
+ ],
+ "trailing-dot.https.sub.any.worker.html": [
+ "Fetching a resource from the same origin, but spelled with a trailing dot.: sec-fetch-dest",
+ "Fetching a resource from the same origin, but spelled with a trailing dot.: sec-fetch-mode",
+ "Fetching a resource from the same origin, but spelled with a trailing dot.: sec-fetch-site",
+ "Fetching a resource from the same site, but spelled with a trailing dot.: sec-fetch-dest",
+ "Fetching a resource from the same site, but spelled with a trailing dot.: sec-fetch-mode",
+ "Fetching a resource from the same site, but spelled with a trailing dot.: sec-fetch-site",
+ "Fetching a resource from a cross-site host, spelled with a trailing dot.: sec-fetch-dest",
+ "Fetching a resource from a cross-site host, spelled with a trailing dot.: sec-fetch-mode",
+ "Fetching a resource from a cross-site host, spelled with a trailing dot.: sec-fetch-site"
+ ]
+ },
+ "nosniff": {
+ "parsing-nosniff.window.html": [
+ "X-Content-Type-Options%3A%20NOSNIFF",
+ "x-content-type-OPTIONS%3A%20nosniff",
+ "X-Content-Type-Options%3A%20nosniff%2C%2C%40%23%24%23%25%25%26%5E%26%5E*()()11!",
+ "X-Content-Type-Options%3A%20%40%23%24%23%25%25%26%5E%26%5E*()()11!%2Cnosniff",
+ "X-Content-Type-Options%3A%20nosniff%0D%0AX-Content-Type-Options%3A%20no",
+ "X-Content-Type-Options%3A%20no%0D%0AX-Content-Type-Options%3A%20nosniff",
+ "X-Content-Type-Options%3A%0D%0AX-Content-Type-Options%3A%20nosniff",
+ "X-Content-Type-Options%3A%20nosniff%0D%0AX-Content-Type-Options%3A%20nosniff",
+ "X-Content-Type-Options%3A%20%2Cnosniff",
+ "X-Content-Type-Options%3A%20nosniff%0C",
+ "X-Content-Type-Options%3A%20nosniff%0B",
+ "X-Content-Type-Options%3A%20nosniff%0B%2Cnosniff",
+ "X-Content-Type-Options%3A%20'NosniFF'",
+ "X-Content-Type-Options%3A%20%22nosniFF%22",
+ "Content-Type-Options%3A%20nosniff"
+ ]
+ },
+ "orb": {
+ "tentative": {
+ "content-range.sub.any.html": [
+ "ORB should block opaque range of image/png not starting at zero, that isn't subsequent: fetch(..., {mode: \"no-cors\"})"
+ ],
+ "content-range.sub.any.worker.html": [
+ "ORB should block opaque range of image/png not starting at zero, that isn't subsequent: fetch(..., {mode: \"no-cors\"})"
+ ],
+ "known-mime-type.sub.any.html": [
+ "ORB should block opaque font/ttf: fetch(..., {mode: \"no-cors\"})",
+ "ORB should block opaque font/ttf: <img src=...>",
+ "ORB should block opaque font/ttf: <audio src=...>",
+ "ORB should block opaque font/ttf: <video src=...>",
+ "ORB should block opaque font/ttf: <script src=...>",
+ "ORB should block opaque text/plain: fetch(..., {mode: \"no-cors\"})",
+ "ORB should block opaque text/plain: <img src=...>",
+ "ORB should block opaque text/plain: <audio src=...>",
+ "ORB should block opaque text/plain: <video src=...>",
+ "ORB should block opaque text/plain: <script src=...>",
+ "ORB should block opaque application/json (non-empty): fetch(..., {mode: \"no-cors\"})",
+ "ORB should block opaque application/json (non-empty): <img src=...>",
+ "ORB should block opaque application/json (non-empty): <audio src=...>",
+ "ORB should block opaque application/json (non-empty): <video src=...>",
+ "ORB should block opaque application/json (non-empty): <script src=...>",
+ "ORB should block opaque application/json (empty): fetch(..., {mode: \"no-cors\"})",
+ "ORB should block opaque application/json (empty): <img src=...>",
+ "ORB should block opaque application/json (empty): <audio src=...>",
+ "ORB should block opaque application/json (empty): <video src=...>",
+ "ORB should block opaque application/json (empty): <script src=...>",
+ "ORB should block opaque application/json which contains non ascii characters: fetch(..., {mode: \"no-cors\"})",
+ "ORB should block opaque application/json which contains non ascii characters: <img src=...>",
+ "ORB should block opaque application/json which contains non ascii characters: <audio src=...>",
+ "ORB should block opaque application/json which contains non ascii characters: <video src=...>",
+ "ORB should block opaque application/json which contains non ascii characters: <script src=...>",
+ "ORB shouldn't block opaque image/png: <img src=...>",
+ "ORB shouldn't block opaque text/javascript: <script src=...>",
+ "ORB shouldn't block opaque text/javascript (utf16 encoded with BOM): <script src=...>",
+ "ORB shouldn't block opaque text/javascript (utf16 encoded without BOM but charset is provided in content-type): <script src=...>",
+ "ORB shouldn't block opaque text/javascript (iso-8559-1 encoded): <script src=...>",
+ "ORB shouldn't block text/javascript with valid asm.js: <script src=...>",
+ "ORB shouldn't block text/javascript with invalid asm.js: <script src=...>"
+ ],
+ "known-mime-type.sub.any.worker.html": [
+ "ORB should block opaque font/ttf: fetch(..., {mode: \"no-cors\"})",
+ "ORB should block opaque text/plain: fetch(..., {mode: \"no-cors\"})",
+ "ORB should block opaque application/json (non-empty): fetch(..., {mode: \"no-cors\"})",
+ "ORB should block opaque application/json (empty): fetch(..., {mode: \"no-cors\"})",
+ "ORB should block opaque application/json which contains non ascii characters: fetch(..., {mode: \"no-cors\"})"
+ ],
+ "nosniff.sub.any.html": [
+ "ORB should block opaque text/plain with nosniff: fetch(..., {mode: \"no-cors\"})",
+ "ORB should block opaque text/plain with nosniff: <img src=...>",
+ "ORB should block opaque text/plain with nosniff: <audio src=...>",
+ "ORB should block opaque text/plain with nosniff: <video src=...>",
+ "ORB should block opaque text/plain with nosniff: <script src=...>",
+ "ORB should block opaque-response-blocklisted MIME type with nosniff: fetch(..., {mode: \"no-cors\"})",
+ "ORB should block opaque-response-blocklisted MIME type with nosniff: <img src=...>",
+ "ORB should block opaque-response-blocklisted MIME type with nosniff: <audio src=...>",
+ "ORB should block opaque-response-blocklisted MIME type with nosniff: <video src=...>",
+ "ORB should block opaque-response-blocklisted MIME type with nosniff: <script src=...>",
+ "ORB should block opaque response with empty Content-Type and nosniff: fetch(..., {mode: \"no-cors\"})",
+ "ORB should block opaque response with empty Content-Type and nosniff: <img src=...>",
+ "ORB should block opaque response with empty Content-Type and nosniff: <audio src=...>",
+ "ORB should block opaque response with empty Content-Type and nosniff: <video src=...>",
+ "ORB should block opaque response with empty Content-Type and nosniff: <script src=...>",
+ "ORB shouldn't block opaque image with empty Content-Type and nosniff: <img src=...>"
+ ],
+ "nosniff.sub.any.worker.html": [
+ "ORB should block opaque text/plain with nosniff: fetch(..., {mode: \"no-cors\"})",
+ "ORB should block opaque-response-blocklisted MIME type with nosniff: fetch(..., {mode: \"no-cors\"})",
+ "ORB should block opaque response with empty Content-Type and nosniff: fetch(..., {mode: \"no-cors\"})"
+ ],
+ "status.sub.any.html": false,
+ "status.sub.any.worker.html": false,
+ "unknown-mime-type.sub.any.html": [
+ "ORB shouldn't block opaque failed missing MIME type (image/png): <img src=...>",
+ "ORB shouldn't block opaque failed missing MIME type (text/javascript): <script src=...>"
+ ],
+ "unknown-mime-type.sub.any.worker.html": true
+ }
+ },
+ "origin": {
+ "assorted.window.html": [
+ "Origin header and 308 redirect",
+ "Origin header and GET navigation",
+ "Origin header and POST navigation",
+ "Origin header and POST same-origin navigation with Referrer-Policy no-referrer",
+ "Origin header and POST same-origin fetch no-cors mode with Referrer-Policy no-referrer",
+ "Origin header and POST same-origin fetch cors mode with Referrer-Policy no-referrer",
+ "Origin header and POST cross-origin navigation with Referrer-Policy no-referrer",
+ "Origin header and POST cross-origin fetch no-cors mode with Referrer-Policy no-referrer",
+ "Origin header and POST cross-origin fetch cors mode with Referrer-Policy no-referrer",
+ "Origin header and GET cross-origin fetch cors mode with Referrer-Policy no-referrer",
+ "Origin header and POST same-origin navigation with Referrer-Policy same-origin",
+ "Origin header and POST same-origin fetch no-cors mode with Referrer-Policy same-origin",
+ "Origin header and POST same-origin fetch cors mode with Referrer-Policy same-origin",
+ "Origin header and POST cross-origin navigation with Referrer-Policy same-origin",
+ "Origin header and POST cross-origin fetch no-cors mode with Referrer-Policy same-origin",
+ "Origin header and POST cross-origin fetch cors mode with Referrer-Policy same-origin",
+ "Origin header and GET cross-origin fetch cors mode with Referrer-Policy same-origin",
+ "Origin header and POST same-origin navigation with Referrer-Policy origin-when-cross-origin",
+ "Origin header and POST same-origin fetch no-cors mode with Referrer-Policy origin-when-cross-origin",
+ "Origin header and POST same-origin fetch cors mode with Referrer-Policy origin-when-cross-origin",
+ "Origin header and POST cross-origin navigation with Referrer-Policy origin-when-cross-origin",
+ "Origin header and POST cross-origin fetch no-cors mode with Referrer-Policy origin-when-cross-origin",
+ "Origin header and POST cross-origin fetch cors mode with Referrer-Policy origin-when-cross-origin",
+ "Origin header and GET cross-origin fetch cors mode with Referrer-Policy origin-when-cross-origin",
+ "Origin header and POST same-origin navigation with Referrer-Policy no-referrer-when-downgrade",
+ "Origin header and POST same-origin fetch no-cors mode with Referrer-Policy no-referrer-when-downgrade",
+ "Origin header and POST same-origin fetch cors mode with Referrer-Policy no-referrer-when-downgrade",
+ "Origin header and POST cross-origin navigation with Referrer-Policy no-referrer-when-downgrade",
+ "Origin header and POST cross-origin fetch no-cors mode with Referrer-Policy no-referrer-when-downgrade",
+ "Origin header and POST cross-origin fetch cors mode with Referrer-Policy no-referrer-when-downgrade",
+ "Origin header and GET cross-origin fetch cors mode with Referrer-Policy no-referrer-when-downgrade",
+ "Origin header and POST same-origin navigation with Referrer-Policy unsafe-url",
+ "Origin header and POST same-origin fetch no-cors mode with Referrer-Policy unsafe-url",
+ "Origin header and POST same-origin fetch cors mode with Referrer-Policy unsafe-url",
+ "Origin header and POST cross-origin navigation with Referrer-Policy unsafe-url",
+ "Origin header and POST cross-origin fetch no-cors mode with Referrer-Policy unsafe-url",
+ "Origin header and POST cross-origin fetch cors mode with Referrer-Policy unsafe-url",
+ "Origin header and GET cross-origin fetch cors mode with Referrer-Policy unsafe-url"
+ ]
+ },
+ "redirects": {
+ "data.window.html": false
+ },
+ "security": {
+ "1xx-response.any.html": true,
+ "1xx-response.any.worker.html": true
+ },
+ "stale-while-revalidate": {
+ "fetch.any.html": false,
+ "fetch.any.worker.html": false
+ }
+ },
+ "FileAPI": {
+ "blob": {
+ "Blob-array-buffer.any.html": true,
+ "Blob-array-buffer.any.worker.html": true,
+ "Blob-constructor.any.html": true,
+ "Blob-constructor.any.worker.html": true,
+ "Blob-slice-overflow.any.html": true,
+ "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-text.any.html": true,
+ "Blob-text.any.worker.html": true,
+ "Blob-in-worker.worker.html": true,
+ "Blob-constructor-dom.window.html": false
+ },
+ "file": {
+ "File-constructor.any.html": true,
+ "File-constructor.any.worker.html": true,
+ "send-file-formdata-controls.any.html": true,
+ "send-file-formdata-controls.any.worker.html": true,
+ "send-file-formdata-punctuation.any.html": true,
+ "send-file-formdata-punctuation.any.worker.html": true,
+ "send-file-formdata-utf-8.any.html": true,
+ "send-file-formdata-utf-8.any.worker.html": true,
+ "send-file-formdata.any.html": true,
+ "send-file-formdata.any.worker.html": true,
+ "Worker-read-file-constructor.worker.html": true
+ },
+ "fileReader.any.html": true,
+ "fileReader.any.worker.html": true,
+ "url": {
+ "url-format.any.html": true,
+ "url-format.any.worker.html": true,
+ "url-with-fetch.any.html": true,
+ "url-with-fetch.any.worker.html": true,
+ "url-charset.window.html": false,
+ "url-in-tags-revoke.window.html": false,
+ "url-in-tags.window.html": false,
+ "url-reload.window.html": false,
+ "url-with-xhr.any.html": false,
+ "url-with-xhr.any.worker.html": false
+ },
+ "reading-data-section": {
+ "Determining-Encoding.any.html": true,
+ "Determining-Encoding.any.worker.html": true,
+ "FileReader-event-handler-attributes.any.html": true,
+ "FileReader-event-handler-attributes.any.worker.html": true,
+ "FileReader-multiple-reads.any.html": true,
+ "FileReader-multiple-reads.any.worker.html": true,
+ "filereader_abort.any.html": true,
+ "filereader_abort.any.worker.html": true,
+ "filereader_error.any.html": true,
+ "filereader_error.any.worker.html": true,
+ "filereader_events.any.html": false,
+ "filereader_events.any.worker.html": false,
+ "filereader_readAsArrayBuffer.any.html": true,
+ "filereader_readAsArrayBuffer.any.worker.html": true,
+ "filereader_readAsBinaryString.any.html": true,
+ "filereader_readAsBinaryString.any.worker.html": true,
+ "filereader_readAsDataURL.any.html": true,
+ "filereader_readAsDataURL.any.worker.html": true,
+ "filereader_readAsText.any.html": true,
+ "filereader_readAsText.any.worker.html": true,
+ "filereader_readystate.any.html": true,
+ "filereader_readystate.any.worker.html": true,
+ "filereader_result.any.html": true,
+ "filereader_result.any.worker.html": true
+ },
+ "idlharness.any.html": [
+ "FileList interface: existence and properties of interface object",
+ "FileList interface object length",
+ "FileList interface object name",
+ "FileList interface: existence and properties of interface prototype object",
+ "FileList interface: existence and properties of interface prototype object's \"constructor\" property",
+ "FileList interface: existence and properties of interface prototype object's @@unscopables property",
+ "FileList interface: operation item(unsigned long)",
+ "FileList interface: attribute length"
+ ],
+ "idlharness.any.worker.html": [
+ "FileList interface: existence and properties of interface object",
+ "FileList interface object length",
+ "FileList interface object name",
+ "FileList interface: existence and properties of interface prototype object",
+ "FileList interface: existence and properties of interface prototype object's \"constructor\" property",
+ "FileList interface: existence and properties of interface prototype object's @@unscopables property",
+ "FileList interface: operation item(unsigned long)",
+ "FileList interface: attribute length",
+ "FileReaderSync interface: existence and properties of interface object",
+ "FileReaderSync interface object length",
+ "FileReaderSync interface object name",
+ "FileReaderSync interface: existence and properties of interface prototype object",
+ "FileReaderSync interface: existence and properties of interface prototype object's \"constructor\" property",
+ "FileReaderSync interface: existence and properties of interface prototype object's @@unscopables property",
+ "FileReaderSync interface: operation readAsArrayBuffer(Blob)",
+ "FileReaderSync interface: operation readAsBinaryString(Blob)",
+ "FileReaderSync interface: operation readAsText(Blob, optional DOMString)",
+ "FileReaderSync interface: operation readAsDataURL(Blob)"
+ ],
+ "FileReaderSync.worker.html": false,
+ "idlharness.worker.html": [
+ "FileList interface: existence and properties of interface object",
+ "FileList interface object length",
+ "FileList interface object name",
+ "FileList interface: existence and properties of interface prototype object",
+ "FileList interface: existence and properties of interface prototype object's \"constructor\" property",
+ "FileList interface: existence and properties of interface prototype object's @@unscopables property",
+ "FileList interface: operation item(unsigned long)",
+ "FileList interface: attribute length",
+ "FileReaderSync interface: existence and properties of interface object",
+ "FileReaderSync interface object length",
+ "FileReaderSync interface object name",
+ "FileReaderSync interface: existence and properties of interface prototype object",
+ "FileReaderSync interface: existence and properties of interface prototype object's \"constructor\" property",
+ "FileReaderSync interface: existence and properties of interface prototype object's @@unscopables property",
+ "FileReaderSync interface: operation readAsArrayBuffer(Blob)",
+ "FileReaderSync interface: operation readAsBinaryString(Blob)",
+ "FileReaderSync interface: operation readAsText(Blob, optional DOMString)",
+ "FileReaderSync interface: operation readAsDataURL(Blob)",
+ "FileReaderSync must be primary interface of new FileReaderSync()",
+ "Stringification of new FileReaderSync()",
+ "FileReaderSync interface: new FileReaderSync() must inherit property \"readAsArrayBuffer(Blob)\" with the proper type",
+ "FileReaderSync interface: calling readAsArrayBuffer(Blob) on new FileReaderSync() with too few arguments must throw TypeError",
+ "FileReaderSync interface: new FileReaderSync() must inherit property \"readAsBinaryString(Blob)\" with the proper type",
+ "FileReaderSync interface: calling readAsBinaryString(Blob) on new FileReaderSync() with too few arguments must throw TypeError",
+ "FileReaderSync interface: new FileReaderSync() must inherit property \"readAsText(Blob, optional DOMString)\" with the proper type",
+ "FileReaderSync interface: calling readAsText(Blob, optional DOMString) on new FileReaderSync() with too few arguments must throw TypeError",
+ "FileReaderSync interface: new FileReaderSync() must inherit property \"readAsDataURL(Blob)\" with the proper type",
+ "FileReaderSync interface: calling readAsDataURL(Blob) on new FileReaderSync() with too few arguments must throw TypeError"
+ ]
+ },
+ "html": {
+ "semantics": {
+ "scripting-1": {
+ "the-script-element": {
+ "import-assertions": {
+ "dynamic-import-with-assertion-argument.any.html": true,
+ "dynamic-import-with-assertion-argument.any.worker.html": true
+ },
+ "json-module": {
+ "charset-bom.any.html": [
+ "UTF-16BE BOM should result in parse error in JSON module script",
+ "UTF-16LE BOM should result in parse error in JSON module script"
+ ],
+ "charset-bom.any.worker.html": [
+ "UTF-16BE BOM should result in parse error in JSON module script",
+ "UTF-16LE BOM should result in parse error in JSON module script"
+ ],
+ "invalid-content-type.any.html": true,
+ "invalid-content-type.any.worker.html": true,
+ "non-object.any.html": true,
+ "non-object.any.worker.html": true,
+ "repeated-imports.any.html": [
+ "Two modules of different type with the same specifier can load if the server changes its responses"
+ ],
+ "repeated-imports.any.worker.html": [
+ "Two modules of different type with the same specifier can load if the server changes its responses"
+ ]
+ },
+ "microtasks": {
+ "checkpoint-importScripts.any.worker.html": true,
+ "evaluation-order-1-nothrow-importScripts.any.worker.html": true,
+ "evaluation-order-1-nothrow-static-import.any.worker-module.html": true,
+ "evaluation-order-1-throw-importScripts.any.worker.html": false,
+ "evaluation-order-1-throw-static-import.any.worker-module.html": false,
+ "evaluation-order-2.any.worker-module.html": false,
+ "evaluation-order-3.any.worker-module.html": true
+ },
+ "module": {
+ "dynamic-import": {
+ "blob-url.any.html": [
+ "Revoking a blob URL immediately after calling import will not fail"
+ ],
+ "blob-url.any.worker.html": [
+ "Revoking a blob URL immediately after calling import will not fail"
+ ],
+ "blob-url.any.worker-module.html": [
+ "Revoking a blob URL immediately after calling import will not fail"
+ ],
+ "blob-url-workers.window.html": [
+ "A revoked blob URL will not resolve in a worker even if it's in the window's module graph"
+ ],
+ "microtasks": {
+ "basic.any.html": [
+ "import() should not drain the microtask queue if it fails during specifier resolution",
+ "import() should not drain the microtask queue when loading an already loaded module"
+ ],
+ "basic.any.worker.html": [
+ "import() should not drain the microtask queue if it fails during specifier resolution",
+ "import() should not drain the microtask queue when loading an already loaded module"
+ ],
+ "css-import-in-worker.any.worker.html": true,
+ "with-import-assertions.any.html": true,
+ "with-import-assertions.any.worker.html": true
+ }
+ },
+ "import-meta": {
+ "import-meta-url.any.worker-module.html": true,
+ "import-meta-object.any.worker-module.html": true,
+ "import-meta-resolve.any.worker-module.html": [
+ "import.meta.resolve is a function with the right properties",
+ "import.meta.resolve is not a constructor"
+ ]
+ }
+ }
+ }
+ },
+ "document-metadata": {
+ "the-style-element": {
+ "mutations.window.html": false
+ }
+ },
+ "embedded-content": {
+ "the-canvas-element": {
+ "imagedata.html": [
+ "ImageData(buffer, w, opt h), Uint8ClampedArray argument type check"
+ ]
+ },
+ "the-iframe-element": {
+ "cross-origin-to-whom-part-2.window.html": false,
+ "cross-origin-to-whom.window.html": false,
+ "sandbox-top-navigation-child-special-cases.tentative.sub.window.html": false,
+ "sandbox-top-navigation-child.tentative.sub.window.html": false,
+ "sandbox-top-navigation-escalate-privileges.tentative.sub.window.html": false,
+ "sandbox-top-navigation-grandchild.tentative.sub.window.html": false
+ },
+ "the-img-element": {
+ "historical-progress-event.window.html": false
+ }
+ },
+ "forms": {
+ "form-control-infrastructure": {
+ "association.window.html": false
+ },
+ "form-submission-0": {
+ "FormDataEvent.window.html": false,
+ "SubmitEvent.window.html": false,
+ "form-data-set-empty-file.window.html": false,
+ "historical.window.html": false,
+ "multipart-formdata.window.html": false,
+ "submission-checks.window.html": false,
+ "text-plain.window.html": false,
+ "urlencoded2.window.html": false
+ },
+ "the-output-element": {
+ "mutations.window.html": false
+ },
+ "the-progress-element": {
+ "progress.window.html": false
+ },
+ "the-textarea-element": {
+ "wrapping-transformation.window.html": false
+ }
+ },
+ "links": {
+ "following-hyperlinks": {
+ "activation-behavior.window.html": false,
+ "active-document.window.html": false
+ }
+ }
+ },
+ "webappapis": {
+ "atob": {
+ "base64.any.html": true,
+ "base64.any.worker.html": true
+ },
+ "timers": {
+ "clearinterval-from-callback.any.html": true,
+ "clearinterval-from-callback.any.worker.html": true,
+ "cleartimeout-clearinterval.any.html": true,
+ "cleartimeout-clearinterval.any.worker.html": true,
+ "evil-spec-example.any.html": true,
+ "evil-spec-example.any.worker.html": true,
+ "missing-timeout-setinterval.any.html": true,
+ "missing-timeout-setinterval.any.worker.html": true,
+ "negative-setinterval.any.html": true,
+ "negative-setinterval.any.worker.html": true,
+ "negative-settimeout.any.html": true,
+ "negative-settimeout.any.worker.html": true,
+ "type-long-setinterval.any.html": true,
+ "type-long-setinterval.any.worker.html": true,
+ "type-long-settimeout.any.html": true,
+ "type-long-settimeout.any.worker.html": true
+ },
+ "microtask-queuing": {
+ "queue-microtask-exceptions.any.html": true,
+ "queue-microtask.any.html": true,
+ "queue-microtask.any.worker.html": true,
+ "queue-microtask-exceptions.any.worker.html": true,
+ "queue-microtask.window.html": false
+ },
+ "scripting": {
+ "reporterror.any.html": false,
+ "reporterror.any.worker.html": false,
+ "event-loops": {
+ "fully_active_document.window.html": false
+ },
+ "events": {
+ "event-handler-processing-algorithm-error": {
+ "synthetic-errorevent-click.worker.html": true,
+ "workerglobalscope-runtime-error.worker.html": true,
+ "workerglobalscope-synthetic-errorevent.worker.html": true,
+ "workerglobalscope-synthetic-event.worker.html": true
+ },
+ "event-handler-removal.window.html": false,
+ "event-handler-spec-example.window.html": false,
+ "invalid-uncompiled-raw-handler-compiled-late.window.html": false,
+ "invalid-uncompiled-raw-handler-compiled-once.window.html": false,
+ "invalid-uncompiled-raw-handler-keeps-position.window.html": false
+ },
+ "processing-model-2": {
+ "integration-with-the-javascript-agent-formalism": {
+ "requires-failure.https.any.html": false,
+ "requires-success.any.worker.html": true
+ }
+ }
+ },
+ "structured-clone": {
+ "structured-clone.any.html": [
+ "Blob basic",
+ "Blob unpaired high surrogate (invalid utf-8)",
+ "Blob unpaired low surrogate (invalid utf-8)",
+ "Blob paired surrogates (invalid utf-8)",
+ "Blob empty",
+ "Blob NUL",
+ "Array Blob object, Blob basic",
+ "Array Blob object, Blob unpaired high surrogate (invalid utf-8)",
+ "Array Blob object, Blob unpaired low surrogate (invalid utf-8)",
+ "Array Blob object, Blob paired surrogates (invalid utf-8)",
+ "Array Blob object, Blob empty",
+ "Array Blob object, Blob NUL",
+ "Array Blob object, two Blobs",
+ "Object Blob object, Blob basic",
+ "Object Blob object, Blob unpaired high surrogate (invalid utf-8)",
+ "Object Blob object, Blob unpaired low surrogate (invalid utf-8)",
+ "Object Blob object, Blob paired surrogates (invalid utf-8)",
+ "Object Blob object, Blob empty",
+ "Object Blob object, Blob NUL",
+ "File basic",
+ "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",
+ "Growable SharedArrayBuffer",
+ "A subclass instance will be received as its closest transferable superclass",
+ "Transferring OOB TypedArray throws"
+ ],
+ "structured-clone.any.worker.html": [
+ "Blob basic",
+ "Blob unpaired high surrogate (invalid utf-8)",
+ "Blob unpaired low surrogate (invalid utf-8)",
+ "Blob paired surrogates (invalid utf-8)",
+ "Blob empty",
+ "Blob NUL",
+ "Array Blob object, Blob basic",
+ "Array Blob object, Blob unpaired high surrogate (invalid utf-8)",
+ "Array Blob object, Blob unpaired low surrogate (invalid utf-8)",
+ "Array Blob object, Blob paired surrogates (invalid utf-8)",
+ "Array Blob object, Blob empty",
+ "Array Blob object, Blob NUL",
+ "Array Blob object, two Blobs",
+ "Object Blob object, Blob basic",
+ "Object Blob object, Blob unpaired high surrogate (invalid utf-8)",
+ "Object Blob object, Blob unpaired low surrogate (invalid utf-8)",
+ "Object Blob object, Blob paired surrogates (invalid utf-8)",
+ "Object Blob object, Blob empty",
+ "Object Blob object, Blob NUL",
+ "File basic",
+ "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",
+ "Growable SharedArrayBuffer",
+ "A subclass instance will be received as its closest transferable superclass",
+ "Transferring OOB TypedArray throws"
+ ]
+ },
+ "dynamic-markup-insertion": {
+ "closing-the-input-stream": {
+ "load-event-after-location-set-during-write.window.html": false
+ },
+ "document-write": {
+ "contentType.window.html": false,
+ "during-readystatechange.window.html": false
+ },
+ "opening-the-input-stream": {
+ "abort-refresh-immediate.window.html": false,
+ "abort-refresh-multisecond-header.window.html": false,
+ "abort-refresh-multisecond-meta.window.html": false,
+ "abort-while-navigating.window.html": false,
+ "abort.sub.window.html": false,
+ "aborted-parser.window.html": false,
+ "active.window.html": false,
+ "bailout-exception-vs-return-origin.sub.window.html": false,
+ "bailout-exception-vs-return-xml.window.html": false,
+ "bailout-side-effects-ignore-opens-during-unload.window.html": false,
+ "bailout-side-effects-same-origin-domain.sub.window.html": false,
+ "bailout-side-effects-synchronous-script.window.html": false,
+ "bailout-side-effects-xml.window.html": false,
+ "beforeunload.window.html": false,
+ "crbug-583445-regression.window.html": false,
+ "custom-element.window.html": false,
+ "encoding.window.html": false,
+ "event-listeners.window.html": false,
+ "history-state.window.html": false,
+ "history.window.html": false,
+ "ignore-opens-during-unload.window.html": false,
+ "mutation-events.window.html": false,
+ "mutation-observer.window.html": false,
+ "no-new-global.window.html": false,
+ "quirks.window.html": false,
+ "readiness.window.html": false,
+ "reload.window.html": false,
+ "remove-initial-about-blankness.window.html": false,
+ "tasks.window.html": false,
+ "type-argument-plaintext.window.html": false,
+ "type-argument.window.html": false,
+ "unload.window.html": false,
+ "url-entry-document-sync-call.window.html": false,
+ "url-entry-document.window.html": false,
+ "url-fragment.window.html": false,
+ "url.window.html": false
+ }
+ },
+ "system-state-and-capabilities": {
+ "the-navigator-object": {
+ "clientinformation.window.html": [
+ "window.clientInformation exists and equals window.navigator"
+ ],
+ "historical.https.window.html": [
+ "registerProtocolHandler has no third argument"
+ ],
+ "navigator.any.html": [
+ "appCodeName",
+ "appName",
+ "appVersion",
+ "platform",
+ "product",
+ "productSub",
+ "userAgent value",
+ "vendor",
+ "vendorSub",
+ "taintEnabled",
+ "oscpu"
+ ],
+ "navigator.any.worker.html": [
+ "appCodeName",
+ "appName",
+ "appVersion",
+ "platform",
+ "product",
+ "userAgent value"
+ ],
+ "per-global.window.html": false
+ }
+ }
+ },
+ "cross-origin-embedder-policy": {
+ "credentialless": {
+ "cache-storage.https.window.html?dedicated_worker": false,
+ "cache-storage.https.window.html?document": false,
+ "cache-storage.https.window.html?service_worker": false,
+ "cache-storage.https.window.html?shared_worker": false,
+ "cache.window.html": false,
+ "cross-origin-isolated.window.html": false,
+ "dedicated-worker.https.window.html": false,
+ "fetch.https.window.html": false,
+ "iframe-coep-credentialless.https.window.html?1-4": false,
+ "iframe-coep-credentialless.https.window.html?5-9": false,
+ "iframe-coep-credentialless.https.window.html?9-last": false,
+ "iframe-coep-none.https.window.html?1-4": false,
+ "iframe-coep-none.https.window.html?5-last": false,
+ "iframe-coep-require-corp.https.window.html?1-4": false,
+ "iframe-coep-require-corp.https.window.html?5-9": false,
+ "iframe-coep-require-corp.https.window.html?9-last": false,
+ "iframe.window.html": false,
+ "image.https.window.html": false,
+ "link.https.window.html": false,
+ "redirect.window.html": false,
+ "reporting-navigation.https.window.html": false,
+ "reporting-subresource-corp.https.window.html": false,
+ "script.https.window.html": false,
+ "service-worker-coep-credentialless-proxy.https.window.html": false,
+ "service-worker-coep-none-proxy.https.window.html": false,
+ "service-worker.https.window.html": false,
+ "video.https.window.html": false
+ },
+ "cross-origin-isolated-permission-iframe.https.window.html": false,
+ "cross-origin-isolated-permission-worker.https.window.html": false,
+ "reflection-credentialless.tentative.https.any.html": false,
+ "reflection-credentialless.tentative.https.any.worker.html": false,
+ "reflection-require-corp.tentative.https.any.html": false,
+ "reflection-require-corp.tentative.https.any.worker.html": false,
+ "reflection-unsafe-none.tentative.https.any.html": false,
+ "reflection-unsafe-none.tentative.https.any.worker.html": false,
+ "reporting-to-document-reporting-endpoint.https.window.html": false
+ },
+ "dom": {
+ "elements": {
+ "global-attributes": {
+ "dataset-binding.window.html": false
+ },
+ "the-innertext-and-outertext-properties": {
+ "multiple-text-nodes.window.html": false
+ }
+ },
+ "idlharness-shadowrealm.window.html": false,
+ "idlharness.worker.html": false,
+ "self-origin.any.html": false,
+ "self-origin.any.worker.html": false
+ },
+ "infrastructure": {
+ "safe-passing-of-structured-data": {
+ "messagechannel.any.html": false,
+ "messagechannel.any.worker.html": false,
+ "shared-array-buffers": {
+ "no-coop-coep.https.any.html": false,
+ "no-coop-coep.https.any.worker.html": false,
+ "serialization-via-idb.any.html": false,
+ "serialization-via-idb.any.worker.html": false,
+ "serialization-via-notifications-api.any.html": false,
+ "serialization-via-notifications-api.any.worker.html": false
+ },
+ "structured-cloning-error-stack-optional.sub.window.html": [
+ "page-created Error (cross-site iframe)",
+ "page-created Error (same-origin iframe)",
+ "page-created DOMException (structuredClone())",
+ "page-created DOMException (cross-site iframe)",
+ "page-created DOMException (same-origin iframe)",
+ "JS-engine-created TypeError (cross-site iframe)",
+ "JS-engine-created TypeError (same-origin iframe)",
+ "web API-created TypeError (cross-site iframe)",
+ "web API-created TypeError (same-origin iframe)",
+ "web API-created DOMException (cross-site iframe)",
+ "web API-created DOMException (same-origin iframe)",
+ "page-created DOMException (worker)"
+ ],
+ "transfer-errors.window.html": false,
+ "window-postmessage.window.html": false
+ },
+ "urls": {
+ "terminology-0": {
+ "document-base-url-about-srcdoc.https.window.html": false,
+ "document-base-url-changes-about-srcdoc.https.window.html": false
+ }
+ }
+ },
+ "interaction": {
+ "focus": {
+ "composed.window.html": false
+ }
+ }
+ },
+ "webstorage": {
+ "defineProperty.window.html": true,
+ "set.window.html": true,
+ "storage_enumerate.window.html": true,
+ "storage_in.window.html": true,
+ "event_constructor.window.html": false,
+ "event_initstorageevent.window.html": false,
+ "missing_arguments.window.html": true,
+ "storage_builtins.window.html": true,
+ "storage_clear.window.html": true,
+ "storage_functions_not_overwritten.window.html": true,
+ "storage_getitem.window.html": true,
+ "storage_indexing.window.html": true,
+ "storage_key.window.html": true,
+ "storage_key_empty_string.window.html": true,
+ "storage_length.window.html": true,
+ "storage_local_setitem_quotaexceedederr.window.html": true,
+ "storage_removeitem.window.html": true,
+ "storage_session_setitem_quotaexceedederr.window.html": true,
+ "storage_set_value_enumerate.window.html": true,
+ "storage_setitem.window.html": [
+ "localStorage[] = \"\ud800\"",
+ "localStorage[] = \"\udbff\"",
+ "localStorage[] = \"\udc00\"",
+ "localStorage[] = \"\udfff\"",
+ "localStorage[] = \"\ud83ca\"",
+ "localStorage[] = \"a\udf4d\"",
+ "sessionStorage[] = \"\ud800\"",
+ "sessionStorage[] = \"\udbff\"",
+ "sessionStorage[] = \"\udc00\"",
+ "sessionStorage[] = \"\udfff\"",
+ "sessionStorage[] = \"\ud83ca\"",
+ "sessionStorage[] = \"a\udf4d\""
+ ],
+ "storage_string_conversion.window.html": true,
+ "storage_supported_property_names.window.html": true,
+ "symbol-props.window.html": [
+ "localStorage: defineProperty not configurable",
+ "sessionStorage: defineProperty not configurable"
+ ],
+ "localstorage-cross-origin-iframe.tentative.https.window.html": false,
+ "storage_local_window_open.window.html": false,
+ "storage_session_window_noopener.window.html": false,
+ "storage_session_window_open.window.html": false,
+ "storage_session_window_reopen.window.html": false
+ },
+ "webmessaging": {
+ "broadcastchannel": {
+ "basics.any.html": [
+ "postMessage results in correct event"
+ ],
+ "basics.any.worker.html": [
+ "postMessage results in correct event"
+ ],
+ "interface.any.html": true,
+ "interface.any.worker.html": true,
+ "origin.window.html": false
+ },
+ "message-channels": {
+ "basics.any.html": true,
+ "basics.any.worker.html": true,
+ "close.any.html": true,
+ "close.any.worker.html": true,
+ "dictionary-transferrable.any.html": true,
+ "dictionary-transferrable.any.worker.html": true,
+ "implied-start.any.html": true,
+ "implied-start.any.worker.html": true,
+ "no-start.any.html": true,
+ "no-start.any.worker.html": true,
+ "user-activation.tentative.any.html": false,
+ "user-activation.tentative.any.worker.html": false,
+ "worker-post-after-close.any.html": false,
+ "worker.any.html": false,
+ "detached-iframe.window.html": false,
+ "worker-post-after-close.any.worker.html": false,
+ "worker.any.worker.html": false
+ },
+ "Channel_postMessage_Blob.any.html": false,
+ "Channel_postMessage_Blob.any.worker.html": false,
+ "Channel_postMessage_DataCloneErr.any.html": true,
+ "Channel_postMessage_DataCloneErr.any.worker.html": true,
+ "Channel_postMessage_clone_port.any.html": true,
+ "Channel_postMessage_clone_port.any.worker.html": true,
+ "Channel_postMessage_clone_port_error.any.html": true,
+ "Channel_postMessage_clone_port_error.any.worker.html": true,
+ "Channel_postMessage_event_properties.any.html": true,
+ "Channel_postMessage_event_properties.any.worker.html": true,
+ "Channel_postMessage_ports_readonly_array.any.html": false,
+ "Channel_postMessage_ports_readonly_array.any.worker.html": false,
+ "Channel_postMessage_target_source.any.html": true,
+ "Channel_postMessage_target_source.any.worker.html": true,
+ "Channel_postMessage_transfer_xsite_incoming_messages.window.html": false,
+ "Channel_postMessage_with_transfer_entangled.any.html": true,
+ "Channel_postMessage_with_transfer_entangled.any.worker.html": true,
+ "Channel_postMessage_with_transfer_incoming_messages.any.html": true,
+ "Channel_postMessage_with_transfer_incoming_messages.any.worker.html": true,
+ "Channel_postMessage_with_transfer_outgoing_messages.any.html": true,
+ "Channel_postMessage_with_transfer_outgoing_messages.any.worker.html": true,
+ "MessageEvent-trusted.any.html": true,
+ "MessageEvent-trusted.any.worker.html": true,
+ "MessageEvent-trusted.window.html": false,
+ "MessageEvent.any.html": true,
+ "MessageEvent.any.worker.html": true,
+ "MessagePort_initial_disabled.any.html": true,
+ "MessagePort_initial_disabled.any.worker.html": true,
+ "MessagePort_onmessage_start.any.html": true,
+ "MessagePort_onmessage_start.any.worker.html": true,
+ "postMessage_MessagePorts_xsite.sub.window.html": false
+ },
+ "xhr": {
+ "formdata": {
+ "append.any.html": true,
+ "append.any.worker.html": true,
+ "constructor.any.html": true,
+ "constructor.any.worker.html": true,
+ "delete.any.html": true,
+ "delete.any.worker.html": true,
+ "foreach.any.html": true,
+ "foreach.any.worker.html": true,
+ "get.any.html": true,
+ "get.any.worker.html": true,
+ "has.any.html": true,
+ "has.any.worker.html": true,
+ "set-blob.any.html": true,
+ "set-blob.any.worker.html": true,
+ "set.any.html": true,
+ "set.any.worker.html": true,
+ "iteration.any.html": true,
+ "iteration.any.worker.html": true
+ },
+ "XMLHttpRequest-withCredentials.any.html": false,
+ "XMLHttpRequest-withCredentials.any.worker.html": false,
+ "abort-after-receive.any.html": false,
+ "abort-after-receive.any.worker.html": false,
+ "abort-after-send.any.html": false,
+ "abort-after-send.any.worker.html": false,
+ "abort-after-stop.window.html": false,
+ "abort-after-timeout.any.html": false,
+ "abort-after-timeout.any.worker.html": false,
+ "abort-during-done.window.html": false,
+ "abort-during-headers-received.window.html": false,
+ "abort-during-loading.window.html": false,
+ "abort-during-open.any.html": false,
+ "abort-during-open.any.worker.html": false,
+ "abort-during-readystatechange.any.html": false,
+ "abort-during-readystatechange.any.worker.html": false,
+ "abort-during-unsent.any.html": false,
+ "abort-during-unsent.any.worker.html": false,
+ "abort-during-upload.any.html": false,
+ "abort-during-upload.any.worker.html": false,
+ "abort-event-abort.any.html": false,
+ "abort-event-abort.any.worker.html": false,
+ "abort-event-listeners.any.html": false,
+ "abort-event-listeners.any.worker.html": false,
+ "abort-event-loadend.any.html": false,
+ "abort-event-loadend.any.worker.html": false,
+ "abort-upload-event-abort.any.html": false,
+ "abort-upload-event-abort.any.worker.html": false,
+ "abort-upload-event-loadend.any.html": false,
+ "abort-upload-event-loadend.any.worker.html": false,
+ "access-control-and-redirects-async-same-origin.any.html": false,
+ "access-control-and-redirects-async-same-origin.any.worker.html": false,
+ "access-control-and-redirects-async.any.html": false,
+ "access-control-and-redirects-async.any.worker.html": false,
+ "access-control-and-redirects.any.html": false,
+ "access-control-and-redirects.any.worker.html": false,
+ "access-control-basic-allow-access-control-origin-header.any.html": false,
+ "access-control-basic-allow-access-control-origin-header.any.worker.html": false,
+ "access-control-basic-allow-async.any.html": false,
+ "access-control-basic-allow-async.any.worker.html": false,
+ "access-control-basic-allow-non-cors-safelisted-method-async.any.html": false,
+ "access-control-basic-allow-non-cors-safelisted-method-async.any.worker.html": false,
+ "access-control-basic-allow-non-cors-safelisted-method.any.html": false,
+ "access-control-basic-allow-non-cors-safelisted-method.any.worker.html": false,
+ "access-control-basic-allow-preflight-cache-invalidation-by-header.any.html": false,
+ "access-control-basic-allow-preflight-cache-invalidation-by-header.any.worker.html": false,
+ "access-control-basic-allow-preflight-cache-invalidation-by-method.any.html": false,
+ "access-control-basic-allow-preflight-cache-invalidation-by-method.any.worker.html": false,
+ "access-control-basic-allow-preflight-cache-timeout.any.html": false,
+ "access-control-basic-allow-preflight-cache-timeout.any.worker.html": false,
+ "access-control-basic-allow-preflight-cache.any.html": false,
+ "access-control-basic-allow-preflight-cache.any.worker.html": false,
+ "access-control-basic-allow-star.any.html": false,
+ "access-control-basic-allow-star.any.worker.html": false,
+ "access-control-basic-allow.any.html": false,
+ "access-control-basic-allow.any.worker.html": false,
+ "access-control-preflight-request-allow-headers-returns-star.any.html": false,
+ "access-control-preflight-request-allow-headers-returns-star.any.worker.html": false,
+ "access-control-preflight-request-header-returns-origin.any.html": false,
+ "access-control-preflight-request-header-returns-origin.any.worker.html": false,
+ "content-type-unmodified.any.html": false,
+ "content-type-unmodified.any.worker.html": false,
+ "cors-expose-star.sub.any.html": false,
+ "cors-expose-star.sub.any.worker.html": false,
+ "cors-upload.any.html": false,
+ "cors-upload.any.worker.html": false,
+ "event-abort.any.html": false,
+ "event-abort.any.worker.html": false,
+ "event-error.sub.any.html": false,
+ "event-error.sub.any.worker.html": false,
+ "event-load.any.html": false,
+ "event-load.any.worker.html": false,
+ "event-loadend.any.html": false,
+ "event-loadend.any.worker.html": false,
+ "event-loadstart-upload.any.html": false,
+ "event-loadstart-upload.any.worker.html": false,
+ "event-loadstart.any.html": false,
+ "event-loadstart.any.worker.html": false,
+ "event-progress.any.html": false,
+ "event-progress.any.worker.html": false,
+ "event-readystate-sync-open.any.html": false,
+ "event-readystate-sync-open.any.worker.html": false,
+ "event-readystatechange-loaded.any.html": false,
+ "event-readystatechange-loaded.any.worker.html": false,
+ "event-timeout-order.any.html": false,
+ "event-timeout-order.any.worker.html": false,
+ "event-timeout.any.html": false,
+ "event-timeout.any.worker.html": false,
+ "event-upload-progress-crossorigin.any.html": false,
+ "event-upload-progress-crossorigin.any.worker.html": false,
+ "event-upload-progress.any.html": false,
+ "event-upload-progress.any.worker.html": false,
+ "getresponseheader.any.html": false,
+ "getresponseheader.any.worker.html": false,
+ "idlharness.any.html": [
+ "XMLHttpRequestEventTarget interface: existence and properties of interface object",
+ "XMLHttpRequestEventTarget interface object length",
+ "XMLHttpRequestEventTarget interface object name",
+ "XMLHttpRequestEventTarget interface: existence and properties of interface prototype object",
+ "XMLHttpRequestEventTarget interface: existence and properties of interface prototype object's \"constructor\" property",
+ "XMLHttpRequestEventTarget interface: existence and properties of interface prototype object's @@unscopables property",
+ "XMLHttpRequestEventTarget interface: attribute onloadstart",
+ "XMLHttpRequestEventTarget interface: attribute onprogress",
+ "XMLHttpRequestEventTarget interface: attribute onabort",
+ "XMLHttpRequestEventTarget interface: attribute onerror",
+ "XMLHttpRequestEventTarget interface: attribute onload",
+ "XMLHttpRequestEventTarget interface: attribute ontimeout",
+ "XMLHttpRequestEventTarget interface: attribute onloadend",
+ "XMLHttpRequestUpload interface: existence and properties of interface object",
+ "XMLHttpRequestUpload interface object length",
+ "XMLHttpRequestUpload interface object name",
+ "XMLHttpRequestUpload interface: existence and properties of interface prototype object",
+ "XMLHttpRequestUpload interface: existence and properties of interface prototype object's \"constructor\" property",
+ "XMLHttpRequestUpload interface: existence and properties of interface prototype object's @@unscopables property",
+ "XMLHttpRequestUpload must be primary interface of (new XMLHttpRequest()).upload",
+ "Stringification of (new XMLHttpRequest()).upload",
+ "XMLHttpRequestEventTarget interface: (new XMLHttpRequest()).upload must inherit property \"onloadstart\" with the proper type",
+ "XMLHttpRequestEventTarget interface: (new XMLHttpRequest()).upload must inherit property \"onprogress\" with the proper type",
+ "XMLHttpRequestEventTarget interface: (new XMLHttpRequest()).upload must inherit property \"onabort\" with the proper type",
+ "XMLHttpRequestEventTarget interface: (new XMLHttpRequest()).upload must inherit property \"onerror\" with the proper type",
+ "XMLHttpRequestEventTarget interface: (new XMLHttpRequest()).upload must inherit property \"onload\" with the proper type",
+ "XMLHttpRequestEventTarget interface: (new XMLHttpRequest()).upload must inherit property \"ontimeout\" with the proper type",
+ "XMLHttpRequestEventTarget interface: (new XMLHttpRequest()).upload must inherit property \"onloadend\" with the proper type",
+ "XMLHttpRequest interface: existence and properties of interface object",
+ "XMLHttpRequest interface object length",
+ "XMLHttpRequest interface object name",
+ "XMLHttpRequest interface: existence and properties of interface prototype object",
+ "XMLHttpRequest interface: existence and properties of interface prototype object's \"constructor\" property",
+ "XMLHttpRequest interface: existence and properties of interface prototype object's @@unscopables property",
+ "XMLHttpRequest interface: attribute onreadystatechange",
+ "XMLHttpRequest interface: constant UNSENT on interface object",
+ "XMLHttpRequest interface: constant UNSENT on interface prototype object",
+ "XMLHttpRequest interface: constant OPENED on interface object",
+ "XMLHttpRequest interface: constant OPENED on interface prototype object",
+ "XMLHttpRequest interface: constant HEADERS_RECEIVED on interface object",
+ "XMLHttpRequest interface: constant HEADERS_RECEIVED on interface prototype object",
+ "XMLHttpRequest interface: constant LOADING on interface object",
+ "XMLHttpRequest interface: constant LOADING on interface prototype object",
+ "XMLHttpRequest interface: constant DONE on interface object",
+ "XMLHttpRequest interface: constant DONE on interface prototype object",
+ "XMLHttpRequest interface: attribute readyState",
+ "XMLHttpRequest interface: operation open(ByteString, USVString)",
+ "XMLHttpRequest interface: operation open(ByteString, USVString, boolean, optional USVString?, optional USVString?)",
+ "XMLHttpRequest interface: operation setRequestHeader(ByteString, ByteString)",
+ "XMLHttpRequest interface: attribute timeout",
+ "XMLHttpRequest interface: attribute withCredentials",
+ "XMLHttpRequest interface: attribute upload",
+ "XMLHttpRequest interface: operation send(optional (Document or XMLHttpRequestBodyInit)?)",
+ "XMLHttpRequest interface: operation abort()",
+ "XMLHttpRequest interface: attribute responseURL",
+ "XMLHttpRequest interface: attribute status",
+ "XMLHttpRequest interface: attribute statusText",
+ "XMLHttpRequest interface: operation getResponseHeader(ByteString)",
+ "XMLHttpRequest interface: operation getAllResponseHeaders()",
+ "XMLHttpRequest interface: operation overrideMimeType(DOMString)",
+ "XMLHttpRequest interface: attribute responseType",
+ "XMLHttpRequest interface: attribute response",
+ "XMLHttpRequest interface: attribute responseText",
+ "XMLHttpRequest interface: attribute responseXML",
+ "XMLHttpRequest must be primary interface of new XMLHttpRequest()",
+ "Stringification of new XMLHttpRequest()",
+ "XMLHttpRequest interface: new XMLHttpRequest() must inherit property \"onreadystatechange\" with the proper type",
+ "XMLHttpRequest interface: new XMLHttpRequest() must inherit property \"UNSENT\" with the proper type",
+ "XMLHttpRequest interface: new XMLHttpRequest() must inherit property \"OPENED\" with the proper type",
+ "XMLHttpRequest interface: new XMLHttpRequest() must inherit property \"HEADERS_RECEIVED\" with the proper type",
+ "XMLHttpRequest interface: new XMLHttpRequest() must inherit property \"LOADING\" with the proper type",
+ "XMLHttpRequest interface: new XMLHttpRequest() must inherit property \"DONE\" with the proper type",
+ "XMLHttpRequest interface: new XMLHttpRequest() must inherit property \"readyState\" with the proper type",
+ "XMLHttpRequest interface: new XMLHttpRequest() must inherit property \"open(ByteString, USVString)\" with the proper type",
+ "XMLHttpRequest interface: calling open(ByteString, USVString) on new XMLHttpRequest() with too few arguments must throw TypeError",
+ "XMLHttpRequest interface: new XMLHttpRequest() must inherit property \"open(ByteString, USVString, boolean, optional USVString?, optional USVString?)\" with the proper type",
+ "XMLHttpRequest interface: calling open(ByteString, USVString, boolean, optional USVString?, optional USVString?) on new XMLHttpRequest() with too few arguments must throw TypeError",
+ "XMLHttpRequest interface: new XMLHttpRequest() must inherit property \"setRequestHeader(ByteString, ByteString)\" with the proper type",
+ "XMLHttpRequest interface: calling setRequestHeader(ByteString, ByteString) on new XMLHttpRequest() with too few arguments must throw TypeError",
+ "XMLHttpRequest interface: new XMLHttpRequest() must inherit property \"timeout\" with the proper type",
+ "XMLHttpRequest interface: new XMLHttpRequest() must inherit property \"withCredentials\" with the proper type",
+ "XMLHttpRequest interface: new XMLHttpRequest() must inherit property \"upload\" with the proper type",
+ "XMLHttpRequest interface: new XMLHttpRequest() must inherit property \"send(optional (Document or XMLHttpRequestBodyInit)?)\" with the proper type",
+ "XMLHttpRequest interface: calling send(optional (Document or XMLHttpRequestBodyInit)?) on new XMLHttpRequest() with too few arguments must throw TypeError",
+ "XMLHttpRequest interface: new XMLHttpRequest() must inherit property \"abort()\" with the proper type",
+ "XMLHttpRequest interface: new XMLHttpRequest() must inherit property \"responseURL\" with the proper type",
+ "XMLHttpRequest interface: new XMLHttpRequest() must inherit property \"status\" with the proper type",
+ "XMLHttpRequest interface: new XMLHttpRequest() must inherit property \"statusText\" with the proper type",
+ "XMLHttpRequest interface: new XMLHttpRequest() must inherit property \"getResponseHeader(ByteString)\" with the proper type",
+ "XMLHttpRequest interface: calling getResponseHeader(ByteString) on new XMLHttpRequest() with too few arguments must throw TypeError",
+ "XMLHttpRequest interface: new XMLHttpRequest() must inherit property \"getAllResponseHeaders()\" with the proper type",
+ "XMLHttpRequest interface: new XMLHttpRequest() must inherit property \"overrideMimeType(DOMString)\" with the proper type",
+ "XMLHttpRequest interface: calling overrideMimeType(DOMString) on new XMLHttpRequest() with too few arguments must throw TypeError",
+ "XMLHttpRequest interface: new XMLHttpRequest() must inherit property \"responseType\" with the proper type",
+ "XMLHttpRequest interface: new XMLHttpRequest() must inherit property \"response\" with the proper type",
+ "XMLHttpRequest interface: new XMLHttpRequest() must inherit property \"responseText\" with the proper type",
+ "XMLHttpRequest interface: new XMLHttpRequest() must inherit property \"responseXML\" with the proper type",
+ "XMLHttpRequestEventTarget interface: new XMLHttpRequest() must inherit property \"onloadstart\" with the proper type",
+ "XMLHttpRequestEventTarget interface: new XMLHttpRequest() must inherit property \"onprogress\" with the proper type",
+ "XMLHttpRequestEventTarget interface: new XMLHttpRequest() must inherit property \"onabort\" with the proper type",
+ "XMLHttpRequestEventTarget interface: new XMLHttpRequest() must inherit property \"onerror\" with the proper type",
+ "XMLHttpRequestEventTarget interface: new XMLHttpRequest() must inherit property \"onload\" with the proper type",
+ "XMLHttpRequestEventTarget interface: new XMLHttpRequest() must inherit property \"ontimeout\" with the proper type",
+ "XMLHttpRequestEventTarget interface: new XMLHttpRequest() must inherit property \"onloadend\" with the proper type",
+ "FormData interface object length",
+ "FormData interface: operation append(USVString, USVString)",
+ "FormData interface: operation append(USVString, Blob, optional USVString)",
+ "FormData interface: operation set(USVString, USVString)",
+ "FormData interface: operation set(USVString, Blob, optional USVString)",
+ "ProgressEvent interface: attribute lengthComputable",
+ "ProgressEvent interface: attribute loaded",
+ "ProgressEvent interface: attribute total",
+ "ProgressEvent interface: new ProgressEvent(\"type\") must inherit property \"lengthComputable\" with the proper type",
+ "ProgressEvent interface: new ProgressEvent(\"type\") must inherit property \"loaded\" with the proper type",
+ "ProgressEvent interface: new ProgressEvent(\"type\") must inherit property \"total\" with the proper type",
+ "idl_test setup"
+ ],
+ "idlharness.any.worker.html": [
+ "XMLHttpRequestEventTarget interface: existence and properties of interface object",
+ "XMLHttpRequestEventTarget interface object length",
+ "XMLHttpRequestEventTarget interface object name",
+ "XMLHttpRequestEventTarget interface: existence and properties of interface prototype object",
+ "XMLHttpRequestEventTarget interface: existence and properties of interface prototype object's \"constructor\" property",
+ "XMLHttpRequestEventTarget interface: existence and properties of interface prototype object's @@unscopables property",
+ "XMLHttpRequestEventTarget interface: attribute onloadstart",
+ "XMLHttpRequestEventTarget interface: attribute onprogress",
+ "XMLHttpRequestEventTarget interface: attribute onabort",
+ "XMLHttpRequestEventTarget interface: attribute onerror",
+ "XMLHttpRequestEventTarget interface: attribute onload",
+ "XMLHttpRequestEventTarget interface: attribute ontimeout",
+ "XMLHttpRequestEventTarget interface: attribute onloadend",
+ "XMLHttpRequestUpload interface: existence and properties of interface object",
+ "XMLHttpRequestUpload interface object length",
+ "XMLHttpRequestUpload interface object name",
+ "XMLHttpRequestUpload interface: existence and properties of interface prototype object",
+ "XMLHttpRequestUpload interface: existence and properties of interface prototype object's \"constructor\" property",
+ "XMLHttpRequestUpload interface: existence and properties of interface prototype object's @@unscopables property",
+ "XMLHttpRequestUpload must be primary interface of (new XMLHttpRequest()).upload",
+ "Stringification of (new XMLHttpRequest()).upload",
+ "XMLHttpRequestEventTarget interface: (new XMLHttpRequest()).upload must inherit property \"onloadstart\" with the proper type",
+ "XMLHttpRequestEventTarget interface: (new XMLHttpRequest()).upload must inherit property \"onprogress\" with the proper type",
+ "XMLHttpRequestEventTarget interface: (new XMLHttpRequest()).upload must inherit property \"onabort\" with the proper type",
+ "XMLHttpRequestEventTarget interface: (new XMLHttpRequest()).upload must inherit property \"onerror\" with the proper type",
+ "XMLHttpRequestEventTarget interface: (new XMLHttpRequest()).upload must inherit property \"onload\" with the proper type",
+ "XMLHttpRequestEventTarget interface: (new XMLHttpRequest()).upload must inherit property \"ontimeout\" with the proper type",
+ "XMLHttpRequestEventTarget interface: (new XMLHttpRequest()).upload must inherit property \"onloadend\" with the proper type",
+ "XMLHttpRequest interface: existence and properties of interface object",
+ "XMLHttpRequest interface object length",
+ "XMLHttpRequest interface object name",
+ "XMLHttpRequest interface: existence and properties of interface prototype object",
+ "XMLHttpRequest interface: existence and properties of interface prototype object's \"constructor\" property",
+ "XMLHttpRequest interface: existence and properties of interface prototype object's @@unscopables property",
+ "XMLHttpRequest interface: attribute onreadystatechange",
+ "XMLHttpRequest interface: constant UNSENT on interface object",
+ "XMLHttpRequest interface: constant UNSENT on interface prototype object",
+ "XMLHttpRequest interface: constant OPENED on interface object",
+ "XMLHttpRequest interface: constant OPENED on interface prototype object",
+ "XMLHttpRequest interface: constant HEADERS_RECEIVED on interface object",
+ "XMLHttpRequest interface: constant HEADERS_RECEIVED on interface prototype object",
+ "XMLHttpRequest interface: constant LOADING on interface object",
+ "XMLHttpRequest interface: constant LOADING on interface prototype object",
+ "XMLHttpRequest interface: constant DONE on interface object",
+ "XMLHttpRequest interface: constant DONE on interface prototype object",
+ "XMLHttpRequest interface: attribute readyState",
+ "XMLHttpRequest interface: operation open(ByteString, USVString)",
+ "XMLHttpRequest interface: operation open(ByteString, USVString, boolean, optional USVString?, optional USVString?)",
+ "XMLHttpRequest interface: operation setRequestHeader(ByteString, ByteString)",
+ "XMLHttpRequest interface: attribute timeout",
+ "XMLHttpRequest interface: attribute withCredentials",
+ "XMLHttpRequest interface: attribute upload",
+ "XMLHttpRequest interface: operation send(optional (Document or XMLHttpRequestBodyInit)?)",
+ "XMLHttpRequest interface: operation abort()",
+ "XMLHttpRequest interface: attribute responseURL",
+ "XMLHttpRequest interface: attribute status",
+ "XMLHttpRequest interface: attribute statusText",
+ "XMLHttpRequest interface: operation getResponseHeader(ByteString)",
+ "XMLHttpRequest interface: operation getAllResponseHeaders()",
+ "XMLHttpRequest interface: operation overrideMimeType(DOMString)",
+ "XMLHttpRequest interface: attribute responseType",
+ "XMLHttpRequest interface: attribute response",
+ "XMLHttpRequest interface: attribute responseText",
+ "XMLHttpRequest interface: member responseXML",
+ "XMLHttpRequest must be primary interface of new XMLHttpRequest()",
+ "Stringification of new XMLHttpRequest()",
+ "XMLHttpRequest interface: new XMLHttpRequest() must inherit property \"onreadystatechange\" with the proper type",
+ "XMLHttpRequest interface: new XMLHttpRequest() must inherit property \"UNSENT\" with the proper type",
+ "XMLHttpRequest interface: new XMLHttpRequest() must inherit property \"OPENED\" with the proper type",
+ "XMLHttpRequest interface: new XMLHttpRequest() must inherit property \"HEADERS_RECEIVED\" with the proper type",
+ "XMLHttpRequest interface: new XMLHttpRequest() must inherit property \"LOADING\" with the proper type",
+ "XMLHttpRequest interface: new XMLHttpRequest() must inherit property \"DONE\" with the proper type",
+ "XMLHttpRequest interface: new XMLHttpRequest() must inherit property \"readyState\" with the proper type",
+ "XMLHttpRequest interface: new XMLHttpRequest() must inherit property \"open(ByteString, USVString)\" with the proper type",
+ "XMLHttpRequest interface: calling open(ByteString, USVString) on new XMLHttpRequest() with too few arguments must throw TypeError",
+ "XMLHttpRequest interface: new XMLHttpRequest() must inherit property \"open(ByteString, USVString, boolean, optional USVString?, optional USVString?)\" with the proper type",
+ "XMLHttpRequest interface: calling open(ByteString, USVString, boolean, optional USVString?, optional USVString?) on new XMLHttpRequest() with too few arguments must throw TypeError",
+ "XMLHttpRequest interface: new XMLHttpRequest() must inherit property \"setRequestHeader(ByteString, ByteString)\" with the proper type",
+ "XMLHttpRequest interface: calling setRequestHeader(ByteString, ByteString) on new XMLHttpRequest() with too few arguments must throw TypeError",
+ "XMLHttpRequest interface: new XMLHttpRequest() must inherit property \"timeout\" with the proper type",
+ "XMLHttpRequest interface: new XMLHttpRequest() must inherit property \"withCredentials\" with the proper type",
+ "XMLHttpRequest interface: new XMLHttpRequest() must inherit property \"upload\" with the proper type",
+ "XMLHttpRequest interface: new XMLHttpRequest() must inherit property \"send(optional (Document or XMLHttpRequestBodyInit)?)\" with the proper type",
+ "XMLHttpRequest interface: calling send(optional (Document or XMLHttpRequestBodyInit)?) on new XMLHttpRequest() with too few arguments must throw TypeError",
+ "XMLHttpRequest interface: new XMLHttpRequest() must inherit property \"abort()\" with the proper type",
+ "XMLHttpRequest interface: new XMLHttpRequest() must inherit property \"responseURL\" with the proper type",
+ "XMLHttpRequest interface: new XMLHttpRequest() must inherit property \"status\" with the proper type",
+ "XMLHttpRequest interface: new XMLHttpRequest() must inherit property \"statusText\" with the proper type",
+ "XMLHttpRequest interface: new XMLHttpRequest() must inherit property \"getResponseHeader(ByteString)\" with the proper type",
+ "XMLHttpRequest interface: calling getResponseHeader(ByteString) on new XMLHttpRequest() with too few arguments must throw TypeError",
+ "XMLHttpRequest interface: new XMLHttpRequest() must inherit property \"getAllResponseHeaders()\" with the proper type",
+ "XMLHttpRequest interface: new XMLHttpRequest() must inherit property \"overrideMimeType(DOMString)\" with the proper type",
+ "XMLHttpRequest interface: calling overrideMimeType(DOMString) on new XMLHttpRequest() with too few arguments must throw TypeError",
+ "XMLHttpRequest interface: new XMLHttpRequest() must inherit property \"responseType\" with the proper type",
+ "XMLHttpRequest interface: new XMLHttpRequest() must inherit property \"response\" with the proper type",
+ "XMLHttpRequest interface: new XMLHttpRequest() must inherit property \"responseText\" with the proper type",
+ "XMLHttpRequest interface: new XMLHttpRequest() must not have property \"responseXML\"",
+ "XMLHttpRequestEventTarget interface: new XMLHttpRequest() must inherit property \"onloadstart\" with the proper type",
+ "XMLHttpRequestEventTarget interface: new XMLHttpRequest() must inherit property \"onprogress\" with the proper type",
+ "XMLHttpRequestEventTarget interface: new XMLHttpRequest() must inherit property \"onabort\" with the proper type",
+ "XMLHttpRequestEventTarget interface: new XMLHttpRequest() must inherit property \"onerror\" with the proper type",
+ "XMLHttpRequestEventTarget interface: new XMLHttpRequest() must inherit property \"onload\" with the proper type",
+ "XMLHttpRequestEventTarget interface: new XMLHttpRequest() must inherit property \"ontimeout\" with the proper type",
+ "XMLHttpRequestEventTarget interface: new XMLHttpRequest() must inherit property \"onloadend\" with the proper type",
+ "FormData interface object length",
+ "FormData interface: operation append(USVString, USVString)",
+ "FormData interface: operation append(USVString, Blob, optional USVString)",
+ "FormData interface: operation set(USVString, USVString)",
+ "FormData interface: operation set(USVString, Blob, optional USVString)",
+ "ProgressEvent interface: attribute lengthComputable",
+ "ProgressEvent interface: attribute loaded",
+ "ProgressEvent interface: attribute total",
+ "ProgressEvent interface: new ProgressEvent(\"type\") must inherit property \"lengthComputable\" with the proper type",
+ "ProgressEvent interface: new ProgressEvent(\"type\") must inherit property \"loaded\" with the proper type",
+ "ProgressEvent interface: new ProgressEvent(\"type\") must inherit property \"total\" with the proper type"
+ ],
+ "json.any.html": false,
+ "json.any.worker.html": false,
+ "open-after-stop.window.html": false,
+ "over-1-meg.any.html": false,
+ "over-1-meg.any.worker.html": false,
+ "overridemimetype-done-state.any.html": false,
+ "overridemimetype-done-state.any.worker.html": false,
+ "overridemimetype-edge-cases.window.html": false,
+ "overridemimetype-unsent-state-force-shiftjis.any.html": false,
+ "overridemimetype-unsent-state-force-shiftjis.any.worker.html": false,
+ "request-content-length.any.html": false,
+ "request-content-length.any.worker.html": false,
+ "response-body-errors.any.html": false,
+ "response-body-errors.any.worker.html": false,
+ "responsetype.any.html": false,
+ "responsetype.any.worker.html": false,
+ "send-data-arraybuffer.any.html": false,
+ "send-data-arraybuffer.any.worker.html": false,
+ "send-data-arraybufferview.any.html": false,
+ "send-data-arraybufferview.any.worker.html": false,
+ "send-data-es-object.any.html": false,
+ "send-data-es-object.any.worker.html": false,
+ "send-data-formdata.any.html": false,
+ "send-data-formdata.any.worker.html": false,
+ "send-data-sharedarraybuffer.any.html": false,
+ "send-data-sharedarraybuffer.any.worker.html": false,
+ "send-data-string-invalid-unicode.any.html": false,
+ "send-data-string-invalid-unicode.any.worker.html": false,
+ "send-send.any.html": false,
+ "send-send.any.worker.html": false,
+ "send-usp.any.html": false,
+ "send-usp.any.worker.html": false,
+ "setrequestheader-combining.window.html": false,
+ "sync-no-progress.any.html": false,
+ "sync-no-progress.any.worker.html": false,
+ "sync-no-timeout.any.html": false,
+ "sync-no-timeout.any.worker.html": false,
+ "xhr-authorization-redirect.any.html": false,
+ "xhr-authorization-redirect.any.worker.html": false,
+ "xhr-timeout-longtask.any.html": false,
+ "xhr-timeout-longtask.any.worker.html": false
+ },
+ "websockets": {
+ "Close-1000-reason.any.html?default": true,
+ "Close-1000-reason.any.html?wpt_flags=h2": true,
+ "Close-1000-reason.any.html?wss": true,
+ "Close-1000-reason.any.worker.html?default": true,
+ "Close-1000-reason.any.worker.html?wpt_flags=h2": true,
+ "Close-1000-reason.any.worker.html?wss": true,
+ "Close-1000-verify-code.any.html?default": true,
+ "Close-1000-verify-code.any.html?wpt_flags=h2": true,
+ "Close-1000-verify-code.any.html?wss": true,
+ "Close-1000-verify-code.any.worker.html?default": true,
+ "Close-1000-verify-code.any.worker.html?wpt_flags=h2": true,
+ "Close-1000-verify-code.any.worker.html?wss": true,
+ "Close-1000.any.html?default": true,
+ "Close-1000.any.html?wpt_flags=h2": true,
+ "Close-1000.any.html?wss": true,
+ "Close-1000.any.worker.html?default": true,
+ "Close-1000.any.worker.html?wpt_flags=h2": true,
+ "Close-1000.any.worker.html?wss": true,
+ "Close-1005-verify-code.any.html?default": true,
+ "Close-1005-verify-code.any.html?wpt_flags=h2": true,
+ "Close-1005-verify-code.any.html?wss": true,
+ "Close-1005-verify-code.any.worker.html?default": true,
+ "Close-1005-verify-code.any.worker.html?wpt_flags=h2": true,
+ "Close-1005-verify-code.any.worker.html?wss": true,
+ "Close-1005.any.html?default": true,
+ "Close-1005.any.html?wpt_flags=h2": true,
+ "Close-1005.any.html?wss": true,
+ "Close-1005.any.worker.html?default": true,
+ "Close-1005.any.worker.html?wpt_flags=h2": true,
+ "Close-1005.any.worker.html?wss": true,
+ "Close-2999-reason.any.html?default": true,
+ "Close-2999-reason.any.html?wpt_flags=h2": true,
+ "Close-2999-reason.any.html?wss": true,
+ "Close-2999-reason.any.worker.html?default": true,
+ "Close-2999-reason.any.worker.html?wpt_flags=h2": true,
+ "Close-2999-reason.any.worker.html?wss": true,
+ "Close-3000-reason.any.html?default": true,
+ "Close-3000-reason.any.html?wpt_flags=h2": true,
+ "Close-3000-reason.any.html?wss": true,
+ "Close-3000-reason.any.worker.html?default": true,
+ "Close-3000-reason.any.worker.html?wpt_flags=h2": true,
+ "Close-3000-reason.any.worker.html?wss": true,
+ "Close-3000-verify-code.any.html?default": true,
+ "Close-3000-verify-code.any.html?wpt_flags=h2": true,
+ "Close-3000-verify-code.any.html?wss": true,
+ "Close-3000-verify-code.any.worker.html?default": true,
+ "Close-3000-verify-code.any.worker.html?wpt_flags=h2": true,
+ "Close-3000-verify-code.any.worker.html?wss": true,
+ "Close-4999-reason.any.html?default": true,
+ "Close-4999-reason.any.html?wpt_flags=h2": true,
+ "Close-4999-reason.any.html?wss": true,
+ "Close-4999-reason.any.worker.html?default": true,
+ "Close-4999-reason.any.worker.html?wpt_flags=h2": true,
+ "Close-4999-reason.any.worker.html?wss": true,
+ "Close-Reason-124Bytes.any.html?default": true,
+ "Close-Reason-124Bytes.any.html?wpt_flags=h2": true,
+ "Close-Reason-124Bytes.any.html?wss": true,
+ "Close-Reason-124Bytes.any.worker.html?default": true,
+ "Close-Reason-124Bytes.any.worker.html?wpt_flags=h2": true,
+ "Close-Reason-124Bytes.any.worker.html?wss": true,
+ "Close-delayed.any.html?default": true,
+ "Close-delayed.any.html?wpt_flags=h2": true,
+ "Close-delayed.any.html?wss": true,
+ "Close-delayed.any.worker.html?default": true,
+ "Close-delayed.any.worker.html?wpt_flags=h2": true,
+ "Close-delayed.any.worker.html?wss": true,
+ "Close-onlyReason.any.html?default": true,
+ "Close-onlyReason.any.html?wpt_flags=h2": true,
+ "Close-onlyReason.any.html?wss": true,
+ "Close-onlyReason.any.worker.html?default": true,
+ "Close-onlyReason.any.worker.html?wpt_flags=h2": true,
+ "Close-onlyReason.any.worker.html?wss": true,
+ "Close-readyState-Closed.any.html?default": true,
+ "Close-readyState-Closed.any.html?wpt_flags=h2": true,
+ "Close-readyState-Closed.any.html?wss": true,
+ "Close-readyState-Closed.any.worker.html?default": true,
+ "Close-readyState-Closed.any.worker.html?wpt_flags=h2": true,
+ "Close-readyState-Closed.any.worker.html?wss": true,
+ "Close-readyState-Closing.any.html?default": true,
+ "Close-readyState-Closing.any.html?wpt_flags=h2": true,
+ "Close-readyState-Closing.any.html?wss": true,
+ "Close-readyState-Closing.any.worker.html?default": true,
+ "Close-readyState-Closing.any.worker.html?wpt_flags=h2": true,
+ "Close-readyState-Closing.any.worker.html?wss": true,
+ "Close-reason-unpaired-surrogates.any.html?default": true,
+ "Close-reason-unpaired-surrogates.any.html?wpt_flags=h2": true,
+ "Close-reason-unpaired-surrogates.any.html?wss": true,
+ "Close-reason-unpaired-surrogates.any.worker.html?default": true,
+ "Close-reason-unpaired-surrogates.any.worker.html?wpt_flags=h2": true,
+ "Close-reason-unpaired-surrogates.any.worker.html?wss": true,
+ "Close-server-initiated-close.any.html?default": true,
+ "Close-server-initiated-close.any.html?wpt_flags=h2": true,
+ "Close-server-initiated-close.any.html?wss": true,
+ "Close-server-initiated-close.any.worker.html?default": true,
+ "Close-server-initiated-close.any.worker.html?wpt_flags=h2": true,
+ "Close-server-initiated-close.any.worker.html?wss": true,
+ "Close-undefined.any.html?default": true,
+ "Close-undefined.any.html?wpt_flags=h2": true,
+ "Close-undefined.any.html?wss": true,
+ "Close-undefined.any.worker.html?default": true,
+ "Close-undefined.any.worker.html?wpt_flags=h2": true,
+ "Close-undefined.any.worker.html?wss": true,
+ "Create-asciiSep-protocol-string.any.html?default": true,
+ "Create-asciiSep-protocol-string.any.html?wpt_flags=h2": true,
+ "Create-asciiSep-protocol-string.any.html?wss": true,
+ "Create-asciiSep-protocol-string.any.worker.html?default": true,
+ "Create-asciiSep-protocol-string.any.worker.html?wpt_flags=h2": true,
+ "Create-asciiSep-protocol-string.any.worker.html?wss": true,
+ "Create-blocked-port.any.html?default": true,
+ "Create-blocked-port.any.html?wpt_flags=h2": true,
+ "Create-blocked-port.any.html?wss": true,
+ "Create-blocked-port.any.worker.html?default": true,
+ "Create-blocked-port.any.worker.html?wpt_flags=h2": true,
+ "Create-blocked-port.any.worker.html?wss": true,
+ "Create-extensions-empty.any.html?default": true,
+ "Create-extensions-empty.any.html?wpt_flags=h2": true,
+ "Create-extensions-empty.any.html?wss": true,
+ "Create-extensions-empty.any.worker.html?default": true,
+ "Create-extensions-empty.any.worker.html?wpt_flags=h2": true,
+ "Create-extensions-empty.any.worker.html?wss": true,
+ "Create-http-urls.any.html": true,
+ "Create-http-urls.any.worker.html": true,
+ "Create-invalid-urls.any.html": true,
+ "Create-invalid-urls.any.worker.html": true,
+ "Create-non-absolute-url.any.html": true,
+ "Create-non-absolute-url.any.worker.html": true,
+ "Create-nonAscii-protocol-string.any.html?default": true,
+ "Create-nonAscii-protocol-string.any.html?wpt_flags=h2": true,
+ "Create-nonAscii-protocol-string.any.html?wss": true,
+ "Create-nonAscii-protocol-string.any.worker.html?default": true,
+ "Create-nonAscii-protocol-string.any.worker.html?wpt_flags=h2": true,
+ "Create-nonAscii-protocol-string.any.worker.html?wss": true,
+ "Create-on-worker-shutdown.any.html": false,
+ "Create-on-worker-shutdown.any.worker.html": false,
+ "Create-protocol-with-space.any.html?default": true,
+ "Create-protocol-with-space.any.html?wpt_flags=h2": true,
+ "Create-protocol-with-space.any.html?wss": true,
+ "Create-protocol-with-space.any.worker.html?default": true,
+ "Create-protocol-with-space.any.worker.html?wpt_flags=h2": true,
+ "Create-protocol-with-space.any.worker.html?wss": true,
+ "Create-protocols-repeated-case-insensitive.any.html?default": true,
+ "Create-protocols-repeated-case-insensitive.any.html?wpt_flags=h2": true,
+ "Create-protocols-repeated-case-insensitive.any.html?wss": true,
+ "Create-protocols-repeated-case-insensitive.any.worker.html?default": true,
+ "Create-protocols-repeated-case-insensitive.any.worker.html?wpt_flags=h2": true,
+ "Create-protocols-repeated-case-insensitive.any.worker.html?wss": true,
+ "Create-protocols-repeated.any.html?default": true,
+ "Create-protocols-repeated.any.html?wpt_flags=h2": true,
+ "Create-protocols-repeated.any.html?wss": true,
+ "Create-protocols-repeated.any.worker.html?default": true,
+ "Create-protocols-repeated.any.worker.html?wpt_flags=h2": true,
+ "Create-protocols-repeated.any.worker.html?wss": true,
+ "Create-url-with-space.any.html?default": true,
+ "Create-url-with-space.any.html?wpt_flags=h2": true,
+ "Create-url-with-space.any.html?wss": true,
+ "Create-url-with-space.any.worker.html?default": true,
+ "Create-url-with-space.any.worker.html?wpt_flags=h2": true,
+ "Create-url-with-space.any.worker.html?wss": true,
+ "Create-valid-url-array-protocols.any.html?default": true,
+ "Create-valid-url-array-protocols.any.html?wpt_flags=h2": true,
+ "Create-valid-url-array-protocols.any.html?wss": true,
+ "Create-valid-url-array-protocols.any.worker.html?default": true,
+ "Create-valid-url-array-protocols.any.worker.html?wpt_flags=h2": true,
+ "Create-valid-url-array-protocols.any.worker.html?wss": true,
+ "Create-valid-url-binaryType-blob.any.html?default": true,
+ "Create-valid-url-binaryType-blob.any.html?wpt_flags=h2": true,
+ "Create-valid-url-binaryType-blob.any.html?wss": true,
+ "Create-valid-url-binaryType-blob.any.worker.html?default": true,
+ "Create-valid-url-binaryType-blob.any.worker.html?wpt_flags=h2": true,
+ "Create-valid-url-binaryType-blob.any.worker.html?wss": true,
+ "Create-valid-url-protocol-empty.any.html?default": true,
+ "Create-valid-url-protocol-empty.any.html?wpt_flags=h2": true,
+ "Create-valid-url-protocol-empty.any.html?wss": true,
+ "Create-valid-url-protocol-empty.any.worker.html?default": true,
+ "Create-valid-url-protocol-empty.any.worker.html?wpt_flags=h2": true,
+ "Create-valid-url-protocol-empty.any.worker.html?wss": true,
+ "Create-valid-url-protocol-setCorrectly.any.html?default": true,
+ "Create-valid-url-protocol-setCorrectly.any.html?wpt_flags=h2": true,
+ "Create-valid-url-protocol-setCorrectly.any.html?wss": true,
+ "Create-valid-url-protocol-setCorrectly.any.worker.html?default": true,
+ "Create-valid-url-protocol-setCorrectly.any.worker.html?wpt_flags=h2": true,
+ "Create-valid-url-protocol-setCorrectly.any.worker.html?wss": true,
+ "Create-valid-url-protocol-string.any.html?default": true,
+ "Create-valid-url-protocol-string.any.html?wpt_flags=h2": true,
+ "Create-valid-url-protocol-string.any.html?wss": true,
+ "Create-valid-url-protocol-string.any.worker.html?default": true,
+ "Create-valid-url-protocol-string.any.worker.html?wpt_flags=h2": true,
+ "Create-valid-url-protocol-string.any.worker.html?wss": true,
+ "Create-valid-url-protocol.any.html?default": true,
+ "Create-valid-url-protocol.any.html?wpt_flags=h2": true,
+ "Create-valid-url-protocol.any.html?wss": true,
+ "Create-valid-url-protocol.any.worker.html?default": true,
+ "Create-valid-url-protocol.any.worker.html?wpt_flags=h2": true,
+ "Create-valid-url-protocol.any.worker.html?wss": true,
+ "Create-valid-url.any.html?default": true,
+ "Create-valid-url.any.html?wpt_flags=h2": true,
+ "Create-valid-url.any.html?wss": true,
+ "Create-valid-url.any.worker.html?default": true,
+ "Create-valid-url.any.worker.html?wpt_flags=h2": true,
+ "Create-valid-url.any.worker.html?wss": true,
+ "Send-0byte-data.any.html?default": true,
+ "Send-0byte-data.any.html?wpt_flags=h2": true,
+ "Send-0byte-data.any.html?wss": true,
+ "Send-0byte-data.any.worker.html?default": true,
+ "Send-0byte-data.any.worker.html?wpt_flags=h2": true,
+ "Send-0byte-data.any.worker.html?wss": true,
+ "Send-65K-data.any.html?default": true,
+ "Send-65K-data.any.html?wpt_flags=h2": true,
+ "Send-65K-data.any.html?wss": true,
+ "Send-65K-data.any.worker.html?default": true,
+ "Send-65K-data.any.worker.html?wpt_flags=h2": true,
+ "Send-65K-data.any.worker.html?wss": true,
+ "Send-before-open.any.html?default": true,
+ "Send-before-open.any.html?wpt_flags=h2": true,
+ "Send-before-open.any.html?wss": true,
+ "Send-before-open.any.worker.html?default": true,
+ "Send-before-open.any.worker.html?wpt_flags=h2": true,
+ "Send-before-open.any.worker.html?wss": true,
+ "Send-binary-65K-arraybuffer.any.html?default": true,
+ "Send-binary-65K-arraybuffer.any.html?wpt_flags=h2": true,
+ "Send-binary-65K-arraybuffer.any.html?wss": true,
+ "Send-binary-65K-arraybuffer.any.worker.html?default": true,
+ "Send-binary-65K-arraybuffer.any.worker.html?wpt_flags=h2": true,
+ "Send-binary-65K-arraybuffer.any.worker.html?wss": true,
+ "Send-binary-arraybuffer.any.html?default": true,
+ "Send-binary-arraybuffer.any.html?wpt_flags=h2": true,
+ "Send-binary-arraybuffer.any.html?wss": true,
+ "Send-binary-arraybuffer.any.worker.html?default": true,
+ "Send-binary-arraybuffer.any.worker.html?wpt_flags=h2": true,
+ "Send-binary-arraybuffer.any.worker.html?wss": true,
+ "Send-binary-arraybufferview-float32.any.html?default": true,
+ "Send-binary-arraybufferview-float32.any.html?wpt_flags=h2": true,
+ "Send-binary-arraybufferview-float32.any.html?wss": true,
+ "Send-binary-arraybufferview-float32.any.worker.html?default": true,
+ "Send-binary-arraybufferview-float32.any.worker.html?wpt_flags=h2": true,
+ "Send-binary-arraybufferview-float32.any.worker.html?wss": true,
+ "Send-binary-arraybufferview-float64.any.html?default": true,
+ "Send-binary-arraybufferview-float64.any.html?wpt_flags=h2": true,
+ "Send-binary-arraybufferview-float64.any.html?wss": true,
+ "Send-binary-arraybufferview-float64.any.worker.html?default": true,
+ "Send-binary-arraybufferview-float64.any.worker.html?wpt_flags=h2": true,
+ "Send-binary-arraybufferview-float64.any.worker.html?wss": true,
+ "Send-binary-arraybufferview-int16-offset.any.html?default": true,
+ "Send-binary-arraybufferview-int16-offset.any.html?wpt_flags=h2": true,
+ "Send-binary-arraybufferview-int16-offset.any.html?wss": true,
+ "Send-binary-arraybufferview-int16-offset.any.worker.html?default": true,
+ "Send-binary-arraybufferview-int16-offset.any.worker.html?wpt_flags=h2": true,
+ "Send-binary-arraybufferview-int16-offset.any.worker.html?wss": true,
+ "Send-binary-arraybufferview-int32.any.html?default": true,
+ "Send-binary-arraybufferview-int32.any.html?wpt_flags=h2": true,
+ "Send-binary-arraybufferview-int32.any.html?wss": true,
+ "Send-binary-arraybufferview-int32.any.worker.html?default": true,
+ "Send-binary-arraybufferview-int32.any.worker.html?wpt_flags=h2": true,
+ "Send-binary-arraybufferview-int32.any.worker.html?wss": true,
+ "Send-binary-arraybufferview-int8.any.html?default": true,
+ "Send-binary-arraybufferview-int8.any.html?wpt_flags=h2": true,
+ "Send-binary-arraybufferview-int8.any.html?wss": true,
+ "Send-binary-arraybufferview-int8.any.worker.html?default": true,
+ "Send-binary-arraybufferview-int8.any.worker.html?wpt_flags=h2": true,
+ "Send-binary-arraybufferview-int8.any.worker.html?wss": true,
+ "Send-binary-arraybufferview-uint16-offset-length.any.html?default": true,
+ "Send-binary-arraybufferview-uint16-offset-length.any.html?wpt_flags=h2": true,
+ "Send-binary-arraybufferview-uint16-offset-length.any.html?wss": true,
+ "Send-binary-arraybufferview-uint16-offset-length.any.worker.html?default": true,
+ "Send-binary-arraybufferview-uint16-offset-length.any.worker.html?wpt_flags=h2": true,
+ "Send-binary-arraybufferview-uint16-offset-length.any.worker.html?wss": true,
+ "Send-binary-arraybufferview-uint32-offset.any.html?default": true,
+ "Send-binary-arraybufferview-uint32-offset.any.html?wpt_flags=h2": true,
+ "Send-binary-arraybufferview-uint32-offset.any.html?wss": true,
+ "Send-binary-arraybufferview-uint32-offset.any.worker.html?default": true,
+ "Send-binary-arraybufferview-uint32-offset.any.worker.html?wpt_flags=h2": true,
+ "Send-binary-arraybufferview-uint32-offset.any.worker.html?wss": true,
+ "Send-binary-arraybufferview-uint8-offset-length.any.html?default": true,
+ "Send-binary-arraybufferview-uint8-offset-length.any.html?wpt_flags=h2": true,
+ "Send-binary-arraybufferview-uint8-offset-length.any.html?wss": true,
+ "Send-binary-arraybufferview-uint8-offset-length.any.worker.html?default": true,
+ "Send-binary-arraybufferview-uint8-offset-length.any.worker.html?wpt_flags=h2": true,
+ "Send-binary-arraybufferview-uint8-offset-length.any.worker.html?wss": true,
+ "Send-binary-arraybufferview-uint8-offset.any.html?default": true,
+ "Send-binary-arraybufferview-uint8-offset.any.html?wpt_flags=h2": true,
+ "Send-binary-arraybufferview-uint8-offset.any.html?wss": true,
+ "Send-binary-arraybufferview-uint8-offset.any.worker.html?default": true,
+ "Send-binary-arraybufferview-uint8-offset.any.worker.html?wpt_flags=h2": true,
+ "Send-binary-arraybufferview-uint8-offset.any.worker.html?wss": true,
+ "Send-binary-blob.any.html?default": true,
+ "Send-binary-blob.any.html?wpt_flags=h2": true,
+ "Send-binary-blob.any.html?wss": true,
+ "Send-binary-blob.any.worker.html?default": true,
+ "Send-binary-blob.any.worker.html?wpt_flags=h2": true,
+ "Send-binary-blob.any.worker.html?wss": true,
+ "Send-data.any.html?default": true,
+ "Send-data.any.html?wpt_flags=h2": true,
+ "Send-data.any.html?wss": true,
+ "Send-data.any.worker.html?default": true,
+ "Send-data.any.worker.html?wpt_flags=h2": true,
+ "Send-data.any.worker.html?wss": true,
+ "Send-data.worker.html?default": true,
+ "Send-data.worker.html?wpt_flags=h2": true,
+ "Send-data.worker.html?wss": true,
+ "Send-null.any.html?default": true,
+ "Send-null.any.html?wpt_flags=h2": true,
+ "Send-null.any.html?wss": true,
+ "Send-null.any.worker.html?default": true,
+ "Send-null.any.worker.html?wpt_flags=h2": true,
+ "Send-null.any.worker.html?wss": true,
+ "Send-paired-surrogates.any.html?default": true,
+ "Send-paired-surrogates.any.html?wpt_flags=h2": true,
+ "Send-paired-surrogates.any.html?wss": true,
+ "Send-paired-surrogates.any.worker.html?default": true,
+ "Send-paired-surrogates.any.worker.html?wpt_flags=h2": true,
+ "Send-paired-surrogates.any.worker.html?wss": true,
+ "Send-unicode-data.any.html?default": true,
+ "Send-unicode-data.any.html?wpt_flags=h2": true,
+ "Send-unicode-data.any.html?wss": true,
+ "Send-unicode-data.any.worker.html?default": true,
+ "Send-unicode-data.any.worker.html?wpt_flags=h2": true,
+ "Send-unicode-data.any.worker.html?wss": true,
+ "Send-unpaired-surrogates.any.html?default": true,
+ "Send-unpaired-surrogates.any.html?wpt_flags=h2": true,
+ "Send-unpaired-surrogates.any.html?wss": true,
+ "Send-unpaired-surrogates.any.worker.html?default": true,
+ "Send-unpaired-surrogates.any.worker.html?wpt_flags=h2": true,
+ "Send-unpaired-surrogates.any.worker.html?wss": true,
+ "back-forward-cache-with-closed-websocket-connection-ccns.tentative.window.html": false,
+ "back-forward-cache-with-closed-websocket-connection.window.html": false,
+ "back-forward-cache-with-open-websocket-connection-ccns.tentative.window.html": false,
+ "back-forward-cache-with-open-websocket-connection.window.html": false,
+ "basic-auth.any.html?wpt_flags=h2": false,
+ "basic-auth.any.html?wss": false,
+ "basic-auth.any.worker.html?wpt_flags=h2": false,
+ "basic-auth.any.worker.html?wss": false,
+ "binaryType-wrong-value.any.html?default": true,
+ "binaryType-wrong-value.any.html?wpt_flags=h2": true,
+ "binaryType-wrong-value.any.html?wss": true,
+ "binaryType-wrong-value.any.worker.html?default": true,
+ "binaryType-wrong-value.any.worker.html?wpt_flags=h2": true,
+ "binaryType-wrong-value.any.worker.html?wss": true,
+ "bufferedAmount-unchanged-by-sync-xhr.any.html?default": false,
+ "bufferedAmount-unchanged-by-sync-xhr.any.html?wpt_flags=h2": false,
+ "bufferedAmount-unchanged-by-sync-xhr.any.html?wss": false,
+ "bufferedAmount-unchanged-by-sync-xhr.any.worker.html?default": false,
+ "bufferedAmount-unchanged-by-sync-xhr.any.worker.html?wpt_flags=h2": false,
+ "bufferedAmount-unchanged-by-sync-xhr.any.worker.html?wss": false,
+ "close-invalid.any.html?default": true,
+ "close-invalid.any.html?wpt_flags=h2": true,
+ "close-invalid.any.html?wss": true,
+ "close-invalid.any.worker.html?default": true,
+ "close-invalid.any.worker.html?wpt_flags=h2": true,
+ "close-invalid.any.worker.html?wss": true,
+ "constructor.any.html?default": true,
+ "constructor.any.html?wpt_flags=h2": true,
+ "constructor.any.html?wss": true,
+ "constructor.any.worker.html?default": true,
+ "constructor.any.worker.html?wpt_flags=h2": true,
+ "constructor.any.worker.html?wss": true,
+ "eventhandlers.any.html?default": true,
+ "eventhandlers.any.html?wpt_flags=h2": true,
+ "eventhandlers.any.html?wss": true,
+ "eventhandlers.any.worker.html?default": true,
+ "eventhandlers.any.worker.html?wpt_flags=h2": true,
+ "eventhandlers.any.worker.html?wss": true,
+ "idlharness.any.html": [
+ "WebSocket interface: constant CONNECTING on interface object",
+ "WebSocket interface: constant CONNECTING on interface prototype object",
+ "WebSocket interface: constant OPEN on interface object",
+ "WebSocket interface: constant OPEN on interface prototype object",
+ "WebSocket interface: constant CLOSING on interface object",
+ "WebSocket interface: constant CLOSING on interface prototype object",
+ "WebSocket interface: constant CLOSED on interface object",
+ "WebSocket interface: constant CLOSED on interface prototype object",
+ "WebSocket interface: attribute onopen",
+ "WebSocket interface: attribute onerror",
+ "WebSocket interface: attribute onclose",
+ "WebSocket interface: attribute onmessage",
+ "CloseEvent interface: attribute wasClean",
+ "CloseEvent interface: attribute code",
+ "CloseEvent interface: attribute reason",
+ "Stringification of new CloseEvent(\"close\")"
+ ],
+ "idlharness.any.worker.html": [
+ "WebSocket interface: constant CONNECTING on interface object",
+ "WebSocket interface: constant CONNECTING on interface prototype object",
+ "WebSocket interface: constant OPEN on interface object",
+ "WebSocket interface: constant OPEN on interface prototype object",
+ "WebSocket interface: constant CLOSING on interface object",
+ "WebSocket interface: constant CLOSING on interface prototype object",
+ "WebSocket interface: constant CLOSED on interface object",
+ "WebSocket interface: constant CLOSED on interface prototype object",
+ "WebSocket interface: attribute onopen",
+ "WebSocket interface: attribute onerror",
+ "WebSocket interface: attribute onclose",
+ "WebSocket interface: attribute onmessage",
+ "CloseEvent interface: attribute wasClean",
+ "CloseEvent interface: attribute code",
+ "CloseEvent interface: attribute reason",
+ "Stringification of new CloseEvent(\"close\")"
+ ],
+ "mixed-content.https.any.html": false,
+ "mixed-content.https.any.worker.html": false,
+ "opening-handshake": {
+ "003-sets-origin.worker.html": false
+ },
+ "referrer.any.html": true,
+ "referrer.any.worker.html": true,
+ "remove-own-iframe-during-onerror.window.html?default": false,
+ "remove-own-iframe-during-onerror.window.html?wpt_flags=h2": false,
+ "remove-own-iframe-during-onerror.window.html?wss": false,
+ "send-many-64K-messages-with-backpressure.any.html?default": true,
+ "send-many-64K-messages-with-backpressure.any.html?wpt_flags=h2": false,
+ "send-many-64K-messages-with-backpressure.any.html?wss": true,
+ "send-many-64K-messages-with-backpressure.any.worker.html?default": true,
+ "send-many-64K-messages-with-backpressure.any.worker.html?wpt_flags=h2": false,
+ "send-many-64K-messages-with-backpressure.any.worker.html?wss": true,
+ "stream": {
+ "tentative": {
+ "abort.any.html?wpt_flags=h2": true,
+ "abort.any.html?wss": true,
+ "abort.any.worker.html?wpt_flags=h2": true,
+ "abort.any.worker.html?wss": true,
+ "backpressure-receive.any.html?wpt_flags=h2": false,
+ "backpressure-receive.any.html?wss": true,
+ "backpressure-receive.any.worker.html?wpt_flags=h2": false,
+ "backpressure-receive.any.worker.html?wss": true,
+ "backpressure-send.any.html?wpt_flags=h2": false,
+ "backpressure-send.any.html?wss": true,
+ "backpressure-send.any.worker.html?wpt_flags=h2": false,
+ "backpressure-send.any.worker.html?wss": true,
+ "close.any.html?wpt_flags=h2": true,
+ "close.any.html?wss": true,
+ "close.any.worker.html?wpt_flags=h2": true,
+ "close.any.worker.html?wss": true,
+ "constructor.any.html?wpt_flags=h2": true,
+ "constructor.any.html?wss": true,
+ "constructor.any.worker.html?wpt_flags=h2": true,
+ "constructor.any.worker.html?wss": true
+ }
+ }
+ },
+ "workers": {
+ "Worker-base64.any.worker.html": true,
+ "Worker-call.worker.html": true,
+ "Worker-constructor-proto.any.worker.html": true,
+ "Worker-custom-event.any.worker.html": true,
+ "Worker-formdata.any.worker.html": false,
+ "Worker-location.sub.any.worker.html": false,
+ "Worker-replace-event-handler.any.worker.html": true,
+ "Worker-replace-global-constructor.any.worker.html": true,
+ "Worker-replace-self.any.worker.html": true,
+ "WorkerGlobalScope_requestAnimationFrame.tentative.worker.html": false,
+ "WorkerLocation-origin.sub.window.html": false,
+ "WorkerNavigator-hardware-concurrency.any.worker.html": true,
+ "WorkerNavigator.any.worker.html": false,
+ "constructors": {
+ "Worker": {
+ "DedicatedWorkerGlobalScope-members.worker.html": [
+ "existence of onoffline",
+ "existence of ononline"
+ ],
+ "expected-self-properties.worker.html": [
+ "existence of XMLHttpRequest",
+ "existence of SharedWorker"
+ ],
+ "unexpected-self-properties.worker.html": true
+ }
+ },
+ "dedicated-worker-in-data-url-context.window.html": [
+ "Create a dedicated worker in a data url frame",
+ "Create a dedicated worker in a data url dedicated worker",
+ "Create a data url dedicated worker in a data url frame"
+ ],
+ "examples": {
+ "general.any.worker.html": true,
+ "general.worker.html": true
+ },
+ "importscripts_mime.any.worker.html": [
+ "importScripts() requires scripty MIME types: text/ecmascript is allowed."
+ ],
+ "interfaces": {
+ "DedicatedWorkerGlobalScope": {
+ "EventTarget.worker.html": true,
+ "onmessage.worker.html": true,
+ "postMessage": {
+ "return-value.worker.html": true
+ }
+ },
+ "WorkerGlobalScope": {
+ "location": {
+ "returns-same-object.any.worker.html": true
+ },
+ "self.any.worker.html": true
+ },
+ "WorkerUtils": {
+ "importScripts": {
+ "001.worker.html": true,
+ "002.worker.html": true,
+ "blob-url.worker.html": [
+ "A revoked blob URL will fail"
+ ],
+ "catch.sub.any.worker.html": [
+ "Cross-origin syntax error",
+ "Cross-origin throw"
+ ],
+ "report-error-cross-origin.sub.any.worker.html": false,
+ "report-error-redirect-to-cross-origin.sub.any.worker.html": false,
+ "report-error-same-origin.sub.any.worker.html": false,
+ "report-error-setTimeout-cross-origin.sub.any.worker.html": [
+ "WorkerGlobalScope error event: error",
+ "WorkerGlobalScope error event: filename",
+ "WorkerGlobalScope error event: lineno"
+ ],
+ "report-error-setTimeout-redirect-to-cross-origin.sub.any.worker.html": [
+ "WorkerGlobalScope error event: filename",
+ "WorkerGlobalScope error event: lineno"
+ ],
+ "report-error-setTimeout-same-origin.sub.any.worker.html": [
+ "WorkerGlobalScope error event: filename",
+ "WorkerGlobalScope error event: lineno"
+ ]
+ }
+ }
+ },
+ "modules": {
+ "dedicated-worker-import-blob-url.any.html": true,
+ "dedicated-worker-import-blob-url.any.worker.html": true,
+ "dedicated-worker-import-data-url.any.html": true,
+ "dedicated-worker-import-data-url.any.worker.html": true,
+ "dedicated-worker-import.any.html": true,
+ "dedicated-worker-import.any.worker.html": true,
+ "shared-worker-import-blob-url.window.html": false,
+ "shared-worker-import-data-url.window.html": false,
+ "shared-worker-import.window.html": false
+ },
+ "nested_worker.worker.html": true,
+ "nested_worker_close_self.worker.html": true,
+ "nested_worker_importScripts.worker.html": true,
+ "nested_worker_sync_xhr.worker.html": false,
+ "semantics": {
+ "encodings": {
+ "004.worker.html": true
+ },
+ "interface-objects": {
+ "001.worker.html": [
+ "The SharedWorker interface object should be exposed.",
+ "The CanvasGradient interface object should be exposed.",
+ "The CanvasPattern interface object should be exposed.",
+ "The CanvasPath interface object should be exposed.",
+ "The TextMetrics interface object should be exposed.",
+ "The Path2D interface object should be exposed.",
+ "The XMLHttpRequestEventTarget interface object should be exposed.",
+ "The XMLHttpRequestUpload interface object should be exposed.",
+ "The XMLHttpRequest interface object should be exposed.",
+ "The FileList interface object should be exposed.",
+ "The FileReaderSync interface object should be exposed.",
+ "The IDBRequest interface object should be exposed.",
+ "The IDBOpenDBRequest interface object should be exposed.",
+ "The IDBVersionChangeEvent interface object should be exposed.",
+ "The IDBFactory interface object should be exposed.",
+ "The IDBDatabase interface object should be exposed.",
+ "The IDBObjectStore interface object should be exposed.",
+ "The IDBIndex interface object should be exposed.",
+ "The IDBKeyRange interface object should be exposed.",
+ "The IDBCursor interface object should be exposed.",
+ "The IDBCursorWithValue interface object should be exposed.",
+ "The IDBTransaction interface object should be exposed."
+ ],
+ "002.worker.html": true
+ },
+ "multiple-workers": {
+ "exposure.any.html": [
+ "SharedWorker exposure"
+ ],
+ "exposure.any.worker.html": true
+ }
+ },
+ "shared-worker-from-blob-url.window.html": false,
+ "shared-worker-in-data-url-context.window.html": false,
+ "worker-performance.worker.html": [
+ "Resource timing seems to work in workers",
+ "performance.clearResourceTimings in workers",
+ "performance.setResourceTimingBufferSize in workers"
+ ],
+ "importscripts_mime_local.any.worker.html": [
+ "importScripts() requires scripty MIME types for data: URLs: text/ecmascript is allowed.",
+ "importScripts() requires scripty MIME types for blob: URLs: text/ecmascript is allowed."
+ ]
+ },
+ "urlpattern": {
+ "urlpattern-compare.any.html": [
+ "Component: pathname Left: {\"pathname\":\"/foo/a\"} Right: {\"pathname\":\"/foo/b\"}",
+ "Component: pathname Left: {\"pathname\":\"/foo/b\"} Right: {\"pathname\":\"/foo/bar\"}",
+ "Component: pathname Left: {\"pathname\":\"/foo/bar\"} Right: {\"pathname\":\"/foo/:bar\"}",
+ "Component: pathname Left: {\"pathname\":\"/foo/\"} Right: {\"pathname\":\"/foo/:bar\"}",
+ "Component: pathname Left: {\"pathname\":\"/foo/:bar\"} Right: {\"pathname\":\"/foo/*\"}",
+ "Component: pathname Left: {\"pathname\":\"/foo/{bar}\"} Right: {\"pathname\":\"/foo/(bar)\"}",
+ "Component: pathname Left: {\"pathname\":\"/foo/{bar}\"} Right: {\"pathname\":\"/foo/{bar}+\"}",
+ "Component: pathname Left: {\"pathname\":\"/foo/{bar}+\"} Right: {\"pathname\":\"/foo/{bar}?\"}",
+ "Component: pathname Left: {\"pathname\":\"/foo/{bar}?\"} Right: {\"pathname\":\"/foo/{bar}*\"}",
+ "Component: pathname Left: {\"pathname\":\"/foo/(123)\"} Right: {\"pathname\":\"/foo/(12)\"}",
+ "Component: pathname Left: {\"pathname\":\"/foo/:b\"} Right: {\"pathname\":\"/foo/:a\"}",
+ "Component: pathname Left: {\"pathname\":\"*/foo\"} Right: {\"pathname\":\"*\"}",
+ "Component: port Left: {\"port\":\"9\"} Right: {\"port\":\"100\"}",
+ "Component: pathname Left: {\"pathname\":\"foo/:bar?/baz\"} Right: {\"pathname\":\"foo/{:bar}?/baz\"}",
+ "Component: pathname Left: {\"pathname\":\"foo/:bar?/baz\"} Right: {\"pathname\":\"foo{/:bar}?/baz\"}",
+ "Component: pathname Left: {\"pathname\":\"foo/:bar?/baz\"} Right: {\"pathname\":\"fo{o/:bar}?/baz\"}",
+ "Component: pathname Left: {\"pathname\":\"foo/:bar?/baz\"} Right: {\"pathname\":\"foo{/:bar/}?baz\"}",
+ "Component: pathname Left: \"https://a.example.com/b?a\" Right: \"https://b.example.com/a?b\"",
+ "Component: pathname Left: {\"pathname\":\"/foo/{bar}/baz\"} Right: {\"pathname\":\"/foo/bar/baz\"}",
+ "Component: protocol Left: {\"protocol\":\"a\"} Right: {\"protocol\":\"b\"}",
+ "Component: username Left: {\"username\":\"a\"} Right: {\"username\":\"b\"}",
+ "Component: password Left: {\"password\":\"a\"} Right: {\"password\":\"b\"}",
+ "Component: hostname Left: {\"hostname\":\"a\"} Right: {\"hostname\":\"b\"}",
+ "Component: search Left: {\"search\":\"a\"} Right: {\"search\":\"b\"}",
+ "Component: hash Left: {\"hash\":\"a\"} Right: {\"hash\":\"b\"}"
+ ],
+ "urlpattern-compare.any.worker.html": [
+ "Component: pathname Left: {\"pathname\":\"/foo/a\"} Right: {\"pathname\":\"/foo/b\"}",
+ "Component: pathname Left: {\"pathname\":\"/foo/b\"} Right: {\"pathname\":\"/foo/bar\"}",
+ "Component: pathname Left: {\"pathname\":\"/foo/bar\"} Right: {\"pathname\":\"/foo/:bar\"}",
+ "Component: pathname Left: {\"pathname\":\"/foo/\"} Right: {\"pathname\":\"/foo/:bar\"}",
+ "Component: pathname Left: {\"pathname\":\"/foo/:bar\"} Right: {\"pathname\":\"/foo/*\"}",
+ "Component: pathname Left: {\"pathname\":\"/foo/{bar}\"} Right: {\"pathname\":\"/foo/(bar)\"}",
+ "Component: pathname Left: {\"pathname\":\"/foo/{bar}\"} Right: {\"pathname\":\"/foo/{bar}+\"}",
+ "Component: pathname Left: {\"pathname\":\"/foo/{bar}+\"} Right: {\"pathname\":\"/foo/{bar}?\"}",
+ "Component: pathname Left: {\"pathname\":\"/foo/{bar}?\"} Right: {\"pathname\":\"/foo/{bar}*\"}",
+ "Component: pathname Left: {\"pathname\":\"/foo/(123)\"} Right: {\"pathname\":\"/foo/(12)\"}",
+ "Component: pathname Left: {\"pathname\":\"/foo/:b\"} Right: {\"pathname\":\"/foo/:a\"}",
+ "Component: pathname Left: {\"pathname\":\"*/foo\"} Right: {\"pathname\":\"*\"}",
+ "Component: port Left: {\"port\":\"9\"} Right: {\"port\":\"100\"}",
+ "Component: pathname Left: {\"pathname\":\"foo/:bar?/baz\"} Right: {\"pathname\":\"foo/{:bar}?/baz\"}",
+ "Component: pathname Left: {\"pathname\":\"foo/:bar?/baz\"} Right: {\"pathname\":\"foo{/:bar}?/baz\"}",
+ "Component: pathname Left: {\"pathname\":\"foo/:bar?/baz\"} Right: {\"pathname\":\"fo{o/:bar}?/baz\"}",
+ "Component: pathname Left: {\"pathname\":\"foo/:bar?/baz\"} Right: {\"pathname\":\"foo{/:bar/}?baz\"}",
+ "Component: pathname Left: \"https://a.example.com/b?a\" Right: \"https://b.example.com/a?b\"",
+ "Component: pathname Left: {\"pathname\":\"/foo/{bar}/baz\"} Right: {\"pathname\":\"/foo/bar/baz\"}",
+ "Component: protocol Left: {\"protocol\":\"a\"} Right: {\"protocol\":\"b\"}",
+ "Component: username Left: {\"username\":\"a\"} Right: {\"username\":\"b\"}",
+ "Component: password Left: {\"password\":\"a\"} Right: {\"password\":\"b\"}",
+ "Component: hostname Left: {\"hostname\":\"a\"} Right: {\"hostname\":\"b\"}",
+ "Component: search Left: {\"search\":\"a\"} Right: {\"search\":\"b\"}",
+ "Component: hash Left: {\"hash\":\"a\"} Right: {\"hash\":\"b\"}"
+ ],
+ "urlpattern-compare.https.any.html": [
+ "Component: pathname Left: {\"pathname\":\"/foo/a\"} Right: {\"pathname\":\"/foo/b\"}",
+ "Component: pathname Left: {\"pathname\":\"/foo/b\"} Right: {\"pathname\":\"/foo/bar\"}",
+ "Component: pathname Left: {\"pathname\":\"/foo/bar\"} Right: {\"pathname\":\"/foo/:bar\"}",
+ "Component: pathname Left: {\"pathname\":\"/foo/\"} Right: {\"pathname\":\"/foo/:bar\"}",
+ "Component: pathname Left: {\"pathname\":\"/foo/:bar\"} Right: {\"pathname\":\"/foo/*\"}",
+ "Component: pathname Left: {\"pathname\":\"/foo/{bar}\"} Right: {\"pathname\":\"/foo/(bar)\"}",
+ "Component: pathname Left: {\"pathname\":\"/foo/{bar}\"} Right: {\"pathname\":\"/foo/{bar}+\"}",
+ "Component: pathname Left: {\"pathname\":\"/foo/{bar}+\"} Right: {\"pathname\":\"/foo/{bar}?\"}",
+ "Component: pathname Left: {\"pathname\":\"/foo/{bar}?\"} Right: {\"pathname\":\"/foo/{bar}*\"}",
+ "Component: pathname Left: {\"pathname\":\"/foo/(123)\"} Right: {\"pathname\":\"/foo/(12)\"}",
+ "Component: pathname Left: {\"pathname\":\"/foo/:b\"} Right: {\"pathname\":\"/foo/:a\"}",
+ "Component: pathname Left: {\"pathname\":\"*/foo\"} Right: {\"pathname\":\"*\"}",
+ "Component: port Left: {\"port\":\"9\"} Right: {\"port\":\"100\"}",
+ "Component: pathname Left: {\"pathname\":\"foo/:bar?/baz\"} Right: {\"pathname\":\"foo/{:bar}?/baz\"}",
+ "Component: pathname Left: {\"pathname\":\"foo/:bar?/baz\"} Right: {\"pathname\":\"foo{/:bar}?/baz\"}",
+ "Component: pathname Left: {\"pathname\":\"foo/:bar?/baz\"} Right: {\"pathname\":\"fo{o/:bar}?/baz\"}",
+ "Component: pathname Left: {\"pathname\":\"foo/:bar?/baz\"} Right: {\"pathname\":\"foo{/:bar/}?baz\"}",
+ "Component: pathname Left: \"https://a.example.com/b?a\" Right: \"https://b.example.com/a?b\"",
+ "Component: pathname Left: {\"pathname\":\"/foo/{bar}/baz\"} Right: {\"pathname\":\"/foo/bar/baz\"}",
+ "Component: protocol Left: {\"protocol\":\"a\"} Right: {\"protocol\":\"b\"}",
+ "Component: username Left: {\"username\":\"a\"} Right: {\"username\":\"b\"}",
+ "Component: password Left: {\"password\":\"a\"} Right: {\"password\":\"b\"}",
+ "Component: hostname Left: {\"hostname\":\"a\"} Right: {\"hostname\":\"b\"}",
+ "Component: search Left: {\"search\":\"a\"} Right: {\"search\":\"b\"}",
+ "Component: hash Left: {\"hash\":\"a\"} Right: {\"hash\":\"b\"}"
+ ],
+ "urlpattern-compare.https.any.worker.html": [
+ "Component: pathname Left: {\"pathname\":\"/foo/a\"} Right: {\"pathname\":\"/foo/b\"}",
+ "Component: pathname Left: {\"pathname\":\"/foo/b\"} Right: {\"pathname\":\"/foo/bar\"}",
+ "Component: pathname Left: {\"pathname\":\"/foo/bar\"} Right: {\"pathname\":\"/foo/:bar\"}",
+ "Component: pathname Left: {\"pathname\":\"/foo/\"} Right: {\"pathname\":\"/foo/:bar\"}",
+ "Component: pathname Left: {\"pathname\":\"/foo/:bar\"} Right: {\"pathname\":\"/foo/*\"}",
+ "Component: pathname Left: {\"pathname\":\"/foo/{bar}\"} Right: {\"pathname\":\"/foo/(bar)\"}",
+ "Component: pathname Left: {\"pathname\":\"/foo/{bar}\"} Right: {\"pathname\":\"/foo/{bar}+\"}",
+ "Component: pathname Left: {\"pathname\":\"/foo/{bar}+\"} Right: {\"pathname\":\"/foo/{bar}?\"}",
+ "Component: pathname Left: {\"pathname\":\"/foo/{bar}?\"} Right: {\"pathname\":\"/foo/{bar}*\"}",
+ "Component: pathname Left: {\"pathname\":\"/foo/(123)\"} Right: {\"pathname\":\"/foo/(12)\"}",
+ "Component: pathname Left: {\"pathname\":\"/foo/:b\"} Right: {\"pathname\":\"/foo/:a\"}",
+ "Component: pathname Left: {\"pathname\":\"*/foo\"} Right: {\"pathname\":\"*\"}",
+ "Component: port Left: {\"port\":\"9\"} Right: {\"port\":\"100\"}",
+ "Component: pathname Left: {\"pathname\":\"foo/:bar?/baz\"} Right: {\"pathname\":\"foo/{:bar}?/baz\"}",
+ "Component: pathname Left: {\"pathname\":\"foo/:bar?/baz\"} Right: {\"pathname\":\"foo{/:bar}?/baz\"}",
+ "Component: pathname Left: {\"pathname\":\"foo/:bar?/baz\"} Right: {\"pathname\":\"fo{o/:bar}?/baz\"}",
+ "Component: pathname Left: {\"pathname\":\"foo/:bar?/baz\"} Right: {\"pathname\":\"foo{/:bar/}?baz\"}",
+ "Component: pathname Left: \"https://a.example.com/b?a\" Right: \"https://b.example.com/a?b\"",
+ "Component: pathname Left: {\"pathname\":\"/foo/{bar}/baz\"} Right: {\"pathname\":\"/foo/bar/baz\"}",
+ "Component: protocol Left: {\"protocol\":\"a\"} Right: {\"protocol\":\"b\"}",
+ "Component: username Left: {\"username\":\"a\"} Right: {\"username\":\"b\"}",
+ "Component: password Left: {\"password\":\"a\"} Right: {\"password\":\"b\"}",
+ "Component: hostname Left: {\"hostname\":\"a\"} Right: {\"hostname\":\"b\"}",
+ "Component: search Left: {\"search\":\"a\"} Right: {\"search\":\"b\"}",
+ "Component: hash Left: {\"hash\":\"a\"} Right: {\"hash\":\"b\"}"
+ ],
+ "urlpattern.any.html": [
+ "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}] Inputs: [{\"pathname\":\"/foo/bar\"}]",
+ "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}] Inputs: [{\"hostname\":\"example.com\",\"pathname\":\"/foo/bar\"}]",
+ "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}] Inputs: [{\"protocol\":\"https\",\"hostname\":\"example.com\",\"pathname\":\"/foo/bar\"}]",
+ "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com\"}] Inputs: [{\"protocol\":\"https\",\"hostname\":\"example.com\",\"pathname\":\"/foo/bar\"}]",
+ "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com\"}] Inputs: [{\"protocol\":\"https\",\"hostname\":\"example.com\",\"pathname\":\"/foo/bar/baz\"}]",
+ "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}] Inputs: [{\"protocol\":\"https\",\"hostname\":\"example.com\",\"pathname\":\"/foo/bar\",\"search\":\"otherquery\",\"hash\":\"otherhash\"}]",
+ "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com\"}] Inputs: [{\"protocol\":\"https\",\"hostname\":\"example.com\",\"pathname\":\"/foo/bar\",\"search\":\"otherquery\",\"hash\":\"otherhash\"}]",
+ "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?otherquery#otherhash\"}] Inputs: [{\"protocol\":\"https\",\"hostname\":\"example.com\",\"pathname\":\"/foo/bar\",\"search\":\"otherquery\",\"hash\":\"otherhash\"}]",
+ "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}] Inputs: [\"https://example.com/foo/bar\"]",
+ "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}] Inputs: [\"https://example.com/foo/bar?otherquery#otherhash\"]",
+ "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}] Inputs: [\"https://example.com/foo/bar?query#hash\"]",
+ "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}] Inputs: [\"https://example.com/foo/bar/baz\"]",
+ "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}] Inputs: [\"https://other.com/foo/bar\"]",
+ "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}] Inputs: [\"http://other.com/foo/bar\"]",
+ "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}] Inputs: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com\"}]",
+ "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}] Inputs: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}]",
+ "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}] Inputs: [{\"pathname\":\"/foo/bar/baz\",\"baseURL\":\"https://example.com\"}]",
+ "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}] Inputs: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://other.com\"}]",
+ "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}] Inputs: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"http://example.com\"}]",
+ "Pattern: [{\"pathname\":\"/foo/:bar?\"}] Inputs: [{\"pathname\":\"/foo\"}]",
+ "Pattern: [{\"pathname\":\"/foo/:bar*\"}] Inputs: [{\"pathname\":\"/foo\"}]",
+ "Pattern: [{\"pathname\":\"/foo/(.*)?\"}] Inputs: [{\"pathname\":\"/foo\"}]",
+ "Pattern: [{\"pathname\":\"/foo/*?\"}] Inputs: [{\"pathname\":\"/foo\"}]",
+ "Pattern: [{\"pathname\":\"/foo/(.*)*\"}] Inputs: [{\"pathname\":\"/foo\"}]",
+ "Pattern: [{\"pathname\":\"/foo/**\"}] Inputs: [{\"pathname\":\"/foo\"}]",
+ "Pattern: [{\"pathname\":\"./foo/bar\",\"baseURL\":\"https://example.com\"}] Inputs: [{\"pathname\":\"foo/bar\",\"baseURL\":\"https://example.com\"}]",
+ "Pattern: [{\"pathname\":\"\",\"baseURL\":\"https://example.com\"}] Inputs: [{\"pathname\":\"/\",\"baseURL\":\"https://example.com\"}]",
+ "Pattern: [{\"pathname\":\"{/bar}\",\"baseURL\":\"https://example.com/foo/\"}] Inputs: [{\"pathname\":\"./bar\",\"baseURL\":\"https://example.com/foo/\"}]",
+ "Pattern: [{\"pathname\":\"\\\\/bar\",\"baseURL\":\"https://example.com/foo/\"}] Inputs: [{\"pathname\":\"./bar\",\"baseURL\":\"https://example.com/foo/\"}]",
+ "Pattern: [{\"pathname\":\"b\",\"baseURL\":\"https://example.com/foo/\"}] Inputs: [{\"pathname\":\"./b\",\"baseURL\":\"https://example.com/foo/\"}]",
+ "Pattern: [{\"pathname\":\"foo/bar\",\"baseURL\":\"https://example.com\"}] Inputs: [\"https://example.com/foo/bar\"]",
+ "Pattern: [{\"pathname\":\":name.html\",\"baseURL\":\"https://example.com\"}] Inputs: [\"https://example.com/foo.html\"]",
+ "Pattern: [{\"pathname\":\"/foo/bar\"}] Inputs: [\"./foo/bar\",\"https://example.com\"]",
+ "Pattern: [\"https://example.com:8080/foo?bar#baz\"] Inputs: [{\"pathname\":\"/foo\",\"search\":\"bar\",\"hash\":\"baz\",\"baseURL\":\"https://example.com:8080\"}]",
+ "Pattern: [\"/foo?bar#baz\",\"https://example.com:8080\"] Inputs: [{\"pathname\":\"/foo\",\"search\":\"bar\",\"hash\":\"baz\",\"baseURL\":\"https://example.com:8080\"}]",
+ "Pattern: [\"http{s}?://{*.}?example.com/:product/:endpoint\"] Inputs: [\"https://sub.example.com/foo/bar\"]",
+ "Pattern: [\"https://example.com?foo\"] Inputs: [\"https://example.com/?foo\"]",
+ "Pattern: [\"https://example.com#foo\"] Inputs: [\"https://example.com/#foo\"]",
+ "Pattern: [\"https://example.com:8080?foo\"] Inputs: [\"https://example.com:8080/?foo\"]",
+ "Pattern: [\"https://example.com:8080#foo\"] Inputs: [\"https://example.com:8080/#foo\"]",
+ "Pattern: [\"https://example.com/?foo\"] Inputs: [\"https://example.com/?foo\"]",
+ "Pattern: [\"https://example.com/#foo\"] Inputs: [\"https://example.com/#foo\"]",
+ "Pattern: [\"https://example.com/*?foo\"] Inputs: [\"https://example.com/?foo\"]",
+ "Pattern: [\"https://example.com/*\\\\?foo\"] Inputs: [\"https://example.com/?foo\"]",
+ "Pattern: [\"https://example.com/:name?foo\"] Inputs: [\"https://example.com/bar?foo\"]",
+ "Pattern: [\"https://example.com/:name\\\\?foo\"] Inputs: [\"https://example.com/bar?foo\"]",
+ "Pattern: [\"https://example.com/(bar)?foo\"] Inputs: [\"https://example.com/bar?foo\"]",
+ "Pattern: [\"https://example.com/(bar)\\\\?foo\"] Inputs: [\"https://example.com/bar?foo\"]",
+ "Pattern: [\"https://example.com/{bar}?foo\"] Inputs: [\"https://example.com/bar?foo\"]",
+ "Pattern: [\"https://example.com/{bar}\\\\?foo\"] Inputs: [\"https://example.com/bar?foo\"]",
+ "Pattern: [\"https://example.com/\"] Inputs: [\"https://example.com:8080/\"]",
+ "Pattern: [\"data\\\\:foobar\"] Inputs: [\"data:foobar\"]",
+ "Pattern: [\"https://{sub.}?example.com/foo\"] Inputs: [\"https://example.com/foo\"]",
+ "Pattern: [\"https://(sub.)?example.com/foo\"] Inputs: [\"https://example.com/foo\"]",
+ "Pattern: [\"https://(sub.)?example(.com/)foo\"] Inputs: [\"https://example.com/foo\"]",
+ "Pattern: [\"https://(sub(?:.))?example.com/foo\"] Inputs: [\"https://example.com/foo\"]",
+ "Pattern: [\"file:///foo/bar\"] Inputs: [\"file:///foo/bar\"]",
+ "Pattern: [\"data:\"] Inputs: [\"data:\"]",
+ "Pattern: [\"foo://bar\"] Inputs: [\"foo://bad_url_browser_interop\"]",
+ "Pattern: [\"https://example.com/foo?bar#baz\"] Inputs: [{\"protocol\":\"https:\",\"search\":\"?bar\",\"hash\":\"#baz\",\"baseURL\":\"http://example.com/foo\"}]",
+ "Pattern: [\"?bar#baz\",\"https://example.com/foo\"] Inputs: [\"?bar#baz\",\"https://example.com/foo\"]",
+ "Pattern: [\"?bar\",\"https://example.com/foo#baz\"] Inputs: [\"?bar\",\"https://example.com/foo#snafu\"]",
+ "Pattern: [\"#baz\",\"https://example.com/foo?bar\"] Inputs: [\"#baz\",\"https://example.com/foo?bar\"]",
+ "Pattern: [\"#baz\",\"https://example.com/foo\"] Inputs: [\"#baz\",\"https://example.com/foo\"]",
+ "Pattern: [\"https://foo\\\\:bar@example.com\"] Inputs: [\"https://foo:bar@example.com\"]",
+ "Pattern: [\"https://foo@example.com\"] Inputs: [\"https://foo@example.com\"]",
+ "Pattern: [\"https://\\\\:bar@example.com\"] Inputs: [\"https://:bar@example.com\"]",
+ "Pattern: [\"https://:user::pass@example.com\"] Inputs: [\"https://foo:bar@example.com\"]",
+ "Pattern: [\"https\\\\:foo\\\\:bar@example.com\"] Inputs: [\"https:foo:bar@example.com\"]",
+ "Pattern: [\"data\\\\:foo\\\\:bar@example.com\"] Inputs: [\"data:foo:bar@example.com\"]",
+ "Pattern: [\"https://foo{\\\\:}bar@example.com\"] Inputs: [\"https://foo:bar@example.com\"]",
+ "Pattern: [\"data{\\\\:}channel.html\",\"https://example.com\"] Inputs: [\"https://example.com/data:channel.html\"]",
+ "Pattern: [\"http://[\\\\:\\\\:1]/\"] Inputs: [\"http://[::1]/\"]",
+ "Pattern: [\"http://[\\\\:\\\\:1]:8080/\"] Inputs: [\"http://[::1]:8080/\"]",
+ "Pattern: [\"http://[\\\\:\\\\:a]/\"] Inputs: [\"http://[::a]/\"]",
+ "Pattern: [\"http://[:address]/\"] Inputs: [\"http://[::1]/\"]",
+ "Pattern: [\"http://[\\\\:\\\\:AB\\\\::num]/\"] Inputs: [\"http://[::ab:1]/\"]",
+ "Pattern: [\"data\\\\:text/javascript,let x = 100/:tens?5;\"] Inputs: [\"data:text/javascript,let x = 100/5;\"]",
+ "Pattern: [{\"hostname\":\"bad\\\\:hostname\"}] Inputs: undefined",
+ "Pattern: [] Inputs: [\"https://example.com/\"]",
+ "Pattern: [] Inputs: [{}]",
+ "Pattern: [] Inputs: []",
+ "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: [{\"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\"]",
+ "Pattern: [{\"pathname\":\"/([[a-z]--a])\"}] Inputs: [{\"pathname\":\"/a\"}]",
+ "Pattern: [{\"pathname\":\"/([[a-z]--a])\"}] Inputs: [{\"pathname\":\"/z\"}]",
+ "Pattern: [{\"pathname\":\"/([\\\\d&&[0-1]])\"}] Inputs: [{\"pathname\":\"/0\"}]",
+ "Pattern: [{\"pathname\":\"/([\\\\d&&[0-1]])\"}] Inputs: [{\"pathname\":\"/3\"}]"
+ ],
+ "urlpattern.any.worker.html": [
+ "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}] Inputs: [{\"pathname\":\"/foo/bar\"}]",
+ "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}] Inputs: [{\"hostname\":\"example.com\",\"pathname\":\"/foo/bar\"}]",
+ "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}] Inputs: [{\"protocol\":\"https\",\"hostname\":\"example.com\",\"pathname\":\"/foo/bar\"}]",
+ "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com\"}] Inputs: [{\"protocol\":\"https\",\"hostname\":\"example.com\",\"pathname\":\"/foo/bar\"}]",
+ "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com\"}] Inputs: [{\"protocol\":\"https\",\"hostname\":\"example.com\",\"pathname\":\"/foo/bar/baz\"}]",
+ "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}] Inputs: [{\"protocol\":\"https\",\"hostname\":\"example.com\",\"pathname\":\"/foo/bar\",\"search\":\"otherquery\",\"hash\":\"otherhash\"}]",
+ "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com\"}] Inputs: [{\"protocol\":\"https\",\"hostname\":\"example.com\",\"pathname\":\"/foo/bar\",\"search\":\"otherquery\",\"hash\":\"otherhash\"}]",
+ "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?otherquery#otherhash\"}] Inputs: [{\"protocol\":\"https\",\"hostname\":\"example.com\",\"pathname\":\"/foo/bar\",\"search\":\"otherquery\",\"hash\":\"otherhash\"}]",
+ "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}] Inputs: [\"https://example.com/foo/bar\"]",
+ "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}] Inputs: [\"https://example.com/foo/bar?otherquery#otherhash\"]",
+ "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}] Inputs: [\"https://example.com/foo/bar?query#hash\"]",
+ "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}] Inputs: [\"https://example.com/foo/bar/baz\"]",
+ "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}] Inputs: [\"https://other.com/foo/bar\"]",
+ "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}] Inputs: [\"http://other.com/foo/bar\"]",
+ "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}] Inputs: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com\"}]",
+ "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}] Inputs: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}]",
+ "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}] Inputs: [{\"pathname\":\"/foo/bar/baz\",\"baseURL\":\"https://example.com\"}]",
+ "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}] Inputs: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://other.com\"}]",
+ "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}] Inputs: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"http://example.com\"}]",
+ "Pattern: [{\"pathname\":\"/foo/:bar?\"}] Inputs: [{\"pathname\":\"/foo\"}]",
+ "Pattern: [{\"pathname\":\"/foo/:bar*\"}] Inputs: [{\"pathname\":\"/foo\"}]",
+ "Pattern: [{\"pathname\":\"/foo/(.*)?\"}] Inputs: [{\"pathname\":\"/foo\"}]",
+ "Pattern: [{\"pathname\":\"/foo/*?\"}] Inputs: [{\"pathname\":\"/foo\"}]",
+ "Pattern: [{\"pathname\":\"/foo/(.*)*\"}] Inputs: [{\"pathname\":\"/foo\"}]",
+ "Pattern: [{\"pathname\":\"/foo/**\"}] Inputs: [{\"pathname\":\"/foo\"}]",
+ "Pattern: [{\"pathname\":\"./foo/bar\",\"baseURL\":\"https://example.com\"}] Inputs: [{\"pathname\":\"foo/bar\",\"baseURL\":\"https://example.com\"}]",
+ "Pattern: [{\"pathname\":\"\",\"baseURL\":\"https://example.com\"}] Inputs: [{\"pathname\":\"/\",\"baseURL\":\"https://example.com\"}]",
+ "Pattern: [{\"pathname\":\"{/bar}\",\"baseURL\":\"https://example.com/foo/\"}] Inputs: [{\"pathname\":\"./bar\",\"baseURL\":\"https://example.com/foo/\"}]",
+ "Pattern: [{\"pathname\":\"\\\\/bar\",\"baseURL\":\"https://example.com/foo/\"}] Inputs: [{\"pathname\":\"./bar\",\"baseURL\":\"https://example.com/foo/\"}]",
+ "Pattern: [{\"pathname\":\"b\",\"baseURL\":\"https://example.com/foo/\"}] Inputs: [{\"pathname\":\"./b\",\"baseURL\":\"https://example.com/foo/\"}]",
+ "Pattern: [{\"pathname\":\"foo/bar\",\"baseURL\":\"https://example.com\"}] Inputs: [\"https://example.com/foo/bar\"]",
+ "Pattern: [{\"pathname\":\":name.html\",\"baseURL\":\"https://example.com\"}] Inputs: [\"https://example.com/foo.html\"]",
+ "Pattern: [{\"pathname\":\"/foo/bar\"}] Inputs: [\"./foo/bar\",\"https://example.com\"]",
+ "Pattern: [\"https://example.com:8080/foo?bar#baz\"] Inputs: [{\"pathname\":\"/foo\",\"search\":\"bar\",\"hash\":\"baz\",\"baseURL\":\"https://example.com:8080\"}]",
+ "Pattern: [\"/foo?bar#baz\",\"https://example.com:8080\"] Inputs: [{\"pathname\":\"/foo\",\"search\":\"bar\",\"hash\":\"baz\",\"baseURL\":\"https://example.com:8080\"}]",
+ "Pattern: [\"http{s}?://{*.}?example.com/:product/:endpoint\"] Inputs: [\"https://sub.example.com/foo/bar\"]",
+ "Pattern: [\"https://example.com?foo\"] Inputs: [\"https://example.com/?foo\"]",
+ "Pattern: [\"https://example.com#foo\"] Inputs: [\"https://example.com/#foo\"]",
+ "Pattern: [\"https://example.com:8080?foo\"] Inputs: [\"https://example.com:8080/?foo\"]",
+ "Pattern: [\"https://example.com:8080#foo\"] Inputs: [\"https://example.com:8080/#foo\"]",
+ "Pattern: [\"https://example.com/?foo\"] Inputs: [\"https://example.com/?foo\"]",
+ "Pattern: [\"https://example.com/#foo\"] Inputs: [\"https://example.com/#foo\"]",
+ "Pattern: [\"https://example.com/*?foo\"] Inputs: [\"https://example.com/?foo\"]",
+ "Pattern: [\"https://example.com/*\\\\?foo\"] Inputs: [\"https://example.com/?foo\"]",
+ "Pattern: [\"https://example.com/:name?foo\"] Inputs: [\"https://example.com/bar?foo\"]",
+ "Pattern: [\"https://example.com/:name\\\\?foo\"] Inputs: [\"https://example.com/bar?foo\"]",
+ "Pattern: [\"https://example.com/(bar)?foo\"] Inputs: [\"https://example.com/bar?foo\"]",
+ "Pattern: [\"https://example.com/(bar)\\\\?foo\"] Inputs: [\"https://example.com/bar?foo\"]",
+ "Pattern: [\"https://example.com/{bar}?foo\"] Inputs: [\"https://example.com/bar?foo\"]",
+ "Pattern: [\"https://example.com/{bar}\\\\?foo\"] Inputs: [\"https://example.com/bar?foo\"]",
+ "Pattern: [\"https://example.com/\"] Inputs: [\"https://example.com:8080/\"]",
+ "Pattern: [\"data\\\\:foobar\"] Inputs: [\"data:foobar\"]",
+ "Pattern: [\"https://{sub.}?example.com/foo\"] Inputs: [\"https://example.com/foo\"]",
+ "Pattern: [\"https://(sub.)?example.com/foo\"] Inputs: [\"https://example.com/foo\"]",
+ "Pattern: [\"https://(sub.)?example(.com/)foo\"] Inputs: [\"https://example.com/foo\"]",
+ "Pattern: [\"https://(sub(?:.))?example.com/foo\"] Inputs: [\"https://example.com/foo\"]",
+ "Pattern: [\"file:///foo/bar\"] Inputs: [\"file:///foo/bar\"]",
+ "Pattern: [\"data:\"] Inputs: [\"data:\"]",
+ "Pattern: [\"foo://bar\"] Inputs: [\"foo://bad_url_browser_interop\"]",
+ "Pattern: [\"https://example.com/foo?bar#baz\"] Inputs: [{\"protocol\":\"https:\",\"search\":\"?bar\",\"hash\":\"#baz\",\"baseURL\":\"http://example.com/foo\"}]",
+ "Pattern: [\"?bar#baz\",\"https://example.com/foo\"] Inputs: [\"?bar#baz\",\"https://example.com/foo\"]",
+ "Pattern: [\"?bar\",\"https://example.com/foo#baz\"] Inputs: [\"?bar\",\"https://example.com/foo#snafu\"]",
+ "Pattern: [\"#baz\",\"https://example.com/foo?bar\"] Inputs: [\"#baz\",\"https://example.com/foo?bar\"]",
+ "Pattern: [\"#baz\",\"https://example.com/foo\"] Inputs: [\"#baz\",\"https://example.com/foo\"]",
+ "Pattern: [\"https://foo\\\\:bar@example.com\"] Inputs: [\"https://foo:bar@example.com\"]",
+ "Pattern: [\"https://foo@example.com\"] Inputs: [\"https://foo@example.com\"]",
+ "Pattern: [\"https://\\\\:bar@example.com\"] Inputs: [\"https://:bar@example.com\"]",
+ "Pattern: [\"https://:user::pass@example.com\"] Inputs: [\"https://foo:bar@example.com\"]",
+ "Pattern: [\"https\\\\:foo\\\\:bar@example.com\"] Inputs: [\"https:foo:bar@example.com\"]",
+ "Pattern: [\"data\\\\:foo\\\\:bar@example.com\"] Inputs: [\"data:foo:bar@example.com\"]",
+ "Pattern: [\"https://foo{\\\\:}bar@example.com\"] Inputs: [\"https://foo:bar@example.com\"]",
+ "Pattern: [\"data{\\\\:}channel.html\",\"https://example.com\"] Inputs: [\"https://example.com/data:channel.html\"]",
+ "Pattern: [\"http://[\\\\:\\\\:1]/\"] Inputs: [\"http://[::1]/\"]",
+ "Pattern: [\"http://[\\\\:\\\\:1]:8080/\"] Inputs: [\"http://[::1]:8080/\"]",
+ "Pattern: [\"http://[\\\\:\\\\:a]/\"] Inputs: [\"http://[::a]/\"]",
+ "Pattern: [\"http://[:address]/\"] Inputs: [\"http://[::1]/\"]",
+ "Pattern: [\"http://[\\\\:\\\\:AB\\\\::num]/\"] Inputs: [\"http://[::ab:1]/\"]",
+ "Pattern: [\"data\\\\:text/javascript,let x = 100/:tens?5;\"] Inputs: [\"data:text/javascript,let x = 100/5;\"]",
+ "Pattern: [{\"hostname\":\"bad\\\\:hostname\"}] Inputs: undefined",
+ "Pattern: [] Inputs: [\"https://example.com/\"]",
+ "Pattern: [] Inputs: [{}]",
+ "Pattern: [] Inputs: []",
+ "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: [{\"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\"]",
+ "Pattern: [{\"pathname\":\"/([[a-z]--a])\"}] Inputs: [{\"pathname\":\"/a\"}]",
+ "Pattern: [{\"pathname\":\"/([[a-z]--a])\"}] Inputs: [{\"pathname\":\"/z\"}]",
+ "Pattern: [{\"pathname\":\"/([\\\\d&&[0-1]])\"}] Inputs: [{\"pathname\":\"/0\"}]",
+ "Pattern: [{\"pathname\":\"/([\\\\d&&[0-1]])\"}] Inputs: [{\"pathname\":\"/3\"}]"
+ ],
+ "urlpattern.https.any.html": [
+ "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}] Inputs: [{\"pathname\":\"/foo/bar\"}]",
+ "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}] Inputs: [{\"hostname\":\"example.com\",\"pathname\":\"/foo/bar\"}]",
+ "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}] Inputs: [{\"protocol\":\"https\",\"hostname\":\"example.com\",\"pathname\":\"/foo/bar\"}]",
+ "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com\"}] Inputs: [{\"protocol\":\"https\",\"hostname\":\"example.com\",\"pathname\":\"/foo/bar\"}]",
+ "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com\"}] Inputs: [{\"protocol\":\"https\",\"hostname\":\"example.com\",\"pathname\":\"/foo/bar/baz\"}]",
+ "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}] Inputs: [{\"protocol\":\"https\",\"hostname\":\"example.com\",\"pathname\":\"/foo/bar\",\"search\":\"otherquery\",\"hash\":\"otherhash\"}]",
+ "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com\"}] Inputs: [{\"protocol\":\"https\",\"hostname\":\"example.com\",\"pathname\":\"/foo/bar\",\"search\":\"otherquery\",\"hash\":\"otherhash\"}]",
+ "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?otherquery#otherhash\"}] Inputs: [{\"protocol\":\"https\",\"hostname\":\"example.com\",\"pathname\":\"/foo/bar\",\"search\":\"otherquery\",\"hash\":\"otherhash\"}]",
+ "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}] Inputs: [\"https://example.com/foo/bar\"]",
+ "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}] Inputs: [\"https://example.com/foo/bar?otherquery#otherhash\"]",
+ "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}] Inputs: [\"https://example.com/foo/bar?query#hash\"]",
+ "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}] Inputs: [\"https://example.com/foo/bar/baz\"]",
+ "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}] Inputs: [\"https://other.com/foo/bar\"]",
+ "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}] Inputs: [\"http://other.com/foo/bar\"]",
+ "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}] Inputs: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com\"}]",
+ "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}] Inputs: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}]",
+ "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}] Inputs: [{\"pathname\":\"/foo/bar/baz\",\"baseURL\":\"https://example.com\"}]",
+ "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}] Inputs: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://other.com\"}]",
+ "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}] Inputs: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"http://example.com\"}]",
+ "Pattern: [{\"pathname\":\"/foo/:bar?\"}] Inputs: [{\"pathname\":\"/foo\"}]",
+ "Pattern: [{\"pathname\":\"/foo/:bar*\"}] Inputs: [{\"pathname\":\"/foo\"}]",
+ "Pattern: [{\"pathname\":\"/foo/(.*)?\"}] Inputs: [{\"pathname\":\"/foo\"}]",
+ "Pattern: [{\"pathname\":\"/foo/*?\"}] Inputs: [{\"pathname\":\"/foo\"}]",
+ "Pattern: [{\"pathname\":\"/foo/(.*)*\"}] Inputs: [{\"pathname\":\"/foo\"}]",
+ "Pattern: [{\"pathname\":\"/foo/**\"}] Inputs: [{\"pathname\":\"/foo\"}]",
+ "Pattern: [{\"pathname\":\"./foo/bar\",\"baseURL\":\"https://example.com\"}] Inputs: [{\"pathname\":\"foo/bar\",\"baseURL\":\"https://example.com\"}]",
+ "Pattern: [{\"pathname\":\"\",\"baseURL\":\"https://example.com\"}] Inputs: [{\"pathname\":\"/\",\"baseURL\":\"https://example.com\"}]",
+ "Pattern: [{\"pathname\":\"{/bar}\",\"baseURL\":\"https://example.com/foo/\"}] Inputs: [{\"pathname\":\"./bar\",\"baseURL\":\"https://example.com/foo/\"}]",
+ "Pattern: [{\"pathname\":\"\\\\/bar\",\"baseURL\":\"https://example.com/foo/\"}] Inputs: [{\"pathname\":\"./bar\",\"baseURL\":\"https://example.com/foo/\"}]",
+ "Pattern: [{\"pathname\":\"b\",\"baseURL\":\"https://example.com/foo/\"}] Inputs: [{\"pathname\":\"./b\",\"baseURL\":\"https://example.com/foo/\"}]",
+ "Pattern: [{\"pathname\":\"foo/bar\",\"baseURL\":\"https://example.com\"}] Inputs: [\"https://example.com/foo/bar\"]",
+ "Pattern: [{\"pathname\":\":name.html\",\"baseURL\":\"https://example.com\"}] Inputs: [\"https://example.com/foo.html\"]",
+ "Pattern: [{\"pathname\":\"/foo/bar\"}] Inputs: [\"./foo/bar\",\"https://example.com\"]",
+ "Pattern: [\"https://example.com:8080/foo?bar#baz\"] Inputs: [{\"pathname\":\"/foo\",\"search\":\"bar\",\"hash\":\"baz\",\"baseURL\":\"https://example.com:8080\"}]",
+ "Pattern: [\"/foo?bar#baz\",\"https://example.com:8080\"] Inputs: [{\"pathname\":\"/foo\",\"search\":\"bar\",\"hash\":\"baz\",\"baseURL\":\"https://example.com:8080\"}]",
+ "Pattern: [\"http{s}?://{*.}?example.com/:product/:endpoint\"] Inputs: [\"https://sub.example.com/foo/bar\"]",
+ "Pattern: [\"https://example.com?foo\"] Inputs: [\"https://example.com/?foo\"]",
+ "Pattern: [\"https://example.com#foo\"] Inputs: [\"https://example.com/#foo\"]",
+ "Pattern: [\"https://example.com:8080?foo\"] Inputs: [\"https://example.com:8080/?foo\"]",
+ "Pattern: [\"https://example.com:8080#foo\"] Inputs: [\"https://example.com:8080/#foo\"]",
+ "Pattern: [\"https://example.com/?foo\"] Inputs: [\"https://example.com/?foo\"]",
+ "Pattern: [\"https://example.com/#foo\"] Inputs: [\"https://example.com/#foo\"]",
+ "Pattern: [\"https://example.com/*?foo\"] Inputs: [\"https://example.com/?foo\"]",
+ "Pattern: [\"https://example.com/*\\\\?foo\"] Inputs: [\"https://example.com/?foo\"]",
+ "Pattern: [\"https://example.com/:name?foo\"] Inputs: [\"https://example.com/bar?foo\"]",
+ "Pattern: [\"https://example.com/:name\\\\?foo\"] Inputs: [\"https://example.com/bar?foo\"]",
+ "Pattern: [\"https://example.com/(bar)?foo\"] Inputs: [\"https://example.com/bar?foo\"]",
+ "Pattern: [\"https://example.com/(bar)\\\\?foo\"] Inputs: [\"https://example.com/bar?foo\"]",
+ "Pattern: [\"https://example.com/{bar}?foo\"] Inputs: [\"https://example.com/bar?foo\"]",
+ "Pattern: [\"https://example.com/{bar}\\\\?foo\"] Inputs: [\"https://example.com/bar?foo\"]",
+ "Pattern: [\"https://example.com/\"] Inputs: [\"https://example.com:8080/\"]",
+ "Pattern: [\"data\\\\:foobar\"] Inputs: [\"data:foobar\"]",
+ "Pattern: [\"https://{sub.}?example.com/foo\"] Inputs: [\"https://example.com/foo\"]",
+ "Pattern: [\"https://(sub.)?example.com/foo\"] Inputs: [\"https://example.com/foo\"]",
+ "Pattern: [\"https://(sub.)?example(.com/)foo\"] Inputs: [\"https://example.com/foo\"]",
+ "Pattern: [\"https://(sub(?:.))?example.com/foo\"] Inputs: [\"https://example.com/foo\"]",
+ "Pattern: [\"file:///foo/bar\"] Inputs: [\"file:///foo/bar\"]",
+ "Pattern: [\"data:\"] Inputs: [\"data:\"]",
+ "Pattern: [\"foo://bar\"] Inputs: [\"foo://bad_url_browser_interop\"]",
+ "Pattern: [\"https://example.com/foo?bar#baz\"] Inputs: [{\"protocol\":\"https:\",\"search\":\"?bar\",\"hash\":\"#baz\",\"baseURL\":\"http://example.com/foo\"}]",
+ "Pattern: [\"?bar#baz\",\"https://example.com/foo\"] Inputs: [\"?bar#baz\",\"https://example.com/foo\"]",
+ "Pattern: [\"?bar\",\"https://example.com/foo#baz\"] Inputs: [\"?bar\",\"https://example.com/foo#snafu\"]",
+ "Pattern: [\"#baz\",\"https://example.com/foo?bar\"] Inputs: [\"#baz\",\"https://example.com/foo?bar\"]",
+ "Pattern: [\"#baz\",\"https://example.com/foo\"] Inputs: [\"#baz\",\"https://example.com/foo\"]",
+ "Pattern: [\"https://foo\\\\:bar@example.com\"] Inputs: [\"https://foo:bar@example.com\"]",
+ "Pattern: [\"https://foo@example.com\"] Inputs: [\"https://foo@example.com\"]",
+ "Pattern: [\"https://\\\\:bar@example.com\"] Inputs: [\"https://:bar@example.com\"]",
+ "Pattern: [\"https://:user::pass@example.com\"] Inputs: [\"https://foo:bar@example.com\"]",
+ "Pattern: [\"https\\\\:foo\\\\:bar@example.com\"] Inputs: [\"https:foo:bar@example.com\"]",
+ "Pattern: [\"data\\\\:foo\\\\:bar@example.com\"] Inputs: [\"data:foo:bar@example.com\"]",
+ "Pattern: [\"https://foo{\\\\:}bar@example.com\"] Inputs: [\"https://foo:bar@example.com\"]",
+ "Pattern: [\"data{\\\\:}channel.html\",\"https://example.com\"] Inputs: [\"https://example.com/data:channel.html\"]",
+ "Pattern: [\"http://[\\\\:\\\\:1]/\"] Inputs: [\"http://[::1]/\"]",
+ "Pattern: [\"http://[\\\\:\\\\:1]:8080/\"] Inputs: [\"http://[::1]:8080/\"]",
+ "Pattern: [\"http://[\\\\:\\\\:a]/\"] Inputs: [\"http://[::a]/\"]",
+ "Pattern: [\"http://[:address]/\"] Inputs: [\"http://[::1]/\"]",
+ "Pattern: [\"http://[\\\\:\\\\:AB\\\\::num]/\"] Inputs: [\"http://[::ab:1]/\"]",
+ "Pattern: [\"data\\\\:text/javascript,let x = 100/:tens?5;\"] Inputs: [\"data:text/javascript,let x = 100/5;\"]",
+ "Pattern: [{\"hostname\":\"bad\\\\:hostname\"}] Inputs: undefined",
+ "Pattern: [] Inputs: [\"https://example.com/\"]",
+ "Pattern: [] Inputs: [{}]",
+ "Pattern: [] Inputs: []",
+ "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: [{\"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\"]",
+ "Pattern: [{\"pathname\":\"/([[a-z]--a])\"}] Inputs: [{\"pathname\":\"/a\"}]",
+ "Pattern: [{\"pathname\":\"/([[a-z]--a])\"}] Inputs: [{\"pathname\":\"/z\"}]",
+ "Pattern: [{\"pathname\":\"/([\\\\d&&[0-1]])\"}] Inputs: [{\"pathname\":\"/0\"}]",
+ "Pattern: [{\"pathname\":\"/([\\\\d&&[0-1]])\"}] Inputs: [{\"pathname\":\"/3\"}]"
+ ],
+ "urlpattern.https.any.worker.html": [
+ "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}] Inputs: [{\"pathname\":\"/foo/bar\"}]",
+ "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}] Inputs: [{\"hostname\":\"example.com\",\"pathname\":\"/foo/bar\"}]",
+ "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}] Inputs: [{\"protocol\":\"https\",\"hostname\":\"example.com\",\"pathname\":\"/foo/bar\"}]",
+ "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com\"}] Inputs: [{\"protocol\":\"https\",\"hostname\":\"example.com\",\"pathname\":\"/foo/bar\"}]",
+ "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com\"}] Inputs: [{\"protocol\":\"https\",\"hostname\":\"example.com\",\"pathname\":\"/foo/bar/baz\"}]",
+ "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}] Inputs: [{\"protocol\":\"https\",\"hostname\":\"example.com\",\"pathname\":\"/foo/bar\",\"search\":\"otherquery\",\"hash\":\"otherhash\"}]",
+ "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com\"}] Inputs: [{\"protocol\":\"https\",\"hostname\":\"example.com\",\"pathname\":\"/foo/bar\",\"search\":\"otherquery\",\"hash\":\"otherhash\"}]",
+ "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?otherquery#otherhash\"}] Inputs: [{\"protocol\":\"https\",\"hostname\":\"example.com\",\"pathname\":\"/foo/bar\",\"search\":\"otherquery\",\"hash\":\"otherhash\"}]",
+ "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}] Inputs: [\"https://example.com/foo/bar\"]",
+ "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}] Inputs: [\"https://example.com/foo/bar?otherquery#otherhash\"]",
+ "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}] Inputs: [\"https://example.com/foo/bar?query#hash\"]",
+ "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}] Inputs: [\"https://example.com/foo/bar/baz\"]",
+ "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}] Inputs: [\"https://other.com/foo/bar\"]",
+ "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}] Inputs: [\"http://other.com/foo/bar\"]",
+ "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}] Inputs: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com\"}]",
+ "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}] Inputs: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}]",
+ "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}] Inputs: [{\"pathname\":\"/foo/bar/baz\",\"baseURL\":\"https://example.com\"}]",
+ "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}] Inputs: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://other.com\"}]",
+ "Pattern: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"https://example.com?query#hash\"}] Inputs: [{\"pathname\":\"/foo/bar\",\"baseURL\":\"http://example.com\"}]",
+ "Pattern: [{\"pathname\":\"/foo/:bar?\"}] Inputs: [{\"pathname\":\"/foo\"}]",
+ "Pattern: [{\"pathname\":\"/foo/:bar*\"}] Inputs: [{\"pathname\":\"/foo\"}]",
+ "Pattern: [{\"pathname\":\"/foo/(.*)?\"}] Inputs: [{\"pathname\":\"/foo\"}]",
+ "Pattern: [{\"pathname\":\"/foo/*?\"}] Inputs: [{\"pathname\":\"/foo\"}]",
+ "Pattern: [{\"pathname\":\"/foo/(.*)*\"}] Inputs: [{\"pathname\":\"/foo\"}]",
+ "Pattern: [{\"pathname\":\"/foo/**\"}] Inputs: [{\"pathname\":\"/foo\"}]",
+ "Pattern: [{\"pathname\":\"./foo/bar\",\"baseURL\":\"https://example.com\"}] Inputs: [{\"pathname\":\"foo/bar\",\"baseURL\":\"https://example.com\"}]",
+ "Pattern: [{\"pathname\":\"\",\"baseURL\":\"https://example.com\"}] Inputs: [{\"pathname\":\"/\",\"baseURL\":\"https://example.com\"}]",
+ "Pattern: [{\"pathname\":\"{/bar}\",\"baseURL\":\"https://example.com/foo/\"}] Inputs: [{\"pathname\":\"./bar\",\"baseURL\":\"https://example.com/foo/\"}]",
+ "Pattern: [{\"pathname\":\"\\\\/bar\",\"baseURL\":\"https://example.com/foo/\"}] Inputs: [{\"pathname\":\"./bar\",\"baseURL\":\"https://example.com/foo/\"}]",
+ "Pattern: [{\"pathname\":\"b\",\"baseURL\":\"https://example.com/foo/\"}] Inputs: [{\"pathname\":\"./b\",\"baseURL\":\"https://example.com/foo/\"}]",
+ "Pattern: [{\"pathname\":\"foo/bar\",\"baseURL\":\"https://example.com\"}] Inputs: [\"https://example.com/foo/bar\"]",
+ "Pattern: [{\"pathname\":\":name.html\",\"baseURL\":\"https://example.com\"}] Inputs: [\"https://example.com/foo.html\"]",
+ "Pattern: [{\"pathname\":\"/foo/bar\"}] Inputs: [\"./foo/bar\",\"https://example.com\"]",
+ "Pattern: [\"https://example.com:8080/foo?bar#baz\"] Inputs: [{\"pathname\":\"/foo\",\"search\":\"bar\",\"hash\":\"baz\",\"baseURL\":\"https://example.com:8080\"}]",
+ "Pattern: [\"/foo?bar#baz\",\"https://example.com:8080\"] Inputs: [{\"pathname\":\"/foo\",\"search\":\"bar\",\"hash\":\"baz\",\"baseURL\":\"https://example.com:8080\"}]",
+ "Pattern: [\"http{s}?://{*.}?example.com/:product/:endpoint\"] Inputs: [\"https://sub.example.com/foo/bar\"]",
+ "Pattern: [\"https://example.com?foo\"] Inputs: [\"https://example.com/?foo\"]",
+ "Pattern: [\"https://example.com#foo\"] Inputs: [\"https://example.com/#foo\"]",
+ "Pattern: [\"https://example.com:8080?foo\"] Inputs: [\"https://example.com:8080/?foo\"]",
+ "Pattern: [\"https://example.com:8080#foo\"] Inputs: [\"https://example.com:8080/#foo\"]",
+ "Pattern: [\"https://example.com/?foo\"] Inputs: [\"https://example.com/?foo\"]",
+ "Pattern: [\"https://example.com/#foo\"] Inputs: [\"https://example.com/#foo\"]",
+ "Pattern: [\"https://example.com/*?foo\"] Inputs: [\"https://example.com/?foo\"]",
+ "Pattern: [\"https://example.com/*\\\\?foo\"] Inputs: [\"https://example.com/?foo\"]",
+ "Pattern: [\"https://example.com/:name?foo\"] Inputs: [\"https://example.com/bar?foo\"]",
+ "Pattern: [\"https://example.com/:name\\\\?foo\"] Inputs: [\"https://example.com/bar?foo\"]",
+ "Pattern: [\"https://example.com/(bar)?foo\"] Inputs: [\"https://example.com/bar?foo\"]",
+ "Pattern: [\"https://example.com/(bar)\\\\?foo\"] Inputs: [\"https://example.com/bar?foo\"]",
+ "Pattern: [\"https://example.com/{bar}?foo\"] Inputs: [\"https://example.com/bar?foo\"]",
+ "Pattern: [\"https://example.com/{bar}\\\\?foo\"] Inputs: [\"https://example.com/bar?foo\"]",
+ "Pattern: [\"https://example.com/\"] Inputs: [\"https://example.com:8080/\"]",
+ "Pattern: [\"data\\\\:foobar\"] Inputs: [\"data:foobar\"]",
+ "Pattern: [\"https://{sub.}?example.com/foo\"] Inputs: [\"https://example.com/foo\"]",
+ "Pattern: [\"https://(sub.)?example.com/foo\"] Inputs: [\"https://example.com/foo\"]",
+ "Pattern: [\"https://(sub.)?example(.com/)foo\"] Inputs: [\"https://example.com/foo\"]",
+ "Pattern: [\"https://(sub(?:.))?example.com/foo\"] Inputs: [\"https://example.com/foo\"]",
+ "Pattern: [\"file:///foo/bar\"] Inputs: [\"file:///foo/bar\"]",
+ "Pattern: [\"data:\"] Inputs: [\"data:\"]",
+ "Pattern: [\"foo://bar\"] Inputs: [\"foo://bad_url_browser_interop\"]",
+ "Pattern: [\"https://example.com/foo?bar#baz\"] Inputs: [{\"protocol\":\"https:\",\"search\":\"?bar\",\"hash\":\"#baz\",\"baseURL\":\"http://example.com/foo\"}]",
+ "Pattern: [\"?bar#baz\",\"https://example.com/foo\"] Inputs: [\"?bar#baz\",\"https://example.com/foo\"]",
+ "Pattern: [\"?bar\",\"https://example.com/foo#baz\"] Inputs: [\"?bar\",\"https://example.com/foo#snafu\"]",
+ "Pattern: [\"#baz\",\"https://example.com/foo?bar\"] Inputs: [\"#baz\",\"https://example.com/foo?bar\"]",
+ "Pattern: [\"#baz\",\"https://example.com/foo\"] Inputs: [\"#baz\",\"https://example.com/foo\"]",
+ "Pattern: [\"https://foo\\\\:bar@example.com\"] Inputs: [\"https://foo:bar@example.com\"]",
+ "Pattern: [\"https://foo@example.com\"] Inputs: [\"https://foo@example.com\"]",
+ "Pattern: [\"https://\\\\:bar@example.com\"] Inputs: [\"https://:bar@example.com\"]",
+ "Pattern: [\"https://:user::pass@example.com\"] Inputs: [\"https://foo:bar@example.com\"]",
+ "Pattern: [\"https\\\\:foo\\\\:bar@example.com\"] Inputs: [\"https:foo:bar@example.com\"]",
+ "Pattern: [\"data\\\\:foo\\\\:bar@example.com\"] Inputs: [\"data:foo:bar@example.com\"]",
+ "Pattern: [\"https://foo{\\\\:}bar@example.com\"] Inputs: [\"https://foo:bar@example.com\"]",
+ "Pattern: [\"data{\\\\:}channel.html\",\"https://example.com\"] Inputs: [\"https://example.com/data:channel.html\"]",
+ "Pattern: [\"http://[\\\\:\\\\:1]/\"] Inputs: [\"http://[::1]/\"]",
+ "Pattern: [\"http://[\\\\:\\\\:1]:8080/\"] Inputs: [\"http://[::1]:8080/\"]",
+ "Pattern: [\"http://[\\\\:\\\\:a]/\"] Inputs: [\"http://[::a]/\"]",
+ "Pattern: [\"http://[:address]/\"] Inputs: [\"http://[::1]/\"]",
+ "Pattern: [\"http://[\\\\:\\\\:AB\\\\::num]/\"] Inputs: [\"http://[::ab:1]/\"]",
+ "Pattern: [\"data\\\\:text/javascript,let x = 100/:tens?5;\"] Inputs: [\"data:text/javascript,let x = 100/5;\"]",
+ "Pattern: [{\"hostname\":\"bad\\\\:hostname\"}] Inputs: undefined",
+ "Pattern: [] Inputs: [\"https://example.com/\"]",
+ "Pattern: [] Inputs: [{}]",
+ "Pattern: [] Inputs: []",
+ "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: [{\"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\"]",
+ "Pattern: [{\"pathname\":\"/([[a-z]--a])\"}] Inputs: [{\"pathname\":\"/a\"}]",
+ "Pattern: [{\"pathname\":\"/([[a-z]--a])\"}] Inputs: [{\"pathname\":\"/z\"}]",
+ "Pattern: [{\"pathname\":\"/([\\\\d&&[0-1]])\"}] Inputs: [{\"pathname\":\"/0\"}]",
+ "Pattern: [{\"pathname\":\"/([\\\\d&&[0-1]])\"}] Inputs: [{\"pathname\":\"/3\"}]"
+ ]
+ },
+ "compression": {
+ "compression-bad-chunks.tentative.any.html": true,
+ "compression-bad-chunks.tentative.any.worker.html": true,
+ "compression-including-empty-chunk.tentative.any.html": true,
+ "compression-including-empty-chunk.tentative.any.worker.html": true,
+ "compression-multiple-chunks.tentative.any.html": true,
+ "compression-multiple-chunks.tentative.any.worker.html": true,
+ "compression-output-length.tentative.any.html": true,
+ "compression-output-length.tentative.any.worker.html": true,
+ "compression-stream.tentative.any.html": true,
+ "compression-stream.tentative.any.worker.html": true,
+ "compression-with-detach.tentative.window.html": true,
+ "decompression-bad-chunks.tentative.any.html": true,
+ "decompression-bad-chunks.tentative.any.worker.html": true,
+ "decompression-buffersource.tentative.any.html": true,
+ "decompression-buffersource.tentative.any.worker.html": true,
+ "decompression-constructor-error.tentative.any.html": true,
+ "decompression-constructor-error.tentative.any.worker.html": true,
+ "decompression-correct-input.tentative.any.html": true,
+ "decompression-correct-input.tentative.any.worker.html": true,
+ "decompression-corrupt-input.tentative.any.html": [
+ "truncating the input for 'deflate' should give an error"
+ ],
+ "decompression-corrupt-input.tentative.any.worker.html": [
+ "truncating the input for 'deflate' should give an error"
+ ],
+ "decompression-empty-input.tentative.any.html": true,
+ "decompression-empty-input.tentative.any.worker.html": true,
+ "decompression-split-chunk.tentative.any.html": true,
+ "decompression-split-chunk.tentative.any.worker.html": true,
+ "decompression-uint8array-output.tentative.any.html": true,
+ "decompression-uint8array-output.tentative.any.worker.html": true,
+ "decompression-with-detach.tentative.window.html": true,
+ "idlharness.https.any.html": true,
+ "idlharness.https.any.worker.html": true,
+ "idlharness-shadowrealm.window.html": false,
+ "compression-constructor-error.tentative.any.html": true,
+ "compression-constructor-error.tentative.any.worker.html": true
+ },
+ "service-workers": {
+ "idlharness.https.any.html": [
+ "ServiceWorker interface: existence and properties of interface object",
+ "ServiceWorker interface object length",
+ "ServiceWorker interface object name",
+ "ServiceWorker interface: existence and properties of interface prototype object",
+ "ServiceWorker interface: existence and properties of interface prototype object's \"constructor\" property",
+ "ServiceWorker interface: existence and properties of interface prototype object's @@unscopables property",
+ "ServiceWorker interface: attribute scriptURL",
+ "ServiceWorker interface: attribute state",
+ "ServiceWorker interface: operation postMessage(any, sequence<object>)",
+ "ServiceWorker interface: operation postMessage(any, optional StructuredSerializeOptions)",
+ "ServiceWorker interface: attribute onstatechange",
+ "ServiceWorker must be primary interface of registrationInstance.installing",
+ "Stringification of registrationInstance.installing",
+ "ServiceWorker interface: registrationInstance.installing must inherit property \"scriptURL\" with the proper type",
+ "ServiceWorker interface: registrationInstance.installing must inherit property \"state\" with the proper type",
+ "ServiceWorker interface: registrationInstance.installing must inherit property \"postMessage(any, sequence<object>)\" with the proper type",
+ "ServiceWorker interface: calling postMessage(any, sequence<object>) on registrationInstance.installing with too few arguments must throw TypeError",
+ "ServiceWorker interface: registrationInstance.installing must inherit property \"postMessage(any, optional StructuredSerializeOptions)\" with the proper type",
+ "ServiceWorker interface: calling postMessage(any, optional StructuredSerializeOptions) on registrationInstance.installing with too few arguments must throw TypeError",
+ "ServiceWorker interface: registrationInstance.installing must inherit property \"onstatechange\" with the proper type",
+ "ServiceWorkerRegistration interface: existence and properties of interface object",
+ "ServiceWorkerRegistration interface object length",
+ "ServiceWorkerRegistration interface object name",
+ "ServiceWorkerRegistration interface: existence and properties of interface prototype object",
+ "ServiceWorkerRegistration interface: existence and properties of interface prototype object's \"constructor\" property",
+ "ServiceWorkerRegistration interface: existence and properties of interface prototype object's @@unscopables property",
+ "ServiceWorkerRegistration interface: attribute installing",
+ "ServiceWorkerRegistration interface: attribute waiting",
+ "ServiceWorkerRegistration interface: attribute active",
+ "ServiceWorkerRegistration interface: attribute navigationPreload",
+ "ServiceWorkerRegistration interface: attribute scope",
+ "ServiceWorkerRegistration interface: attribute updateViaCache",
+ "ServiceWorkerRegistration interface: operation update()",
+ "ServiceWorkerRegistration interface: operation unregister()",
+ "ServiceWorkerRegistration interface: attribute onupdatefound",
+ "ServiceWorkerRegistration must be primary interface of registrationInstance",
+ "Stringification of registrationInstance",
+ "ServiceWorkerRegistration interface: registrationInstance must inherit property \"installing\" with the proper type",
+ "ServiceWorkerRegistration interface: registrationInstance must inherit property \"waiting\" with the proper type",
+ "ServiceWorkerRegistration interface: registrationInstance must inherit property \"active\" with the proper type",
+ "ServiceWorkerRegistration interface: registrationInstance must inherit property \"navigationPreload\" with the proper type",
+ "ServiceWorkerRegistration interface: registrationInstance must inherit property \"scope\" with the proper type",
+ "ServiceWorkerRegistration interface: registrationInstance must inherit property \"updateViaCache\" with the proper type",
+ "ServiceWorkerRegistration interface: registrationInstance must inherit property \"update()\" with the proper type",
+ "ServiceWorkerRegistration interface: registrationInstance must inherit property \"unregister()\" with the proper type",
+ "ServiceWorkerRegistration interface: registrationInstance must inherit property \"onupdatefound\" with the proper type",
+ "ServiceWorkerContainer interface: existence and properties of interface object",
+ "ServiceWorkerContainer interface object length",
+ "ServiceWorkerContainer interface object name",
+ "ServiceWorkerContainer interface: existence and properties of interface prototype object",
+ "ServiceWorkerContainer interface: existence and properties of interface prototype object's \"constructor\" property",
+ "ServiceWorkerContainer interface: existence and properties of interface prototype object's @@unscopables property",
+ "ServiceWorkerContainer interface: attribute controller",
+ "ServiceWorkerContainer interface: attribute ready",
+ "ServiceWorkerContainer interface: operation register(USVString, optional RegistrationOptions)",
+ "ServiceWorkerContainer interface: operation getRegistration(optional USVString)",
+ "ServiceWorkerContainer interface: operation getRegistrations()",
+ "ServiceWorkerContainer interface: operation startMessages()",
+ "ServiceWorkerContainer interface: attribute oncontrollerchange",
+ "ServiceWorkerContainer interface: attribute onmessage",
+ "ServiceWorkerContainer interface: attribute onmessageerror",
+ "ServiceWorkerContainer must be primary interface of navigator.serviceWorker",
+ "Stringification of navigator.serviceWorker",
+ "ServiceWorkerContainer interface: navigator.serviceWorker must inherit property \"controller\" with the proper type",
+ "ServiceWorkerContainer interface: navigator.serviceWorker must inherit property \"ready\" with the proper type",
+ "ServiceWorkerContainer interface: navigator.serviceWorker must inherit property \"register(USVString, optional RegistrationOptions)\" with the proper type",
+ "ServiceWorkerContainer interface: calling register(USVString, optional RegistrationOptions) on navigator.serviceWorker with too few arguments must throw TypeError",
+ "ServiceWorkerContainer interface: navigator.serviceWorker must inherit property \"getRegistration(optional USVString)\" with the proper type",
+ "ServiceWorkerContainer interface: calling getRegistration(optional USVString) on navigator.serviceWorker with too few arguments must throw TypeError",
+ "ServiceWorkerContainer interface: navigator.serviceWorker must inherit property \"getRegistrations()\" with the proper type",
+ "ServiceWorkerContainer interface: navigator.serviceWorker must inherit property \"startMessages()\" with the proper type",
+ "ServiceWorkerContainer interface: navigator.serviceWorker must inherit property \"oncontrollerchange\" with the proper type",
+ "ServiceWorkerContainer interface: navigator.serviceWorker must inherit property \"onmessage\" with the proper type",
+ "ServiceWorkerContainer interface: navigator.serviceWorker must inherit property \"onmessageerror\" with the proper type",
+ "NavigationPreloadManager interface: existence and properties of interface object",
+ "NavigationPreloadManager interface object length",
+ "NavigationPreloadManager interface object name",
+ "NavigationPreloadManager interface: existence and properties of interface prototype object",
+ "NavigationPreloadManager interface: existence and properties of interface prototype object's \"constructor\" property",
+ "NavigationPreloadManager interface: existence and properties of interface prototype object's @@unscopables property",
+ "NavigationPreloadManager interface: operation enable()",
+ "NavigationPreloadManager interface: operation disable()",
+ "NavigationPreloadManager interface: operation setHeaderValue(ByteString)",
+ "NavigationPreloadManager interface: operation getState()",
+ "Cache interface: operation match(RequestInfo, optional CacheQueryOptions)",
+ "Cache interface: operation matchAll(optional RequestInfo, optional CacheQueryOptions)",
+ "Cache interface: operation add(RequestInfo)",
+ "Cache interface: operation addAll(sequence<RequestInfo>)",
+ "Cache interface: operation delete(RequestInfo, optional CacheQueryOptions)",
+ "Cache interface: operation keys(optional RequestInfo, optional CacheQueryOptions)",
+ "Cache interface: self.cacheInstance must inherit property \"matchAll(optional RequestInfo, optional CacheQueryOptions)\" with the proper type",
+ "Cache interface: calling matchAll(optional RequestInfo, optional CacheQueryOptions) on self.cacheInstance with too few arguments must throw TypeError",
+ "Cache interface: self.cacheInstance must inherit property \"add(RequestInfo)\" with the proper type",
+ "Cache interface: calling add(RequestInfo) on self.cacheInstance with too few arguments must throw TypeError",
+ "Cache interface: self.cacheInstance must inherit property \"addAll(sequence<RequestInfo>)\" with the proper type",
+ "Cache interface: calling addAll(sequence<RequestInfo>) on self.cacheInstance with too few arguments must throw TypeError",
+ "Cache interface: self.cacheInstance must inherit property \"keys(optional RequestInfo, optional CacheQueryOptions)\" with the proper type",
+ "Cache interface: calling keys(optional RequestInfo, optional CacheQueryOptions) on self.cacheInstance with too few arguments must throw TypeError",
+ "CacheStorage interface: operation match(RequestInfo, optional MultiCacheQueryOptions)",
+ "CacheStorage interface: operation keys()",
+ "CacheStorage interface: caches must inherit property \"match(RequestInfo, optional MultiCacheQueryOptions)\" with the proper type",
+ "CacheStorage interface: calling match(RequestInfo, optional MultiCacheQueryOptions) on caches with too few arguments must throw TypeError",
+ "CacheStorage interface: caches must inherit property \"keys()\" with the proper type",
+ "Window interface: attribute caches",
+ "Navigator interface: attribute serviceWorker",
+ "idl_test setup"
+ ],
+ "idlharness.https.any.worker.html": [
+ "ServiceWorker interface: existence and properties of interface object",
+ "ServiceWorker interface object length",
+ "ServiceWorker interface object name",
+ "ServiceWorker interface: existence and properties of interface prototype object",
+ "ServiceWorker interface: existence and properties of interface prototype object's \"constructor\" property",
+ "ServiceWorker interface: existence and properties of interface prototype object's @@unscopables property",
+ "ServiceWorker interface: attribute scriptURL",
+ "ServiceWorker interface: attribute state",
+ "ServiceWorker interface: operation postMessage(any, sequence<object>)",
+ "ServiceWorker interface: operation postMessage(any, optional StructuredSerializeOptions)",
+ "ServiceWorker interface: attribute onstatechange",
+ "ServiceWorkerRegistration interface: existence and properties of interface object",
+ "ServiceWorkerRegistration interface object length",
+ "ServiceWorkerRegistration interface object name",
+ "ServiceWorkerRegistration interface: existence and properties of interface prototype object",
+ "ServiceWorkerRegistration interface: existence and properties of interface prototype object's \"constructor\" property",
+ "ServiceWorkerRegistration interface: existence and properties of interface prototype object's @@unscopables property",
+ "ServiceWorkerRegistration interface: attribute installing",
+ "ServiceWorkerRegistration interface: attribute waiting",
+ "ServiceWorkerRegistration interface: attribute active",
+ "ServiceWorkerRegistration interface: attribute navigationPreload",
+ "ServiceWorkerRegistration interface: attribute scope",
+ "ServiceWorkerRegistration interface: attribute updateViaCache",
+ "ServiceWorkerRegistration interface: operation update()",
+ "ServiceWorkerRegistration interface: operation unregister()",
+ "ServiceWorkerRegistration interface: attribute onupdatefound",
+ "ServiceWorkerContainer interface: existence and properties of interface object",
+ "ServiceWorkerContainer interface object length",
+ "ServiceWorkerContainer interface object name",
+ "ServiceWorkerContainer interface: existence and properties of interface prototype object",
+ "ServiceWorkerContainer interface: existence and properties of interface prototype object's \"constructor\" property",
+ "ServiceWorkerContainer interface: existence and properties of interface prototype object's @@unscopables property",
+ "ServiceWorkerContainer interface: attribute controller",
+ "ServiceWorkerContainer interface: attribute ready",
+ "ServiceWorkerContainer interface: operation register(USVString, optional RegistrationOptions)",
+ "ServiceWorkerContainer interface: operation getRegistration(optional USVString)",
+ "ServiceWorkerContainer interface: operation getRegistrations()",
+ "ServiceWorkerContainer interface: operation startMessages()",
+ "ServiceWorkerContainer interface: attribute oncontrollerchange",
+ "ServiceWorkerContainer interface: attribute onmessage",
+ "ServiceWorkerContainer interface: attribute onmessageerror",
+ "ServiceWorkerContainer must be primary interface of navigator.serviceWorker",
+ "Stringification of navigator.serviceWorker",
+ "ServiceWorkerContainer interface: navigator.serviceWorker must inherit property \"controller\" with the proper type",
+ "ServiceWorkerContainer interface: navigator.serviceWorker must inherit property \"ready\" with the proper type",
+ "ServiceWorkerContainer interface: navigator.serviceWorker must inherit property \"register(USVString, optional RegistrationOptions)\" with the proper type",
+ "ServiceWorkerContainer interface: calling register(USVString, optional RegistrationOptions) on navigator.serviceWorker with too few arguments must throw TypeError",
+ "ServiceWorkerContainer interface: navigator.serviceWorker must inherit property \"getRegistration(optional USVString)\" with the proper type",
+ "ServiceWorkerContainer interface: calling getRegistration(optional USVString) on navigator.serviceWorker with too few arguments must throw TypeError",
+ "ServiceWorkerContainer interface: navigator.serviceWorker must inherit property \"getRegistrations()\" with the proper type",
+ "ServiceWorkerContainer interface: navigator.serviceWorker must inherit property \"startMessages()\" with the proper type",
+ "ServiceWorkerContainer interface: navigator.serviceWorker must inherit property \"oncontrollerchange\" with the proper type",
+ "ServiceWorkerContainer interface: navigator.serviceWorker must inherit property \"onmessage\" with the proper type",
+ "ServiceWorkerContainer interface: navigator.serviceWorker must inherit property \"onmessageerror\" with the proper type",
+ "NavigationPreloadManager interface: existence and properties of interface object",
+ "NavigationPreloadManager interface object length",
+ "NavigationPreloadManager interface object name",
+ "NavigationPreloadManager interface: existence and properties of interface prototype object",
+ "NavigationPreloadManager interface: existence and properties of interface prototype object's \"constructor\" property",
+ "NavigationPreloadManager interface: existence and properties of interface prototype object's @@unscopables property",
+ "NavigationPreloadManager interface: operation enable()",
+ "NavigationPreloadManager interface: operation disable()",
+ "NavigationPreloadManager interface: operation setHeaderValue(ByteString)",
+ "NavigationPreloadManager interface: operation getState()",
+ "Cache interface: operation match(RequestInfo, optional CacheQueryOptions)",
+ "Cache interface: operation matchAll(optional RequestInfo, optional CacheQueryOptions)",
+ "Cache interface: operation add(RequestInfo)",
+ "Cache interface: operation addAll(sequence<RequestInfo>)",
+ "Cache interface: operation delete(RequestInfo, optional CacheQueryOptions)",
+ "Cache interface: operation keys(optional RequestInfo, optional CacheQueryOptions)",
+ "Cache interface: self.cacheInstance must inherit property \"matchAll(optional RequestInfo, optional CacheQueryOptions)\" with the proper type",
+ "Cache interface: calling matchAll(optional RequestInfo, optional CacheQueryOptions) on self.cacheInstance with too few arguments must throw TypeError",
+ "Cache interface: self.cacheInstance must inherit property \"add(RequestInfo)\" with the proper type",
+ "Cache interface: calling add(RequestInfo) on self.cacheInstance with too few arguments must throw TypeError",
+ "Cache interface: self.cacheInstance must inherit property \"addAll(sequence<RequestInfo>)\" with the proper type",
+ "Cache interface: calling addAll(sequence<RequestInfo>) on self.cacheInstance with too few arguments must throw TypeError",
+ "Cache interface: self.cacheInstance must inherit property \"keys(optional RequestInfo, optional CacheQueryOptions)\" with the proper type",
+ "Cache interface: calling keys(optional RequestInfo, optional CacheQueryOptions) on self.cacheInstance with too few arguments must throw TypeError",
+ "CacheStorage interface: operation match(RequestInfo, optional MultiCacheQueryOptions)",
+ "CacheStorage interface: operation keys()",
+ "CacheStorage interface: caches must inherit property \"match(RequestInfo, optional MultiCacheQueryOptions)\" with the proper type",
+ "CacheStorage interface: calling match(RequestInfo, optional MultiCacheQueryOptions) on caches with too few arguments must throw TypeError",
+ "CacheStorage interface: caches must inherit property \"keys()\" with the proper type",
+ "WorkerGlobalScope interface: attribute caches",
+ "WorkerNavigator interface: attribute serviceWorker"
+ ],
+ "cache-storage": {
+ "cache-match.https.any.html": [
+ "Cache.match supports ignoreMethod",
+ "Cache.match supports ignoreVary",
+ "Cache.match with Request and Response objects with different URLs",
+ "Cache.match with a network error Response",
+ "cors-exposed header should be stored correctly.",
+ "MIME type should be set from content-header correctly.",
+ "Cache.match ignores vary headers on opaque response."
+ ],
+ "cache-delete.https.any.html": [
+ "Cache.delete called with a HEAD request",
+ "Cache.delete supports ignoreVary",
+ "Cache.delete with ignoreSearch option (request with search parameters)",
+ "Cache.delete with ignoreSearch option (when it is specified as false)"
+ ],
+ "cache-abort.https.any.html": false,
+ "cache-abort.https.any.worker.html": false,
+ "cache-add.https.any.html": false,
+ "cache-add.https.any.worker.html": false,
+ "cache-delete.https.any.worker.html": [
+ "Cache.delete called with a HEAD request",
+ "Cache.delete supports ignoreVary",
+ "Cache.delete with ignoreSearch option (request with search parameters)",
+ "Cache.delete with ignoreSearch option (when it is specified as false)"
+ ],
+ "cache-keys.https.any.html": false,
+ "cache-keys.https.any.worker.html": false,
+ "cache-match.https.any.worker.html": [
+ "Cache.match supports ignoreMethod",
+ "Cache.match supports ignoreVary",
+ "Cache.match with Request and Response objects with different URLs",
+ "Cache.match with a network error Response",
+ "cors-exposed header should be stored correctly.",
+ "MIME type should be set from content-header correctly.",
+ "Cache.match ignores vary headers on opaque response."
+ ],
+ "cache-matchAll.https.any.html": false,
+ "cache-matchAll.https.any.worker.html": false,
+ "cache-put.https.any.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 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 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,
+ "cache-storage-match.https.any.html": false,
+ "cache-storage-match.https.any.worker.html": false,
+ "cache-storage.https.any.html": [
+ "CacheStorage.delete dooms, but does not delete immediately",
+ "CacheStorage.open with existing cache",
+ "CacheStorage names are DOMStrings not USVStrings"
+ ],
+ "cache-storage.https.any.worker.html": [
+ "CacheStorage.delete dooms, but does not delete immediately",
+ "CacheStorage.open with existing cache",
+ "CacheStorage names are DOMStrings not USVStrings"
+ ],
+ "common.https.window.html": true,
+ "cache-storage-buckets.https.any.html": false,
+ "cache-storage-buckets.https.any.worker.html": false
+ },
+ "service-worker": {
+ "fetch-request-xhr-sync-error.https.window.html": false,
+ "ready.https.window.html": false,
+ "xhr-content-length.https.window.html": false
+ }
+ },
+ "mimesniff": {
+ "mime-types": {
+ "parsing.any.html": [
+ "TEXT/HTML;CHARSET=GBK (Blob/File)",
+ "text/html;charset=gbk( (Blob/File)",
+ "text/html;x=(;charset=gbk (Blob/File)",
+ "text/html;charset=gbk;charset=windows-1255 (Blob/File)",
+ "text/html;charset=();charset=GBK (Blob/File)",
+ "text/html;charset =gbk (Blob/File)",
+ "text/html ;charset=gbk (Blob/File)",
+ "text/html; charset=gbk (Blob/File)",
+ "text/html;charset= gbk (Blob/File)",
+ "text/html;charset= \"gbk\" (Blob/File)",
+ "text/html;charset=\u000bgbk (Blob/File)",
+ "text/html;charset=\fgbk (Blob/File)",
+ "text/html;\u000bcharset=gbk (Blob/File)",
+ "text/html;\fcharset=gbk (Blob/File)",
+ "text/html;charset=';charset=GBK (Blob/File)",
+ "text/html;test;charset=gbk (Blob/File)",
+ "text/html;test=;charset=gbk (Blob/File)",
+ "text/html;';charset=gbk (Blob/File)",
+ "text/html;\";charset=gbk (Blob/File)",
+ "text/html ; ; charset=gbk (Blob/File)",
+ "text/html;;;;charset=gbk (Blob/File)",
+ "text/html;charset= \";charset=GBK (Blob/File)",
+ "text/html;charset=\";charset=foo\";charset=GBK (Blob/File)",
+ "text/html;charset=\"gbk\" (Blob/File)",
+ "text/html;charset=\"gbk (Blob/File)",
+ "text/html;charset=gbk\" (Blob/File)",
+ "text/html;charset=\"\\ gbk\" (Blob/File)",
+ "text/html;charset=\"\\g\\b\\k\" (Blob/File)",
+ "text/html;charset=\"gbk\"x (Blob/File)",
+ "text/html;charset=\"\";charset=GBK (Blob/File)",
+ "text/html;charset=\";charset=GBK (Blob/File)",
+ "text/html;charset={gbk} (Blob/File)",
+ "text/html;a]=bar;b[=bar;c=bar (Blob/File)",
+ "text/html;in]valid=\";asd=foo\";foo=bar (Blob/File)",
+ "!#$%&'*+-.^_`|~0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz/!#$%&'*+-.^_`|~0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz;!#$%&'*+-.^_`|~0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz=!#$%&'*+-.^_`|~0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz (Blob/File)",
+ "x/x;x=\"\t !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ\" (Blob/File)",
+ "x/x;test (Blob/File)",
+ "x/x;test=\"\\ (Blob/File)",
+ "x/x;x= (Blob/File)",
+ "x/x;x=\t (Blob/File)",
+ "x/x\n\r\t ;x=x (Blob/File)",
+ "\n\r\t x/x;x=x\n\r\t (Blob/File)",
+ "x/x;\n\r\t x=x\n\r\t ;x=y (Blob/File)",
+ "text/html;test=ÿ;charset=gbk (Blob/File)",
+ "x/x;test=�;x=x (Blob/File)",
+ "/ (Blob/File)",
+ "bogus (Blob/File)",
+ "bogus/ (Blob/File)",
+ "bogus/ (Blob/File)",
+ "bogus/bogus/; (Blob/File)",
+ "</> (Blob/File)",
+ "(/) (Blob/File)",
+ "text/html(;doesnot=matter (Blob/File)",
+ "{/} (Blob/File)",
+ "text /html (Blob/File)",
+ "text/ html (Blob/File)",
+ "\"text/html\" (Blob/File)",
+ "x/x;\u0000=x;bonus=x (Blob/File)",
+ "x/x;x=\u0000;bonus=x (Blob/File)",
+ "x/x;x=\"\u0000\";bonus=x (Blob/File)",
+ "x/x;\u0001=x;bonus=x (Blob/File)",
+ "x/x;x=\u0001;bonus=x (Blob/File)",
+ "x/x;x=\"\u0001\";bonus=x (Blob/File)",
+ "x/x;\u0002=x;bonus=x (Blob/File)",
+ "x/x;x=\u0002;bonus=x (Blob/File)",
+ "x/x;x=\"\u0002\";bonus=x (Blob/File)",
+ "x/x;\u0003=x;bonus=x (Blob/File)",
+ "x/x;x=\u0003;bonus=x (Blob/File)",
+ "x/x;x=\"\u0003\";bonus=x (Blob/File)",
+ "x/x;\u0004=x;bonus=x (Blob/File)",
+ "x/x;x=\u0004;bonus=x (Blob/File)",
+ "x/x;x=\"\u0004\";bonus=x (Blob/File)",
+ "x/x;\u0005=x;bonus=x (Blob/File)",
+ "x/x;x=\u0005;bonus=x (Blob/File)",
+ "x/x;x=\"\u0005\";bonus=x (Blob/File)",
+ "x/x;\u0006=x;bonus=x (Blob/File)",
+ "x/x;x=\u0006;bonus=x (Blob/File)",
+ "x/x;x=\"\u0006\";bonus=x (Blob/File)",
+ "x/x;\u0007=x;bonus=x (Blob/File)",
+ "x/x;x=\u0007;bonus=x (Blob/File)",
+ "x/x;x=\"\u0007\";bonus=x (Blob/File)",
+ "x/x;\b=x;bonus=x (Blob/File)",
+ "x/x;x=\b;bonus=x (Blob/File)",
+ "x/x;x=\"\b\";bonus=x (Blob/File)",
+ "x/x;\t=x;bonus=x (Blob/File)",
+ "x/x;\n=x;bonus=x (Blob/File)",
+ "x/x;x=\n;bonus=x (Blob/File)",
+ "x/x;x=\"\n\";bonus=x (Blob/File)",
+ "x/x;\u000b=x;bonus=x (Blob/File)",
+ "x/x;x=\u000b;bonus=x (Blob/File)",
+ "x/x;x=\"\u000b\";bonus=x (Blob/File)",
+ "x/x;\f=x;bonus=x (Blob/File)",
+ "x/x;x=\f;bonus=x (Blob/File)",
+ "x/x;x=\"\f\";bonus=x (Blob/File)",
+ "x/x;\r=x;bonus=x (Blob/File)",
+ "x/x;x=\r;bonus=x (Blob/File)",
+ "x/x;x=\"\r\";bonus=x (Blob/File)",
+ "x/x;\u000e=x;bonus=x (Blob/File)",
+ "x/x;x=\u000e;bonus=x (Blob/File)",
+ "x/x;x=\"\u000e\";bonus=x (Blob/File)",
+ "x/x;\u000f=x;bonus=x (Blob/File)",
+ "x/x;x=\u000f;bonus=x (Blob/File)",
+ "x/x;x=\"\u000f\";bonus=x (Blob/File)",
+ "x/x;\u0010=x;bonus=x (Blob/File)",
+ "x/x;x=\u0010;bonus=x (Blob/File)",
+ "x/x;x=\"\u0010\";bonus=x (Blob/File)",
+ "x/x;\u0011=x;bonus=x (Blob/File)",
+ "x/x;x=\u0011;bonus=x (Blob/File)",
+ "x/x;x=\"\u0011\";bonus=x (Blob/File)",
+ "x/x;\u0012=x;bonus=x (Blob/File)",
+ "x/x;x=\u0012;bonus=x (Blob/File)",
+ "x/x;x=\"\u0012\";bonus=x (Blob/File)",
+ "x/x;\u0013=x;bonus=x (Blob/File)",
+ "x/x;x=\u0013;bonus=x (Blob/File)",
+ "x/x;x=\"\u0013\";bonus=x (Blob/File)",
+ "x/x;\u0014=x;bonus=x (Blob/File)",
+ "x/x;x=\u0014;bonus=x (Blob/File)",
+ "x/x;x=\"\u0014\";bonus=x (Blob/File)",
+ "x/x;\u0015=x;bonus=x (Blob/File)",
+ "x/x;x=\u0015;bonus=x (Blob/File)",
+ "x/x;x=\"\u0015\";bonus=x (Blob/File)",
+ "x/x;\u0016=x;bonus=x (Blob/File)",
+ "x/x;x=\u0016;bonus=x (Blob/File)",
+ "x/x;x=\"\u0016\";bonus=x (Blob/File)",
+ "x/x;\u0017=x;bonus=x (Blob/File)",
+ "x/x;x=\u0017;bonus=x (Blob/File)",
+ "x/x;x=\"\u0017\";bonus=x (Blob/File)",
+ "x/x;\u0018=x;bonus=x (Blob/File)",
+ "x/x;x=\u0018;bonus=x (Blob/File)",
+ "x/x;x=\"\u0018\";bonus=x (Blob/File)",
+ "x/x;\u0019=x;bonus=x (Blob/File)",
+ "x/x;x=\u0019;bonus=x (Blob/File)",
+ "x/x;x=\"\u0019\";bonus=x (Blob/File)",
+ "x/x;\u001a=x;bonus=x (Blob/File)",
+ "x/x;x=\u001a;bonus=x (Blob/File)",
+ "x/x;x=\"\u001a\";bonus=x (Blob/File)",
+ "x/x;\u001b=x;bonus=x (Blob/File)",
+ "x/x;x=\u001b;bonus=x (Blob/File)",
+ "x/x;x=\"\u001b\";bonus=x (Blob/File)",
+ "x/x;\u001c=x;bonus=x (Blob/File)",
+ "x/x;x=\u001c;bonus=x (Blob/File)",
+ "x/x;x=\"\u001c\";bonus=x (Blob/File)",
+ "x/x;\u001d=x;bonus=x (Blob/File)",
+ "x/x;x=\u001d;bonus=x (Blob/File)",
+ "x/x;x=\"\u001d\";bonus=x (Blob/File)",
+ "x/x;\u001e=x;bonus=x (Blob/File)",
+ "x/x;x=\u001e;bonus=x (Blob/File)",
+ "x/x;x=\"\u001e\";bonus=x (Blob/File)",
+ "x/x;\u001f=x;bonus=x (Blob/File)",
+ "x/x;x=\u001f;bonus=x (Blob/File)",
+ "x/x;x=\"\u001f\";bonus=x (Blob/File)",
+ " /x (Blob/File)",
+ "x/ (Blob/File)",
+ "x/x; =x;bonus=x (Blob/File)",
+ "\"/x (Blob/File)",
+ "x/\" (Blob/File)",
+ "x/x;\"=x;bonus=x (Blob/File)",
+ "(/x (Blob/File)",
+ "x/( (Blob/File)",
+ "x/x;(=x;bonus=x (Blob/File)",
+ "x/x;x=(;bonus=x (Blob/File)",
+ ")/x (Blob/File)",
+ "x/) (Blob/File)",
+ "x/x;)=x;bonus=x (Blob/File)",
+ "x/x;x=);bonus=x (Blob/File)",
+ ",/x (Blob/File)",
+ "x/, (Blob/File)",
+ "x/x;,=x;bonus=x (Blob/File)",
+ "x/x;x=,;bonus=x (Blob/File)",
+ "x/x;/=x;bonus=x (Blob/File)",
+ "x/x;x=/;bonus=x (Blob/File)",
+ ":/x (Blob/File)",
+ "x/: (Blob/File)",
+ "x/x;:=x;bonus=x (Blob/File)",
+ "x/x;x=:;bonus=x (Blob/File)",
+ ";/x (Blob/File)",
+ "x/; (Blob/File)",
+ "</x (Blob/File)",
+ "x/< (Blob/File)",
+ "x/x;<=x;bonus=x (Blob/File)",
+ "x/x;x=<;bonus=x (Blob/File)",
+ "=/x (Blob/File)",
+ "x/= (Blob/File)",
+ "x/x;x==;bonus=x (Blob/File)",
+ ">/x (Blob/File)",
+ "x/> (Blob/File)",
+ "x/x;>=x;bonus=x (Blob/File)",
+ "x/x;x=>;bonus=x (Blob/File)",
+ "?/x (Blob/File)",
+ "x/? (Blob/File)",
+ "x/x;?=x;bonus=x (Blob/File)",
+ "x/x;x=?;bonus=x (Blob/File)",
+ "@/x (Blob/File)",
+ "x/@ (Blob/File)",
+ "x/x;@=x;bonus=x (Blob/File)",
+ "x/x;x=@;bonus=x (Blob/File)",
+ "[/x (Blob/File)",
+ "x/[ (Blob/File)",
+ "x/x;[=x;bonus=x (Blob/File)",
+ "x/x;x=[;bonus=x (Blob/File)",
+ "\\/x (Blob/File)",
+ "x/\\ (Blob/File)",
+ "x/x;\\=x;bonus=x (Blob/File)",
+ "]/x (Blob/File)",
+ "x/] (Blob/File)",
+ "x/x;]=x;bonus=x (Blob/File)",
+ "x/x;x=];bonus=x (Blob/File)",
+ "{/x (Blob/File)",
+ "x/{ (Blob/File)",
+ "x/x;{=x;bonus=x (Blob/File)",
+ "x/x;x={;bonus=x (Blob/File)",
+ "}/x (Blob/File)",
+ "x/} (Blob/File)",
+ "x/x;}=x;bonus=x (Blob/File)",
+ "x/x;x=};bonus=x (Blob/File)",
+ "x/x;=x;bonus=x (Blob/File)",
+ "x/x;x=;bonus=x (Blob/File)",
+ "x/x;x=\"\";bonus=x (Blob/File)",
+ "x/x;€=x;bonus=x (Blob/File)",
+ "x/x;x=€;bonus=x (Blob/File)",
+ "x/x;x=\"€\";bonus=x (Blob/File)",
+ "x/x;=x;bonus=x (Blob/File)",
+ "x/x;x=;bonus=x (Blob/File)",
+ "x/x;x=\"\";bonus=x (Blob/File)",
+ "x/x;‚=x;bonus=x (Blob/File)",
+ "x/x;x=‚;bonus=x (Blob/File)",
+ "x/x;x=\"‚\";bonus=x (Blob/File)",
+ "x/x;ƒ=x;bonus=x (Blob/File)",
+ "x/x;x=ƒ;bonus=x (Blob/File)",
+ "x/x;x=\"ƒ\";bonus=x (Blob/File)",
+ "x/x;„=x;bonus=x (Blob/File)",
+ "x/x;x=„;bonus=x (Blob/File)",
+ "x/x;x=\"„\";bonus=x (Blob/File)",
+ "x/x;…=x;bonus=x (Blob/File)",
+ "x/x;x=…;bonus=x (Blob/File)",
+ "x/x;x=\"…\";bonus=x (Blob/File)",
+ "x/x;†=x;bonus=x (Blob/File)",
+ "x/x;x=†;bonus=x (Blob/File)",
+ "x/x;x=\"†\";bonus=x (Blob/File)",
+ "x/x;‡=x;bonus=x (Blob/File)",
+ "x/x;x=‡;bonus=x (Blob/File)",
+ "x/x;x=\"‡\";bonus=x (Blob/File)",
+ "x/x;ˆ=x;bonus=x (Blob/File)",
+ "x/x;x=ˆ;bonus=x (Blob/File)",
+ "x/x;x=\"ˆ\";bonus=x (Blob/File)",
+ "x/x;‰=x;bonus=x (Blob/File)",
+ "x/x;x=‰;bonus=x (Blob/File)",
+ "x/x;x=\"‰\";bonus=x (Blob/File)",
+ "x/x;Š=x;bonus=x (Blob/File)",
+ "x/x;x=Š;bonus=x (Blob/File)",
+ "x/x;x=\"Š\";bonus=x (Blob/File)",
+ "x/x;‹=x;bonus=x (Blob/File)",
+ "x/x;x=‹;bonus=x (Blob/File)",
+ "x/x;x=\"‹\";bonus=x (Blob/File)",
+ "x/x;Œ=x;bonus=x (Blob/File)",
+ "x/x;x=Œ;bonus=x (Blob/File)",
+ "x/x;x=\"Œ\";bonus=x (Blob/File)",
+ "x/x;=x;bonus=x (Blob/File)",
+ "x/x;x=;bonus=x (Blob/File)",
+ "x/x;x=\"\";bonus=x (Blob/File)",
+ "x/x;Ž=x;bonus=x (Blob/File)",
+ "x/x;x=Ž;bonus=x (Blob/File)",
+ "x/x;x=\"Ž\";bonus=x (Blob/File)",
+ "x/x;=x;bonus=x (Blob/File)",
+ "x/x;x=;bonus=x (Blob/File)",
+ "x/x;x=\"\";bonus=x (Blob/File)",
+ "x/x;=x;bonus=x (Blob/File)",
+ "x/x;x=;bonus=x (Blob/File)",
+ "x/x;x=\"\";bonus=x (Blob/File)",
+ "x/x;‘=x;bonus=x (Blob/File)",
+ "x/x;x=‘;bonus=x (Blob/File)",
+ "x/x;x=\"‘\";bonus=x (Blob/File)",
+ "x/x;’=x;bonus=x (Blob/File)",
+ "x/x;x=’;bonus=x (Blob/File)",
+ "x/x;x=\"’\";bonus=x (Blob/File)",
+ "x/x;“=x;bonus=x (Blob/File)",
+ "x/x;x=“;bonus=x (Blob/File)",
+ "x/x;x=\"“\";bonus=x (Blob/File)",
+ "x/x;”=x;bonus=x (Blob/File)",
+ "x/x;x=”;bonus=x (Blob/File)",
+ "x/x;x=\"”\";bonus=x (Blob/File)",
+ "x/x;•=x;bonus=x (Blob/File)",
+ "x/x;x=•;bonus=x (Blob/File)",
+ "x/x;x=\"•\";bonus=x (Blob/File)",
+ "x/x;–=x;bonus=x (Blob/File)",
+ "x/x;x=–;bonus=x (Blob/File)",
+ "x/x;x=\"–\";bonus=x (Blob/File)",
+ "x/x;—=x;bonus=x (Blob/File)",
+ "x/x;x=—;bonus=x (Blob/File)",
+ "x/x;x=\"—\";bonus=x (Blob/File)",
+ "x/x;˜=x;bonus=x (Blob/File)",
+ "x/x;x=˜;bonus=x (Blob/File)",
+ "x/x;x=\"˜\";bonus=x (Blob/File)",
+ "x/x;™=x;bonus=x (Blob/File)",
+ "x/x;x=™;bonus=x (Blob/File)",
+ "x/x;x=\"™\";bonus=x (Blob/File)",
+ "x/x;š=x;bonus=x (Blob/File)",
+ "x/x;x=š;bonus=x (Blob/File)",
+ "x/x;x=\"š\";bonus=x (Blob/File)",
+ "x/x;›=x;bonus=x (Blob/File)",
+ "x/x;x=›;bonus=x (Blob/File)",
+ "x/x;x=\"›\";bonus=x (Blob/File)",
+ "x/x;œ=x;bonus=x (Blob/File)",
+ "x/x;x=œ;bonus=x (Blob/File)",
+ "x/x;x=\"œ\";bonus=x (Blob/File)",
+ "x/x;=x;bonus=x (Blob/File)",
+ "x/x;x=;bonus=x (Blob/File)",
+ "x/x;x=\"\";bonus=x (Blob/File)",
+ "x/x;ž=x;bonus=x (Blob/File)",
+ "x/x;x=ž;bonus=x (Blob/File)",
+ "x/x;x=\"ž\";bonus=x (Blob/File)",
+ "x/x;Ÿ=x;bonus=x (Blob/File)",
+ "x/x;x=Ÿ;bonus=x (Blob/File)",
+ "x/x;x=\"Ÿ\";bonus=x (Blob/File)",
+ "x/x; =x;bonus=x (Blob/File)",
+ "x/x;x= ;bonus=x (Blob/File)",
+ "x/x;x=\" \";bonus=x (Blob/File)",
+ "x/x;¡=x;bonus=x (Blob/File)",
+ "x/x;x=¡;bonus=x (Blob/File)",
+ "x/x;x=\"¡\";bonus=x (Blob/File)",
+ "x/x;¢=x;bonus=x (Blob/File)",
+ "x/x;x=¢;bonus=x (Blob/File)",
+ "x/x;x=\"¢\";bonus=x (Blob/File)",
+ "x/x;£=x;bonus=x (Blob/File)",
+ "x/x;x=£;bonus=x (Blob/File)",
+ "x/x;x=\"£\";bonus=x (Blob/File)",
+ "x/x;¤=x;bonus=x (Blob/File)",
+ "x/x;x=¤;bonus=x (Blob/File)",
+ "x/x;x=\"¤\";bonus=x (Blob/File)",
+ "x/x;¥=x;bonus=x (Blob/File)",
+ "x/x;x=¥;bonus=x (Blob/File)",
+ "x/x;x=\"¥\";bonus=x (Blob/File)",
+ "x/x;¦=x;bonus=x (Blob/File)",
+ "x/x;x=¦;bonus=x (Blob/File)",
+ "x/x;x=\"¦\";bonus=x (Blob/File)",
+ "x/x;§=x;bonus=x (Blob/File)",
+ "x/x;x=§;bonus=x (Blob/File)",
+ "x/x;x=\"§\";bonus=x (Blob/File)",
+ "x/x;¨=x;bonus=x (Blob/File)",
+ "x/x;x=¨;bonus=x (Blob/File)",
+ "x/x;x=\"¨\";bonus=x (Blob/File)",
+ "x/x;©=x;bonus=x (Blob/File)",
+ "x/x;x=©;bonus=x (Blob/File)",
+ "x/x;x=\"©\";bonus=x (Blob/File)",
+ "x/x;ª=x;bonus=x (Blob/File)",
+ "x/x;x=ª;bonus=x (Blob/File)",
+ "x/x;x=\"ª\";bonus=x (Blob/File)",
+ "x/x;«=x;bonus=x (Blob/File)",
+ "x/x;x=«;bonus=x (Blob/File)",
+ "x/x;x=\"«\";bonus=x (Blob/File)",
+ "x/x;¬=x;bonus=x (Blob/File)",
+ "x/x;x=¬;bonus=x (Blob/File)",
+ "x/x;x=\"¬\";bonus=x (Blob/File)",
+ "x/x;­=x;bonus=x (Blob/File)",
+ "x/x;x=­;bonus=x (Blob/File)",
+ "x/x;x=\"­\";bonus=x (Blob/File)",
+ "x/x;®=x;bonus=x (Blob/File)",
+ "x/x;x=®;bonus=x (Blob/File)",
+ "x/x;x=\"®\";bonus=x (Blob/File)",
+ "x/x;¯=x;bonus=x (Blob/File)",
+ "x/x;x=¯;bonus=x (Blob/File)",
+ "x/x;x=\"¯\";bonus=x (Blob/File)",
+ "x/x;°=x;bonus=x (Blob/File)",
+ "x/x;x=°;bonus=x (Blob/File)",
+ "x/x;x=\"°\";bonus=x (Blob/File)",
+ "x/x;±=x;bonus=x (Blob/File)",
+ "x/x;x=±;bonus=x (Blob/File)",
+ "x/x;x=\"±\";bonus=x (Blob/File)",
+ "x/x;²=x;bonus=x (Blob/File)",
+ "x/x;x=²;bonus=x (Blob/File)",
+ "x/x;x=\"²\";bonus=x (Blob/File)",
+ "x/x;³=x;bonus=x (Blob/File)",
+ "x/x;x=³;bonus=x (Blob/File)",
+ "x/x;x=\"³\";bonus=x (Blob/File)",
+ "x/x;´=x;bonus=x (Blob/File)",
+ "x/x;x=´;bonus=x (Blob/File)",
+ "x/x;x=\"´\";bonus=x (Blob/File)",
+ "x/x;µ=x;bonus=x (Blob/File)",
+ "x/x;x=µ;bonus=x (Blob/File)",
+ "x/x;x=\"µ\";bonus=x (Blob/File)",
+ "x/x;¶=x;bonus=x (Blob/File)",
+ "x/x;x=¶;bonus=x (Blob/File)",
+ "x/x;x=\"¶\";bonus=x (Blob/File)",
+ "x/x;·=x;bonus=x (Blob/File)",
+ "x/x;x=·;bonus=x (Blob/File)",
+ "x/x;x=\"·\";bonus=x (Blob/File)",
+ "x/x;¸=x;bonus=x (Blob/File)",
+ "x/x;x=¸;bonus=x (Blob/File)",
+ "x/x;x=\"¸\";bonus=x (Blob/File)",
+ "x/x;¹=x;bonus=x (Blob/File)",
+ "x/x;x=¹;bonus=x (Blob/File)",
+ "x/x;x=\"¹\";bonus=x (Blob/File)",
+ "x/x;º=x;bonus=x (Blob/File)",
+ "x/x;x=º;bonus=x (Blob/File)",
+ "x/x;x=\"º\";bonus=x (Blob/File)",
+ "x/x;»=x;bonus=x (Blob/File)",
+ "x/x;x=»;bonus=x (Blob/File)",
+ "x/x;x=\"»\";bonus=x (Blob/File)",
+ "x/x;¼=x;bonus=x (Blob/File)",
+ "x/x;x=¼;bonus=x (Blob/File)",
+ "x/x;x=\"¼\";bonus=x (Blob/File)",
+ "x/x;½=x;bonus=x (Blob/File)",
+ "x/x;x=½;bonus=x (Blob/File)",
+ "x/x;x=\"½\";bonus=x (Blob/File)",
+ "x/x;¾=x;bonus=x (Blob/File)",
+ "x/x;x=¾;bonus=x (Blob/File)",
+ "x/x;x=\"¾\";bonus=x (Blob/File)",
+ "x/x;¿=x;bonus=x (Blob/File)",
+ "x/x;x=¿;bonus=x (Blob/File)",
+ "x/x;x=\"¿\";bonus=x (Blob/File)",
+ "x/x;À=x;bonus=x (Blob/File)",
+ "x/x;x=À;bonus=x (Blob/File)",
+ "x/x;x=\"À\";bonus=x (Blob/File)",
+ "x/x;Á=x;bonus=x (Blob/File)",
+ "x/x;x=Á;bonus=x (Blob/File)",
+ "x/x;x=\"Á\";bonus=x (Blob/File)",
+ "x/x;Â=x;bonus=x (Blob/File)",
+ "x/x;x=Â;bonus=x (Blob/File)",
+ "x/x;x=\"Â\";bonus=x (Blob/File)",
+ "x/x;Ã=x;bonus=x (Blob/File)",
+ "x/x;x=Ã;bonus=x (Blob/File)",
+ "x/x;x=\"Ã\";bonus=x (Blob/File)",
+ "x/x;Ä=x;bonus=x (Blob/File)",
+ "x/x;x=Ä;bonus=x (Blob/File)",
+ "x/x;x=\"Ä\";bonus=x (Blob/File)",
+ "x/x;Å=x;bonus=x (Blob/File)",
+ "x/x;x=Å;bonus=x (Blob/File)",
+ "x/x;x=\"Å\";bonus=x (Blob/File)",
+ "x/x;Æ=x;bonus=x (Blob/File)",
+ "x/x;x=Æ;bonus=x (Blob/File)",
+ "x/x;x=\"Æ\";bonus=x (Blob/File)",
+ "x/x;Ç=x;bonus=x (Blob/File)",
+ "x/x;x=Ç;bonus=x (Blob/File)",
+ "x/x;x=\"Ç\";bonus=x (Blob/File)",
+ "x/x;È=x;bonus=x (Blob/File)",
+ "x/x;x=È;bonus=x (Blob/File)",
+ "x/x;x=\"È\";bonus=x (Blob/File)",
+ "x/x;É=x;bonus=x (Blob/File)",
+ "x/x;x=É;bonus=x (Blob/File)",
+ "x/x;x=\"É\";bonus=x (Blob/File)",
+ "x/x;Ê=x;bonus=x (Blob/File)",
+ "x/x;x=Ê;bonus=x (Blob/File)",
+ "x/x;x=\"Ê\";bonus=x (Blob/File)",
+ "x/x;Ë=x;bonus=x (Blob/File)",
+ "x/x;x=Ë;bonus=x (Blob/File)",
+ "x/x;x=\"Ë\";bonus=x (Blob/File)",
+ "x/x;Ì=x;bonus=x (Blob/File)",
+ "x/x;x=Ì;bonus=x (Blob/File)",
+ "x/x;x=\"Ì\";bonus=x (Blob/File)",
+ "x/x;Í=x;bonus=x (Blob/File)",
+ "x/x;x=Í;bonus=x (Blob/File)",
+ "x/x;x=\"Í\";bonus=x (Blob/File)",
+ "x/x;Î=x;bonus=x (Blob/File)",
+ "x/x;x=Î;bonus=x (Blob/File)",
+ "x/x;x=\"Î\";bonus=x (Blob/File)",
+ "x/x;Ï=x;bonus=x (Blob/File)",
+ "x/x;x=Ï;bonus=x (Blob/File)",
+ "x/x;x=\"Ï\";bonus=x (Blob/File)",
+ "x/x;Ð=x;bonus=x (Blob/File)",
+ "x/x;x=Ð;bonus=x (Blob/File)",
+ "x/x;x=\"Ð\";bonus=x (Blob/File)",
+ "x/x;Ñ=x;bonus=x (Blob/File)",
+ "x/x;x=Ñ;bonus=x (Blob/File)",
+ "x/x;x=\"Ñ\";bonus=x (Blob/File)",
+ "x/x;Ò=x;bonus=x (Blob/File)",
+ "x/x;x=Ò;bonus=x (Blob/File)",
+ "x/x;x=\"Ò\";bonus=x (Blob/File)",
+ "x/x;Ó=x;bonus=x (Blob/File)",
+ "x/x;x=Ó;bonus=x (Blob/File)",
+ "x/x;x=\"Ó\";bonus=x (Blob/File)",
+ "x/x;Ô=x;bonus=x (Blob/File)",
+ "x/x;x=Ô;bonus=x (Blob/File)",
+ "x/x;x=\"Ô\";bonus=x (Blob/File)",
+ "x/x;Õ=x;bonus=x (Blob/File)",
+ "x/x;x=Õ;bonus=x (Blob/File)",
+ "x/x;x=\"Õ\";bonus=x (Blob/File)",
+ "x/x;Ö=x;bonus=x (Blob/File)",
+ "x/x;x=Ö;bonus=x (Blob/File)",
+ "x/x;x=\"Ö\";bonus=x (Blob/File)",
+ "x/x;×=x;bonus=x (Blob/File)",
+ "x/x;x=×;bonus=x (Blob/File)",
+ "x/x;x=\"×\";bonus=x (Blob/File)",
+ "x/x;Ø=x;bonus=x (Blob/File)",
+ "x/x;x=Ø;bonus=x (Blob/File)",
+ "x/x;x=\"Ø\";bonus=x (Blob/File)",
+ "x/x;Ù=x;bonus=x (Blob/File)",
+ "x/x;x=Ù;bonus=x (Blob/File)",
+ "x/x;x=\"Ù\";bonus=x (Blob/File)",
+ "x/x;Ú=x;bonus=x (Blob/File)",
+ "x/x;x=Ú;bonus=x (Blob/File)",
+ "x/x;x=\"Ú\";bonus=x (Blob/File)",
+ "x/x;Û=x;bonus=x (Blob/File)",
+ "x/x;x=Û;bonus=x (Blob/File)",
+ "x/x;x=\"Û\";bonus=x (Blob/File)",
+ "x/x;Ü=x;bonus=x (Blob/File)",
+ "x/x;x=Ü;bonus=x (Blob/File)",
+ "x/x;x=\"Ü\";bonus=x (Blob/File)",
+ "x/x;Ý=x;bonus=x (Blob/File)",
+ "x/x;x=Ý;bonus=x (Blob/File)",
+ "x/x;x=\"Ý\";bonus=x (Blob/File)",
+ "x/x;Þ=x;bonus=x (Blob/File)",
+ "x/x;x=Þ;bonus=x (Blob/File)",
+ "x/x;x=\"Þ\";bonus=x (Blob/File)",
+ "x/x;ß=x;bonus=x (Blob/File)",
+ "x/x;x=ß;bonus=x (Blob/File)",
+ "x/x;x=\"ß\";bonus=x (Blob/File)",
+ "x/x;à=x;bonus=x (Blob/File)",
+ "x/x;x=à;bonus=x (Blob/File)",
+ "x/x;x=\"à\";bonus=x (Blob/File)",
+ "x/x;á=x;bonus=x (Blob/File)",
+ "x/x;x=á;bonus=x (Blob/File)",
+ "x/x;x=\"á\";bonus=x (Blob/File)",
+ "x/x;â=x;bonus=x (Blob/File)",
+ "x/x;x=â;bonus=x (Blob/File)",
+ "x/x;x=\"â\";bonus=x (Blob/File)",
+ "x/x;ã=x;bonus=x (Blob/File)",
+ "x/x;x=ã;bonus=x (Blob/File)",
+ "x/x;x=\"ã\";bonus=x (Blob/File)",
+ "x/x;ä=x;bonus=x (Blob/File)",
+ "x/x;x=ä;bonus=x (Blob/File)",
+ "x/x;x=\"ä\";bonus=x (Blob/File)",
+ "x/x;å=x;bonus=x (Blob/File)",
+ "x/x;x=å;bonus=x (Blob/File)",
+ "x/x;x=\"å\";bonus=x (Blob/File)",
+ "x/x;æ=x;bonus=x (Blob/File)",
+ "x/x;x=æ;bonus=x (Blob/File)",
+ "x/x;x=\"æ\";bonus=x (Blob/File)",
+ "x/x;ç=x;bonus=x (Blob/File)",
+ "x/x;x=ç;bonus=x (Blob/File)",
+ "x/x;x=\"ç\";bonus=x (Blob/File)",
+ "x/x;è=x;bonus=x (Blob/File)",
+ "x/x;x=è;bonus=x (Blob/File)",
+ "x/x;x=\"è\";bonus=x (Blob/File)",
+ "x/x;é=x;bonus=x (Blob/File)",
+ "x/x;x=é;bonus=x (Blob/File)",
+ "x/x;x=\"é\";bonus=x (Blob/File)",
+ "x/x;ê=x;bonus=x (Blob/File)",
+ "x/x;x=ê;bonus=x (Blob/File)",
+ "x/x;x=\"ê\";bonus=x (Blob/File)",
+ "x/x;ë=x;bonus=x (Blob/File)",
+ "x/x;x=ë;bonus=x (Blob/File)",
+ "x/x;x=\"ë\";bonus=x (Blob/File)",
+ "x/x;ì=x;bonus=x (Blob/File)",
+ "x/x;x=ì;bonus=x (Blob/File)",
+ "x/x;x=\"ì\";bonus=x (Blob/File)",
+ "x/x;í=x;bonus=x (Blob/File)",
+ "x/x;x=í;bonus=x (Blob/File)",
+ "x/x;x=\"í\";bonus=x (Blob/File)",
+ "x/x;î=x;bonus=x (Blob/File)",
+ "x/x;x=î;bonus=x (Blob/File)",
+ "x/x;x=\"î\";bonus=x (Blob/File)",
+ "x/x;ï=x;bonus=x (Blob/File)",
+ "x/x;x=ï;bonus=x (Blob/File)",
+ "x/x;x=\"ï\";bonus=x (Blob/File)",
+ "x/x;ð=x;bonus=x (Blob/File)",
+ "x/x;x=ð;bonus=x (Blob/File)",
+ "x/x;x=\"ð\";bonus=x (Blob/File)",
+ "x/x;ñ=x;bonus=x (Blob/File)",
+ "x/x;x=ñ;bonus=x (Blob/File)",
+ "x/x;x=\"ñ\";bonus=x (Blob/File)",
+ "x/x;ò=x;bonus=x (Blob/File)",
+ "x/x;x=ò;bonus=x (Blob/File)",
+ "x/x;x=\"ò\";bonus=x (Blob/File)",
+ "x/x;ó=x;bonus=x (Blob/File)",
+ "x/x;x=ó;bonus=x (Blob/File)",
+ "x/x;x=\"ó\";bonus=x (Blob/File)",
+ "x/x;ô=x;bonus=x (Blob/File)",
+ "x/x;x=ô;bonus=x (Blob/File)",
+ "x/x;x=\"ô\";bonus=x (Blob/File)",
+ "x/x;õ=x;bonus=x (Blob/File)",
+ "x/x;x=õ;bonus=x (Blob/File)",
+ "x/x;x=\"õ\";bonus=x (Blob/File)",
+ "x/x;ö=x;bonus=x (Blob/File)",
+ "x/x;x=ö;bonus=x (Blob/File)",
+ "x/x;x=\"ö\";bonus=x (Blob/File)",
+ "x/x;÷=x;bonus=x (Blob/File)",
+ "x/x;x=÷;bonus=x (Blob/File)",
+ "x/x;x=\"÷\";bonus=x (Blob/File)",
+ "x/x;ø=x;bonus=x (Blob/File)",
+ "x/x;x=ø;bonus=x (Blob/File)",
+ "x/x;x=\"ø\";bonus=x (Blob/File)",
+ "x/x;ù=x;bonus=x (Blob/File)",
+ "x/x;x=ù;bonus=x (Blob/File)",
+ "x/x;x=\"ù\";bonus=x (Blob/File)",
+ "x/x;ú=x;bonus=x (Blob/File)",
+ "x/x;x=ú;bonus=x (Blob/File)",
+ "x/x;x=\"ú\";bonus=x (Blob/File)",
+ "x/x;û=x;bonus=x (Blob/File)",
+ "x/x;x=û;bonus=x (Blob/File)",
+ "x/x;x=\"û\";bonus=x (Blob/File)",
+ "x/x;ü=x;bonus=x (Blob/File)",
+ "x/x;x=ü;bonus=x (Blob/File)",
+ "x/x;x=\"ü\";bonus=x (Blob/File)",
+ "x/x;ý=x;bonus=x (Blob/File)",
+ "x/x;x=ý;bonus=x (Blob/File)",
+ "x/x;x=\"ý\";bonus=x (Blob/File)",
+ "x/x;þ=x;bonus=x (Blob/File)",
+ "x/x;x=þ;bonus=x (Blob/File)",
+ "x/x;x=\"þ\";bonus=x (Blob/File)",
+ "x/x;ÿ=x;bonus=x (Blob/File)",
+ "x/x;x=ÿ;bonus=x (Blob/File)",
+ "x/x;x=\"ÿ\";bonus=x (Blob/File)",
+ "TEXT/HTML;CHARSET=GBK (Request/Response)",
+ "text/html;charset= \";charset=GBK (Request/Response)",
+ "text/html;charset=\";charset=foo\";charset=GBK (Request/Response)",
+ "text/html;charset=\"\";charset=GBK (Request/Response)",
+ "text/html;charset=\";charset=GBK (Request/Response)",
+ "!#$%&'*+-.^_`|~0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz/!#$%&'*+-.^_`|~0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz;!#$%&'*+-.^_`|~0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz=!#$%&'*+-.^_`|~0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz (Request/Response)",
+ "x/x;x=\"\t !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ\" (Request/Response)",
+ "text/html;test=ÿ;charset=gbk (Request/Response)",
+ "x/x;,=x;bonus=x (Request/Response)",
+ "x/x;x=,;bonus=x (Request/Response)",
+ "x/x;x=€;bonus=x (Request/Response)",
+ "x/x;x=\"€\";bonus=x (Request/Response)",
+ "x/x;x=;bonus=x (Request/Response)",
+ "x/x;x=\"\";bonus=x (Request/Response)",
+ "x/x;x=‚;bonus=x (Request/Response)",
+ "x/x;x=\"‚\";bonus=x (Request/Response)",
+ "x/x;x=ƒ;bonus=x (Request/Response)",
+ "x/x;x=\"ƒ\";bonus=x (Request/Response)",
+ "x/x;x=„;bonus=x (Request/Response)",
+ "x/x;x=\"„\";bonus=x (Request/Response)",
+ "x/x;x=…;bonus=x (Request/Response)",
+ "x/x;x=\"…\";bonus=x (Request/Response)",
+ "x/x;x=†;bonus=x (Request/Response)",
+ "x/x;x=\"†\";bonus=x (Request/Response)",
+ "x/x;x=‡;bonus=x (Request/Response)",
+ "x/x;x=\"‡\";bonus=x (Request/Response)",
+ "x/x;x=ˆ;bonus=x (Request/Response)",
+ "x/x;x=\"ˆ\";bonus=x (Request/Response)",
+ "x/x;x=‰;bonus=x (Request/Response)",
+ "x/x;x=\"‰\";bonus=x (Request/Response)",
+ "x/x;x=Š;bonus=x (Request/Response)",
+ "x/x;x=\"Š\";bonus=x (Request/Response)",
+ "x/x;x=‹;bonus=x (Request/Response)",
+ "x/x;x=\"‹\";bonus=x (Request/Response)",
+ "x/x;x=Œ;bonus=x (Request/Response)",
+ "x/x;x=\"Œ\";bonus=x (Request/Response)",
+ "x/x;x=;bonus=x (Request/Response)",
+ "x/x;x=\"\";bonus=x (Request/Response)",
+ "x/x;x=Ž;bonus=x (Request/Response)",
+ "x/x;x=\"Ž\";bonus=x (Request/Response)",
+ "x/x;x=;bonus=x (Request/Response)",
+ "x/x;x=\"\";bonus=x (Request/Response)",
+ "x/x;x=;bonus=x (Request/Response)",
+ "x/x;x=\"\";bonus=x (Request/Response)",
+ "x/x;x=‘;bonus=x (Request/Response)",
+ "x/x;x=\"‘\";bonus=x (Request/Response)",
+ "x/x;x=’;bonus=x (Request/Response)",
+ "x/x;x=\"’\";bonus=x (Request/Response)",
+ "x/x;x=“;bonus=x (Request/Response)",
+ "x/x;x=\"“\";bonus=x (Request/Response)",
+ "x/x;x=”;bonus=x (Request/Response)",
+ "x/x;x=\"”\";bonus=x (Request/Response)",
+ "x/x;x=•;bonus=x (Request/Response)",
+ "x/x;x=\"•\";bonus=x (Request/Response)",
+ "x/x;x=–;bonus=x (Request/Response)",
+ "x/x;x=\"–\";bonus=x (Request/Response)",
+ "x/x;x=—;bonus=x (Request/Response)",
+ "x/x;x=\"—\";bonus=x (Request/Response)",
+ "x/x;x=˜;bonus=x (Request/Response)",
+ "x/x;x=\"˜\";bonus=x (Request/Response)",
+ "x/x;x=™;bonus=x (Request/Response)",
+ "x/x;x=\"™\";bonus=x (Request/Response)",
+ "x/x;x=š;bonus=x (Request/Response)",
+ "x/x;x=\"š\";bonus=x (Request/Response)",
+ "x/x;x=›;bonus=x (Request/Response)",
+ "x/x;x=\"›\";bonus=x (Request/Response)",
+ "x/x;x=œ;bonus=x (Request/Response)",
+ "x/x;x=\"œ\";bonus=x (Request/Response)",
+ "x/x;x=;bonus=x (Request/Response)",
+ "x/x;x=\"\";bonus=x (Request/Response)",
+ "x/x;x=ž;bonus=x (Request/Response)",
+ "x/x;x=\"ž\";bonus=x (Request/Response)",
+ "x/x;x=Ÿ;bonus=x (Request/Response)",
+ "x/x;x=\"Ÿ\";bonus=x (Request/Response)",
+ "x/x;x= ;bonus=x (Request/Response)",
+ "x/x;x=\" \";bonus=x (Request/Response)",
+ "x/x;x=¡;bonus=x (Request/Response)",
+ "x/x;x=\"¡\";bonus=x (Request/Response)",
+ "x/x;x=¢;bonus=x (Request/Response)",
+ "x/x;x=\"¢\";bonus=x (Request/Response)",
+ "x/x;x=£;bonus=x (Request/Response)",
+ "x/x;x=\"£\";bonus=x (Request/Response)",
+ "x/x;x=¤;bonus=x (Request/Response)",
+ "x/x;x=\"¤\";bonus=x (Request/Response)",
+ "x/x;x=¥;bonus=x (Request/Response)",
+ "x/x;x=\"¥\";bonus=x (Request/Response)",
+ "x/x;x=¦;bonus=x (Request/Response)",
+ "x/x;x=\"¦\";bonus=x (Request/Response)",
+ "x/x;x=§;bonus=x (Request/Response)",
+ "x/x;x=\"§\";bonus=x (Request/Response)",
+ "x/x;x=¨;bonus=x (Request/Response)",
+ "x/x;x=\"¨\";bonus=x (Request/Response)",
+ "x/x;x=©;bonus=x (Request/Response)",
+ "x/x;x=\"©\";bonus=x (Request/Response)",
+ "x/x;x=ª;bonus=x (Request/Response)",
+ "x/x;x=\"ª\";bonus=x (Request/Response)",
+ "x/x;x=«;bonus=x (Request/Response)",
+ "x/x;x=\"«\";bonus=x (Request/Response)",
+ "x/x;x=¬;bonus=x (Request/Response)",
+ "x/x;x=\"¬\";bonus=x (Request/Response)",
+ "x/x;x=­;bonus=x (Request/Response)",
+ "x/x;x=\"­\";bonus=x (Request/Response)",
+ "x/x;x=®;bonus=x (Request/Response)",
+ "x/x;x=\"®\";bonus=x (Request/Response)",
+ "x/x;x=¯;bonus=x (Request/Response)",
+ "x/x;x=\"¯\";bonus=x (Request/Response)",
+ "x/x;x=°;bonus=x (Request/Response)",
+ "x/x;x=\"°\";bonus=x (Request/Response)",
+ "x/x;x=±;bonus=x (Request/Response)",
+ "x/x;x=\"±\";bonus=x (Request/Response)",
+ "x/x;x=²;bonus=x (Request/Response)",
+ "x/x;x=\"²\";bonus=x (Request/Response)",
+ "x/x;x=³;bonus=x (Request/Response)",
+ "x/x;x=\"³\";bonus=x (Request/Response)",
+ "x/x;x=´;bonus=x (Request/Response)",
+ "x/x;x=\"´\";bonus=x (Request/Response)",
+ "x/x;x=µ;bonus=x (Request/Response)",
+ "x/x;x=\"µ\";bonus=x (Request/Response)",
+ "x/x;x=¶;bonus=x (Request/Response)",
+ "x/x;x=\"¶\";bonus=x (Request/Response)",
+ "x/x;x=·;bonus=x (Request/Response)",
+ "x/x;x=\"·\";bonus=x (Request/Response)",
+ "x/x;x=¸;bonus=x (Request/Response)",
+ "x/x;x=\"¸\";bonus=x (Request/Response)",
+ "x/x;x=¹;bonus=x (Request/Response)",
+ "x/x;x=\"¹\";bonus=x (Request/Response)",
+ "x/x;x=º;bonus=x (Request/Response)",
+ "x/x;x=\"º\";bonus=x (Request/Response)",
+ "x/x;x=»;bonus=x (Request/Response)",
+ "x/x;x=\"»\";bonus=x (Request/Response)",
+ "x/x;x=¼;bonus=x (Request/Response)",
+ "x/x;x=\"¼\";bonus=x (Request/Response)",
+ "x/x;x=½;bonus=x (Request/Response)",
+ "x/x;x=\"½\";bonus=x (Request/Response)",
+ "x/x;x=¾;bonus=x (Request/Response)",
+ "x/x;x=\"¾\";bonus=x (Request/Response)",
+ "x/x;x=¿;bonus=x (Request/Response)",
+ "x/x;x=\"¿\";bonus=x (Request/Response)",
+ "x/x;x=À;bonus=x (Request/Response)",
+ "x/x;x=\"À\";bonus=x (Request/Response)",
+ "x/x;x=Á;bonus=x (Request/Response)",
+ "x/x;x=\"Á\";bonus=x (Request/Response)",
+ "x/x;x=Â;bonus=x (Request/Response)",
+ "x/x;x=\"Â\";bonus=x (Request/Response)",
+ "x/x;x=Ã;bonus=x (Request/Response)",
+ "x/x;x=\"Ã\";bonus=x (Request/Response)",
+ "x/x;x=Ä;bonus=x (Request/Response)",
+ "x/x;x=\"Ä\";bonus=x (Request/Response)",
+ "x/x;x=Å;bonus=x (Request/Response)",
+ "x/x;x=\"Å\";bonus=x (Request/Response)",
+ "x/x;x=Æ;bonus=x (Request/Response)",
+ "x/x;x=\"Æ\";bonus=x (Request/Response)",
+ "x/x;x=Ç;bonus=x (Request/Response)",
+ "x/x;x=\"Ç\";bonus=x (Request/Response)",
+ "x/x;x=È;bonus=x (Request/Response)",
+ "x/x;x=\"È\";bonus=x (Request/Response)",
+ "x/x;x=É;bonus=x (Request/Response)",
+ "x/x;x=\"É\";bonus=x (Request/Response)",
+ "x/x;x=Ê;bonus=x (Request/Response)",
+ "x/x;x=\"Ê\";bonus=x (Request/Response)",
+ "x/x;x=Ë;bonus=x (Request/Response)",
+ "x/x;x=\"Ë\";bonus=x (Request/Response)",
+ "x/x;x=Ì;bonus=x (Request/Response)",
+ "x/x;x=\"Ì\";bonus=x (Request/Response)",
+ "x/x;x=Í;bonus=x (Request/Response)",
+ "x/x;x=\"Í\";bonus=x (Request/Response)",
+ "x/x;x=Î;bonus=x (Request/Response)",
+ "x/x;x=\"Î\";bonus=x (Request/Response)",
+ "x/x;x=Ï;bonus=x (Request/Response)",
+ "x/x;x=\"Ï\";bonus=x (Request/Response)",
+ "x/x;x=Ð;bonus=x (Request/Response)",
+ "x/x;x=\"Ð\";bonus=x (Request/Response)",
+ "x/x;x=Ñ;bonus=x (Request/Response)",
+ "x/x;x=\"Ñ\";bonus=x (Request/Response)",
+ "x/x;x=Ò;bonus=x (Request/Response)",
+ "x/x;x=\"Ò\";bonus=x (Request/Response)",
+ "x/x;x=Ó;bonus=x (Request/Response)",
+ "x/x;x=\"Ó\";bonus=x (Request/Response)",
+ "x/x;x=Ô;bonus=x (Request/Response)",
+ "x/x;x=\"Ô\";bonus=x (Request/Response)",
+ "x/x;x=Õ;bonus=x (Request/Response)",
+ "x/x;x=\"Õ\";bonus=x (Request/Response)",
+ "x/x;x=Ö;bonus=x (Request/Response)",
+ "x/x;x=\"Ö\";bonus=x (Request/Response)",
+ "x/x;x=×;bonus=x (Request/Response)",
+ "x/x;x=\"×\";bonus=x (Request/Response)",
+ "x/x;x=Ø;bonus=x (Request/Response)",
+ "x/x;x=\"Ø\";bonus=x (Request/Response)",
+ "x/x;x=Ù;bonus=x (Request/Response)",
+ "x/x;x=\"Ù\";bonus=x (Request/Response)",
+ "x/x;x=Ú;bonus=x (Request/Response)",
+ "x/x;x=\"Ú\";bonus=x (Request/Response)",
+ "x/x;x=Û;bonus=x (Request/Response)",
+ "x/x;x=\"Û\";bonus=x (Request/Response)",
+ "x/x;x=Ü;bonus=x (Request/Response)",
+ "x/x;x=\"Ü\";bonus=x (Request/Response)",
+ "x/x;x=Ý;bonus=x (Request/Response)",
+ "x/x;x=\"Ý\";bonus=x (Request/Response)",
+ "x/x;x=Þ;bonus=x (Request/Response)",
+ "x/x;x=\"Þ\";bonus=x (Request/Response)",
+ "x/x;x=ß;bonus=x (Request/Response)",
+ "x/x;x=\"ß\";bonus=x (Request/Response)",
+ "x/x;x=à;bonus=x (Request/Response)",
+ "x/x;x=\"à\";bonus=x (Request/Response)",
+ "x/x;x=á;bonus=x (Request/Response)",
+ "x/x;x=\"á\";bonus=x (Request/Response)",
+ "x/x;x=â;bonus=x (Request/Response)",
+ "x/x;x=\"â\";bonus=x (Request/Response)",
+ "x/x;x=ã;bonus=x (Request/Response)",
+ "x/x;x=\"ã\";bonus=x (Request/Response)",
+ "x/x;x=ä;bonus=x (Request/Response)",
+ "x/x;x=\"ä\";bonus=x (Request/Response)",
+ "x/x;x=å;bonus=x (Request/Response)",
+ "x/x;x=\"å\";bonus=x (Request/Response)",
+ "x/x;x=æ;bonus=x (Request/Response)",
+ "x/x;x=\"æ\";bonus=x (Request/Response)",
+ "x/x;x=ç;bonus=x (Request/Response)",
+ "x/x;x=\"ç\";bonus=x (Request/Response)",
+ "x/x;x=è;bonus=x (Request/Response)",
+ "x/x;x=\"è\";bonus=x (Request/Response)",
+ "x/x;x=é;bonus=x (Request/Response)",
+ "x/x;x=\"é\";bonus=x (Request/Response)",
+ "x/x;x=ê;bonus=x (Request/Response)",
+ "x/x;x=\"ê\";bonus=x (Request/Response)",
+ "x/x;x=ë;bonus=x (Request/Response)",
+ "x/x;x=\"ë\";bonus=x (Request/Response)",
+ "x/x;x=ì;bonus=x (Request/Response)",
+ "x/x;x=\"ì\";bonus=x (Request/Response)",
+ "x/x;x=í;bonus=x (Request/Response)",
+ "x/x;x=\"í\";bonus=x (Request/Response)",
+ "x/x;x=î;bonus=x (Request/Response)",
+ "x/x;x=\"î\";bonus=x (Request/Response)",
+ "x/x;x=ï;bonus=x (Request/Response)",
+ "x/x;x=\"ï\";bonus=x (Request/Response)",
+ "x/x;x=ð;bonus=x (Request/Response)",
+ "x/x;x=\"ð\";bonus=x (Request/Response)",
+ "x/x;x=ñ;bonus=x (Request/Response)",
+ "x/x;x=\"ñ\";bonus=x (Request/Response)",
+ "x/x;x=ò;bonus=x (Request/Response)",
+ "x/x;x=\"ò\";bonus=x (Request/Response)",
+ "x/x;x=ó;bonus=x (Request/Response)",
+ "x/x;x=\"ó\";bonus=x (Request/Response)",
+ "x/x;x=ô;bonus=x (Request/Response)",
+ "x/x;x=\"ô\";bonus=x (Request/Response)",
+ "x/x;x=õ;bonus=x (Request/Response)",
+ "x/x;x=\"õ\";bonus=x (Request/Response)",
+ "x/x;x=ö;bonus=x (Request/Response)",
+ "x/x;x=\"ö\";bonus=x (Request/Response)",
+ "x/x;x=÷;bonus=x (Request/Response)",
+ "x/x;x=\"÷\";bonus=x (Request/Response)",
+ "x/x;x=ø;bonus=x (Request/Response)",
+ "x/x;x=\"ø\";bonus=x (Request/Response)",
+ "x/x;x=ù;bonus=x (Request/Response)",
+ "x/x;x=\"ù\";bonus=x (Request/Response)",
+ "x/x;x=ú;bonus=x (Request/Response)",
+ "x/x;x=\"ú\";bonus=x (Request/Response)",
+ "x/x;x=û;bonus=x (Request/Response)",
+ "x/x;x=\"û\";bonus=x (Request/Response)",
+ "x/x;x=ü;bonus=x (Request/Response)",
+ "x/x;x=\"ü\";bonus=x (Request/Response)",
+ "x/x;x=ý;bonus=x (Request/Response)",
+ "x/x;x=\"ý\";bonus=x (Request/Response)",
+ "x/x;x=þ;bonus=x (Request/Response)",
+ "x/x;x=\"þ\";bonus=x (Request/Response)",
+ "x/x;x=ÿ;bonus=x (Request/Response)",
+ "x/x;x=\"ÿ\";bonus=x (Request/Response)"
+ ],
+ "parsing.any.worker.html": [
+ "TEXT/HTML;CHARSET=GBK (Blob/File)",
+ "text/html;charset=gbk( (Blob/File)",
+ "text/html;x=(;charset=gbk (Blob/File)",
+ "text/html;charset=gbk;charset=windows-1255 (Blob/File)",
+ "text/html;charset=();charset=GBK (Blob/File)",
+ "text/html;charset =gbk (Blob/File)",
+ "text/html ;charset=gbk (Blob/File)",
+ "text/html; charset=gbk (Blob/File)",
+ "text/html;charset= gbk (Blob/File)",
+ "text/html;charset= \"gbk\" (Blob/File)",
+ "text/html;charset=\u000bgbk (Blob/File)",
+ "text/html;charset=\fgbk (Blob/File)",
+ "text/html;\u000bcharset=gbk (Blob/File)",
+ "text/html;\fcharset=gbk (Blob/File)",
+ "text/html;charset=';charset=GBK (Blob/File)",
+ "text/html;test;charset=gbk (Blob/File)",
+ "text/html;test=;charset=gbk (Blob/File)",
+ "text/html;';charset=gbk (Blob/File)",
+ "text/html;\";charset=gbk (Blob/File)",
+ "text/html ; ; charset=gbk (Blob/File)",
+ "text/html;;;;charset=gbk (Blob/File)",
+ "text/html;charset= \";charset=GBK (Blob/File)",
+ "text/html;charset=\";charset=foo\";charset=GBK (Blob/File)",
+ "text/html;charset=\"gbk\" (Blob/File)",
+ "text/html;charset=\"gbk (Blob/File)",
+ "text/html;charset=gbk\" (Blob/File)",
+ "text/html;charset=\"\\ gbk\" (Blob/File)",
+ "text/html;charset=\"\\g\\b\\k\" (Blob/File)",
+ "text/html;charset=\"gbk\"x (Blob/File)",
+ "text/html;charset=\"\";charset=GBK (Blob/File)",
+ "text/html;charset=\";charset=GBK (Blob/File)",
+ "text/html;charset={gbk} (Blob/File)",
+ "text/html;a]=bar;b[=bar;c=bar (Blob/File)",
+ "text/html;in]valid=\";asd=foo\";foo=bar (Blob/File)",
+ "!#$%&'*+-.^_`|~0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz/!#$%&'*+-.^_`|~0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz;!#$%&'*+-.^_`|~0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz=!#$%&'*+-.^_`|~0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz (Blob/File)",
+ "x/x;x=\"\t !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ\" (Blob/File)",
+ "x/x;test (Blob/File)",
+ "x/x;test=\"\\ (Blob/File)",
+ "x/x;x= (Blob/File)",
+ "x/x;x=\t (Blob/File)",
+ "x/x\n\r\t ;x=x (Blob/File)",
+ "\n\r\t x/x;x=x\n\r\t (Blob/File)",
+ "x/x;\n\r\t x=x\n\r\t ;x=y (Blob/File)",
+ "text/html;test=ÿ;charset=gbk (Blob/File)",
+ "x/x;test=�;x=x (Blob/File)",
+ "/ (Blob/File)",
+ "bogus (Blob/File)",
+ "bogus/ (Blob/File)",
+ "bogus/ (Blob/File)",
+ "bogus/bogus/; (Blob/File)",
+ "</> (Blob/File)",
+ "(/) (Blob/File)",
+ "text/html(;doesnot=matter (Blob/File)",
+ "{/} (Blob/File)",
+ "text /html (Blob/File)",
+ "text/ html (Blob/File)",
+ "\"text/html\" (Blob/File)",
+ "x/x;\u0000=x;bonus=x (Blob/File)",
+ "x/x;x=\u0000;bonus=x (Blob/File)",
+ "x/x;x=\"\u0000\";bonus=x (Blob/File)",
+ "x/x;\u0001=x;bonus=x (Blob/File)",
+ "x/x;x=\u0001;bonus=x (Blob/File)",
+ "x/x;x=\"\u0001\";bonus=x (Blob/File)",
+ "x/x;\u0002=x;bonus=x (Blob/File)",
+ "x/x;x=\u0002;bonus=x (Blob/File)",
+ "x/x;x=\"\u0002\";bonus=x (Blob/File)",
+ "x/x;\u0003=x;bonus=x (Blob/File)",
+ "x/x;x=\u0003;bonus=x (Blob/File)",
+ "x/x;x=\"\u0003\";bonus=x (Blob/File)",
+ "x/x;\u0004=x;bonus=x (Blob/File)",
+ "x/x;x=\u0004;bonus=x (Blob/File)",
+ "x/x;x=\"\u0004\";bonus=x (Blob/File)",
+ "x/x;\u0005=x;bonus=x (Blob/File)",
+ "x/x;x=\u0005;bonus=x (Blob/File)",
+ "x/x;x=\"\u0005\";bonus=x (Blob/File)",
+ "x/x;\u0006=x;bonus=x (Blob/File)",
+ "x/x;x=\u0006;bonus=x (Blob/File)",
+ "x/x;x=\"\u0006\";bonus=x (Blob/File)",
+ "x/x;\u0007=x;bonus=x (Blob/File)",
+ "x/x;x=\u0007;bonus=x (Blob/File)",
+ "x/x;x=\"\u0007\";bonus=x (Blob/File)",
+ "x/x;\b=x;bonus=x (Blob/File)",
+ "x/x;x=\b;bonus=x (Blob/File)",
+ "x/x;x=\"\b\";bonus=x (Blob/File)",
+ "x/x;\t=x;bonus=x (Blob/File)",
+ "x/x;\n=x;bonus=x (Blob/File)",
+ "x/x;x=\n;bonus=x (Blob/File)",
+ "x/x;x=\"\n\";bonus=x (Blob/File)",
+ "x/x;\u000b=x;bonus=x (Blob/File)",
+ "x/x;x=\u000b;bonus=x (Blob/File)",
+ "x/x;x=\"\u000b\";bonus=x (Blob/File)",
+ "x/x;\f=x;bonus=x (Blob/File)",
+ "x/x;x=\f;bonus=x (Blob/File)",
+ "x/x;x=\"\f\";bonus=x (Blob/File)",
+ "x/x;\r=x;bonus=x (Blob/File)",
+ "x/x;x=\r;bonus=x (Blob/File)",
+ "x/x;x=\"\r\";bonus=x (Blob/File)",
+ "x/x;\u000e=x;bonus=x (Blob/File)",
+ "x/x;x=\u000e;bonus=x (Blob/File)",
+ "x/x;x=\"\u000e\";bonus=x (Blob/File)",
+ "x/x;\u000f=x;bonus=x (Blob/File)",
+ "x/x;x=\u000f;bonus=x (Blob/File)",
+ "x/x;x=\"\u000f\";bonus=x (Blob/File)",
+ "x/x;\u0010=x;bonus=x (Blob/File)",
+ "x/x;x=\u0010;bonus=x (Blob/File)",
+ "x/x;x=\"\u0010\";bonus=x (Blob/File)",
+ "x/x;\u0011=x;bonus=x (Blob/File)",
+ "x/x;x=\u0011;bonus=x (Blob/File)",
+ "x/x;x=\"\u0011\";bonus=x (Blob/File)",
+ "x/x;\u0012=x;bonus=x (Blob/File)",
+ "x/x;x=\u0012;bonus=x (Blob/File)",
+ "x/x;x=\"\u0012\";bonus=x (Blob/File)",
+ "x/x;\u0013=x;bonus=x (Blob/File)",
+ "x/x;x=\u0013;bonus=x (Blob/File)",
+ "x/x;x=\"\u0013\";bonus=x (Blob/File)",
+ "x/x;\u0014=x;bonus=x (Blob/File)",
+ "x/x;x=\u0014;bonus=x (Blob/File)",
+ "x/x;x=\"\u0014\";bonus=x (Blob/File)",
+ "x/x;\u0015=x;bonus=x (Blob/File)",
+ "x/x;x=\u0015;bonus=x (Blob/File)",
+ "x/x;x=\"\u0015\";bonus=x (Blob/File)",
+ "x/x;\u0016=x;bonus=x (Blob/File)",
+ "x/x;x=\u0016;bonus=x (Blob/File)",
+ "x/x;x=\"\u0016\";bonus=x (Blob/File)",
+ "x/x;\u0017=x;bonus=x (Blob/File)",
+ "x/x;x=\u0017;bonus=x (Blob/File)",
+ "x/x;x=\"\u0017\";bonus=x (Blob/File)",
+ "x/x;\u0018=x;bonus=x (Blob/File)",
+ "x/x;x=\u0018;bonus=x (Blob/File)",
+ "x/x;x=\"\u0018\";bonus=x (Blob/File)",
+ "x/x;\u0019=x;bonus=x (Blob/File)",
+ "x/x;x=\u0019;bonus=x (Blob/File)",
+ "x/x;x=\"\u0019\";bonus=x (Blob/File)",
+ "x/x;\u001a=x;bonus=x (Blob/File)",
+ "x/x;x=\u001a;bonus=x (Blob/File)",
+ "x/x;x=\"\u001a\";bonus=x (Blob/File)",
+ "x/x;\u001b=x;bonus=x (Blob/File)",
+ "x/x;x=\u001b;bonus=x (Blob/File)",
+ "x/x;x=\"\u001b\";bonus=x (Blob/File)",
+ "x/x;\u001c=x;bonus=x (Blob/File)",
+ "x/x;x=\u001c;bonus=x (Blob/File)",
+ "x/x;x=\"\u001c\";bonus=x (Blob/File)",
+ "x/x;\u001d=x;bonus=x (Blob/File)",
+ "x/x;x=\u001d;bonus=x (Blob/File)",
+ "x/x;x=\"\u001d\";bonus=x (Blob/File)",
+ "x/x;\u001e=x;bonus=x (Blob/File)",
+ "x/x;x=\u001e;bonus=x (Blob/File)",
+ "x/x;x=\"\u001e\";bonus=x (Blob/File)",
+ "x/x;\u001f=x;bonus=x (Blob/File)",
+ "x/x;x=\u001f;bonus=x (Blob/File)",
+ "x/x;x=\"\u001f\";bonus=x (Blob/File)",
+ " /x (Blob/File)",
+ "x/ (Blob/File)",
+ "x/x; =x;bonus=x (Blob/File)",
+ "\"/x (Blob/File)",
+ "x/\" (Blob/File)",
+ "x/x;\"=x;bonus=x (Blob/File)",
+ "(/x (Blob/File)",
+ "x/( (Blob/File)",
+ "x/x;(=x;bonus=x (Blob/File)",
+ "x/x;x=(;bonus=x (Blob/File)",
+ ")/x (Blob/File)",
+ "x/) (Blob/File)",
+ "x/x;)=x;bonus=x (Blob/File)",
+ "x/x;x=);bonus=x (Blob/File)",
+ ",/x (Blob/File)",
+ "x/, (Blob/File)",
+ "x/x;,=x;bonus=x (Blob/File)",
+ "x/x;x=,;bonus=x (Blob/File)",
+ "x/x;/=x;bonus=x (Blob/File)",
+ "x/x;x=/;bonus=x (Blob/File)",
+ ":/x (Blob/File)",
+ "x/: (Blob/File)",
+ "x/x;:=x;bonus=x (Blob/File)",
+ "x/x;x=:;bonus=x (Blob/File)",
+ ";/x (Blob/File)",
+ "x/; (Blob/File)",
+ "</x (Blob/File)",
+ "x/< (Blob/File)",
+ "x/x;<=x;bonus=x (Blob/File)",
+ "x/x;x=<;bonus=x (Blob/File)",
+ "=/x (Blob/File)",
+ "x/= (Blob/File)",
+ "x/x;x==;bonus=x (Blob/File)",
+ ">/x (Blob/File)",
+ "x/> (Blob/File)",
+ "x/x;>=x;bonus=x (Blob/File)",
+ "x/x;x=>;bonus=x (Blob/File)",
+ "?/x (Blob/File)",
+ "x/? (Blob/File)",
+ "x/x;?=x;bonus=x (Blob/File)",
+ "x/x;x=?;bonus=x (Blob/File)",
+ "@/x (Blob/File)",
+ "x/@ (Blob/File)",
+ "x/x;@=x;bonus=x (Blob/File)",
+ "x/x;x=@;bonus=x (Blob/File)",
+ "[/x (Blob/File)",
+ "x/[ (Blob/File)",
+ "x/x;[=x;bonus=x (Blob/File)",
+ "x/x;x=[;bonus=x (Blob/File)",
+ "\\/x (Blob/File)",
+ "x/\\ (Blob/File)",
+ "x/x;\\=x;bonus=x (Blob/File)",
+ "]/x (Blob/File)",
+ "x/] (Blob/File)",
+ "x/x;]=x;bonus=x (Blob/File)",
+ "x/x;x=];bonus=x (Blob/File)",
+ "{/x (Blob/File)",
+ "x/{ (Blob/File)",
+ "x/x;{=x;bonus=x (Blob/File)",
+ "x/x;x={;bonus=x (Blob/File)",
+ "}/x (Blob/File)",
+ "x/} (Blob/File)",
+ "x/x;}=x;bonus=x (Blob/File)",
+ "x/x;x=};bonus=x (Blob/File)",
+ "x/x;=x;bonus=x (Blob/File)",
+ "x/x;x=;bonus=x (Blob/File)",
+ "x/x;x=\"\";bonus=x (Blob/File)",
+ "x/x;€=x;bonus=x (Blob/File)",
+ "x/x;x=€;bonus=x (Blob/File)",
+ "x/x;x=\"€\";bonus=x (Blob/File)",
+ "x/x;=x;bonus=x (Blob/File)",
+ "x/x;x=;bonus=x (Blob/File)",
+ "x/x;x=\"\";bonus=x (Blob/File)",
+ "x/x;‚=x;bonus=x (Blob/File)",
+ "x/x;x=‚;bonus=x (Blob/File)",
+ "x/x;x=\"‚\";bonus=x (Blob/File)",
+ "x/x;ƒ=x;bonus=x (Blob/File)",
+ "x/x;x=ƒ;bonus=x (Blob/File)",
+ "x/x;x=\"ƒ\";bonus=x (Blob/File)",
+ "x/x;„=x;bonus=x (Blob/File)",
+ "x/x;x=„;bonus=x (Blob/File)",
+ "x/x;x=\"„\";bonus=x (Blob/File)",
+ "x/x;…=x;bonus=x (Blob/File)",
+ "x/x;x=…;bonus=x (Blob/File)",
+ "x/x;x=\"…\";bonus=x (Blob/File)",
+ "x/x;†=x;bonus=x (Blob/File)",
+ "x/x;x=†;bonus=x (Blob/File)",
+ "x/x;x=\"†\";bonus=x (Blob/File)",
+ "x/x;‡=x;bonus=x (Blob/File)",
+ "x/x;x=‡;bonus=x (Blob/File)",
+ "x/x;x=\"‡\";bonus=x (Blob/File)",
+ "x/x;ˆ=x;bonus=x (Blob/File)",
+ "x/x;x=ˆ;bonus=x (Blob/File)",
+ "x/x;x=\"ˆ\";bonus=x (Blob/File)",
+ "x/x;‰=x;bonus=x (Blob/File)",
+ "x/x;x=‰;bonus=x (Blob/File)",
+ "x/x;x=\"‰\";bonus=x (Blob/File)",
+ "x/x;Š=x;bonus=x (Blob/File)",
+ "x/x;x=Š;bonus=x (Blob/File)",
+ "x/x;x=\"Š\";bonus=x (Blob/File)",
+ "x/x;‹=x;bonus=x (Blob/File)",
+ "x/x;x=‹;bonus=x (Blob/File)",
+ "x/x;x=\"‹\";bonus=x (Blob/File)",
+ "x/x;Œ=x;bonus=x (Blob/File)",
+ "x/x;x=Œ;bonus=x (Blob/File)",
+ "x/x;x=\"Œ\";bonus=x (Blob/File)",
+ "x/x;=x;bonus=x (Blob/File)",
+ "x/x;x=;bonus=x (Blob/File)",
+ "x/x;x=\"\";bonus=x (Blob/File)",
+ "x/x;Ž=x;bonus=x (Blob/File)",
+ "x/x;x=Ž;bonus=x (Blob/File)",
+ "x/x;x=\"Ž\";bonus=x (Blob/File)",
+ "x/x;=x;bonus=x (Blob/File)",
+ "x/x;x=;bonus=x (Blob/File)",
+ "x/x;x=\"\";bonus=x (Blob/File)",
+ "x/x;=x;bonus=x (Blob/File)",
+ "x/x;x=;bonus=x (Blob/File)",
+ "x/x;x=\"\";bonus=x (Blob/File)",
+ "x/x;‘=x;bonus=x (Blob/File)",
+ "x/x;x=‘;bonus=x (Blob/File)",
+ "x/x;x=\"‘\";bonus=x (Blob/File)",
+ "x/x;’=x;bonus=x (Blob/File)",
+ "x/x;x=’;bonus=x (Blob/File)",
+ "x/x;x=\"’\";bonus=x (Blob/File)",
+ "x/x;“=x;bonus=x (Blob/File)",
+ "x/x;x=“;bonus=x (Blob/File)",
+ "x/x;x=\"“\";bonus=x (Blob/File)",
+ "x/x;”=x;bonus=x (Blob/File)",
+ "x/x;x=”;bonus=x (Blob/File)",
+ "x/x;x=\"”\";bonus=x (Blob/File)",
+ "x/x;•=x;bonus=x (Blob/File)",
+ "x/x;x=•;bonus=x (Blob/File)",
+ "x/x;x=\"•\";bonus=x (Blob/File)",
+ "x/x;–=x;bonus=x (Blob/File)",
+ "x/x;x=–;bonus=x (Blob/File)",
+ "x/x;x=\"–\";bonus=x (Blob/File)",
+ "x/x;—=x;bonus=x (Blob/File)",
+ "x/x;x=—;bonus=x (Blob/File)",
+ "x/x;x=\"—\";bonus=x (Blob/File)",
+ "x/x;˜=x;bonus=x (Blob/File)",
+ "x/x;x=˜;bonus=x (Blob/File)",
+ "x/x;x=\"˜\";bonus=x (Blob/File)",
+ "x/x;™=x;bonus=x (Blob/File)",
+ "x/x;x=™;bonus=x (Blob/File)",
+ "x/x;x=\"™\";bonus=x (Blob/File)",
+ "x/x;š=x;bonus=x (Blob/File)",
+ "x/x;x=š;bonus=x (Blob/File)",
+ "x/x;x=\"š\";bonus=x (Blob/File)",
+ "x/x;›=x;bonus=x (Blob/File)",
+ "x/x;x=›;bonus=x (Blob/File)",
+ "x/x;x=\"›\";bonus=x (Blob/File)",
+ "x/x;œ=x;bonus=x (Blob/File)",
+ "x/x;x=œ;bonus=x (Blob/File)",
+ "x/x;x=\"œ\";bonus=x (Blob/File)",
+ "x/x;=x;bonus=x (Blob/File)",
+ "x/x;x=;bonus=x (Blob/File)",
+ "x/x;x=\"\";bonus=x (Blob/File)",
+ "x/x;ž=x;bonus=x (Blob/File)",
+ "x/x;x=ž;bonus=x (Blob/File)",
+ "x/x;x=\"ž\";bonus=x (Blob/File)",
+ "x/x;Ÿ=x;bonus=x (Blob/File)",
+ "x/x;x=Ÿ;bonus=x (Blob/File)",
+ "x/x;x=\"Ÿ\";bonus=x (Blob/File)",
+ "x/x; =x;bonus=x (Blob/File)",
+ "x/x;x= ;bonus=x (Blob/File)",
+ "x/x;x=\" \";bonus=x (Blob/File)",
+ "x/x;¡=x;bonus=x (Blob/File)",
+ "x/x;x=¡;bonus=x (Blob/File)",
+ "x/x;x=\"¡\";bonus=x (Blob/File)",
+ "x/x;¢=x;bonus=x (Blob/File)",
+ "x/x;x=¢;bonus=x (Blob/File)",
+ "x/x;x=\"¢\";bonus=x (Blob/File)",
+ "x/x;£=x;bonus=x (Blob/File)",
+ "x/x;x=£;bonus=x (Blob/File)",
+ "x/x;x=\"£\";bonus=x (Blob/File)",
+ "x/x;¤=x;bonus=x (Blob/File)",
+ "x/x;x=¤;bonus=x (Blob/File)",
+ "x/x;x=\"¤\";bonus=x (Blob/File)",
+ "x/x;¥=x;bonus=x (Blob/File)",
+ "x/x;x=¥;bonus=x (Blob/File)",
+ "x/x;x=\"¥\";bonus=x (Blob/File)",
+ "x/x;¦=x;bonus=x (Blob/File)",
+ "x/x;x=¦;bonus=x (Blob/File)",
+ "x/x;x=\"¦\";bonus=x (Blob/File)",
+ "x/x;§=x;bonus=x (Blob/File)",
+ "x/x;x=§;bonus=x (Blob/File)",
+ "x/x;x=\"§\";bonus=x (Blob/File)",
+ "x/x;¨=x;bonus=x (Blob/File)",
+ "x/x;x=¨;bonus=x (Blob/File)",
+ "x/x;x=\"¨\";bonus=x (Blob/File)",
+ "x/x;©=x;bonus=x (Blob/File)",
+ "x/x;x=©;bonus=x (Blob/File)",
+ "x/x;x=\"©\";bonus=x (Blob/File)",
+ "x/x;ª=x;bonus=x (Blob/File)",
+ "x/x;x=ª;bonus=x (Blob/File)",
+ "x/x;x=\"ª\";bonus=x (Blob/File)",
+ "x/x;«=x;bonus=x (Blob/File)",
+ "x/x;x=«;bonus=x (Blob/File)",
+ "x/x;x=\"«\";bonus=x (Blob/File)",
+ "x/x;¬=x;bonus=x (Blob/File)",
+ "x/x;x=¬;bonus=x (Blob/File)",
+ "x/x;x=\"¬\";bonus=x (Blob/File)",
+ "x/x;­=x;bonus=x (Blob/File)",
+ "x/x;x=­;bonus=x (Blob/File)",
+ "x/x;x=\"­\";bonus=x (Blob/File)",
+ "x/x;®=x;bonus=x (Blob/File)",
+ "x/x;x=®;bonus=x (Blob/File)",
+ "x/x;x=\"®\";bonus=x (Blob/File)",
+ "x/x;¯=x;bonus=x (Blob/File)",
+ "x/x;x=¯;bonus=x (Blob/File)",
+ "x/x;x=\"¯\";bonus=x (Blob/File)",
+ "x/x;°=x;bonus=x (Blob/File)",
+ "x/x;x=°;bonus=x (Blob/File)",
+ "x/x;x=\"°\";bonus=x (Blob/File)",
+ "x/x;±=x;bonus=x (Blob/File)",
+ "x/x;x=±;bonus=x (Blob/File)",
+ "x/x;x=\"±\";bonus=x (Blob/File)",
+ "x/x;²=x;bonus=x (Blob/File)",
+ "x/x;x=²;bonus=x (Blob/File)",
+ "x/x;x=\"²\";bonus=x (Blob/File)",
+ "x/x;³=x;bonus=x (Blob/File)",
+ "x/x;x=³;bonus=x (Blob/File)",
+ "x/x;x=\"³\";bonus=x (Blob/File)",
+ "x/x;´=x;bonus=x (Blob/File)",
+ "x/x;x=´;bonus=x (Blob/File)",
+ "x/x;x=\"´\";bonus=x (Blob/File)",
+ "x/x;µ=x;bonus=x (Blob/File)",
+ "x/x;x=µ;bonus=x (Blob/File)",
+ "x/x;x=\"µ\";bonus=x (Blob/File)",
+ "x/x;¶=x;bonus=x (Blob/File)",
+ "x/x;x=¶;bonus=x (Blob/File)",
+ "x/x;x=\"¶\";bonus=x (Blob/File)",
+ "x/x;·=x;bonus=x (Blob/File)",
+ "x/x;x=·;bonus=x (Blob/File)",
+ "x/x;x=\"·\";bonus=x (Blob/File)",
+ "x/x;¸=x;bonus=x (Blob/File)",
+ "x/x;x=¸;bonus=x (Blob/File)",
+ "x/x;x=\"¸\";bonus=x (Blob/File)",
+ "x/x;¹=x;bonus=x (Blob/File)",
+ "x/x;x=¹;bonus=x (Blob/File)",
+ "x/x;x=\"¹\";bonus=x (Blob/File)",
+ "x/x;º=x;bonus=x (Blob/File)",
+ "x/x;x=º;bonus=x (Blob/File)",
+ "x/x;x=\"º\";bonus=x (Blob/File)",
+ "x/x;»=x;bonus=x (Blob/File)",
+ "x/x;x=»;bonus=x (Blob/File)",
+ "x/x;x=\"»\";bonus=x (Blob/File)",
+ "x/x;¼=x;bonus=x (Blob/File)",
+ "x/x;x=¼;bonus=x (Blob/File)",
+ "x/x;x=\"¼\";bonus=x (Blob/File)",
+ "x/x;½=x;bonus=x (Blob/File)",
+ "x/x;x=½;bonus=x (Blob/File)",
+ "x/x;x=\"½\";bonus=x (Blob/File)",
+ "x/x;¾=x;bonus=x (Blob/File)",
+ "x/x;x=¾;bonus=x (Blob/File)",
+ "x/x;x=\"¾\";bonus=x (Blob/File)",
+ "x/x;¿=x;bonus=x (Blob/File)",
+ "x/x;x=¿;bonus=x (Blob/File)",
+ "x/x;x=\"¿\";bonus=x (Blob/File)",
+ "x/x;À=x;bonus=x (Blob/File)",
+ "x/x;x=À;bonus=x (Blob/File)",
+ "x/x;x=\"À\";bonus=x (Blob/File)",
+ "x/x;Á=x;bonus=x (Blob/File)",
+ "x/x;x=Á;bonus=x (Blob/File)",
+ "x/x;x=\"Á\";bonus=x (Blob/File)",
+ "x/x;Â=x;bonus=x (Blob/File)",
+ "x/x;x=Â;bonus=x (Blob/File)",
+ "x/x;x=\"Â\";bonus=x (Blob/File)",
+ "x/x;Ã=x;bonus=x (Blob/File)",
+ "x/x;x=Ã;bonus=x (Blob/File)",
+ "x/x;x=\"Ã\";bonus=x (Blob/File)",
+ "x/x;Ä=x;bonus=x (Blob/File)",
+ "x/x;x=Ä;bonus=x (Blob/File)",
+ "x/x;x=\"Ä\";bonus=x (Blob/File)",
+ "x/x;Å=x;bonus=x (Blob/File)",
+ "x/x;x=Å;bonus=x (Blob/File)",
+ "x/x;x=\"Å\";bonus=x (Blob/File)",
+ "x/x;Æ=x;bonus=x (Blob/File)",
+ "x/x;x=Æ;bonus=x (Blob/File)",
+ "x/x;x=\"Æ\";bonus=x (Blob/File)",
+ "x/x;Ç=x;bonus=x (Blob/File)",
+ "x/x;x=Ç;bonus=x (Blob/File)",
+ "x/x;x=\"Ç\";bonus=x (Blob/File)",
+ "x/x;È=x;bonus=x (Blob/File)",
+ "x/x;x=È;bonus=x (Blob/File)",
+ "x/x;x=\"È\";bonus=x (Blob/File)",
+ "x/x;É=x;bonus=x (Blob/File)",
+ "x/x;x=É;bonus=x (Blob/File)",
+ "x/x;x=\"É\";bonus=x (Blob/File)",
+ "x/x;Ê=x;bonus=x (Blob/File)",
+ "x/x;x=Ê;bonus=x (Blob/File)",
+ "x/x;x=\"Ê\";bonus=x (Blob/File)",
+ "x/x;Ë=x;bonus=x (Blob/File)",
+ "x/x;x=Ë;bonus=x (Blob/File)",
+ "x/x;x=\"Ë\";bonus=x (Blob/File)",
+ "x/x;Ì=x;bonus=x (Blob/File)",
+ "x/x;x=Ì;bonus=x (Blob/File)",
+ "x/x;x=\"Ì\";bonus=x (Blob/File)",
+ "x/x;Í=x;bonus=x (Blob/File)",
+ "x/x;x=Í;bonus=x (Blob/File)",
+ "x/x;x=\"Í\";bonus=x (Blob/File)",
+ "x/x;Î=x;bonus=x (Blob/File)",
+ "x/x;x=Î;bonus=x (Blob/File)",
+ "x/x;x=\"Î\";bonus=x (Blob/File)",
+ "x/x;Ï=x;bonus=x (Blob/File)",
+ "x/x;x=Ï;bonus=x (Blob/File)",
+ "x/x;x=\"Ï\";bonus=x (Blob/File)",
+ "x/x;Ð=x;bonus=x (Blob/File)",
+ "x/x;x=Ð;bonus=x (Blob/File)",
+ "x/x;x=\"Ð\";bonus=x (Blob/File)",
+ "x/x;Ñ=x;bonus=x (Blob/File)",
+ "x/x;x=Ñ;bonus=x (Blob/File)",
+ "x/x;x=\"Ñ\";bonus=x (Blob/File)",
+ "x/x;Ò=x;bonus=x (Blob/File)",
+ "x/x;x=Ò;bonus=x (Blob/File)",
+ "x/x;x=\"Ò\";bonus=x (Blob/File)",
+ "x/x;Ó=x;bonus=x (Blob/File)",
+ "x/x;x=Ó;bonus=x (Blob/File)",
+ "x/x;x=\"Ó\";bonus=x (Blob/File)",
+ "x/x;Ô=x;bonus=x (Blob/File)",
+ "x/x;x=Ô;bonus=x (Blob/File)",
+ "x/x;x=\"Ô\";bonus=x (Blob/File)",
+ "x/x;Õ=x;bonus=x (Blob/File)",
+ "x/x;x=Õ;bonus=x (Blob/File)",
+ "x/x;x=\"Õ\";bonus=x (Blob/File)",
+ "x/x;Ö=x;bonus=x (Blob/File)",
+ "x/x;x=Ö;bonus=x (Blob/File)",
+ "x/x;x=\"Ö\";bonus=x (Blob/File)",
+ "x/x;×=x;bonus=x (Blob/File)",
+ "x/x;x=×;bonus=x (Blob/File)",
+ "x/x;x=\"×\";bonus=x (Blob/File)",
+ "x/x;Ø=x;bonus=x (Blob/File)",
+ "x/x;x=Ø;bonus=x (Blob/File)",
+ "x/x;x=\"Ø\";bonus=x (Blob/File)",
+ "x/x;Ù=x;bonus=x (Blob/File)",
+ "x/x;x=Ù;bonus=x (Blob/File)",
+ "x/x;x=\"Ù\";bonus=x (Blob/File)",
+ "x/x;Ú=x;bonus=x (Blob/File)",
+ "x/x;x=Ú;bonus=x (Blob/File)",
+ "x/x;x=\"Ú\";bonus=x (Blob/File)",
+ "x/x;Û=x;bonus=x (Blob/File)",
+ "x/x;x=Û;bonus=x (Blob/File)",
+ "x/x;x=\"Û\";bonus=x (Blob/File)",
+ "x/x;Ü=x;bonus=x (Blob/File)",
+ "x/x;x=Ü;bonus=x (Blob/File)",
+ "x/x;x=\"Ü\";bonus=x (Blob/File)",
+ "x/x;Ý=x;bonus=x (Blob/File)",
+ "x/x;x=Ý;bonus=x (Blob/File)",
+ "x/x;x=\"Ý\";bonus=x (Blob/File)",
+ "x/x;Þ=x;bonus=x (Blob/File)",
+ "x/x;x=Þ;bonus=x (Blob/File)",
+ "x/x;x=\"Þ\";bonus=x (Blob/File)",
+ "x/x;ß=x;bonus=x (Blob/File)",
+ "x/x;x=ß;bonus=x (Blob/File)",
+ "x/x;x=\"ß\";bonus=x (Blob/File)",
+ "x/x;à=x;bonus=x (Blob/File)",
+ "x/x;x=à;bonus=x (Blob/File)",
+ "x/x;x=\"à\";bonus=x (Blob/File)",
+ "x/x;á=x;bonus=x (Blob/File)",
+ "x/x;x=á;bonus=x (Blob/File)",
+ "x/x;x=\"á\";bonus=x (Blob/File)",
+ "x/x;â=x;bonus=x (Blob/File)",
+ "x/x;x=â;bonus=x (Blob/File)",
+ "x/x;x=\"â\";bonus=x (Blob/File)",
+ "x/x;ã=x;bonus=x (Blob/File)",
+ "x/x;x=ã;bonus=x (Blob/File)",
+ "x/x;x=\"ã\";bonus=x (Blob/File)",
+ "x/x;ä=x;bonus=x (Blob/File)",
+ "x/x;x=ä;bonus=x (Blob/File)",
+ "x/x;x=\"ä\";bonus=x (Blob/File)",
+ "x/x;å=x;bonus=x (Blob/File)",
+ "x/x;x=å;bonus=x (Blob/File)",
+ "x/x;x=\"å\";bonus=x (Blob/File)",
+ "x/x;æ=x;bonus=x (Blob/File)",
+ "x/x;x=æ;bonus=x (Blob/File)",
+ "x/x;x=\"æ\";bonus=x (Blob/File)",
+ "x/x;ç=x;bonus=x (Blob/File)",
+ "x/x;x=ç;bonus=x (Blob/File)",
+ "x/x;x=\"ç\";bonus=x (Blob/File)",
+ "x/x;è=x;bonus=x (Blob/File)",
+ "x/x;x=è;bonus=x (Blob/File)",
+ "x/x;x=\"è\";bonus=x (Blob/File)",
+ "x/x;é=x;bonus=x (Blob/File)",
+ "x/x;x=é;bonus=x (Blob/File)",
+ "x/x;x=\"é\";bonus=x (Blob/File)",
+ "x/x;ê=x;bonus=x (Blob/File)",
+ "x/x;x=ê;bonus=x (Blob/File)",
+ "x/x;x=\"ê\";bonus=x (Blob/File)",
+ "x/x;ë=x;bonus=x (Blob/File)",
+ "x/x;x=ë;bonus=x (Blob/File)",
+ "x/x;x=\"ë\";bonus=x (Blob/File)",
+ "x/x;ì=x;bonus=x (Blob/File)",
+ "x/x;x=ì;bonus=x (Blob/File)",
+ "x/x;x=\"ì\";bonus=x (Blob/File)",
+ "x/x;í=x;bonus=x (Blob/File)",
+ "x/x;x=í;bonus=x (Blob/File)",
+ "x/x;x=\"í\";bonus=x (Blob/File)",
+ "x/x;î=x;bonus=x (Blob/File)",
+ "x/x;x=î;bonus=x (Blob/File)",
+ "x/x;x=\"î\";bonus=x (Blob/File)",
+ "x/x;ï=x;bonus=x (Blob/File)",
+ "x/x;x=ï;bonus=x (Blob/File)",
+ "x/x;x=\"ï\";bonus=x (Blob/File)",
+ "x/x;ð=x;bonus=x (Blob/File)",
+ "x/x;x=ð;bonus=x (Blob/File)",
+ "x/x;x=\"ð\";bonus=x (Blob/File)",
+ "x/x;ñ=x;bonus=x (Blob/File)",
+ "x/x;x=ñ;bonus=x (Blob/File)",
+ "x/x;x=\"ñ\";bonus=x (Blob/File)",
+ "x/x;ò=x;bonus=x (Blob/File)",
+ "x/x;x=ò;bonus=x (Blob/File)",
+ "x/x;x=\"ò\";bonus=x (Blob/File)",
+ "x/x;ó=x;bonus=x (Blob/File)",
+ "x/x;x=ó;bonus=x (Blob/File)",
+ "x/x;x=\"ó\";bonus=x (Blob/File)",
+ "x/x;ô=x;bonus=x (Blob/File)",
+ "x/x;x=ô;bonus=x (Blob/File)",
+ "x/x;x=\"ô\";bonus=x (Blob/File)",
+ "x/x;õ=x;bonus=x (Blob/File)",
+ "x/x;x=õ;bonus=x (Blob/File)",
+ "x/x;x=\"õ\";bonus=x (Blob/File)",
+ "x/x;ö=x;bonus=x (Blob/File)",
+ "x/x;x=ö;bonus=x (Blob/File)",
+ "x/x;x=\"ö\";bonus=x (Blob/File)",
+ "x/x;÷=x;bonus=x (Blob/File)",
+ "x/x;x=÷;bonus=x (Blob/File)",
+ "x/x;x=\"÷\";bonus=x (Blob/File)",
+ "x/x;ø=x;bonus=x (Blob/File)",
+ "x/x;x=ø;bonus=x (Blob/File)",
+ "x/x;x=\"ø\";bonus=x (Blob/File)",
+ "x/x;ù=x;bonus=x (Blob/File)",
+ "x/x;x=ù;bonus=x (Blob/File)",
+ "x/x;x=\"ù\";bonus=x (Blob/File)",
+ "x/x;ú=x;bonus=x (Blob/File)",
+ "x/x;x=ú;bonus=x (Blob/File)",
+ "x/x;x=\"ú\";bonus=x (Blob/File)",
+ "x/x;û=x;bonus=x (Blob/File)",
+ "x/x;x=û;bonus=x (Blob/File)",
+ "x/x;x=\"û\";bonus=x (Blob/File)",
+ "x/x;ü=x;bonus=x (Blob/File)",
+ "x/x;x=ü;bonus=x (Blob/File)",
+ "x/x;x=\"ü\";bonus=x (Blob/File)",
+ "x/x;ý=x;bonus=x (Blob/File)",
+ "x/x;x=ý;bonus=x (Blob/File)",
+ "x/x;x=\"ý\";bonus=x (Blob/File)",
+ "x/x;þ=x;bonus=x (Blob/File)",
+ "x/x;x=þ;bonus=x (Blob/File)",
+ "x/x;x=\"þ\";bonus=x (Blob/File)",
+ "x/x;ÿ=x;bonus=x (Blob/File)",
+ "x/x;x=ÿ;bonus=x (Blob/File)",
+ "x/x;x=\"ÿ\";bonus=x (Blob/File)",
+ "TEXT/HTML;CHARSET=GBK (Request/Response)",
+ "text/html;charset= \";charset=GBK (Request/Response)",
+ "text/html;charset=\";charset=foo\";charset=GBK (Request/Response)",
+ "text/html;charset=\"\";charset=GBK (Request/Response)",
+ "text/html;charset=\";charset=GBK (Request/Response)",
+ "!#$%&'*+-.^_`|~0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz/!#$%&'*+-.^_`|~0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz;!#$%&'*+-.^_`|~0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz=!#$%&'*+-.^_`|~0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz (Request/Response)",
+ "x/x;x=\"\t !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ\" (Request/Response)",
+ "text/html;test=ÿ;charset=gbk (Request/Response)",
+ "x/x;,=x;bonus=x (Request/Response)",
+ "x/x;x=,;bonus=x (Request/Response)",
+ "x/x;x=€;bonus=x (Request/Response)",
+ "x/x;x=\"€\";bonus=x (Request/Response)",
+ "x/x;x=;bonus=x (Request/Response)",
+ "x/x;x=\"\";bonus=x (Request/Response)",
+ "x/x;x=‚;bonus=x (Request/Response)",
+ "x/x;x=\"‚\";bonus=x (Request/Response)",
+ "x/x;x=ƒ;bonus=x (Request/Response)",
+ "x/x;x=\"ƒ\";bonus=x (Request/Response)",
+ "x/x;x=„;bonus=x (Request/Response)",
+ "x/x;x=\"„\";bonus=x (Request/Response)",
+ "x/x;x=…;bonus=x (Request/Response)",
+ "x/x;x=\"…\";bonus=x (Request/Response)",
+ "x/x;x=†;bonus=x (Request/Response)",
+ "x/x;x=\"†\";bonus=x (Request/Response)",
+ "x/x;x=‡;bonus=x (Request/Response)",
+ "x/x;x=\"‡\";bonus=x (Request/Response)",
+ "x/x;x=ˆ;bonus=x (Request/Response)",
+ "x/x;x=\"ˆ\";bonus=x (Request/Response)",
+ "x/x;x=‰;bonus=x (Request/Response)",
+ "x/x;x=\"‰\";bonus=x (Request/Response)",
+ "x/x;x=Š;bonus=x (Request/Response)",
+ "x/x;x=\"Š\";bonus=x (Request/Response)",
+ "x/x;x=‹;bonus=x (Request/Response)",
+ "x/x;x=\"‹\";bonus=x (Request/Response)",
+ "x/x;x=Œ;bonus=x (Request/Response)",
+ "x/x;x=\"Œ\";bonus=x (Request/Response)",
+ "x/x;x=;bonus=x (Request/Response)",
+ "x/x;x=\"\";bonus=x (Request/Response)",
+ "x/x;x=Ž;bonus=x (Request/Response)",
+ "x/x;x=\"Ž\";bonus=x (Request/Response)",
+ "x/x;x=;bonus=x (Request/Response)",
+ "x/x;x=\"\";bonus=x (Request/Response)",
+ "x/x;x=;bonus=x (Request/Response)",
+ "x/x;x=\"\";bonus=x (Request/Response)",
+ "x/x;x=‘;bonus=x (Request/Response)",
+ "x/x;x=\"‘\";bonus=x (Request/Response)",
+ "x/x;x=’;bonus=x (Request/Response)",
+ "x/x;x=\"’\";bonus=x (Request/Response)",
+ "x/x;x=“;bonus=x (Request/Response)",
+ "x/x;x=\"“\";bonus=x (Request/Response)",
+ "x/x;x=”;bonus=x (Request/Response)",
+ "x/x;x=\"”\";bonus=x (Request/Response)",
+ "x/x;x=•;bonus=x (Request/Response)",
+ "x/x;x=\"•\";bonus=x (Request/Response)",
+ "x/x;x=–;bonus=x (Request/Response)",
+ "x/x;x=\"–\";bonus=x (Request/Response)",
+ "x/x;x=—;bonus=x (Request/Response)",
+ "x/x;x=\"—\";bonus=x (Request/Response)",
+ "x/x;x=˜;bonus=x (Request/Response)",
+ "x/x;x=\"˜\";bonus=x (Request/Response)",
+ "x/x;x=™;bonus=x (Request/Response)",
+ "x/x;x=\"™\";bonus=x (Request/Response)",
+ "x/x;x=š;bonus=x (Request/Response)",
+ "x/x;x=\"š\";bonus=x (Request/Response)",
+ "x/x;x=›;bonus=x (Request/Response)",
+ "x/x;x=\"›\";bonus=x (Request/Response)",
+ "x/x;x=œ;bonus=x (Request/Response)",
+ "x/x;x=\"œ\";bonus=x (Request/Response)",
+ "x/x;x=;bonus=x (Request/Response)",
+ "x/x;x=\"\";bonus=x (Request/Response)",
+ "x/x;x=ž;bonus=x (Request/Response)",
+ "x/x;x=\"ž\";bonus=x (Request/Response)",
+ "x/x;x=Ÿ;bonus=x (Request/Response)",
+ "x/x;x=\"Ÿ\";bonus=x (Request/Response)",
+ "x/x;x= ;bonus=x (Request/Response)",
+ "x/x;x=\" \";bonus=x (Request/Response)",
+ "x/x;x=¡;bonus=x (Request/Response)",
+ "x/x;x=\"¡\";bonus=x (Request/Response)",
+ "x/x;x=¢;bonus=x (Request/Response)",
+ "x/x;x=\"¢\";bonus=x (Request/Response)",
+ "x/x;x=£;bonus=x (Request/Response)",
+ "x/x;x=\"£\";bonus=x (Request/Response)",
+ "x/x;x=¤;bonus=x (Request/Response)",
+ "x/x;x=\"¤\";bonus=x (Request/Response)",
+ "x/x;x=¥;bonus=x (Request/Response)",
+ "x/x;x=\"¥\";bonus=x (Request/Response)",
+ "x/x;x=¦;bonus=x (Request/Response)",
+ "x/x;x=\"¦\";bonus=x (Request/Response)",
+ "x/x;x=§;bonus=x (Request/Response)",
+ "x/x;x=\"§\";bonus=x (Request/Response)",
+ "x/x;x=¨;bonus=x (Request/Response)",
+ "x/x;x=\"¨\";bonus=x (Request/Response)",
+ "x/x;x=©;bonus=x (Request/Response)",
+ "x/x;x=\"©\";bonus=x (Request/Response)",
+ "x/x;x=ª;bonus=x (Request/Response)",
+ "x/x;x=\"ª\";bonus=x (Request/Response)",
+ "x/x;x=«;bonus=x (Request/Response)",
+ "x/x;x=\"«\";bonus=x (Request/Response)",
+ "x/x;x=¬;bonus=x (Request/Response)",
+ "x/x;x=\"¬\";bonus=x (Request/Response)",
+ "x/x;x=­;bonus=x (Request/Response)",
+ "x/x;x=\"­\";bonus=x (Request/Response)",
+ "x/x;x=®;bonus=x (Request/Response)",
+ "x/x;x=\"®\";bonus=x (Request/Response)",
+ "x/x;x=¯;bonus=x (Request/Response)",
+ "x/x;x=\"¯\";bonus=x (Request/Response)",
+ "x/x;x=°;bonus=x (Request/Response)",
+ "x/x;x=\"°\";bonus=x (Request/Response)",
+ "x/x;x=±;bonus=x (Request/Response)",
+ "x/x;x=\"±\";bonus=x (Request/Response)",
+ "x/x;x=²;bonus=x (Request/Response)",
+ "x/x;x=\"²\";bonus=x (Request/Response)",
+ "x/x;x=³;bonus=x (Request/Response)",
+ "x/x;x=\"³\";bonus=x (Request/Response)",
+ "x/x;x=´;bonus=x (Request/Response)",
+ "x/x;x=\"´\";bonus=x (Request/Response)",
+ "x/x;x=µ;bonus=x (Request/Response)",
+ "x/x;x=\"µ\";bonus=x (Request/Response)",
+ "x/x;x=¶;bonus=x (Request/Response)",
+ "x/x;x=\"¶\";bonus=x (Request/Response)",
+ "x/x;x=·;bonus=x (Request/Response)",
+ "x/x;x=\"·\";bonus=x (Request/Response)",
+ "x/x;x=¸;bonus=x (Request/Response)",
+ "x/x;x=\"¸\";bonus=x (Request/Response)",
+ "x/x;x=¹;bonus=x (Request/Response)",
+ "x/x;x=\"¹\";bonus=x (Request/Response)",
+ "x/x;x=º;bonus=x (Request/Response)",
+ "x/x;x=\"º\";bonus=x (Request/Response)",
+ "x/x;x=»;bonus=x (Request/Response)",
+ "x/x;x=\"»\";bonus=x (Request/Response)",
+ "x/x;x=¼;bonus=x (Request/Response)",
+ "x/x;x=\"¼\";bonus=x (Request/Response)",
+ "x/x;x=½;bonus=x (Request/Response)",
+ "x/x;x=\"½\";bonus=x (Request/Response)",
+ "x/x;x=¾;bonus=x (Request/Response)",
+ "x/x;x=\"¾\";bonus=x (Request/Response)",
+ "x/x;x=¿;bonus=x (Request/Response)",
+ "x/x;x=\"¿\";bonus=x (Request/Response)",
+ "x/x;x=À;bonus=x (Request/Response)",
+ "x/x;x=\"À\";bonus=x (Request/Response)",
+ "x/x;x=Á;bonus=x (Request/Response)",
+ "x/x;x=\"Á\";bonus=x (Request/Response)",
+ "x/x;x=Â;bonus=x (Request/Response)",
+ "x/x;x=\"Â\";bonus=x (Request/Response)",
+ "x/x;x=Ã;bonus=x (Request/Response)",
+ "x/x;x=\"Ã\";bonus=x (Request/Response)",
+ "x/x;x=Ä;bonus=x (Request/Response)",
+ "x/x;x=\"Ä\";bonus=x (Request/Response)",
+ "x/x;x=Å;bonus=x (Request/Response)",
+ "x/x;x=\"Å\";bonus=x (Request/Response)",
+ "x/x;x=Æ;bonus=x (Request/Response)",
+ "x/x;x=\"Æ\";bonus=x (Request/Response)",
+ "x/x;x=Ç;bonus=x (Request/Response)",
+ "x/x;x=\"Ç\";bonus=x (Request/Response)",
+ "x/x;x=È;bonus=x (Request/Response)",
+ "x/x;x=\"È\";bonus=x (Request/Response)",
+ "x/x;x=É;bonus=x (Request/Response)",
+ "x/x;x=\"É\";bonus=x (Request/Response)",
+ "x/x;x=Ê;bonus=x (Request/Response)",
+ "x/x;x=\"Ê\";bonus=x (Request/Response)",
+ "x/x;x=Ë;bonus=x (Request/Response)",
+ "x/x;x=\"Ë\";bonus=x (Request/Response)",
+ "x/x;x=Ì;bonus=x (Request/Response)",
+ "x/x;x=\"Ì\";bonus=x (Request/Response)",
+ "x/x;x=Í;bonus=x (Request/Response)",
+ "x/x;x=\"Í\";bonus=x (Request/Response)",
+ "x/x;x=Î;bonus=x (Request/Response)",
+ "x/x;x=\"Î\";bonus=x (Request/Response)",
+ "x/x;x=Ï;bonus=x (Request/Response)",
+ "x/x;x=\"Ï\";bonus=x (Request/Response)",
+ "x/x;x=Ð;bonus=x (Request/Response)",
+ "x/x;x=\"Ð\";bonus=x (Request/Response)",
+ "x/x;x=Ñ;bonus=x (Request/Response)",
+ "x/x;x=\"Ñ\";bonus=x (Request/Response)",
+ "x/x;x=Ò;bonus=x (Request/Response)",
+ "x/x;x=\"Ò\";bonus=x (Request/Response)",
+ "x/x;x=Ó;bonus=x (Request/Response)",
+ "x/x;x=\"Ó\";bonus=x (Request/Response)",
+ "x/x;x=Ô;bonus=x (Request/Response)",
+ "x/x;x=\"Ô\";bonus=x (Request/Response)",
+ "x/x;x=Õ;bonus=x (Request/Response)",
+ "x/x;x=\"Õ\";bonus=x (Request/Response)",
+ "x/x;x=Ö;bonus=x (Request/Response)",
+ "x/x;x=\"Ö\";bonus=x (Request/Response)",
+ "x/x;x=×;bonus=x (Request/Response)",
+ "x/x;x=\"×\";bonus=x (Request/Response)",
+ "x/x;x=Ø;bonus=x (Request/Response)",
+ "x/x;x=\"Ø\";bonus=x (Request/Response)",
+ "x/x;x=Ù;bonus=x (Request/Response)",
+ "x/x;x=\"Ù\";bonus=x (Request/Response)",
+ "x/x;x=Ú;bonus=x (Request/Response)",
+ "x/x;x=\"Ú\";bonus=x (Request/Response)",
+ "x/x;x=Û;bonus=x (Request/Response)",
+ "x/x;x=\"Û\";bonus=x (Request/Response)",
+ "x/x;x=Ü;bonus=x (Request/Response)",
+ "x/x;x=\"Ü\";bonus=x (Request/Response)",
+ "x/x;x=Ý;bonus=x (Request/Response)",
+ "x/x;x=\"Ý\";bonus=x (Request/Response)",
+ "x/x;x=Þ;bonus=x (Request/Response)",
+ "x/x;x=\"Þ\";bonus=x (Request/Response)",
+ "x/x;x=ß;bonus=x (Request/Response)",
+ "x/x;x=\"ß\";bonus=x (Request/Response)",
+ "x/x;x=à;bonus=x (Request/Response)",
+ "x/x;x=\"à\";bonus=x (Request/Response)",
+ "x/x;x=á;bonus=x (Request/Response)",
+ "x/x;x=\"á\";bonus=x (Request/Response)",
+ "x/x;x=â;bonus=x (Request/Response)",
+ "x/x;x=\"â\";bonus=x (Request/Response)",
+ "x/x;x=ã;bonus=x (Request/Response)",
+ "x/x;x=\"ã\";bonus=x (Request/Response)",
+ "x/x;x=ä;bonus=x (Request/Response)",
+ "x/x;x=\"ä\";bonus=x (Request/Response)",
+ "x/x;x=å;bonus=x (Request/Response)",
+ "x/x;x=\"å\";bonus=x (Request/Response)",
+ "x/x;x=æ;bonus=x (Request/Response)",
+ "x/x;x=\"æ\";bonus=x (Request/Response)",
+ "x/x;x=ç;bonus=x (Request/Response)",
+ "x/x;x=\"ç\";bonus=x (Request/Response)",
+ "x/x;x=è;bonus=x (Request/Response)",
+ "x/x;x=\"è\";bonus=x (Request/Response)",
+ "x/x;x=é;bonus=x (Request/Response)",
+ "x/x;x=\"é\";bonus=x (Request/Response)",
+ "x/x;x=ê;bonus=x (Request/Response)",
+ "x/x;x=\"ê\";bonus=x (Request/Response)",
+ "x/x;x=ë;bonus=x (Request/Response)",
+ "x/x;x=\"ë\";bonus=x (Request/Response)",
+ "x/x;x=ì;bonus=x (Request/Response)",
+ "x/x;x=\"ì\";bonus=x (Request/Response)",
+ "x/x;x=í;bonus=x (Request/Response)",
+ "x/x;x=\"í\";bonus=x (Request/Response)",
+ "x/x;x=î;bonus=x (Request/Response)",
+ "x/x;x=\"î\";bonus=x (Request/Response)",
+ "x/x;x=ï;bonus=x (Request/Response)",
+ "x/x;x=\"ï\";bonus=x (Request/Response)",
+ "x/x;x=ð;bonus=x (Request/Response)",
+ "x/x;x=\"ð\";bonus=x (Request/Response)",
+ "x/x;x=ñ;bonus=x (Request/Response)",
+ "x/x;x=\"ñ\";bonus=x (Request/Response)",
+ "x/x;x=ò;bonus=x (Request/Response)",
+ "x/x;x=\"ò\";bonus=x (Request/Response)",
+ "x/x;x=ó;bonus=x (Request/Response)",
+ "x/x;x=\"ó\";bonus=x (Request/Response)",
+ "x/x;x=ô;bonus=x (Request/Response)",
+ "x/x;x=\"ô\";bonus=x (Request/Response)",
+ "x/x;x=õ;bonus=x (Request/Response)",
+ "x/x;x=\"õ\";bonus=x (Request/Response)",
+ "x/x;x=ö;bonus=x (Request/Response)",
+ "x/x;x=\"ö\";bonus=x (Request/Response)",
+ "x/x;x=÷;bonus=x (Request/Response)",
+ "x/x;x=\"÷\";bonus=x (Request/Response)",
+ "x/x;x=ø;bonus=x (Request/Response)",
+ "x/x;x=\"ø\";bonus=x (Request/Response)",
+ "x/x;x=ù;bonus=x (Request/Response)",
+ "x/x;x=\"ù\";bonus=x (Request/Response)",
+ "x/x;x=ú;bonus=x (Request/Response)",
+ "x/x;x=\"ú\";bonus=x (Request/Response)",
+ "x/x;x=û;bonus=x (Request/Response)",
+ "x/x;x=\"û\";bonus=x (Request/Response)",
+ "x/x;x=ü;bonus=x (Request/Response)",
+ "x/x;x=\"ü\";bonus=x (Request/Response)",
+ "x/x;x=ý;bonus=x (Request/Response)",
+ "x/x;x=\"ý\";bonus=x (Request/Response)",
+ "x/x;x=þ;bonus=x (Request/Response)",
+ "x/x;x=\"þ\";bonus=x (Request/Response)",
+ "x/x;x=ÿ;bonus=x (Request/Response)",
+ "x/x;x=\"ÿ\";bonus=x (Request/Response)"
+ ],
+ "charset-parameter.window.html": [
+ "text/html;charset=gbk",
+ "TEXT/HTML;CHARSET=GBK",
+ "text/html;charset=gbk(",
+ "text/html;x=(;charset=gbk",
+ "text/html;charset=gbk;charset=windows-1255",
+ "text/html;charset=();charset=GBK",
+ "text/html;charset =gbk",
+ "text/html ;charset=gbk",
+ "text/html; charset=gbk",
+ "text/html;charset= gbk",
+ "text/html;charset= \"gbk\"",
+ "text/html;charset=\u000bgbk",
+ "text/html;charset=\fgbk",
+ "text/html;\u000bcharset=gbk",
+ "text/html;\fcharset=gbk",
+ "text/html;charset='gbk'",
+ "text/html;charset='gbk",
+ "text/html;charset=gbk'",
+ "text/html;charset=';charset=GBK",
+ "text/html;test;charset=gbk",
+ "text/html;test=;charset=gbk",
+ "text/html;';charset=gbk",
+ "text/html;\";charset=gbk",
+ "text/html ; ; charset=gbk",
+ "text/html;;;;charset=gbk",
+ "text/html;charset= \";charset=GBK",
+ "text/html;charset=\";charset=foo\";charset=GBK",
+ "text/html;charset=\"gbk\"",
+ "text/html;charset=\"gbk",
+ "text/html;charset=gbk\"",
+ "text/html;charset=\" gbk\"",
+ "text/html;charset=\"gbk \"",
+ "text/html;charset=\"\\ gbk\"",
+ "text/html;charset=\"\\g\\b\\k\"",
+ "text/html;charset=\"gbk\"x",
+ "text/html;charset=\"\";charset=GBK",
+ "text/html;charset=\";charset=GBK",
+ "text/html;charset={gbk}",
+ "text/html;0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789=x;charset=gbk",
+ "text/html;test=ÿ;charset=gbk"
+ ]
+ },
+ "media": {
+ "media-sniff.window.html": false
+ }
+ },
+ "eventsource": {
+ "dedicated-worker": {
+ "eventsource-eventtarget.worker.html": true,
+ "eventsource-constructor-no-new.any.html": true,
+ "eventsource-constructor-no-new.any.worker.html": true
+ },
+ "event-data.any.html": true,
+ "event-data.any.worker.html": true,
+ "eventsource-constructor-empty-url.any.html": true,
+ "eventsource-constructor-empty-url.any.worker.html": true,
+ "eventsource-constructor-url-bogus.any.html": true,
+ "eventsource-constructor-url-bogus.any.worker.html": true,
+ "eventsource-eventtarget.any.html": true,
+ "eventsource-eventtarget.any.worker.html": true,
+ "eventsource-onmessage-trusted.any.html": true,
+ "eventsource-onmessage-trusted.any.worker.html": true,
+ "eventsource-onmessage.any.html": true,
+ "eventsource-onmessage.any.worker.html": true,
+ "eventsource-onopen.any.html": true,
+ "eventsource-onopen.any.worker.html": true,
+ "eventsource-prototype.any.html": true,
+ "eventsource-prototype.any.worker.html": true,
+ "eventsource-request-cancellation.window.any.html": false,
+ "eventsource-request-cancellation.window.any.worker.html": false,
+ "eventsource-url.any.html": true,
+ "eventsource-url.any.worker.html": true,
+ "format-bom-2.any.html": true,
+ "format-bom-2.any.worker.html": true,
+ "format-bom.any.html": true,
+ "format-bom.any.worker.html": true,
+ "format-comments.any.html": true,
+ "format-comments.any.worker.html": true,
+ "format-data-before-final-empty-line.any.html": true,
+ "format-data-before-final-empty-line.any.worker.html": true,
+ "format-field-data.any.html": true,
+ "format-field-data.any.worker.html": true,
+ "format-field-event-empty.any.html": true,
+ "format-field-event-empty.any.worker.html": true,
+ "format-field-event.any.html": true,
+ "format-field-event.any.worker.html": true,
+ "format-field-id-2.any.html": true,
+ "format-field-id-2.any.worker.html": true,
+ "format-field-id-3.window.html": true,
+ "format-field-id-null.window.html": true,
+ "format-field-id.any.html": true,
+ "format-field-id.any.worker.html": true,
+ "format-field-parsing.any.html": true,
+ "format-field-parsing.any.worker.html": true,
+ "format-field-retry-bogus.any.html": true,
+ "format-field-retry-bogus.any.worker.html": true,
+ "format-field-retry-empty.any.html": true,
+ "format-field-retry-empty.any.worker.html": true,
+ "format-field-retry.any.html": true,
+ "format-field-retry.any.worker.html": true,
+ "format-field-unknown.any.html": true,
+ "format-field-unknown.any.worker.html": true,
+ "format-leading-space.any.html": true,
+ "format-leading-space.any.worker.html": true,
+ "format-mime-bogus.any.html": true,
+ "format-mime-bogus.any.worker.html": true,
+ "format-mime-trailing-semicolon.any.html": true,
+ "format-mime-trailing-semicolon.any.worker.html": true,
+ "format-mime-valid-bogus.any.html": true,
+ "format-mime-valid-bogus.any.worker.html": true,
+ "format-newlines.any.html": true,
+ "format-newlines.any.worker.html": true,
+ "format-null-character.any.html": true,
+ "format-null-character.any.worker.html": true,
+ "format-utf-8.any.html": true,
+ "format-utf-8.any.worker.html": true,
+ "request-accept.any.html": true,
+ "request-accept.any.worker.html": true,
+ "request-cache-control.any.html": false,
+ "request-cache-control.any.worker.html": false,
+ "eventsource-close.window.html": false,
+ "eventsource-constructor-document-domain.window.html": false,
+ "eventsource-constructor-non-same-origin.window.html": false,
+ "eventsource-constructor-stringify.window.html": false,
+ "eventsource-cross-origin.window.html": false,
+ "eventsource-reconnect.window.html": false,
+ "request-status-error.window.html": false
+ }
+}
diff --git a/tests/wpt/runner/runner.ts b/tests/wpt/runner/runner.ts
new file mode 100644
index 000000000..c7234da63
--- /dev/null
+++ b/tests/wpt/runner/runner.ts
@@ -0,0 +1,241 @@
+// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
+import {
+ delay,
+ join,
+ ROOT_PATH,
+ TextLineStream,
+ toFileUrl,
+} from "../../../tools/util.js";
+import { assert, denoBinary, ManifestTestOptions, runPy } from "./utils.ts";
+import { DOMParser } from "https://deno.land/x/deno_dom@v0.1.3-alpha2/deno-dom-wasm.ts";
+
+export async function runWithTestUtil<T>(
+ verbose: boolean,
+ f: () => Promise<T>,
+): Promise<T> {
+ const proc = runPy([
+ "wpt",
+ "serve",
+ "--config",
+ "../../../tests/wpt/runner/config.json",
+ ], {
+ stdout: verbose ? "inherit" : "piped",
+ stderr: verbose ? "inherit" : "piped",
+ });
+
+ const start = performance.now();
+ while (true) {
+ await delay(1000);
+ try {
+ const req = await fetch("http://localhost:8000/");
+ await req.body?.cancel();
+ if (req.status == 200) {
+ break;
+ }
+ } catch (_err) {
+ // do nothing if this fails
+ }
+ const passedTime = performance.now() - start;
+ if (passedTime > 15000) {
+ try {
+ proc.kill("SIGINT");
+ } catch {
+ // Might have already died
+ }
+ await proc.status;
+ throw new Error("Timed out while trying to start wpt test util.");
+ }
+ }
+
+ if (verbose) console.log(`Started wpt test util.`);
+
+ try {
+ return await f();
+ } finally {
+ if (verbose) console.log("Killing wpt test util.");
+ try {
+ proc.kill("SIGINT");
+ } catch {
+ // Might have already died
+ }
+ await proc.status;
+ }
+}
+
+export interface TestResult {
+ cases: TestCaseResult[];
+ harnessStatus: TestHarnessStatus | null;
+ duration: number;
+ status: number;
+ stderr: string;
+}
+
+export interface TestHarnessStatus {
+ status: number;
+ message: string | null;
+ stack: string | null;
+}
+
+export interface TestCaseResult {
+ name: string;
+ passed: boolean;
+ status: number;
+ message: string | null;
+ stack: string | null;
+}
+
+export async function runSingleTest(
+ url: URL,
+ _options: ManifestTestOptions,
+ reporter: (result: TestCaseResult) => void,
+ inspectBrk: boolean,
+ timeouts: { long: number; default: number },
+): Promise<TestResult> {
+ const timeout = _options.timeout === "long"
+ ? timeouts.long
+ : timeouts.default;
+ const filename = url.pathname.substring(
+ url.pathname.lastIndexOf("/") + 1,
+ url.pathname.indexOf("."),
+ );
+ const { title } = Object.fromEntries(_options.script_metadata || []);
+ const bundle = await generateBundle(url);
+ const tempFile = await Deno.makeTempFile({
+ prefix: "wpt-bundle-",
+ suffix: ".js",
+ });
+
+ let interval;
+ try {
+ await Deno.writeTextFile(tempFile, bundle);
+
+ const startTime = new Date().getTime();
+
+ const args = [
+ "run",
+ "-A",
+ "--unstable-broadcast-channel",
+ "--unstable-webgpu",
+ "--unstable-net",
+ "--v8-flags=--expose-gc",
+ ];
+
+ if (inspectBrk) {
+ args.push("--inspect-brk");
+ }
+
+ args.push(
+ "--enable-testing-features-do-not-use",
+ "--location",
+ url.toString(),
+ "--cert",
+ join(ROOT_PATH, `./tests/wpt/runner/certs/cacert.pem`),
+ tempFile,
+ "[]",
+ );
+
+ const start = performance.now();
+ const proc = new Deno.Command(denoBinary(), {
+ args,
+ env: {
+ NO_COLOR: "1",
+ },
+ stdout: "null",
+ stderr: "piped",
+ }).spawn();
+
+ const cases = [];
+ let stderr = "";
+
+ let harnessStatus = null;
+
+ const lines = proc.stderr.pipeThrough(new TextDecoderStream()).pipeThrough(
+ new TextLineStream(),
+ );
+ interval = setInterval(() => {
+ const passedTime = performance.now() - start;
+ if (passedTime > timeout) {
+ proc.kill("SIGINT");
+ }
+ }, 1000);
+ for await (const line of lines) {
+ if (line.startsWith("{")) {
+ const data = JSON.parse(line);
+ const result = { ...data, passed: data.status == 0 };
+ if (/^Untitled( \d+)?$/.test(result.name)) {
+ result.name = `${title || filename}${result.name.slice(8)}`;
+ }
+ cases.push(result);
+ reporter(result);
+ } else if (line.startsWith("#$#$#{")) {
+ harnessStatus = JSON.parse(line.slice(5));
+ } else {
+ stderr += line + "\n";
+ }
+ }
+
+ const duration = new Date().getTime() - startTime;
+
+ const { code } = await proc.status;
+ return {
+ status: code,
+ harnessStatus,
+ duration,
+ cases,
+ stderr,
+ };
+ } finally {
+ clearInterval(interval);
+ await Deno.remove(tempFile);
+ }
+}
+
+async function generateBundle(location: URL): Promise<string> {
+ const res = await fetch(location);
+ const body = await res.text();
+ const doc = new DOMParser().parseFromString(body, "text/html");
+ assert(doc, "document should have been parsed");
+ const scripts = doc.getElementsByTagName("script");
+ const title = doc.getElementsByTagName("title")[0]?.childNodes[0].nodeValue;
+ const scriptContents = [];
+ let inlineScriptCount = 0;
+ if (title) {
+ const url = new URL(`#${inlineScriptCount}`, location);
+ inlineScriptCount++;
+ scriptContents.push([
+ url.href,
+ `globalThis.META_TITLE=${JSON.stringify(title)}`,
+ ]);
+ }
+ for (const script of scripts) {
+ const src = script.getAttribute("src");
+ if (src === "/resources/testharnessreport.js") {
+ const url = toFileUrl(
+ join(ROOT_PATH, "./tests/wpt/runner/testharnessreport.js"),
+ );
+ const contents = await Deno.readTextFile(url);
+ scriptContents.push([url.href, contents]);
+ } else if (src) {
+ const url = new URL(src, location);
+ const res = await fetch(url);
+ if (res.ok) {
+ const contents = await res.text();
+ scriptContents.push([url.href, contents]);
+ }
+ } else {
+ const url = new URL(`#${inlineScriptCount}`, location);
+ inlineScriptCount++;
+ scriptContents.push([url.href, script.textContent]);
+ }
+ }
+
+ return scriptContents.map(([url, contents]) => `
+(function() {
+ const [_,err] = Deno[Deno.internal].core.evalContext(${
+ JSON.stringify(contents)
+ }, ${JSON.stringify(url)});
+ if (err !== null) {
+ throw err?.thrown;
+ }
+})();`).join("\n");
+}
diff --git a/tests/wpt/runner/testharnessreport.js b/tests/wpt/runner/testharnessreport.js
new file mode 100644
index 000000000..7cc6a9e2d
--- /dev/null
+++ b/tests/wpt/runner/testharnessreport.js
@@ -0,0 +1,29 @@
+// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
+
+window.add_result_callback(({ message, name, stack, status }) => {
+ const data = new TextEncoder().encode(
+ `${JSON.stringify({ name, status, message, stack })}\n`,
+ );
+ let bytesWritten = 0;
+ while (bytesWritten < data.byteLength) {
+ bytesWritten += Deno.stderr.writeSync(data.subarray(bytesWritten));
+ }
+});
+
+window.add_completion_callback((_tests, harnessStatus) => {
+ const data = new TextEncoder().encode(
+ `#$#$#${JSON.stringify(harnessStatus)}\n`,
+ );
+ let bytesWritten = 0;
+ while (bytesWritten < data.byteLength) {
+ bytesWritten += Deno.stderr.writeSync(data.subarray(bytesWritten));
+ }
+
+ // TODO(cjihrig): Restore the prototype of globalThis to be an EventTarget
+ // again. There are WPTs that change the prototype, which causes brand
+ // checking to fail. Once the globalThis prototype is frozen properly, this
+ // line can be removed.
+ Object.setPrototypeOf(globalThis, EventTarget.prototype);
+
+ Deno.exit(harnessStatus.status === 0 ? 0 : 1);
+});
diff --git a/tests/wpt/runner/utils.ts b/tests/wpt/runner/utils.ts
new file mode 100644
index 000000000..5e3399fa7
--- /dev/null
+++ b/tests/wpt/runner/utils.ts
@@ -0,0 +1,214 @@
+// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
+/// FLAGS
+
+import { parse } from "../../util/std/flags/mod.ts";
+import { join, resolve, ROOT_PATH } from "../../../tools/util.js";
+
+export const {
+ json,
+ wptreport,
+ quiet,
+ release,
+ rebuild,
+ ["--"]: rest,
+ ["auto-config"]: autoConfig,
+ ["inspect-brk"]: inspectBrk,
+ ["no-ignore"]: noIgnore,
+ binary,
+} = parse(Deno.args, {
+ "--": true,
+ boolean: ["quiet", "release", "no-interactive", "inspect-brk", "no-ignore"],
+ string: ["json", "wptreport", "binary"],
+});
+
+export function denoBinary() {
+ if (binary) {
+ return resolve(binary);
+ }
+ return join(ROOT_PATH, `./target/${release ? "release" : "debug"}/deno`);
+}
+
+/// WPT TEST MANIFEST
+
+export interface Manifest {
+ items: {
+ testharness: ManifestFolder;
+ };
+}
+export interface ManifestFolder {
+ [key: string]: ManifestFolder | ManifestTest;
+}
+export type ManifestTest = [
+ hash: string,
+ ...variations: ManifestTestVariation[],
+];
+export type ManifestTestVariation = [
+ path: string,
+ options: ManifestTestOptions,
+];
+export interface ManifestTestOptions {
+ // deno-lint-ignore camelcase
+ script_metadata: [string, string][];
+}
+
+const MANIFEST_PATH = join(ROOT_PATH, "./tests/wpt/runner/manifest.json");
+
+export async function updateManifest() {
+ const status = await runPy(
+ [
+ "wpt",
+ "manifest",
+ "--tests-root",
+ ".",
+ "-p",
+ MANIFEST_PATH,
+ ...(rebuild ? ["--rebuild"] : []),
+ ],
+ {},
+ ).status;
+ assert(status.success, "updating wpt manifest should succeed");
+}
+
+export function getManifest(): Manifest {
+ const manifestText = Deno.readTextFileSync(MANIFEST_PATH);
+ return JSON.parse(manifestText);
+}
+
+/// WPT TEST EXPECTATIONS
+
+const EXPECTATION_PATH = join(ROOT_PATH, "./tests/wpt/runner/expectation.json");
+
+export interface Expectation {
+ [key: string]: Expectation | boolean | string[];
+}
+
+export function getExpectation(): Expectation {
+ const expectationText = Deno.readTextFileSync(EXPECTATION_PATH);
+ return JSON.parse(expectationText);
+}
+
+export function saveExpectation(expectation: Expectation) {
+ Deno.writeTextFileSync(
+ EXPECTATION_PATH,
+ JSON.stringify(expectation, undefined, " "),
+ );
+}
+
+export function getExpectFailForCase(
+ expectation: boolean | string[],
+ caseName: string,
+): boolean {
+ if (noIgnore) return false;
+ if (typeof expectation == "boolean") {
+ return !expectation;
+ }
+ return expectation.includes(caseName);
+}
+
+/// UTILS
+
+class AssertionError extends Error {
+ name = "AssertionError";
+ constructor(message: string) {
+ super(message);
+ }
+}
+
+export function assert(condition: unknown, message: string): asserts condition {
+ if (!condition) {
+ throw new AssertionError(message);
+ }
+}
+
+export function runPy<T extends Omit<Deno.CommandOptions, "cwd">>(
+ args: string[],
+ options: T,
+): Deno.ChildProcess {
+ const cmd = Deno.build.os == "windows" ? "python.exe" : "python3";
+ return new Deno.Command(cmd, {
+ args,
+ stdout: "inherit",
+ stderr: "inherit",
+ ...options,
+ cwd: join(ROOT_PATH, "./tests/wpt/suite/"),
+ }).spawn();
+}
+
+export async function checkPy3Available() {
+ const { success, stdout } = await runPy(["--version"], {
+ stdout: "piped",
+ }).output();
+ assert(success, "failed to run python --version");
+ const output = new TextDecoder().decode(stdout);
+ assert(
+ output.includes("Python 3."),
+ `The ${
+ Deno.build.os == "windows" ? "python.exe" : "python3"
+ } in your path is not Python 3.`,
+ );
+}
+
+export async function cargoBuild() {
+ if (binary) return;
+ const { success } = await new Deno.Command("cargo", {
+ args: ["build", ...(release ? ["--release"] : [])],
+ cwd: ROOT_PATH,
+ stdout: "inherit",
+ stderr: "inherit",
+ }).output();
+ assert(success, "cargo build failed");
+}
+
+export function escapeLoneSurrogates(input: string): string;
+export function escapeLoneSurrogates(input: string | null): string | null;
+export function escapeLoneSurrogates(input: string | null): string | null {
+ if (input === null) return null;
+ return input.replace(
+ /[\uD800-\uDFFF]/gu,
+ (match) => `U+${match.charCodeAt(0).toString(16)}`,
+ );
+}
+
+/// WPTREPORT
+
+export async function generateRunInfo(): Promise<unknown> {
+ const oses = {
+ "windows": "win",
+ "darwin": "mac",
+ "linux": "linux",
+ "freebsd": "freebsd",
+ "openbsd": "openbsd",
+ };
+ const proc = await new Deno.Command("git", {
+ args: ["rev-parse", "HEAD"],
+ cwd: join(ROOT_PATH, "tests", "wpt", "suite"),
+ stderr: "inherit",
+ }).output();
+ const revision = (new TextDecoder().decode(proc.stdout)).trim();
+ const proc2 = await new Deno.Command(denoBinary(), {
+ args: ["eval", "console.log(JSON.stringify(Deno.version))"],
+ cwd: join(ROOT_PATH, "tests", "wpt", "suite"),
+ }).output();
+ const version = JSON.parse(new TextDecoder().decode(proc2.stdout));
+ const runInfo = {
+ "os": oses[Deno.build.os],
+ "processor": Deno.build.arch,
+ "version": "unknown",
+ "os_version": "unknown",
+ "bits": 64,
+ "has_sandbox": true,
+ "webrender": false,
+ "automation": false,
+ "linux_distro": "unknown",
+ "revision": revision,
+ "python_version": 3,
+ "product": "deno",
+ "debug": false,
+ "browser_version": version.deno,
+ "browser_channel": version.deno.includes("+") ? "canary" : "stable",
+ "verify": false,
+ "wasm": false,
+ "headless": true,
+ };
+ return runInfo;
+}
diff --git a/tests/wpt/wpt.ts b/tests/wpt/wpt.ts
new file mode 100755
index 000000000..351ee518c
--- /dev/null
+++ b/tests/wpt/wpt.ts
@@ -0,0 +1,816 @@
+#!/usr/bin/env -S deno run --unstable --allow-write --allow-read --allow-net --allow-env --allow-run
+// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
+
+// This script is used to run WPT tests for Deno.
+
+import {
+ runSingleTest,
+ runWithTestUtil,
+ TestCaseResult,
+ TestResult,
+} from "./runner/runner.ts";
+import {
+ assert,
+ autoConfig,
+ cargoBuild,
+ checkPy3Available,
+ escapeLoneSurrogates,
+ Expectation,
+ generateRunInfo,
+ getExpectation,
+ getExpectFailForCase,
+ getManifest,
+ inspectBrk,
+ json,
+ ManifestFolder,
+ ManifestTestOptions,
+ ManifestTestVariation,
+ noIgnore,
+ quiet,
+ rest,
+ runPy,
+ updateManifest,
+ wptreport,
+} from "./runner/utils.ts";
+import { pooledMap } from "../util/std/async/pool.ts";
+import { blue, bold, green, red, yellow } from "../util/std/fmt/colors.ts";
+import { writeAll, writeAllSync } from "../util/std/streams/write_all.ts";
+import { saveExpectation } from "./runner/utils.ts";
+
+class TestFilter {
+ filter?: string[];
+ constructor(filter?: string[]) {
+ this.filter = filter;
+ }
+
+ matches(path: string): boolean {
+ if (this.filter === undefined || this.filter.length == 0) {
+ return true;
+ }
+ for (const filter of this.filter) {
+ if (filter.startsWith("/")) {
+ if (path.startsWith(filter)) {
+ return true;
+ }
+ } else {
+ if (path.substring(1).startsWith(filter)) {
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+}
+
+const command = Deno.args[0];
+
+switch (command) {
+ case "setup":
+ await checkPy3Available();
+ await updateManifest();
+ await setup();
+ break;
+
+ case "run":
+ await cargoBuild();
+ await run();
+ break;
+
+ case "update":
+ await cargoBuild();
+ await update();
+ break;
+
+ default:
+ console.log(`Possible commands:
+
+ setup
+ Validate that your environment is configured correctly, or help you configure it.
+
+ run
+ Run all tests like specified in \`expectation.json\`.
+
+ update
+ Update the \`expectation.json\` to match the current reality.
+
+More details at https://deno.land/manual@main/contributing/web_platform_tests
+
+ `);
+ break;
+}
+
+async function setup() {
+ const hostsPath = Deno.build.os == "windows"
+ ? `${Deno.env.get("SystemRoot")}\\System32\\drivers\\etc\\hosts`
+ : "/etc/hosts";
+ // TODO(lucacsonato): use this when 1.7.1 is released.
+ // const records = await Deno.resolveDns("web-platform.test", "A");
+ // const etcHostsConfigured = records[0] == "127.0.0.1";
+ const hostsFile = await Deno.readTextFile(hostsPath);
+ const etcHostsConfigured = hostsFile.includes("web-platform.test");
+
+ if (etcHostsConfigured) {
+ console.log(hostsPath + " is already configured.");
+ } else {
+ const autoConfigure = autoConfig ||
+ confirm(
+ `The WPT require certain entries to be present in your ${hostsPath} file. Should these be configured automatically?`,
+ );
+ if (autoConfigure) {
+ const { success, stdout } = await runPy(["wpt", "make-hosts-file"], {
+ stdout: "piped",
+ }).output();
+ assert(success, "wpt make-hosts-file should not fail");
+ const entries = new TextDecoder().decode(stdout);
+ const file = await Deno.open(hostsPath, { append: true }).catch((err) => {
+ if (err instanceof Deno.errors.PermissionDenied) {
+ throw new Error(
+ `Failed to open ${hostsPath} (permission error). Please run this command again with sudo, or configure the entries manually.`,
+ );
+ } else {
+ throw err;
+ }
+ });
+ await writeAll(
+ file,
+ new TextEncoder().encode(
+ "\n\n# Configured for Web Platform Tests (Deno)\n" + entries,
+ ),
+ );
+ console.log(`Updated ${hostsPath}`);
+ } else {
+ console.log(`Please configure the ${hostsPath} entries manually.`);
+ if (Deno.build.os == "windows") {
+ console.log("To do this run the following command in PowerShell:");
+ console.log("");
+ console.log(" cd tests/wpt/suite/");
+ console.log(
+ " python.exe wpt make-hosts-file | Out-File $env:SystemRoot\\System32\\drivers\\etc\\hosts -Encoding ascii -Append",
+ );
+ console.log("");
+ } else {
+ console.log("To do this run the following command in your shell:");
+ console.log("");
+ console.log(" cd tests/wpt/suite/");
+ console.log(
+ " python3 ./wpt make-hosts-file | sudo tee -a /etc/hosts",
+ );
+ console.log("");
+ }
+ }
+ }
+
+ console.log(green("Setup complete!"));
+}
+
+interface TestToRun {
+ path: string;
+ url: URL;
+ options: ManifestTestOptions;
+ expectation: boolean | string[];
+}
+
+function getTestTimeout(test: TestToRun) {
+ if (Deno.env.get("CI")) {
+ // Don't give expected failures the full time
+ if (test.expectation === false) {
+ return { long: 60_000, default: 10_000 };
+ }
+ return { long: 4 * 60_000, default: 4 * 60_000 };
+ }
+
+ return { long: 60_000, default: 10_000 };
+}
+
+async function run() {
+ const startTime = new Date().getTime();
+ assert(Array.isArray(rest), "filter must be array");
+ const expectation = getExpectation();
+ const filter = new TestFilter(rest);
+ const tests = discoverTestsToRun(
+ filter,
+ expectation,
+ );
+ assertAllExpectationsHaveTests(expectation, tests, filter);
+ const cores = navigator.hardwareConcurrency;
+ console.log(`Going to run ${tests.length} test files on ${cores} cores.`);
+
+ const results = await runWithTestUtil(false, async () => {
+ const results: { test: TestToRun; result: TestResult }[] = [];
+ const inParallel = !(cores === 1 || tests.length === 1);
+ // ideally we would parallelize all tests, but we ran into some flakiness
+ // on the CI, so here we're partitioning based on the start of the test path
+ const partitionedTests = partitionTests(tests);
+
+ const iter = pooledMap(cores, partitionedTests, async (tests) => {
+ for (const test of tests) {
+ if (!inParallel) {
+ console.log(`${blue("-".repeat(40))}\n${bold(test.path)}\n`);
+ }
+ const result = await runSingleTest(
+ test.url,
+ test.options,
+ inParallel ? () => {} : createReportTestCase(test.expectation),
+ inspectBrk,
+ getTestTimeout(test),
+ );
+ results.push({ test, result });
+ if (inParallel) {
+ console.log(`${blue("-".repeat(40))}\n${bold(test.path)}\n`);
+ }
+ reportVariation(result, test.expectation);
+ }
+ });
+
+ for await (const _ of iter) {
+ // ignore
+ }
+
+ return results;
+ });
+ const endTime = new Date().getTime();
+
+ if (json) {
+ const minifiedResults = [];
+ for (const result of results) {
+ const minified = {
+ file: result.test.path,
+ name:
+ Object.fromEntries(result.test.options.script_metadata ?? []).title ??
+ null,
+ cases: result.result.cases.map((case_) => ({
+ name: case_.name,
+ passed: case_.passed,
+ })),
+ };
+ minifiedResults.push(minified);
+ }
+ await Deno.writeTextFile(json, JSON.stringify(minifiedResults));
+ }
+
+ if (wptreport) {
+ const report = await generateWptReport(results, startTime, endTime);
+ await Deno.writeTextFile(wptreport, JSON.stringify(report));
+ }
+
+ const code = reportFinal(results, endTime - startTime);
+ Deno.exit(code);
+}
+
+async function generateWptReport(
+ results: { test: TestToRun; result: TestResult }[],
+ startTime: number,
+ endTime: number,
+) {
+ const runInfo = await generateRunInfo();
+ const reportResults = [];
+ for (const { test, result } of results) {
+ const status = result.status !== 0
+ ? "CRASH"
+ : result.harnessStatus?.status === 0
+ ? "OK"
+ : "ERROR";
+ let message;
+ if (result.harnessStatus === null && result.status === 0) {
+ // If the only error is the event loop running out of tasks, using stderr
+ // as the message won't help.
+ message = "Event loop run out of tasks.";
+ } else {
+ message = result.harnessStatus?.message ?? (result.stderr.trim() || null);
+ }
+ const reportResult = {
+ test: test.url.pathname + test.url.search + test.url.hash,
+ subtests: result.cases.map((case_) => {
+ let expected = undefined;
+ if (!case_.passed) {
+ if (typeof test.expectation === "boolean") {
+ expected = test.expectation ? "PASS" : "FAIL";
+ } else if (Array.isArray(test.expectation)) {
+ expected = test.expectation.includes(case_.name) ? "FAIL" : "PASS";
+ } else {
+ expected = "PASS";
+ }
+ }
+
+ return {
+ name: escapeLoneSurrogates(case_.name),
+ status: case_.passed ? "PASS" : "FAIL",
+ message: escapeLoneSurrogates(case_.message),
+ expected,
+ known_intermittent: [],
+ };
+ }),
+ status,
+ message: escapeLoneSurrogates(message),
+ duration: result.duration,
+ expected: status === "OK" ? undefined : "OK",
+ "known_intermittent": [],
+ };
+ reportResults.push(reportResult);
+ }
+ return {
+ "run_info": runInfo,
+ "time_start": startTime,
+ "time_end": endTime,
+ "results": reportResults,
+ };
+}
+
+// Check that all expectations in the expectations file have a test that will be
+// run.
+function assertAllExpectationsHaveTests(
+ expectation: Expectation,
+ testsToRun: TestToRun[],
+ filter: TestFilter,
+): void {
+ const tests = new Set(testsToRun.map((t) => t.path));
+ const missingTests: string[] = [];
+ function walk(parentExpectation: Expectation, parent: string) {
+ for (const [key, expectation] of Object.entries(parentExpectation)) {
+ const path = `${parent}/${key}`;
+ if (!filter.matches(path)) continue;
+ if (
+ (typeof expectation == "boolean" || Array.isArray(expectation)) &&
+ key !== "ignore"
+ ) {
+ if (!tests.has(path)) {
+ missingTests.push(path);
+ }
+ } else {
+ walk(expectation, path);
+ }
+ }
+ }
+
+ walk(expectation, "");
+
+ if (missingTests.length > 0) {
+ console.log(
+ red(
+ "Following tests are missing in manifest, but are present in expectations:",
+ ),
+ );
+ console.log("");
+ console.log(missingTests.join("\n"));
+ Deno.exit(1);
+ }
+}
+
+async function update() {
+ assert(Array.isArray(rest), "filter must be array");
+ const startTime = new Date().getTime();
+ const filter = new TestFilter(rest);
+ const tests = discoverTestsToRun(filter, true);
+ console.log(`Going to run ${tests.length} test files.`);
+
+ const results = await runWithTestUtil(false, async () => {
+ const results = [];
+
+ for (const test of tests) {
+ console.log(`${blue("-".repeat(40))}\n${bold(test.path)}\n`);
+ const result = await runSingleTest(
+ test.url,
+ test.options,
+ json ? () => {} : createReportTestCase(test.expectation),
+ inspectBrk,
+ { long: 60_000, default: 10_000 },
+ );
+ results.push({ test, result });
+ reportVariation(result, test.expectation);
+ }
+
+ return results;
+ });
+ const endTime = new Date().getTime();
+
+ if (json) {
+ await Deno.writeTextFile(json, JSON.stringify(results));
+ }
+
+ const resultTests: Record<
+ string,
+ { passed: string[]; failed: string[]; testSucceeded: boolean }
+ > = {};
+ for (const { test, result } of results) {
+ if (!resultTests[test.path]) {
+ resultTests[test.path] = {
+ passed: [],
+ failed: [],
+ testSucceeded: result.status === 0 && result.harnessStatus !== null,
+ };
+ }
+ for (const case_ of result.cases) {
+ if (case_.passed) {
+ resultTests[test.path].passed.push(case_.name);
+ } else {
+ resultTests[test.path].failed.push(case_.name);
+ }
+ }
+ }
+
+ const currentExpectation = getExpectation();
+
+ for (const [path, result] of Object.entries(resultTests)) {
+ const { passed, failed, testSucceeded } = result;
+ let finalExpectation: boolean | string[];
+ if (failed.length == 0 && testSucceeded) {
+ finalExpectation = true;
+ } else if (failed.length > 0 && passed.length > 0 && testSucceeded) {
+ finalExpectation = failed;
+ } else {
+ finalExpectation = false;
+ }
+
+ insertExpectation(
+ path.slice(1).split("/"),
+ currentExpectation,
+ finalExpectation,
+ );
+ }
+
+ saveExpectation(currentExpectation);
+
+ reportFinal(results, endTime - startTime);
+
+ console.log(blue("Updated expectation.json to match reality."));
+
+ Deno.exit(0);
+}
+
+function insertExpectation(
+ segments: string[],
+ currentExpectation: Expectation,
+ finalExpectation: boolean | string[],
+) {
+ const segment = segments.shift();
+ assert(segment, "segments array must never be empty");
+ if (segments.length > 0) {
+ if (
+ !currentExpectation[segment] ||
+ Array.isArray(currentExpectation[segment]) ||
+ typeof currentExpectation[segment] === "boolean"
+ ) {
+ currentExpectation[segment] = {};
+ }
+ insertExpectation(
+ segments,
+ currentExpectation[segment] as Expectation,
+ finalExpectation,
+ );
+ } else {
+ currentExpectation[segment] = finalExpectation;
+ }
+}
+
+function reportFinal(
+ results: { test: TestToRun; result: TestResult }[],
+ duration: number,
+): number {
+ const finalTotalCount = results.length;
+ let finalFailedCount = 0;
+ const finalFailed: [string, TestCaseResult][] = [];
+ let finalExpectedFailedAndFailedCount = 0;
+ const finalExpectedFailedButPassedTests: [string, TestCaseResult][] = [];
+ const finalExpectedFailedButPassedFiles: string[] = [];
+ const finalFailedFiles: string[] = [];
+ for (const { test, result } of results) {
+ const {
+ failed,
+ failedCount,
+ expectedFailedButPassed,
+ expectedFailedAndFailedCount,
+ } = analyzeTestResult(
+ result,
+ test.expectation,
+ );
+ if (result.status !== 0 || result.harnessStatus === null) {
+ if (test.expectation === false) {
+ finalExpectedFailedAndFailedCount += 1;
+ } else {
+ finalFailedCount += 1;
+ finalFailedFiles.push(test.path);
+ }
+ } else if (failedCount > 0) {
+ finalFailedCount += 1;
+ for (const case_ of failed) {
+ finalFailed.push([test.path, case_]);
+ }
+ for (const case_ of expectedFailedButPassed) {
+ finalExpectedFailedButPassedTests.push([test.path, case_]);
+ }
+ } else if (
+ test.expectation === false &&
+ expectedFailedAndFailedCount != result.cases.length
+ ) {
+ finalExpectedFailedButPassedFiles.push(test.path);
+ }
+ }
+ const finalPassedCount = finalTotalCount - finalFailedCount;
+
+ console.log(bold(blue("=".repeat(40))));
+
+ if (finalFailed.length > 0) {
+ console.log(`\nfailures:\n`);
+ }
+ for (const result of finalFailed) {
+ console.log(
+ ` ${JSON.stringify(`${result[0]} - ${result[1].name}`)}`,
+ );
+ }
+ if (finalFailedFiles.length > 0) {
+ console.log(`\nfile failures:\n`);
+ }
+ for (const result of finalFailedFiles) {
+ console.log(
+ ` ${JSON.stringify(result)}`,
+ );
+ }
+ if (finalExpectedFailedButPassedTests.length > 0) {
+ console.log(`\nexpected test failures that passed:\n`);
+ }
+ for (const result of finalExpectedFailedButPassedTests) {
+ console.log(
+ ` ${JSON.stringify(`${result[0]} - ${result[1].name}`)}`,
+ );
+ }
+ if (finalExpectedFailedButPassedFiles.length > 0) {
+ console.log(`\nexpected file failures that passed:\n`);
+ }
+ for (const result of finalExpectedFailedButPassedFiles) {
+ console.log(` ${JSON.stringify(result)}`);
+ }
+
+ const failed = (finalFailedCount > 0) ||
+ (finalExpectedFailedButPassedFiles.length > 0);
+
+ console.log(
+ `\nfinal result: ${
+ failed ? red("failed") : green("ok")
+ }. ${finalPassedCount} passed; ${finalFailedCount} failed; ${finalExpectedFailedAndFailedCount} expected failure; total ${finalTotalCount} (${duration}ms)\n`,
+ );
+
+ return failed ? 1 : 0;
+}
+
+function analyzeTestResult(
+ result: TestResult,
+ expectation: boolean | string[],
+): {
+ failed: TestCaseResult[];
+ failedCount: number;
+ passedCount: number;
+ totalCount: number;
+ expectedFailedButPassed: TestCaseResult[];
+ expectedFailedButPassedCount: number;
+ expectedFailedAndFailedCount: number;
+} {
+ const failed = result.cases.filter(
+ (t) => !getExpectFailForCase(expectation, t.name) && !t.passed,
+ );
+ const expectedFailedButPassed = result.cases.filter(
+ (t) => getExpectFailForCase(expectation, t.name) && t.passed,
+ );
+ const expectedFailedButPassedCount = expectedFailedButPassed.length;
+ const failedCount = failed.length + expectedFailedButPassedCount;
+ const expectedFailedAndFailedCount = result.cases.filter(
+ (t) => getExpectFailForCase(expectation, t.name) && !t.passed,
+ ).length;
+ const totalCount = result.cases.length;
+ const passedCount = totalCount - failedCount - expectedFailedAndFailedCount;
+
+ return {
+ failed,
+ failedCount,
+ passedCount,
+ totalCount,
+ expectedFailedButPassed,
+ expectedFailedButPassedCount,
+ expectedFailedAndFailedCount,
+ };
+}
+
+function reportVariation(result: TestResult, expectation: boolean | string[]) {
+ if (result.status !== 0 || result.harnessStatus === null) {
+ if (result.stderr) {
+ console.log(`test stderr:\n${result.stderr}\n`);
+ }
+
+ const expectFail = expectation === false;
+ const failReason = result.status !== 0
+ ? "runner failed during test"
+ : "the event loop run out of tasks during the test";
+ console.log(
+ `\nfile result: ${
+ expectFail ? yellow("failed (expected)") : red("failed")
+ }. ${failReason} (${formatDuration(result.duration)})\n`,
+ );
+ return;
+ }
+
+ const {
+ failed,
+ failedCount,
+ passedCount,
+ totalCount,
+ expectedFailedButPassed,
+ expectedFailedButPassedCount,
+ expectedFailedAndFailedCount,
+ } = analyzeTestResult(result, expectation);
+
+ if (failed.length > 0) {
+ console.log(`\nfailures:`);
+ }
+ for (const result of failed) {
+ console.log(`\n${result.name}\n${result.message}\n${result.stack}`);
+ }
+
+ if (failedCount > 0) {
+ console.log(`\nfailures:\n`);
+ }
+ for (const result of failed) {
+ console.log(` ${JSON.stringify(result.name)}`);
+ }
+ if (expectedFailedButPassedCount > 0) {
+ console.log(`\nexpected failures that passed:\n`);
+ }
+ for (const result of expectedFailedButPassed) {
+ console.log(` ${JSON.stringify(result.name)}`);
+ }
+ if (result.stderr) {
+ console.log("\ntest stderr:\n" + result.stderr);
+ }
+ console.log(
+ `\nfile result: ${
+ failedCount > 0 ? red("failed") : green("ok")
+ }. ${passedCount} passed; ${failedCount} failed; ${expectedFailedAndFailedCount} expected failure; total ${totalCount} (${
+ formatDuration(result.duration)
+ })\n`,
+ );
+}
+
+function createReportTestCase(expectation: boolean | string[]) {
+ return function reportTestCase({ name, status }: TestCaseResult) {
+ const expectFail = getExpectFailForCase(expectation, name);
+ let simpleMessage = `test ${name} ... `;
+ switch (status) {
+ case 0:
+ if (expectFail) {
+ simpleMessage += red("ok (expected fail)");
+ } else {
+ simpleMessage += green("ok");
+ if (quiet) {
+ // don't print `ok` tests if --quiet is enabled
+ return;
+ }
+ }
+ break;
+ case 1:
+ if (expectFail) {
+ simpleMessage += yellow("failed (expected)");
+ } else {
+ simpleMessage += red("failed");
+ }
+ break;
+ case 2:
+ if (expectFail) {
+ simpleMessage += yellow("failed (expected)");
+ } else {
+ simpleMessage += red("failed (timeout)");
+ }
+ break;
+ case 3:
+ if (expectFail) {
+ simpleMessage += yellow("failed (expected)");
+ } else {
+ simpleMessage += red("failed (incomplete)");
+ }
+ break;
+ }
+
+ writeAllSync(Deno.stdout, new TextEncoder().encode(simpleMessage + "\n"));
+ };
+}
+
+function discoverTestsToRun(
+ filter: TestFilter,
+ expectation: Expectation | string[] | boolean = getExpectation(),
+): TestToRun[] {
+ const manifestFolder = getManifest().items.testharness;
+
+ const testsToRun: TestToRun[] = [];
+
+ function walk(
+ parentFolder: ManifestFolder,
+ parentExpectation: Expectation | string[] | boolean,
+ prefix: string,
+ ) {
+ for (const [key, entry] of Object.entries(parentFolder)) {
+ if (Array.isArray(entry)) {
+ for (
+ const [path, options] of entry.slice(
+ 1,
+ ) as ManifestTestVariation[]
+ ) {
+ // Test keys ending with ".html" include their own html boilerplate.
+ // Test keys ending with ".js" will have the necessary boilerplate generated and
+ // the manifest path will contain the full path to the generated html test file.
+ // See: https://web-platform-tests.org/writing-tests/testharness.html
+ if (!key.endsWith(".html") && !key.endsWith(".js")) continue;
+
+ const testHtmlPath = path ?? `${prefix}/${key}`;
+ const url = new URL(testHtmlPath, "http://web-platform.test:8000");
+ if (!url.pathname.endsWith(".html")) {
+ continue;
+ }
+ // These tests require an HTTP2 compatible server.
+ if (url.pathname.includes(".h2.")) {
+ continue;
+ }
+ // Streaming fetch requests need a server that supports chunked
+ // encoding, which the WPT test server does not. Unfortunately this
+ // also disables some useful fetch tests.
+ if (url.pathname.includes("request-upload")) {
+ continue;
+ }
+ const finalPath = url.pathname + url.search;
+
+ const split = finalPath.split("/");
+ const finalKey = split[split.length - 1];
+
+ const expectation = Array.isArray(parentExpectation) ||
+ typeof parentExpectation == "boolean"
+ ? parentExpectation
+ : parentExpectation[finalKey];
+
+ if (expectation === undefined) continue;
+
+ if (typeof expectation === "object") {
+ if (typeof expectation.ignore !== "undefined") {
+ assert(
+ typeof expectation.ignore === "boolean",
+ "test entry's `ignore` key must be a boolean",
+ );
+ if (expectation.ignore === true && !noIgnore) continue;
+ }
+ }
+
+ if (!noIgnore) {
+ assert(
+ Array.isArray(expectation) || typeof expectation == "boolean",
+ "test entry must not have a folder expectation",
+ );
+ }
+
+ if (!filter.matches(finalPath)) continue;
+
+ testsToRun.push({
+ path: finalPath,
+ url,
+ options,
+ expectation,
+ });
+ }
+ } else {
+ const expectation = Array.isArray(parentExpectation) ||
+ typeof parentExpectation == "boolean"
+ ? parentExpectation
+ : parentExpectation[key];
+
+ if (expectation === undefined) continue;
+
+ walk(entry, expectation, `${prefix}/${key}`);
+ }
+ }
+ }
+ walk(manifestFolder, expectation, "");
+
+ return testsToRun;
+}
+
+function partitionTests(tests: TestToRun[]): TestToRun[][] {
+ const testsByKey: { [key: string]: TestToRun[] } = {};
+ for (const test of tests) {
+ // Run all WebCryptoAPI tests in parallel
+ if (test.path.includes("/WebCryptoAPI")) {
+ testsByKey[test.path] = [test];
+ continue;
+ }
+ // Paths looks like: /fetch/corb/img-html-correctly-labeled.sub-ref.html
+ const key = test.path.split("/")[1];
+ if (!(key in testsByKey)) {
+ testsByKey[key] = [];
+ }
+ testsByKey[key].push(test);
+ }
+ return Object.values(testsByKey);
+}
+
+function formatDuration(duration: number): string {
+ if (duration >= 5000) {
+ return red(`${duration}ms`);
+ } else if (duration >= 1000) {
+ return yellow(`${duration}ms`);
+ } else {
+ return `${duration}ms`;
+ }
+}