aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorbors-servo <servo-ops@mozilla.com>2020-12-29 06:01:49 -0500
committerGitHub <noreply@github.com>2020-12-29 06:01:49 -0500
commita10a95fba69d6d755d200b67b874bf117046dd51 (patch)
tree4860ac1ec6d3bf65f234cdbac8c17b3ad35a6eda
parent388bf93e07f40e14ed00917a08846af3fdfe8d6c (diff)
parentd36d2d0fd532b1ee09f70b72ed8938ce54ef2a97 (diff)
downloadservo-a10a95fba69d6d755d200b67b874bf117046dd51.tar.gz
servo-a10a95fba69d6d755d200b67b874bf117046dd51.zip
Auto merge of #28003 - servo-wpt-sync:wpt_update_29-12-2020, r=servo-wpt-sync
Sync WPT with upstream (29-12-2020) Automated downstream sync of changes from upstream as of 29-12-2020. [no-wpt-sync] r? @servo-wpt-sync
-rw-r--r--tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-002.html.ini4
-rw-r--r--tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-003.html.ini4
-rw-r--r--tests/wpt/metadata-layout-2020/css/cssom-view/elementFromPoint-001.html.ini4
-rw-r--r--tests/wpt/metadata-layout-2020/css/cssom-view/elementsFromPoint-invalid-cases.html.ini4
-rw-r--r--tests/wpt/metadata-layout-2020/fetch/content-type/response.window.js.ini15
-rw-r--r--tests/wpt/metadata-layout-2020/fetch/content-type/script.window.js.ini3
-rw-r--r--tests/wpt/metadata-layout-2020/html/browsers/origin/cross-origin-objects/cross-origin-objects-on-new-window.html.ini2
-rw-r--r--tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-1.html.ini2
-rw-r--r--tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-2.html.ini2
-rw-r--r--tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html.ini3
-rw-r--r--tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html.ini2
-rw-r--r--tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-2.html.ini2
-rw-r--r--tests/wpt/metadata-layout-2020/html/semantics/forms/form-submission-0/form-double-submit-3.html.ini4
-rw-r--r--tests/wpt/metadata-layout-2020/html/semantics/forms/form-submission-0/form-double-submit.html.ini4
-rw-r--r--tests/wpt/metadata-layout-2020/html/semantics/forms/textfieldselection/select-event.html.ini22
-rw-r--r--tests/wpt/metadata-layout-2020/html/semantics/scripting-1/the-script-element/css-module/import-css-module-basic.html.ini7
-rw-r--r--tests/wpt/metadata-layout-2020/html/webappapis/dynamic-markup-insertion/document-write/module-static-import-delayed.html.ini4
-rw-r--r--tests/wpt/metadata-layout-2020/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/ignore-opens-during-unload.window.js.ini2
-rw-r--r--tests/wpt/metadata-layout-2020/webaudio/the-audio-api/the-analysernode-interface/realtimeanalyser-fft-scaling.html.ini1
-rw-r--r--tests/wpt/metadata-layout-2020/webaudio/the-audio-api/the-audiobuffersourcenode-interface/sub-sample-buffer-stitching.html.ini6
-rw-r--r--tests/wpt/metadata-layout-2020/webmessaging/with-ports/018.html.ini5
-rw-r--r--tests/wpt/metadata-layout-2020/workers/WorkerGlobalScope-close.html.ini4
-rw-r--r--tests/wpt/metadata/MANIFEST.json356
-rw-r--r--tests/wpt/metadata/cookies/http-state/path-tests.html.ini40
-rw-r--r--tests/wpt/metadata/css/CSS2/floats/hit-test-floats-002.html.ini4
-rw-r--r--tests/wpt/metadata/css/CSS2/floats/hit-test-floats-003.html.ini4
-rw-r--r--tests/wpt/metadata/css/cssom-view/elementFromPoint-001.html.ini4
-rw-r--r--tests/wpt/metadata/css/cssom-view/elementsFromPoint-invalid-cases.html.ini4
-rw-r--r--tests/wpt/metadata/fetch/content-type/response.window.js.ini15
-rw-r--r--tests/wpt/metadata/fetch/content-type/script.window.js.ini3
-rw-r--r--tests/wpt/metadata/html/browsers/origin/cross-origin-objects/cross-origin-objects-on-new-window.html.ini2
-rw-r--r--tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-1.html.ini2
-rw-r--r--tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-2.html.ini2
-rw-r--r--tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html.ini3
-rw-r--r--tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html.ini2
-rw-r--r--tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-2.html.ini2
-rw-r--r--tests/wpt/metadata/html/semantics/forms/form-submission-0/form-double-submit-3.html.ini4
-rw-r--r--tests/wpt/metadata/html/semantics/forms/form-submission-0/form-double-submit.html.ini4
-rw-r--r--tests/wpt/metadata/html/semantics/forms/textfieldselection/select-event.html.ini22
-rw-r--r--tests/wpt/metadata/html/semantics/scripting-1/the-script-element/css-module/import-css-module-basic.html.ini3
-rw-r--r--tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/document-write/module-static-import-delayed.html.ini4
-rw-r--r--tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/ignore-opens-during-unload.window.js.ini2
-rw-r--r--tests/wpt/metadata/webaudio/the-audio-api/the-analysernode-interface/realtimeanalyser-fft-scaling.html.ini1
-rw-r--r--tests/wpt/metadata/webaudio/the-audio-api/the-audiobuffersourcenode-interface/sub-sample-buffer-stitching.html.ini6
-rw-r--r--tests/wpt/metadata/webmessaging/with-ports/018.html.ini5
-rw-r--r--tests/wpt/metadata/workers/WorkerGlobalScope-close.html.ini4
-rw-r--r--tests/wpt/web-platform-tests/cookies/attributes/path-redirect.html126
-rw-r--r--tests/wpt/web-platform-tests/cookies/attributes/path.html79
-rw-r--r--tests/wpt/web-platform-tests/cookies/attributes/resources/path-redirect-shared.js7
-rw-r--r--tests/wpt/web-platform-tests/cookies/attributes/resources/path.html11
-rw-r--r--tests/wpt/web-platform-tests/cookies/attributes/resources/path/one.html11
-rw-r--r--tests/wpt/web-platform-tests/cookies/attributes/resources/path/three.html11
-rw-r--r--tests/wpt/web-platform-tests/cookies/attributes/resources/path/two.html11
-rw-r--r--tests/wpt/web-platform-tests/cookies/attributes/resources/pathfakeout.html11
-rw-r--r--tests/wpt/web-platform-tests/cookies/attributes/resources/pathfakeout/one.html11
-rw-r--r--tests/wpt/web-platform-tests/cookies/http-state/path-tests.html63
-rw-r--r--tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/disabled-path0029-expected1
-rw-r--r--tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/disabled-path0029-test2
-rw-r--r--tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0001-expected1
-rw-r--r--tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0001-test2
-rw-r--r--tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0002-expected1
-rw-r--r--tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0002-test2
-rw-r--r--tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0003-expected1
-rw-r--r--tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0003-test2
-rw-r--r--tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0004-expected1
-rw-r--r--tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0004-test2
-rw-r--r--tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0005-expected0
-rw-r--r--tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0005-test1
-rw-r--r--tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0006-expected1
-rw-r--r--tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0006-test2
-rw-r--r--tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0007-expected1
-rw-r--r--tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0007-test2
-rw-r--r--tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0008-expected0
-rw-r--r--tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0008-test2
-rw-r--r--tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0009-expected0
-rw-r--r--tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0009-test2
-rw-r--r--tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0010-expected1
-rw-r--r--tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0010-test2
-rw-r--r--tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0011-expected0
-rw-r--r--tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0011-test2
-rw-r--r--tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0012-expected0
-rw-r--r--tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0012-test2
-rw-r--r--tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0013-expected0
-rw-r--r--tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0013-test2
-rw-r--r--tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0014-expected0
-rw-r--r--tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0014-test2
-rw-r--r--tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0015-expected1
-rw-r--r--tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0015-test2
-rw-r--r--tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0016-expected1
-rw-r--r--tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0016-test2
-rw-r--r--tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0017-expected1
-rw-r--r--tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0017-test2
-rw-r--r--tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0018-expected0
-rw-r--r--tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0018-test2
-rw-r--r--tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0019-expected1
-rw-r--r--tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0019-test1
-rw-r--r--tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0020-expected1
-rw-r--r--tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0020-test1
-rw-r--r--tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0021-expected1
-rw-r--r--tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0021-test1
-rw-r--r--tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0022-expected1
-rw-r--r--tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0022-test1
-rw-r--r--tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0023-expected0
-rw-r--r--tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0023-test1
-rw-r--r--tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0024-expected0
-rw-r--r--tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0024-test2
-rw-r--r--tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0025-expected0
-rw-r--r--tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0025-test2
-rw-r--r--tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0026-expected1
-rw-r--r--tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0026-test2
-rw-r--r--tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0027-expected1
-rw-r--r--tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0027-test2
-rw-r--r--tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0028-expected0
-rw-r--r--tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0028-test2
-rw-r--r--tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0029-expected1
-rw-r--r--tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0029-test2
-rw-r--r--tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0030-expected1
-rw-r--r--tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0030-test1
-rw-r--r--tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0031-expected0
-rw-r--r--tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0031-test1
-rw-r--r--tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0032-expected1
-rw-r--r--tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0032-test3
-rw-r--r--tests/wpt/web-platform-tests/cookies/resources/cookie-test.js56
-rw-r--r--tests/wpt/web-platform-tests/cookies/resources/cookie.py35
-rw-r--r--tests/wpt/web-platform-tests/css/selectors/focus-visible-001.html9
-rw-r--r--tests/wpt/web-platform-tests/css/selectors/focus-visible-002.html9
-rw-r--r--tests/wpt/web-platform-tests/css/selectors/focus-visible-003.html9
-rw-r--r--tests/wpt/web-platform-tests/css/selectors/focus-visible-004.html9
-rw-r--r--tests/wpt/web-platform-tests/css/selectors/focus-visible-005.html7
-rw-r--r--tests/wpt/web-platform-tests/css/selectors/focus-visible-006.html11
-rw-r--r--tests/wpt/web-platform-tests/css/selectors/focus-visible-007.html6
-rw-r--r--tests/wpt/web-platform-tests/css/selectors/focus-visible-008.html10
-rw-r--r--tests/wpt/web-platform-tests/css/selectors/focus-visible-009.html10
-rw-r--r--tests/wpt/web-platform-tests/css/selectors/focus-visible-010.html8
-rw-r--r--tests/wpt/web-platform-tests/css/selectors/focus-visible-011.html8
-rw-r--r--tests/wpt/web-platform-tests/css/selectors/focus-visible-012.html9
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/css-module/import-css-module-basic.html16
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/css-module/resources/basic-large.css7
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/css-module/resources/css-module-basic-large-iframe.html18
-rw-r--r--tests/wpt/web-platform-tests/web-nfc/NDEFReader_scan.https.html1
140 files changed, 639 insertions, 623 deletions
diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-002.html.ini b/tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-002.html.ini
deleted file mode 100644
index f64b45fea6b..00000000000
--- a/tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-002.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[hit-test-floats-002.html]
- [Hit test float]
- expected: FAIL
-
diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-003.html.ini b/tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-003.html.ini
deleted file mode 100644
index f29da48a2a0..00000000000
--- a/tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-003.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[hit-test-floats-003.html]
- [Miss float below something else]
- expected: FAIL
-
diff --git a/tests/wpt/metadata-layout-2020/css/cssom-view/elementFromPoint-001.html.ini b/tests/wpt/metadata-layout-2020/css/cssom-view/elementFromPoint-001.html.ini
deleted file mode 100644
index e38782d8c85..00000000000
--- a/tests/wpt/metadata-layout-2020/css/cssom-view/elementFromPoint-001.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[elementFromPoint-001.html]
- [CSSOM View - 5 - extensions to the Document interface]
- expected: FAIL
-
diff --git a/tests/wpt/metadata-layout-2020/css/cssom-view/elementsFromPoint-invalid-cases.html.ini b/tests/wpt/metadata-layout-2020/css/cssom-view/elementsFromPoint-invalid-cases.html.ini
new file mode 100644
index 00000000000..e181af5397f
--- /dev/null
+++ b/tests/wpt/metadata-layout-2020/css/cssom-view/elementsFromPoint-invalid-cases.html.ini
@@ -0,0 +1,4 @@
+[elementsFromPoint-invalid-cases.html]
+ [The root element is the last element returned for otherwise empty queries within the viewport]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata-layout-2020/fetch/content-type/response.window.js.ini b/tests/wpt/metadata-layout-2020/fetch/content-type/response.window.js.ini
index b0fb428a503..d5f8da25e39 100644
--- a/tests/wpt/metadata-layout-2020/fetch/content-type/response.window.js.ini
+++ b/tests/wpt/metadata-layout-2020/fetch/content-type/response.window.js.ini
@@ -318,12 +318,21 @@
[<iframe>: combined response Content-Type: text/html;charset=gbk text/plain text/html]
expected: FAIL
- [<iframe>: separate response Content-Type: text/html;" text/plain]
+ [<iframe>: combined response Content-Type: text/html */*;charset=gbk]
expected: FAIL
- [<iframe>: combined response Content-Type: text/html */*;charset=gbk]
+ [<iframe>: combined response Content-Type: text/html;" text/plain]
+ expected: FAIL
+
+ [<iframe>: combined response Content-Type: text/html */*]
+ expected: FAIL
+
+ [<iframe>: separate response Content-Type: text/html */*]
+ expected: FAIL
+
+ [<iframe>: separate response Content-Type: text/plain */*]
expected: FAIL
- [<iframe>: separate response Content-Type: text/plain */*;charset=gbk]
+ [<iframe>: combined response Content-Type: text/html;" \\" text/plain]
expected: FAIL
diff --git a/tests/wpt/metadata-layout-2020/fetch/content-type/script.window.js.ini b/tests/wpt/metadata-layout-2020/fetch/content-type/script.window.js.ini
index 2d5faa72ac7..e67f0406fc3 100644
--- a/tests/wpt/metadata-layout-2020/fetch/content-type/script.window.js.ini
+++ b/tests/wpt/metadata-layout-2020/fetch/content-type/script.window.js.ini
@@ -53,6 +53,3 @@
[combined text/javascript ]
expected: FAIL
- [separate text/javascript;charset=windows-1252 error text/javascript]
- expected: FAIL
-
diff --git a/tests/wpt/metadata-layout-2020/html/browsers/origin/cross-origin-objects/cross-origin-objects-on-new-window.html.ini b/tests/wpt/metadata-layout-2020/html/browsers/origin/cross-origin-objects/cross-origin-objects-on-new-window.html.ini
deleted file mode 100644
index 735a9a75a2a..00000000000
--- a/tests/wpt/metadata-layout-2020/html/browsers/origin/cross-origin-objects/cross-origin-objects-on-new-window.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[cross-origin-objects-on-new-window.html]
- expected: TIMEOUT
diff --git a/tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-1.html.ini b/tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-1.html.ini
index 88f4ddd0e9a..42ebcc9d57e 100644
--- a/tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-1.html.ini
+++ b/tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-1.html.ini
@@ -1,5 +1,5 @@
[iframe_sandbox_popups_escaping-1.html]
- expected: CRASH
+ expected: TIMEOUT
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
expected: TIMEOUT
diff --git a/tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-2.html.ini b/tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-2.html.ini
index e63fe7c263e..c6f45be1eb2 100644
--- a/tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-2.html.ini
+++ b/tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-2.html.ini
@@ -1,5 +1,5 @@
[iframe_sandbox_popups_escaping-2.html]
- expected: CRASH
+ expected: TIMEOUT
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
expected: TIMEOUT
diff --git a/tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html.ini b/tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html.ini
index 338d283eb0e..295031c1812 100644
--- a/tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html.ini
+++ b/tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html.ini
@@ -1,4 +1,5 @@
[iframe_sandbox_popups_escaping-3.html]
+ expected: TIMEOUT
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
- expected: FAIL
+ expected: TIMEOUT
diff --git a/tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html.ini b/tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html.ini
index d913fcbb129..3080be9afc0 100644
--- a/tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html.ini
+++ b/tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html.ini
@@ -1,5 +1,5 @@
[iframe_sandbox_popups_nonescaping-1.html]
- expected: TIMEOUT
+ expected: CRASH
[Check that popups from a sandboxed iframe do not escape the sandbox]
expected: NOTRUN
diff --git a/tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-2.html.ini b/tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-2.html.ini
index 0407f0cc2b7..9eb581fcf1f 100644
--- a/tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-2.html.ini
+++ b/tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-2.html.ini
@@ -1,5 +1,5 @@
[iframe_sandbox_popups_nonescaping-2.html]
- expected: TIMEOUT
+ expected: CRASH
[Check that popups from a sandboxed iframe do not escape the sandbox]
expected: NOTRUN
diff --git a/tests/wpt/metadata-layout-2020/html/semantics/forms/form-submission-0/form-double-submit-3.html.ini b/tests/wpt/metadata-layout-2020/html/semantics/forms/form-submission-0/form-double-submit-3.html.ini
deleted file mode 100644
index 9f416703229..00000000000
--- a/tests/wpt/metadata-layout-2020/html/semantics/forms/form-submission-0/form-double-submit-3.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[form-double-submit-3.html]
- [<button> should have the same double-submit protection as <input type=submit>]
- expected: FAIL
-
diff --git a/tests/wpt/metadata-layout-2020/html/semantics/forms/form-submission-0/form-double-submit.html.ini b/tests/wpt/metadata-layout-2020/html/semantics/forms/form-submission-0/form-double-submit.html.ini
new file mode 100644
index 00000000000..b193c33c2b6
--- /dev/null
+++ b/tests/wpt/metadata-layout-2020/html/semantics/forms/form-submission-0/form-double-submit.html.ini
@@ -0,0 +1,4 @@
+[form-double-submit.html]
+ [default submit action should supersede onclick submit()]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata-layout-2020/html/semantics/forms/textfieldselection/select-event.html.ini b/tests/wpt/metadata-layout-2020/html/semantics/forms/textfieldselection/select-event.html.ini
index bf11bf44c1b..e7c1d4ff9c4 100644
--- a/tests/wpt/metadata-layout-2020/html/semantics/forms/textfieldselection/select-event.html.ini
+++ b/tests/wpt/metadata-layout-2020/html/semantics/forms/textfieldselection/select-event.html.ini
@@ -35,36 +35,36 @@
[input type search: setRangeText() a second time (must not fire select)]
expected: FAIL
- [input type password: selectionStart out of range a second time (must not fire select)]
+ [textarea: selectionDirection a second time (must not fire select)]
expected: FAIL
- [input type password: select() a second time (must not fire select)]
+ [textarea: setSelectionRange() a second time (must not fire select)]
expected: FAIL
- [textarea: selectionDirection a second time (must not fire select)]
+ [textarea: selectionEnd a second time (must not fire select)]
expected: FAIL
- [textarea: setSelectionRange() a second time (must not fire select)]
+ [input type password: selectionStart a second time (must not fire select)]
expected: FAIL
- [input type password: setSelectionRange() a second time (must not fire select)]
+ [input type url: setSelectionRange() a second time (must not fire select)]
expected: FAIL
- [input type url: selectionStart out of range a second time (must not fire select)]
+ [input type url: selectionEnd out of range a second time (must not fire select)]
expected: FAIL
- [input type search: selectionEnd a second time (must not fire select)]
+ [input type url: selectionEnd a second time (must not fire select)]
expected: FAIL
- [input type password: setRangeText() a second time (must not fire select)]
+ [input type password: selectionEnd out of range a second time (must not fire select)]
expected: FAIL
- [input type password: selectionDirection a second time (must not fire select)]
+ [input type search: setSelectionRange() a second time (must not fire select)]
expected: FAIL
- [input type tel: selectionStart a second time (must not fire select)]
+ [input type url: select() a second time (must not fire select)]
expected: FAIL
- [input type url: setSelectionRange out of range a second time (must not fire select)]
+ [input type search: selectionDirection a second time (must not fire select)]
expected: FAIL
diff --git a/tests/wpt/metadata-layout-2020/html/semantics/scripting-1/the-script-element/css-module/import-css-module-basic.html.ini b/tests/wpt/metadata-layout-2020/html/semantics/scripting-1/the-script-element/css-module/import-css-module-basic.html.ini
new file mode 100644
index 00000000000..a71cc2fe196
--- /dev/null
+++ b/tests/wpt/metadata-layout-2020/html/semantics/scripting-1/the-script-element/css-module/import-css-module-basic.html.ini
@@ -0,0 +1,7 @@
+[import-css-module-basic.html]
+ [A CSS Module should load]
+ expected: FAIL
+
+ [A large CSS Module should load]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata-layout-2020/html/webappapis/dynamic-markup-insertion/document-write/module-static-import-delayed.html.ini b/tests/wpt/metadata-layout-2020/html/webappapis/dynamic-markup-insertion/document-write/module-static-import-delayed.html.ini
deleted file mode 100644
index fca4d908c89..00000000000
--- a/tests/wpt/metadata-layout-2020/html/webappapis/dynamic-markup-insertion/document-write/module-static-import-delayed.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[module-static-import-delayed.html]
- [document.write in an imported module]
- expected: FAIL
-
diff --git a/tests/wpt/metadata-layout-2020/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/ignore-opens-during-unload.window.js.ini b/tests/wpt/metadata-layout-2020/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/ignore-opens-during-unload.window.js.ini
index 57744023f73..58c9d7f8c0c 100644
--- a/tests/wpt/metadata-layout-2020/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/ignore-opens-during-unload.window.js.ini
+++ b/tests/wpt/metadata-layout-2020/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/ignore-opens-during-unload.window.js.ini
@@ -1,5 +1,5 @@
[ignore-opens-during-unload.window.html]
- expected: CRASH
+ expected: TIMEOUT
[document.open should bail out when ignore-opens-during-unload is greater than 0 during visibilitychange event (open(parent) while unloading parent and child)]
expected: TIMEOUT
diff --git a/tests/wpt/metadata-layout-2020/webaudio/the-audio-api/the-analysernode-interface/realtimeanalyser-fft-scaling.html.ini b/tests/wpt/metadata-layout-2020/webaudio/the-audio-api/the-analysernode-interface/realtimeanalyser-fft-scaling.html.ini
index 66bd350083b..a56bad443a2 100644
--- a/tests/wpt/metadata-layout-2020/webaudio/the-audio-api/the-analysernode-interface/realtimeanalyser-fft-scaling.html.ini
+++ b/tests/wpt/metadata-layout-2020/webaudio/the-audio-api/the-analysernode-interface/realtimeanalyser-fft-scaling.html.ini
@@ -1,4 +1,5 @@
[realtimeanalyser-fft-scaling.html]
+ expected: TIMEOUT
[X 2048-point FFT peak position is not equal to 64. Got 0.]
expected: FAIL
diff --git a/tests/wpt/metadata-layout-2020/webaudio/the-audio-api/the-audiobuffersourcenode-interface/sub-sample-buffer-stitching.html.ini b/tests/wpt/metadata-layout-2020/webaudio/the-audio-api/the-audiobuffersourcenode-interface/sub-sample-buffer-stitching.html.ini
index bdc016811c2..d369ba73240 100644
--- a/tests/wpt/metadata-layout-2020/webaudio/the-audio-api/the-audiobuffersourcenode-interface/sub-sample-buffer-stitching.html.ini
+++ b/tests/wpt/metadata-layout-2020/webaudio/the-audio-api/the-audiobuffersourcenode-interface/sub-sample-buffer-stitching.html.ini
@@ -455,3 +455,9 @@
[X Stitched sine-wave buffers at sample rate 43800 does not equal [0,0.06264832615852356,0.12505052983760834,0.18696144223213196,0.24813786149024963,0.308339387178421,0.36732959747314453,0.4248766601085663,0.480754554271698,0.5347436666488647,0.5866320133209229,0.6362156271934509,0.6832997798919678,0.7276994585990906,0.7692402601242065,0.8077589869499207...\] with an element-wise tolerance of {"absoluteThreshold":0.0038986,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[28696\]\t2.9180014260507006e-20\t9.3139332532882690e-1\t9.3139332532882690e-1\t1.0000000000000000e+0\t3.8985999999999999e-3\n\t[28697\]\t7.0477002859115601e-1\t9.0675884485244751e-1\t2.0198881626129150e-1\t2.2275913536212616e-1\t3.8985999999999999e-3\n\tMax AbsError of 9.3139332532882690e-1 at index of 28696.\n\tMax RelError of 1.0000000000000000e+0 at index of 28696.\n]
expected: FAIL
+ [X SNR (43.84283293563282 dB) is not greater than or equal to 65.737. Got 43.84283293563282.]
+ expected: FAIL
+
+ [X Stitched sine-wave buffers at sample rate 43800 does not equal [0,0.06264832615852356,0.12505052983760834,0.18696144223213196,0.24813786149024963,0.308339387178421,0.36732959747314453,0.4248766601085663,0.480754554271698,0.5347436666488647,0.5866320133209229,0.6362156271934509,0.6832997798919678,0.7276994585990906,0.7692402601242065,0.8077589869499207...\] with an element-wise tolerance of {"absoluteThreshold":0.0038986,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[28696\]\t2.1212256979197264e-3\t9.3139332532882690e-1\t9.2927209963090718e-1\t9.9772252426527663e-1\t3.8985999999999999e-3\n\t[28697\]\t7.0477002859115601e-1\t9.0675884485244751e-1\t2.0198881626129150e-1\t2.2275913536212616e-1\t3.8985999999999999e-3\n\tMax AbsError of 9.2927209963090718e-1 at index of 28696.\n\tMax RelError of 9.9772252426527663e-1 at index of 28696.\n]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata-layout-2020/webmessaging/with-ports/018.html.ini b/tests/wpt/metadata-layout-2020/webmessaging/with-ports/018.html.ini
deleted file mode 100644
index 663a1f8fa30..00000000000
--- a/tests/wpt/metadata-layout-2020/webmessaging/with-ports/018.html.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[018.html]
- expected: TIMEOUT
- [origin of the script that invoked the method, javascript:]
- expected: TIMEOUT
-
diff --git a/tests/wpt/metadata-layout-2020/workers/WorkerGlobalScope-close.html.ini b/tests/wpt/metadata-layout-2020/workers/WorkerGlobalScope-close.html.ini
deleted file mode 100644
index fe8654e447c..00000000000
--- a/tests/wpt/metadata-layout-2020/workers/WorkerGlobalScope-close.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[WorkerGlobalScope-close.html]
- [Test sending a message after closing.]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/MANIFEST.json b/tests/wpt/metadata/MANIFEST.json
index 745fc266a1d..d861a720ad9 100644
--- a/tests/wpt/metadata/MANIFEST.json
+++ b/tests/wpt/metadata/MANIFEST.json
@@ -281963,6 +281963,38 @@
],
"attributes": {
"resources": {
+ "path": {
+ "one.html": [
+ "3c5af1cb205daaef2561acf00fc4f01f87a5e193",
+ []
+ ],
+ "three.html": [
+ "3c5af1cb205daaef2561acf00fc4f01f87a5e193",
+ []
+ ],
+ "two.html": [
+ "3c5af1cb205daaef2561acf00fc4f01f87a5e193",
+ []
+ ]
+ },
+ "path-redirect-shared.js": [
+ "83a614117cd54c23540a7405e15dcbedf96cfa00",
+ []
+ ],
+ "path.html": [
+ "3c5af1cb205daaef2561acf00fc4f01f87a5e193",
+ []
+ ],
+ "pathfakeout": {
+ "one.html": [
+ "3c5af1cb205daaef2561acf00fc4f01f87a5e193",
+ []
+ ]
+ },
+ "pathfakeout.html": [
+ "3c5af1cb205daaef2561acf00fc4f01f87a5e193",
+ []
+ ],
"secure-non-secure-child.html": [
"65996e0c4d18c9d7a95ba7b20e76c63f4a372303",
[]
@@ -282238,14 +282270,6 @@
"fea1e1a643b97d4a101d704bd1497376a4997b3c",
[]
],
- "disabled-path0029-expected": [
- "b14d4f69b58c3d9cc7ed1f363d42d625e7bdcf8c",
- []
- ],
- "disabled-path0029-test": [
- "d7219d590c6f13b8ef8aef2e5951cadab16ff17e",
- []
- ],
"domain0001-expected": [
"b14d4f69b58c3d9cc7ed1f363d42d625e7bdcf8c",
[]
@@ -283006,262 +283030,6 @@
"ba6e85c44cdea2aa269ef170fe2d3a4c3a14e1ce",
[]
],
- "path0001-expected": [
- "785d0a2f5f78a5bbf63c3b00c530cc60262598a5",
- []
- ],
- "path0001-test": [
- "ed81cb955f7950fd77566362f7f8af6814b66653",
- []
- ],
- "path0002-expected": [
- "2314ba0d4959934a91914ba987571706a5c9aacc",
- []
- ],
- "path0002-test": [
- "224932851853336d065676fc736076da634d9fd3",
- []
- ],
- "path0003-expected": [
- "2314ba0d4959934a91914ba987571706a5c9aacc",
- []
- ],
- "path0003-test": [
- "e4b5a4b256507b53e1c31a9a20f7e9f345dabee2",
- []
- ],
- "path0004-expected": [
- "785d0a2f5f78a5bbf63c3b00c530cc60262598a5",
- []
- ],
- "path0004-test": [
- "a80ea6ec01587765bfdb02381887052568091c65",
- []
- ],
- "path0005-expected": [
- "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391",
- []
- ],
- "path0005-test": [
- "6447c9164f9cfdb0a6fc8f65169a74221a779e94",
- []
- ],
- "path0006-expected": [
- "b14d4f69b58c3d9cc7ed1f363d42d625e7bdcf8c",
- []
- ],
- "path0006-test": [
- "07ecf27b82b009bdd73e37f68f48732cb106655b",
- []
- ],
- "path0007-expected": [
- "b14d4f69b58c3d9cc7ed1f363d42d625e7bdcf8c",
- []
- ],
- "path0007-test": [
- "66a54de7420a6e0dadb5bd8400b25b3455eb5be1",
- []
- ],
- "path0008-expected": [
- "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391",
- []
- ],
- "path0008-test": [
- "b10012d30960832f462b18b01221ffae2a1c5c69",
- []
- ],
- "path0009-expected": [
- "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391",
- []
- ],
- "path0009-test": [
- "874f21bad97d24903535b08c524fb2184982e6ea",
- []
- ],
- "path0010-expected": [
- "b14d4f69b58c3d9cc7ed1f363d42d625e7bdcf8c",
- []
- ],
- "path0010-test": [
- "0ea62fd5ec5384c3d97a4908eff138c0a5befe99",
- []
- ],
- "path0011-expected": [
- "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391",
- []
- ],
- "path0011-test": [
- "35ea0620495bb1f12f2df12c7eda5e545bbac41c",
- []
- ],
- "path0012-expected": [
- "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391",
- []
- ],
- "path0012-test": [
- "4c0577897bd90ba6b2c9c0bf37fa83e6265ae5c4",
- []
- ],
- "path0013-expected": [
- "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391",
- []
- ],
- "path0013-test": [
- "d17b99b6b4365aae60f4aba2904e371a08a57e70",
- []
- ],
- "path0014-expected": [
- "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391",
- []
- ],
- "path0014-test": [
- "a953e707b3b22b9b708b89f8e9ec36a2f807544c",
- []
- ],
- "path0015-expected": [
- "b14d4f69b58c3d9cc7ed1f363d42d625e7bdcf8c",
- []
- ],
- "path0015-test": [
- "253a9bb2fcdd16aabbe3e4fdedf49ae2e4371f7d",
- []
- ],
- "path0016-expected": [
- "b14d4f69b58c3d9cc7ed1f363d42d625e7bdcf8c",
- []
- ],
- "path0016-test": [
- "433faeb9120496a97b7b6e703b2c92280824a79d",
- []
- ],
- "path0017-expected": [
- "b14d4f69b58c3d9cc7ed1f363d42d625e7bdcf8c",
- []
- ],
- "path0017-test": [
- "a602d7ca6fe9199ce50b6fc380a76bda5d348ca9",
- []
- ],
- "path0018-expected": [
- "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391",
- []
- ],
- "path0018-test": [
- "37040dac5d32aef12ad7bd4b1facda7789f70b4e",
- []
- ],
- "path0019-expected": [
- "b14d4f69b58c3d9cc7ed1f363d42d625e7bdcf8c",
- []
- ],
- "path0019-test": [
- "6d498600a2f4ea0268cb4af4a238b315940c0768",
- []
- ],
- "path0020-expected": [
- "b14d4f69b58c3d9cc7ed1f363d42d625e7bdcf8c",
- []
- ],
- "path0020-test": [
- "603eded7ebd2198e5664d7c18e24540148c70526",
- []
- ],
- "path0021-expected": [
- "b14d4f69b58c3d9cc7ed1f363d42d625e7bdcf8c",
- []
- ],
- "path0021-test": [
- "4577c510a42d8d118ca53d9b67e4176dae960e44",
- []
- ],
- "path0022-expected": [
- "b14d4f69b58c3d9cc7ed1f363d42d625e7bdcf8c",
- []
- ],
- "path0022-test": [
- "4aade9e0145d5e71acea9ff937f65efbcfa4f970",
- []
- ],
- "path0023-expected": [
- "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391",
- []
- ],
- "path0023-test": [
- "f14d683df977e47efa74bd6941e9d9d7452e6bea",
- []
- ],
- "path0024-expected": [
- "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391",
- []
- ],
- "path0024-test": [
- "18a71c875b4adf92c91ad5bb538d6135fd1667a7",
- []
- ],
- "path0025-expected": [
- "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391",
- []
- ],
- "path0025-test": [
- "b6c497b97158481e5da1a5b08f4cd2aa393b7e16",
- []
- ],
- "path0026-expected": [
- "b14d4f69b58c3d9cc7ed1f363d42d625e7bdcf8c",
- []
- ],
- "path0026-test": [
- "ffc3b7a54fa34bdc163267fa86b3ebd3ca3cfc45",
- []
- ],
- "path0027-expected": [
- "b14d4f69b58c3d9cc7ed1f363d42d625e7bdcf8c",
- []
- ],
- "path0027-test": [
- "bd021f33e2c0819a8afd2c9eb9279e8e067ecf6e",
- []
- ],
- "path0028-expected": [
- "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391",
- []
- ],
- "path0028-test": [
- "3bcd6a5c657b3c39225d0d566717ac5aeddfa153",
- []
- ],
- "path0029-expected": [
- "1022f64a2906dd854109026bbc6c3d286a5a5283",
- []
- ],
- "path0029-test": [
- "17bd42f4212539fea41d5d402a23115bb26b1127",
- []
- ],
- "path0030-expected": [
- "b14d4f69b58c3d9cc7ed1f363d42d625e7bdcf8c",
- []
- ],
- "path0030-test": [
- "e17a2d490b7871eb1d46d69d4dcafa19248c8100",
- []
- ],
- "path0031-expected": [
- "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391",
- []
- ],
- "path0031-test": [
- "3b24090b33841dd5b0ef6a3ce9770a1bdbe3dc86",
- []
- ],
- "path0032-expected": [
- "e7403c4aadce372524b3ba71e480db4b6d28aa61",
- []
- ],
- "path0032-test": [
- "db6ceb2ea0678332b9d9a9854463680f89f86e6b",
- []
- ],
"value0001-expected": [
"b14d4f69b58c3d9cc7ed1f363d42d625e7bdcf8c",
[]
@@ -283323,11 +283091,11 @@
[]
],
"cookie-test.js": [
- "c0a03d78355ad219ae6303507c7398d63f3dee87",
+ "56e958263d9771efcdc19048a496753f3c87384d",
[]
],
"cookie.py": [
- "63eedf0b01ef6b23bef5668fbb8fbf6cfab060bb",
+ "16efcc04aeb919e70c8e9bbf03253a8101bef2c8",
[]
],
"drop.py": [
@@ -349064,6 +348832,10 @@
"796446b525ca03bf287e2abbdbbdae593b658bac",
[]
],
+ "basic-large.css": [
+ "f5b0db5d6ed261f1a0099cc8d9e49277d8b6b900",
+ []
+ ],
"basic.css": [
"3ea2ef45339c41dc5a39b1f8494fe2d2d4eae0d1",
[]
@@ -349076,6 +348848,10 @@
"3a555c392716c0ee915f1aa65cd5a1dae42f0c52",
[]
],
+ "css-module-basic-large-iframe.html": [
+ "cc5b660e4cbd0bcfbf20923f8c979cc40672891a",
+ []
+ ],
"malformed-iframe.html": [
"471edd680cf656661bcc713656aaa23e49386ba7",
[]
@@ -402186,8 +401962,17 @@
}
]
],
+ "path-redirect.html": [
+ "8c4d587cd46b6ed15140af2638b1ad0a130309bd",
+ [
+ null,
+ {
+ "timeout": "long"
+ }
+ ]
+ ],
"path.html": [
- "c201aa170b83049c116e2e4a1e259d8191124302",
+ "2d5cfe74f1748a0be1e715316670aa028e219c0c",
[
null,
{
@@ -402304,15 +402089,6 @@
{}
]
],
- "path-tests.html": [
- "b76360e249c4b9977d4479f8bfd640acb9d638d5",
- [
- null,
- {
- "timeout": "long"
- }
- ]
- ],
"value-tests.html": [
"0d8daae165cbd2c33a4051048047ea459ad97b3c",
[
@@ -429140,7 +428916,7 @@
]
],
"focus-visible-001.html": [
- "2afcea22d1d332a71191ec8b22b194f04577709e",
+ "78d79e0b4757c82b5ac639ef2d03aaf76ce423af",
[
null,
{
@@ -429149,7 +428925,7 @@
]
],
"focus-visible-002.html": [
- "19c937a7abbc3ccba91ace6f998de9c5694cb602",
+ "703c9c0946c85797c2351ceb2aa88214793b0766",
[
null,
{
@@ -429159,7 +428935,7 @@
]
],
"focus-visible-003.html": [
- "4620c1e411492069f085efc08a3647a5eaae6fa6",
+ "4d3df3d7b794eedb84d22dccf8309bbe1e4972dd",
[
null,
{
@@ -429168,7 +428944,7 @@
]
],
"focus-visible-004.html": [
- "1c3fb3fcedd03b46da79af2aa53fc988d63ff7ca",
+ "f4a33111c09b120679a459447d0f4333d1ffec3a",
[
null,
{
@@ -429177,7 +428953,7 @@
]
],
"focus-visible-005.html": [
- "b5d58435db1c6d37881bbcd4c856e8abab03aada",
+ "7983727f80e7e7a9b192e7b078c25c5b8740681d",
[
null,
{
@@ -429186,7 +428962,7 @@
]
],
"focus-visible-006.html": [
- "12643e6cd442eb1814411037e5700b3883e15761",
+ "0383eb841f4872cd581e457c1af3661a45d6e03d",
[
null,
{
@@ -429195,7 +428971,7 @@
]
],
"focus-visible-007.html": [
- "95a27006e62076909f63f9946e1f2d7f8331732a",
+ "9a88a6bb9f0b05825d6735f180f2e7a22063a658",
[
null,
{
@@ -429204,7 +428980,7 @@
]
],
"focus-visible-008.html": [
- "75f676f53f3319cb672195343c77cc7ebd94eee4",
+ "171530f4119aa69f6d8f32b7fbde920845bb0fc9",
[
null,
{
@@ -429213,21 +428989,21 @@
]
],
"focus-visible-009.html": [
- "4dae6407adac3971db6064822643332cf7f1722d",
+ "102c47e961207a4263f86ac1540bcbbfe272a9d3",
[
null,
{}
]
],
"focus-visible-010.html": [
- "00cd7f0b665d90a82b9939b5451b1e10cf89e5ee",
+ "9cfc3b8146ca633b8605268cf8d1fa08b91804fa",
[
null,
{}
]
],
"focus-visible-011.html": [
- "0c05c21800d10042c00e67aad90fd867b515b4b2",
+ "73c4607fd10caac6dbd76495026cb13a6fd42ec3",
[
null,
{
@@ -429236,7 +429012,7 @@
]
],
"focus-visible-012.html": [
- "a81eef3fb11f446e2d5344d9e50509d1707d1fc2",
+ "2ccb2e675616d4a38f36390db083d5d6c8b60253",
[
null,
{
@@ -490692,7 +490468,7 @@
]
],
"import-css-module-basic.html": [
- "1cb290de3feb584bf9dc63e8090f6b31dd10eeb9",
+ "4ca2bb70899b1070030359ee1738075fed993567",
[
null,
{}
@@ -549937,7 +549713,7 @@
]
],
"NDEFReader_scan.https.html": [
- "ba101d67e5debc657b140bd23b7d81f9f5dc525d",
+ "281f3db5b7bd56a48ac6eb2cccea814912e07006",
[
null,
{}
diff --git a/tests/wpt/metadata/cookies/http-state/path-tests.html.ini b/tests/wpt/metadata/cookies/http-state/path-tests.html.ini
deleted file mode 100644
index 404ef0201e4..00000000000
--- a/tests/wpt/metadata/cookies/http-state/path-tests.html.ini
+++ /dev/null
@@ -1,40 +0,0 @@
-[path-tests.html]
- [path0015 - path0015]
- expected: FAIL
-
- [path0002 - path0002]
- expected: FAIL
-
- [path0003 - path0003]
- expected: FAIL
-
- [path0004 - path0004]
- expected: FAIL
-
- [path0001 - path0001]
- expected: FAIL
-
- [path0016 - path0016]
- expected: FAIL
-
- [path0026 - path0026]
- expected: FAIL
-
- [path0017 - path0017]
- expected: FAIL
-
- [path0032 - path0032]
- expected: FAIL
-
- [path0029 - path0029]
- expected: FAIL
-
- [disabled-path0029 - disabled-path0029]
- expected: FAIL
-
- [path0010 - path0010]
- expected: FAIL
-
- [path0007 - path0007]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/css/CSS2/floats/hit-test-floats-002.html.ini b/tests/wpt/metadata/css/CSS2/floats/hit-test-floats-002.html.ini
deleted file mode 100644
index f64b45fea6b..00000000000
--- a/tests/wpt/metadata/css/CSS2/floats/hit-test-floats-002.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[hit-test-floats-002.html]
- [Hit test float]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/css/CSS2/floats/hit-test-floats-003.html.ini b/tests/wpt/metadata/css/CSS2/floats/hit-test-floats-003.html.ini
deleted file mode 100644
index f29da48a2a0..00000000000
--- a/tests/wpt/metadata/css/CSS2/floats/hit-test-floats-003.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[hit-test-floats-003.html]
- [Miss float below something else]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/css/cssom-view/elementFromPoint-001.html.ini b/tests/wpt/metadata/css/cssom-view/elementFromPoint-001.html.ini
deleted file mode 100644
index e38782d8c85..00000000000
--- a/tests/wpt/metadata/css/cssom-view/elementFromPoint-001.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[elementFromPoint-001.html]
- [CSSOM View - 5 - extensions to the Document interface]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/css/cssom-view/elementsFromPoint-invalid-cases.html.ini b/tests/wpt/metadata/css/cssom-view/elementsFromPoint-invalid-cases.html.ini
new file mode 100644
index 00000000000..e181af5397f
--- /dev/null
+++ b/tests/wpt/metadata/css/cssom-view/elementsFromPoint-invalid-cases.html.ini
@@ -0,0 +1,4 @@
+[elementsFromPoint-invalid-cases.html]
+ [The root element is the last element returned for otherwise empty queries within the viewport]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/fetch/content-type/response.window.js.ini b/tests/wpt/metadata/fetch/content-type/response.window.js.ini
index 2affbf84c74..92b2a728a99 100644
--- a/tests/wpt/metadata/fetch/content-type/response.window.js.ini
+++ b/tests/wpt/metadata/fetch/content-type/response.window.js.ini
@@ -318,12 +318,21 @@
[<iframe>: combined response Content-Type: text/html;charset=gbk text/plain text/html]
expected: FAIL
- [<iframe>: separate response Content-Type: text/html;" text/plain]
+ [<iframe>: combined response Content-Type: text/html */*;charset=gbk]
expected: FAIL
- [<iframe>: combined response Content-Type: text/html */*;charset=gbk]
+ [<iframe>: combined response Content-Type: text/html;" text/plain]
+ expected: FAIL
+
+ [<iframe>: combined response Content-Type: text/html */*]
+ expected: FAIL
+
+ [<iframe>: separate response Content-Type: text/html */*]
+ expected: FAIL
+
+ [<iframe>: separate response Content-Type: text/plain */*]
expected: FAIL
- [<iframe>: separate response Content-Type: text/plain */*;charset=gbk]
+ [<iframe>: combined response Content-Type: text/html;" \\" text/plain]
expected: FAIL
diff --git a/tests/wpt/metadata/fetch/content-type/script.window.js.ini b/tests/wpt/metadata/fetch/content-type/script.window.js.ini
index 2d5faa72ac7..e67f0406fc3 100644
--- a/tests/wpt/metadata/fetch/content-type/script.window.js.ini
+++ b/tests/wpt/metadata/fetch/content-type/script.window.js.ini
@@ -53,6 +53,3 @@
[combined text/javascript ]
expected: FAIL
- [separate text/javascript;charset=windows-1252 error text/javascript]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/browsers/origin/cross-origin-objects/cross-origin-objects-on-new-window.html.ini b/tests/wpt/metadata/html/browsers/origin/cross-origin-objects/cross-origin-objects-on-new-window.html.ini
deleted file mode 100644
index 735a9a75a2a..00000000000
--- a/tests/wpt/metadata/html/browsers/origin/cross-origin-objects/cross-origin-objects-on-new-window.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[cross-origin-objects-on-new-window.html]
- expected: TIMEOUT
diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-1.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-1.html.ini
index 2a166bb97b7..fc37df7e3fa 100644
--- a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-1.html.ini
+++ b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-1.html.ini
@@ -1,6 +1,6 @@
[iframe_sandbox_popups_escaping-1.html]
type: testharness
- expected: CRASH
+ expected: TIMEOUT
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
expected: TIMEOUT
diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-2.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-2.html.ini
index e63fe7c263e..c6f45be1eb2 100644
--- a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-2.html.ini
+++ b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-2.html.ini
@@ -1,5 +1,5 @@
[iframe_sandbox_popups_escaping-2.html]
- expected: CRASH
+ expected: TIMEOUT
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
expected: TIMEOUT
diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html.ini
index f6a7aca3306..5f60c78e73c 100644
--- a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html.ini
+++ b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html.ini
@@ -1,5 +1,6 @@
[iframe_sandbox_popups_escaping-3.html]
type: testharness
+ expected: TIMEOUT
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
- expected: FAIL
+ expected: TIMEOUT
diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html.ini
index 9df1ac56f2a..963d4cd20ef 100644
--- a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html.ini
+++ b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html.ini
@@ -1,6 +1,6 @@
[iframe_sandbox_popups_nonescaping-1.html]
type: testharness
- expected: TIMEOUT
+ expected: CRASH
[Check that popups from a sandboxed iframe do not escape the sandbox]
expected: NOTRUN
diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-2.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-2.html.ini
index d43f38b40cd..45d8be1c898 100644
--- a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-2.html.ini
+++ b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-2.html.ini
@@ -1,6 +1,6 @@
[iframe_sandbox_popups_nonescaping-2.html]
type: testharness
- expected: TIMEOUT
+ expected: CRASH
[Check that popups from a sandboxed iframe do not escape the sandbox]
expected: NOTRUN
diff --git a/tests/wpt/metadata/html/semantics/forms/form-submission-0/form-double-submit-3.html.ini b/tests/wpt/metadata/html/semantics/forms/form-submission-0/form-double-submit-3.html.ini
deleted file mode 100644
index 9f416703229..00000000000
--- a/tests/wpt/metadata/html/semantics/forms/form-submission-0/form-double-submit-3.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[form-double-submit-3.html]
- [<button> should have the same double-submit protection as <input type=submit>]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/semantics/forms/form-submission-0/form-double-submit.html.ini b/tests/wpt/metadata/html/semantics/forms/form-submission-0/form-double-submit.html.ini
new file mode 100644
index 00000000000..b193c33c2b6
--- /dev/null
+++ b/tests/wpt/metadata/html/semantics/forms/form-submission-0/form-double-submit.html.ini
@@ -0,0 +1,4 @@
+[form-double-submit.html]
+ [default submit action should supersede onclick submit()]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/html/semantics/forms/textfieldselection/select-event.html.ini b/tests/wpt/metadata/html/semantics/forms/textfieldselection/select-event.html.ini
index bf11bf44c1b..e7c1d4ff9c4 100644
--- a/tests/wpt/metadata/html/semantics/forms/textfieldselection/select-event.html.ini
+++ b/tests/wpt/metadata/html/semantics/forms/textfieldselection/select-event.html.ini
@@ -35,36 +35,36 @@
[input type search: setRangeText() a second time (must not fire select)]
expected: FAIL
- [input type password: selectionStart out of range a second time (must not fire select)]
+ [textarea: selectionDirection a second time (must not fire select)]
expected: FAIL
- [input type password: select() a second time (must not fire select)]
+ [textarea: setSelectionRange() a second time (must not fire select)]
expected: FAIL
- [textarea: selectionDirection a second time (must not fire select)]
+ [textarea: selectionEnd a second time (must not fire select)]
expected: FAIL
- [textarea: setSelectionRange() a second time (must not fire select)]
+ [input type password: selectionStart a second time (must not fire select)]
expected: FAIL
- [input type password: setSelectionRange() a second time (must not fire select)]
+ [input type url: setSelectionRange() a second time (must not fire select)]
expected: FAIL
- [input type url: selectionStart out of range a second time (must not fire select)]
+ [input type url: selectionEnd out of range a second time (must not fire select)]
expected: FAIL
- [input type search: selectionEnd a second time (must not fire select)]
+ [input type url: selectionEnd a second time (must not fire select)]
expected: FAIL
- [input type password: setRangeText() a second time (must not fire select)]
+ [input type password: selectionEnd out of range a second time (must not fire select)]
expected: FAIL
- [input type password: selectionDirection a second time (must not fire select)]
+ [input type search: setSelectionRange() a second time (must not fire select)]
expected: FAIL
- [input type tel: selectionStart a second time (must not fire select)]
+ [input type url: select() a second time (must not fire select)]
expected: FAIL
- [input type url: setSelectionRange out of range a second time (must not fire select)]
+ [input type search: selectionDirection a second time (must not fire select)]
expected: FAIL
diff --git a/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/css-module/import-css-module-basic.html.ini b/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/css-module/import-css-module-basic.html.ini
index 301f21b8ba2..84bbe9b5279 100644
--- a/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/css-module/import-css-module-basic.html.ini
+++ b/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/css-module/import-css-module-basic.html.ini
@@ -5,3 +5,6 @@
[A CSS Module should load]
expected: FAIL
+ [A large CSS Module should load]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/document-write/module-static-import-delayed.html.ini b/tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/document-write/module-static-import-delayed.html.ini
deleted file mode 100644
index fca4d908c89..00000000000
--- a/tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/document-write/module-static-import-delayed.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[module-static-import-delayed.html]
- [document.write in an imported module]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/ignore-opens-during-unload.window.js.ini b/tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/ignore-opens-during-unload.window.js.ini
index 910c88d3e81..69bd952d756 100644
--- a/tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/ignore-opens-during-unload.window.js.ini
+++ b/tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/ignore-opens-during-unload.window.js.ini
@@ -1,5 +1,5 @@
[ignore-opens-during-unload.window.html]
- expected: CRASH
+ expected: TIMEOUT
[ignore-opens-during-unload]
expected: FAIL
diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-analysernode-interface/realtimeanalyser-fft-scaling.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-analysernode-interface/realtimeanalyser-fft-scaling.html.ini
index 66bd350083b..a56bad443a2 100644
--- a/tests/wpt/metadata/webaudio/the-audio-api/the-analysernode-interface/realtimeanalyser-fft-scaling.html.ini
+++ b/tests/wpt/metadata/webaudio/the-audio-api/the-analysernode-interface/realtimeanalyser-fft-scaling.html.ini
@@ -1,4 +1,5 @@
[realtimeanalyser-fft-scaling.html]
+ expected: TIMEOUT
[X 2048-point FFT peak position is not equal to 64. Got 0.]
expected: FAIL
diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-audiobuffersourcenode-interface/sub-sample-buffer-stitching.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-audiobuffersourcenode-interface/sub-sample-buffer-stitching.html.ini
index 73f95a92557..78166eacedc 100644
--- a/tests/wpt/metadata/webaudio/the-audio-api/the-audiobuffersourcenode-interface/sub-sample-buffer-stitching.html.ini
+++ b/tests/wpt/metadata/webaudio/the-audio-api/the-audiobuffersourcenode-interface/sub-sample-buffer-stitching.html.ini
@@ -683,3 +683,9 @@
[X Stitched sine-wave buffers at sample rate 43800 does not equal [0,0.06264832615852356,0.12505052983760834,0.18696144223213196,0.24813786149024963,0.308339387178421,0.36732959747314453,0.4248766601085663,0.480754554271698,0.5347436666488647,0.5866320133209229,0.6362156271934509,0.6832997798919678,0.7276994585990906,0.7692402601242065,0.8077589869499207...\] with an element-wise tolerance of {"absoluteThreshold":0.0038986,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[28696\]\t2.9180014260507006e-20\t9.3139332532882690e-1\t9.3139332532882690e-1\t1.0000000000000000e+0\t3.8985999999999999e-3\n\t[28697\]\t7.0477002859115601e-1\t9.0675884485244751e-1\t2.0198881626129150e-1\t2.2275913536212616e-1\t3.8985999999999999e-3\n\tMax AbsError of 9.3139332532882690e-1 at index of 28696.\n\tMax RelError of 1.0000000000000000e+0 at index of 28696.\n]
expected: FAIL
+ [X SNR (43.84283293563282 dB) is not greater than or equal to 65.737. Got 43.84283293563282.]
+ expected: FAIL
+
+ [X Stitched sine-wave buffers at sample rate 43800 does not equal [0,0.06264832615852356,0.12505052983760834,0.18696144223213196,0.24813786149024963,0.308339387178421,0.36732959747314453,0.4248766601085663,0.480754554271698,0.5347436666488647,0.5866320133209229,0.6362156271934509,0.6832997798919678,0.7276994585990906,0.7692402601242065,0.8077589869499207...\] with an element-wise tolerance of {"absoluteThreshold":0.0038986,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[28696\]\t2.1212256979197264e-3\t9.3139332532882690e-1\t9.2927209963090718e-1\t9.9772252426527663e-1\t3.8985999999999999e-3\n\t[28697\]\t7.0477002859115601e-1\t9.0675884485244751e-1\t2.0198881626129150e-1\t2.2275913536212616e-1\t3.8985999999999999e-3\n\tMax AbsError of 9.2927209963090718e-1 at index of 28696.\n\tMax RelError of 9.9772252426527663e-1 at index of 28696.\n]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/webmessaging/with-ports/018.html.ini b/tests/wpt/metadata/webmessaging/with-ports/018.html.ini
deleted file mode 100644
index 663a1f8fa30..00000000000
--- a/tests/wpt/metadata/webmessaging/with-ports/018.html.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[018.html]
- expected: TIMEOUT
- [origin of the script that invoked the method, javascript:]
- expected: TIMEOUT
-
diff --git a/tests/wpt/metadata/workers/WorkerGlobalScope-close.html.ini b/tests/wpt/metadata/workers/WorkerGlobalScope-close.html.ini
deleted file mode 100644
index fe8654e447c..00000000000
--- a/tests/wpt/metadata/workers/WorkerGlobalScope-close.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[WorkerGlobalScope-close.html]
- [Test sending a message after closing.]
- expected: FAIL
-
diff --git a/tests/wpt/web-platform-tests/cookies/attributes/path-redirect.html b/tests/wpt/web-platform-tests/cookies/attributes/path-redirect.html
new file mode 100644
index 00000000000..8c4d587cd46
--- /dev/null
+++ b/tests/wpt/web-platform-tests/cookies/attributes/path-redirect.html
@@ -0,0 +1,126 @@
+<!doctype html>
+<html>
+ <head>
+ <meta charset=utf-8>
+ <title>Test cookie path attribute parsing</title>
+ <meta name=help href="https://tools.ietf.org/html/rfc6265#section-5.2.4">
+ <meta name="timeout" content="long">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/cookies/resources/cookie-test.js"></script>
+ </head>
+ <body>
+ <script>
+ const pathRedirectTests = [
+ {
+ cookie: "test=1; path=/cookies/attributes/resources/path.html",
+ expected: "test=1",
+ name: "Cookie sent for exact redirected path match",
+ location: "/cookies/attributes/resources/path.html",
+ },
+ {
+ cookie: "test=2; path=/cookies/attributes/resources/path/one.html",
+ expected: "test=2",
+ name: "Cookie sent for exact redirected path match, one level deeper",
+ location: "/cookies/attributes/resources/path/one.html",
+ },
+ {
+ cookie: "test=3; path=/cookies/attributes/resources/path/",
+ expected: "test=3",
+ name: "Cookie sent for redirected path with trailing '/' and the redirected URL is one level deeper",
+ location: "/cookies/attributes/resources/path/one.html",
+ },
+ {
+ cookie: "test=4; path=/cookies/attributes/resources/path/",
+ expected: "test=4",
+ name: "Cookie sent for redirected path with trailing '/' and a double '/' in the redirected URL",
+ location: "/cookies/attributes/resources/path//one.html",
+ },
+ {
+ cookie: "test=5; path=/cookies/attributes/resources/path/one.html;",
+ expected: "test=5",
+ name: "Cookie sent for redirected path match with a trailing ';' after an unquoted Path",
+ location: "/cookies/attributes/resources/path/one.html",
+ },
+ {
+ cookie: 'test=6; path="/cookies/attributes/resources/path/one.html;"',
+ expected: "",
+ name: "No cookie sent for redirected path match with a trailing ';' inside a quoted Path",
+ location: "/cookies/attributes/resources/path/one.html",
+ },
+ {
+ cookie: "test=7a; path=/cookies/attributes/resources/p%61th/three.html",
+ expected: "",
+ name: "No cookie sent for redirected path match with partially URL encoded path",
+ location: "/cookies/attributes/resources/path/three.html",
+ },
+ {
+ cookie: ["test=8a; path=/cookies/attributes/resources",
+ "test=8b; path=/cookies/attributes/resources/"],
+ expected: "test=8b; test=8a",
+ name: "Multiple cookies sent for multiple redirected path matches, sorted by length",
+ location: "/cookies/attributes/resources/path.html",
+ },
+ {
+ cookie: "test=9; path=/cookies/attributes/resources/path.html",
+ expected: "",
+ name: "No cookie sent for redirected path mismatch where path and redirected URL begin with same string",
+ location: "/cookies/attributes/resources/pathfakeout.html",
+ },
+ {
+ cookie: "test=10; path=/cookies/attributes/resources/path/one.html",
+ expected: "",
+ name: "No cookie sent for redirected path mismatch where final path directory component and redirected URL resource begin with same string",
+ location: "/cookies/attributes/resources/path.html",
+ },
+ {
+ cookie: "test=11; path=/cookies/attributes/resources/path/one.html",
+ expected: "",
+ name: "No cookie sent for redirected path mismatch where final path directory component begins with same string as redirected URL final directory component",
+ location: "/cookies/attributes/resources/pathfakeout/one.html",
+ },
+ {
+ cookie: "test=12; path=/cookies/attributes/resources/path/one.html",
+ expected: "",
+ name: "No cookie sent for redirected path mismatch for different resources inside the same final directory component",
+ location: "/cookies/attributes/resources/path/two.html",
+ },
+ {
+ cookie: "test=13; path=/cookies/attributes/resources/path/one.html/",
+ expected: "",
+ name: "No cookie sent for redirected path mismatch where final path directory component ends in '/' and does not match redirected URL",
+ location: "/cookies/attributes/resources/path/two.html",
+ },
+ {
+ cookie: "test=14; path=/cookies/attributes/resources/path/",
+ expected: "",
+ name: "No cookie sent for redirected path mismatch with a similar start to the redirected URL",
+ location: "/cookies/attributes/resources/pathfakeout.html",
+ },
+ {
+ cookie: "test=15; path=/cookies/attributes/resources/path/one.html?",
+ expected: "",
+ name: "No cookie sent for redirected path mismatch with trailing '?' after unquoted Path",
+ location: "/cookies/attributes/resources/path/one.html",
+ },
+ {
+ cookie: "test=16; path=/cookies/attributes/resources/path/one.html#",
+ expected: "",
+ name: "No cookie sent for redirected path mismatch with trailing '#' after unquoted Path",
+ location: "/cookies/attributes/resources/path/one.html",
+ },
+ {
+ cookie: "test=17; path=/cookies/attributes/resources/path/one.html/",
+ expected: "",
+ name: "No cookie sent for redirected path mismatch with trailing '/' after unquoted Path",
+ location: "/cookies/attributes/resources/path/one.html",
+ },
+ ];
+
+ for (const test of pathRedirectTests) {
+ httpRedirectCookieTest(test.cookie, test.expected, test.name,
+ test.location);
+ }
+ </script>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/cookies/attributes/path.html b/tests/wpt/web-platform-tests/cookies/attributes/path.html
index c201aa170b8..2d5cfe74f17 100644
--- a/tests/wpt/web-platform-tests/cookies/attributes/path.html
+++ b/tests/wpt/web-platform-tests/cookies/attributes/path.html
@@ -26,48 +26,111 @@
cookie: "test=3; Path=/",
expected: "test=3",
name: "Set cookie for Path=/",
- defaultPath: false
+ defaultPath: false,
},
{
cookie: "test=4; Path=/qux",
expected: "",
name: "No cookie returned for mismatched path",
- defaultPath: false
+ defaultPath: false,
},
{
cookie: "test=5; Path =/qux",
expected: "",
name: "No cookie returned for path space equals mismatched path",
- defaultPath: false
+ defaultPath: false,
},
{
cookie: "test=6; Path= /qux",
expected: "",
name: "No cookie returned for path equals space mismatched path",
- defaultPath: false
+ defaultPath: false,
},
{
cookie: "test=7; Path=/qux ; taz",
expected: "",
name: "No cookie returned for mismatched path and attribute",
- defaultPath: false
+ defaultPath: false,
},
{
cookie: "test=8; Path=/qux; Path=/",
expected: "test=8",
- name: "Set cookie for mismatched and root path"
+ name: "Set cookie for mismatched and root path",
},
{
cookie: "test=9; Path=/; Path=/qux",
expected: "",
name: "No cookie returned for root and mismatched path",
- defaultPath: false
+ defaultPath: false,
},
{
cookie: "test=10; Path=/lol; Path=/qux",
expected: "",
name: "No cookie returned for multiple mismatched paths",
- defaultPath: false
+ defaultPath: false,
+ },
+ {
+ cookie: ["testA=11; path=/", "testB=11; path=/cookies/attributes"],
+ expected: "testB=11; testA=11",
+ name: "Return 2 cookies sorted by matching path length (earlier name with shorter path set first)",
+ defaultPath: false,
+ },
+ {
+ cookie: ["testB=12; path=/", "testA=12; path=/cookies/attributes"],
+ expected: "testA=12; testB=12",
+ name: "Return 2 cookies sorted by matching path length (later name with shorter path set first)",
+ defaultPath: false,
+ },
+ {
+ cookie: ["testA=13; path=/cookies/attributes", "testB=13; path=/"],
+ expected: "testA=13; testB=13",
+ name: "Return 2 cookies sorted by matching path length (earlier name with longer path set first)",
+ defaultPath: false,
+ },
+ {
+ cookie: ["testB=14; path=/cookies/attributes", "testA=14; path=/"],
+ expected: "testB=14; testA=14",
+ name: "Return 2 cookies sorted by matching path length (later name with longer path set first)",
+ defaultPath: false,
+ },
+ {
+ cookie: ["test=15; path=/cookies/attributes/foo"],
+ expected: "",
+ name: "No cookie returned for partial path match",
+ defaultPath: false,
+ },
+ {
+ cookie: ["test=16", "test=0; path=/cookies/attributes/foo"],
+ expected: "test=16",
+ name: "No cookie returned for partial path match, return cookie for default path",
+ },
+ {
+ cookie: ["test=17; path= /"],
+ expected: "test=17",
+ name: "Return cookie for path= / (whitespace after equals)",
+ },
+ {
+ cookie: ["test=18; path=/cookies/ATTRIBUTES"],
+ expected: "",
+ name: "No cookie returned for case mismatched path",
+ defaultPath: false,
+ },
+ {
+ cookie: ["testA=19; path = /cookies/attributes", "testB=19; path = /book"],
+ expected: "testA=19",
+ name: "Return cookie A on path match, no cookie returned for path mismatch (plus whitespace)",
+ defaultPath: false,
+ },
+ {
+ cookie: ["test=20; path=; path=/dog"],
+ expected: "",
+ name: "No cookie returned for mismatched path (after bare path=)",
+ defaultPath: false,
+ },
+ {
+ cookie: ["test=21; path=/dog; path="],
+ expected: "test=21",
+ name: "Return cookie for bare path= (after mismatched path)",
},
];
diff --git a/tests/wpt/web-platform-tests/cookies/attributes/resources/path-redirect-shared.js b/tests/wpt/web-platform-tests/cookies/attributes/resources/path-redirect-shared.js
new file mode 100644
index 00000000000..83a614117cd
--- /dev/null
+++ b/tests/wpt/web-platform-tests/cookies/attributes/resources/path-redirect-shared.js
@@ -0,0 +1,7 @@
+window.expireCookie = (cookie) => {
+ const cookies = Array.isArray(cookie) ? cookie : [cookie];
+ for (let c of cookies) {
+ document.cookie = c += "; max-age=0";
+ }
+}
+window.getCookies = () => document.cookie; \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/cookies/attributes/resources/path.html b/tests/wpt/web-platform-tests/cookies/attributes/resources/path.html
new file mode 100644
index 00000000000..3c5af1cb205
--- /dev/null
+++ b/tests/wpt/web-platform-tests/cookies/attributes/resources/path.html
@@ -0,0 +1,11 @@
+<!doctype html>
+<html>
+<head>
+ <meta charset=utf-8>
+ <title>helper iframe for matching cookie path redirect tests</title>
+ <meta name=help href="http://tools.ietf.org/html/rfc6265#section-5.1.4">
+</head>
+<body>
+ <script src="/cookies/attributes/resources/path-redirect-shared.js"></script>
+</body>
+</html> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/cookies/attributes/resources/path/one.html b/tests/wpt/web-platform-tests/cookies/attributes/resources/path/one.html
new file mode 100644
index 00000000000..3c5af1cb205
--- /dev/null
+++ b/tests/wpt/web-platform-tests/cookies/attributes/resources/path/one.html
@@ -0,0 +1,11 @@
+<!doctype html>
+<html>
+<head>
+ <meta charset=utf-8>
+ <title>helper iframe for matching cookie path redirect tests</title>
+ <meta name=help href="http://tools.ietf.org/html/rfc6265#section-5.1.4">
+</head>
+<body>
+ <script src="/cookies/attributes/resources/path-redirect-shared.js"></script>
+</body>
+</html> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/cookies/attributes/resources/path/three.html b/tests/wpt/web-platform-tests/cookies/attributes/resources/path/three.html
new file mode 100644
index 00000000000..3c5af1cb205
--- /dev/null
+++ b/tests/wpt/web-platform-tests/cookies/attributes/resources/path/three.html
@@ -0,0 +1,11 @@
+<!doctype html>
+<html>
+<head>
+ <meta charset=utf-8>
+ <title>helper iframe for matching cookie path redirect tests</title>
+ <meta name=help href="http://tools.ietf.org/html/rfc6265#section-5.1.4">
+</head>
+<body>
+ <script src="/cookies/attributes/resources/path-redirect-shared.js"></script>
+</body>
+</html> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/cookies/attributes/resources/path/two.html b/tests/wpt/web-platform-tests/cookies/attributes/resources/path/two.html
new file mode 100644
index 00000000000..3c5af1cb205
--- /dev/null
+++ b/tests/wpt/web-platform-tests/cookies/attributes/resources/path/two.html
@@ -0,0 +1,11 @@
+<!doctype html>
+<html>
+<head>
+ <meta charset=utf-8>
+ <title>helper iframe for matching cookie path redirect tests</title>
+ <meta name=help href="http://tools.ietf.org/html/rfc6265#section-5.1.4">
+</head>
+<body>
+ <script src="/cookies/attributes/resources/path-redirect-shared.js"></script>
+</body>
+</html> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/cookies/attributes/resources/pathfakeout.html b/tests/wpt/web-platform-tests/cookies/attributes/resources/pathfakeout.html
new file mode 100644
index 00000000000..3c5af1cb205
--- /dev/null
+++ b/tests/wpt/web-platform-tests/cookies/attributes/resources/pathfakeout.html
@@ -0,0 +1,11 @@
+<!doctype html>
+<html>
+<head>
+ <meta charset=utf-8>
+ <title>helper iframe for matching cookie path redirect tests</title>
+ <meta name=help href="http://tools.ietf.org/html/rfc6265#section-5.1.4">
+</head>
+<body>
+ <script src="/cookies/attributes/resources/path-redirect-shared.js"></script>
+</body>
+</html> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/cookies/attributes/resources/pathfakeout/one.html b/tests/wpt/web-platform-tests/cookies/attributes/resources/pathfakeout/one.html
new file mode 100644
index 00000000000..3c5af1cb205
--- /dev/null
+++ b/tests/wpt/web-platform-tests/cookies/attributes/resources/pathfakeout/one.html
@@ -0,0 +1,11 @@
+<!doctype html>
+<html>
+<head>
+ <meta charset=utf-8>
+ <title>helper iframe for matching cookie path redirect tests</title>
+ <meta name=help href="http://tools.ietf.org/html/rfc6265#section-5.1.4">
+</head>
+<body>
+ <script src="/cookies/attributes/resources/path-redirect-shared.js"></script>
+</body>
+</html> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/cookies/http-state/path-tests.html b/tests/wpt/web-platform-tests/cookies/http-state/path-tests.html
deleted file mode 100644
index b76360e249c..00000000000
--- a/tests/wpt/web-platform-tests/cookies/http-state/path-tests.html
+++ /dev/null
@@ -1,63 +0,0 @@
-<!doctype html>
-<html>
- <head>
- <meta charset=utf-8>
- <title>Tests basic cookie setting functionality</title>
- <meta name=help href="https://tools.ietf.org/html/rfc6265#page-8">
- <meta name="timeout" content="long">
-
- <script src="/resources/testharness.js"></script>
- <script src="/resources/testharnessreport.js"></script>
- <script src="resources/cookie-http-state-template.js"></script>
- </head>
- <body>
- <div id="log"></div>
- <div id="iframes"></div>
- <script>
- setup({ explicit_timeout: true });
-
- const TEST_CASES = [
- {file: "path0001", name: "path0001"},
- {file: "path0002", name: "path0002"},
- {file: "path0003", name: "path0003"},
- {file: "path0004", name: "path0004"},
- {file: "path0005", name: "path0005"},
- {file: "path0006", name: "path0006"},
- {file: "path0007", name: "path0007"},
- {file: "path0008", name: "path0008"},
- {file: "path0009", name: "path0009"},
- {file: "path0010", name: "path0010"},
- {file: "path0011", name: "path0011"},
- {file: "path0012", name: "path0012"},
- {file: "path0013", name: "path0013"},
- {file: "path0014", name: "path0014"},
- {file: "path0015", name: "path0015"},
- {file: "path0016", name: "path0016"},
- {file: "path0017", name: "path0017"},
- {file: "path0018", name: "path0018"},
- {file: "path0019", name: "path0019"},
- {file: "path0020", name: "path0020"},
- {file: "path0021", name: "path0021"},
- {file: "path0022", name: "path0022"},
- {file: "path0023", name: "path0023"},
- {file: "path0024", name: "path0024"},
- {file: "path0025", name: "path0025"},
- {file: "path0026", name: "path0026"},
- {file: "path0027", name: "path0027"},
- {file: "path0028", name: "path0028"},
- {file: "disabled-path0029", name: "disabled-path0029"},
- {file: "path0029", name: "path0029"},
- {file: "path0030", name: "path0030"},
- {file: "path0031", name: "path0031"},
- {file: "path0032", name: "path0032"},
- ];
-
- for (const i in TEST_CASES) {
- const t = TEST_CASES[i];
- promise_test(createCookieTest(t.file),
- t.file + " - " + t.name);
- }
-
- </script>
- </body>
-</html>
diff --git a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/disabled-path0029-expected b/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/disabled-path0029-expected
deleted file mode 100644
index b14d4f69b58..00000000000
--- a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/disabled-path0029-expected
+++ /dev/null
@@ -1 +0,0 @@
-Cookie: foo=bar
diff --git a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/disabled-path0029-test b/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/disabled-path0029-test
deleted file mode 100644
index d7219d590c6..00000000000
--- a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/disabled-path0029-test
+++ /dev/null
@@ -1,2 +0,0 @@
-Set-Cookie: foo=bar; path=/cookie-parser-result/foo/bar
-Location: /cookie-parser-result/f%6Fo/bar?disabled-path0029
diff --git a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0001-expected b/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0001-expected
deleted file mode 100644
index 785d0a2f5f7..00000000000
--- a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0001-expected
+++ /dev/null
@@ -1 +0,0 @@
-Cookie: x=y; a=b
diff --git a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0001-test b/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0001-test
deleted file mode 100644
index ed81cb955f7..00000000000
--- a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0001-test
+++ /dev/null
@@ -1,2 +0,0 @@
-Set-Cookie: a=b; path=/
-Set-Cookie: x=y; path=/cookie-parser-result
diff --git a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0002-expected b/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0002-expected
deleted file mode 100644
index 2314ba0d495..00000000000
--- a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0002-expected
+++ /dev/null
@@ -1 +0,0 @@
-Cookie: a=b; x=y
diff --git a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0002-test b/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0002-test
deleted file mode 100644
index 22493285185..00000000000
--- a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0002-test
+++ /dev/null
@@ -1,2 +0,0 @@
-Set-Cookie: a=b; path=/cookie-parser-result
-Set-Cookie: x=y; path=/
diff --git a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0003-expected b/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0003-expected
deleted file mode 100644
index 2314ba0d495..00000000000
--- a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0003-expected
+++ /dev/null
@@ -1 +0,0 @@
-Cookie: a=b; x=y
diff --git a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0003-test b/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0003-test
deleted file mode 100644
index e4b5a4b2565..00000000000
--- a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0003-test
+++ /dev/null
@@ -1,2 +0,0 @@
-Set-Cookie: x=y; path=/
-Set-Cookie: a=b; path=/cookie-parser-result
diff --git a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0004-expected b/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0004-expected
deleted file mode 100644
index 785d0a2f5f7..00000000000
--- a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0004-expected
+++ /dev/null
@@ -1 +0,0 @@
-Cookie: x=y; a=b
diff --git a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0004-test b/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0004-test
deleted file mode 100644
index a80ea6ec015..00000000000
--- a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0004-test
+++ /dev/null
@@ -1,2 +0,0 @@
-Set-Cookie: x=y; path=/cookie-parser-result
-Set-Cookie: a=b; path=/
diff --git a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0005-expected b/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0005-expected
deleted file mode 100644
index e69de29bb2d..00000000000
--- a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0005-expected
+++ /dev/null
diff --git a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0005-test b/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0005-test
deleted file mode 100644
index 6447c9164f9..00000000000
--- a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0005-test
+++ /dev/null
@@ -1 +0,0 @@
-Set-Cookie: foo=bar; path=/cookie-parser-result/foo
diff --git a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0006-expected b/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0006-expected
deleted file mode 100644
index b14d4f69b58..00000000000
--- a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0006-expected
+++ /dev/null
@@ -1 +0,0 @@
-Cookie: foo=bar
diff --git a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0006-test b/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0006-test
deleted file mode 100644
index 07ecf27b82b..00000000000
--- a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0006-test
+++ /dev/null
@@ -1,2 +0,0 @@
-Set-Cookie: foo=bar
-Set-Cookie: foo=qux; path=/cookie-parser-result/foo
diff --git a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0007-expected b/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0007-expected
deleted file mode 100644
index b14d4f69b58..00000000000
--- a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0007-expected
+++ /dev/null
@@ -1 +0,0 @@
-Cookie: foo=bar
diff --git a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0007-test b/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0007-test
deleted file mode 100644
index 66a54de7420..00000000000
--- a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0007-test
+++ /dev/null
@@ -1,2 +0,0 @@
-Set-Cookie: foo=bar; path=/cookie-parser-result/foo
-Location: /cookie-parser-result/foo?path0007
diff --git a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0008-expected b/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0008-expected
deleted file mode 100644
index e69de29bb2d..00000000000
--- a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0008-expected
+++ /dev/null
diff --git a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0008-test b/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0008-test
deleted file mode 100644
index b10012d3096..00000000000
--- a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0008-test
+++ /dev/null
@@ -1,2 +0,0 @@
-Set-Cookie: foo=bar; path=/cookie-parser-result/foo
-Location: /cookie-parser-result/bar?path0008
diff --git a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0009-expected b/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0009-expected
deleted file mode 100644
index e69de29bb2d..00000000000
--- a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0009-expected
+++ /dev/null
diff --git a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0009-test b/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0009-test
deleted file mode 100644
index 874f21bad97..00000000000
--- a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0009-test
+++ /dev/null
@@ -1,2 +0,0 @@
-Set-Cookie: foo=bar; path=/cookie-parser-result/foo/qux
-Location: /cookie-parser-result/foo?path0009
diff --git a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0010-expected b/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0010-expected
deleted file mode 100644
index b14d4f69b58..00000000000
--- a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0010-expected
+++ /dev/null
@@ -1 +0,0 @@
-Cookie: foo=bar
diff --git a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0010-test b/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0010-test
deleted file mode 100644
index 0ea62fd5ec5..00000000000
--- a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0010-test
+++ /dev/null
@@ -1,2 +0,0 @@
-Set-Cookie: foo=bar; path=/cookie-parser-result/foo/qux
-Location: /cookie-parser-result/foo/qux?path0010
diff --git a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0011-expected b/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0011-expected
deleted file mode 100644
index e69de29bb2d..00000000000
--- a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0011-expected
+++ /dev/null
diff --git a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0011-test b/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0011-test
deleted file mode 100644
index 35ea0620495..00000000000
--- a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0011-test
+++ /dev/null
@@ -1,2 +0,0 @@
-Set-Cookie: foo=bar; path=/cookie-parser-result/foo/qux
-Location: /cookie-parser-result/bar/qux?path0011
diff --git a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0012-expected b/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0012-expected
deleted file mode 100644
index e69de29bb2d..00000000000
--- a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0012-expected
+++ /dev/null
diff --git a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0012-test b/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0012-test
deleted file mode 100644
index 4c0577897bd..00000000000
--- a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0012-test
+++ /dev/null
@@ -1,2 +0,0 @@
-Set-Cookie: foo=bar; path=/cookie-parser-result/foo/qux
-Location: /cookie-parser-result/foo/baz?path0012
diff --git a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0013-expected b/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0013-expected
deleted file mode 100644
index e69de29bb2d..00000000000
--- a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0013-expected
+++ /dev/null
diff --git a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0013-test b/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0013-test
deleted file mode 100644
index d17b99b6b43..00000000000
--- a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0013-test
+++ /dev/null
@@ -1,2 +0,0 @@
-Set-Cookie: foo=bar; path=/cookie-parser-result/foo/qux/
-Location: /cookie-parser-result/foo/baz?path0013
diff --git a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0014-expected b/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0014-expected
deleted file mode 100644
index e69de29bb2d..00000000000
--- a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0014-expected
+++ /dev/null
diff --git a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0014-test b/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0014-test
deleted file mode 100644
index a953e707b3b..00000000000
--- a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0014-test
+++ /dev/null
@@ -1,2 +0,0 @@
-Set-Cookie: foo=bar; path=/cookie-parser-result/foo/qux/
-Location: /cookie-parser-result/foo/qux?path0014
diff --git a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0015-expected b/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0015-expected
deleted file mode 100644
index b14d4f69b58..00000000000
--- a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0015-expected
+++ /dev/null
@@ -1 +0,0 @@
-Cookie: foo=bar
diff --git a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0015-test b/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0015-test
deleted file mode 100644
index 253a9bb2fcd..00000000000
--- a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0015-test
+++ /dev/null
@@ -1,2 +0,0 @@
-Set-Cookie: foo=bar; path=/cookie-parser-result/foo/qux/
-Location: /cookie-parser-result/foo/qux/?path0015
diff --git a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0016-expected b/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0016-expected
deleted file mode 100644
index b14d4f69b58..00000000000
--- a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0016-expected
+++ /dev/null
@@ -1 +0,0 @@
-Cookie: foo=bar
diff --git a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0016-test b/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0016-test
deleted file mode 100644
index 433faeb9120..00000000000
--- a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0016-test
+++ /dev/null
@@ -1,2 +0,0 @@
-Set-Cookie: foo=bar; path=/cookie-parser-result/foo/
-Location: /cookie-parser-result/foo/qux?path0016
diff --git a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0017-expected b/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0017-expected
deleted file mode 100644
index b14d4f69b58..00000000000
--- a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0017-expected
+++ /dev/null
@@ -1 +0,0 @@
-Cookie: foo=bar
diff --git a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0017-test b/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0017-test
deleted file mode 100644
index a602d7ca6fe..00000000000
--- a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0017-test
+++ /dev/null
@@ -1,2 +0,0 @@
-Set-Cookie: foo=bar; path=/cookie-parser-result/foo/
-Location: /cookie-parser-result/foo//qux?path0017
diff --git a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0018-expected b/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0018-expected
deleted file mode 100644
index e69de29bb2d..00000000000
--- a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0018-expected
+++ /dev/null
diff --git a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0018-test b/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0018-test
deleted file mode 100644
index 37040dac5d3..00000000000
--- a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0018-test
+++ /dev/null
@@ -1,2 +0,0 @@
-Set-Cookie: foo=bar; path=/cookie-parser-result/foo/
-Location: /cookie-parser-result/fooqux?path0018
diff --git a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0019-expected b/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0019-expected
deleted file mode 100644
index b14d4f69b58..00000000000
--- a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0019-expected
+++ /dev/null
@@ -1 +0,0 @@
-Cookie: foo=bar
diff --git a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0019-test b/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0019-test
deleted file mode 100644
index 6d498600a2f..00000000000
--- a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0019-test
+++ /dev/null
@@ -1 +0,0 @@
-Set-Cookie: foo=bar; path
diff --git a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0020-expected b/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0020-expected
deleted file mode 100644
index b14d4f69b58..00000000000
--- a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0020-expected
+++ /dev/null
@@ -1 +0,0 @@
-Cookie: foo=bar
diff --git a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0020-test b/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0020-test
deleted file mode 100644
index 603eded7ebd..00000000000
--- a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0020-test
+++ /dev/null
@@ -1 +0,0 @@
-Set-Cookie: foo=bar; path=
diff --git a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0021-expected b/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0021-expected
deleted file mode 100644
index b14d4f69b58..00000000000
--- a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0021-expected
+++ /dev/null
@@ -1 +0,0 @@
-Cookie: foo=bar
diff --git a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0021-test b/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0021-test
deleted file mode 100644
index 4577c510a42..00000000000
--- a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0021-test
+++ /dev/null
@@ -1 +0,0 @@
-Set-Cookie: foo=bar; path=/
diff --git a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0022-expected b/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0022-expected
deleted file mode 100644
index b14d4f69b58..00000000000
--- a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0022-expected
+++ /dev/null
@@ -1 +0,0 @@
-Cookie: foo=bar
diff --git a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0022-test b/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0022-test
deleted file mode 100644
index 4aade9e0145..00000000000
--- a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0022-test
+++ /dev/null
@@ -1 +0,0 @@
-Set-Cookie: foo=bar; path= /
diff --git a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0023-expected b/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0023-expected
deleted file mode 100644
index e69de29bb2d..00000000000
--- a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0023-expected
+++ /dev/null
diff --git a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0023-test b/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0023-test
deleted file mode 100644
index f14d683df97..00000000000
--- a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0023-test
+++ /dev/null
@@ -1 +0,0 @@
-Set-Cookie: foo=bar; Path=/cookie-PARSER-result
diff --git a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0024-expected b/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0024-expected
deleted file mode 100644
index e69de29bb2d..00000000000
--- a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0024-expected
+++ /dev/null
diff --git a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0024-test b/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0024-test
deleted file mode 100644
index 18a71c875b4..00000000000
--- a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0024-test
+++ /dev/null
@@ -1,2 +0,0 @@
-Set-Cookie: foo=bar; path=/cookie-parser-result/foo/qux?
-Location: /cookie-parser-result/foo/qux?path0024
diff --git a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0025-expected b/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0025-expected
deleted file mode 100644
index e69de29bb2d..00000000000
--- a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0025-expected
+++ /dev/null
diff --git a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0025-test b/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0025-test
deleted file mode 100644
index b6c497b9715..00000000000
--- a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0025-test
+++ /dev/null
@@ -1,2 +0,0 @@
-Set-Cookie: foo=bar; path=/cookie-parser-result/foo/qux#
-Location: /cookie-parser-result/foo/qux?path0025
diff --git a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0026-expected b/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0026-expected
deleted file mode 100644
index b14d4f69b58..00000000000
--- a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0026-expected
+++ /dev/null
@@ -1 +0,0 @@
-Cookie: foo=bar
diff --git a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0026-test b/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0026-test
deleted file mode 100644
index ffc3b7a54fa..00000000000
--- a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0026-test
+++ /dev/null
@@ -1,2 +0,0 @@
-Set-Cookie: foo=bar; path=/cookie-parser-result/foo/qux;
-Location: /cookie-parser-result/foo/qux?path0026
diff --git a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0027-expected b/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0027-expected
deleted file mode 100644
index b14d4f69b58..00000000000
--- a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0027-expected
+++ /dev/null
@@ -1 +0,0 @@
-Cookie: foo=bar
diff --git a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0027-test b/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0027-test
deleted file mode 100644
index bd021f33e2c..00000000000
--- a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0027-test
+++ /dev/null
@@ -1,2 +0,0 @@
-Set-Cookie: foo=bar; path="/cookie-parser-result/foo/qux;"
-Location: /cookie-parser-result/foo/qux?path0027
diff --git a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0028-expected b/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0028-expected
deleted file mode 100644
index e69de29bb2d..00000000000
--- a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0028-expected
+++ /dev/null
diff --git a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0028-test b/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0028-test
deleted file mode 100644
index 3bcd6a5c657..00000000000
--- a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0028-test
+++ /dev/null
@@ -1,2 +0,0 @@
-Set-Cookie: foo=bar; path=/cookie-parser-result/f%6Fo/bar
-Location: /cookie-parser-result/foo/bar?path0028
diff --git a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0029-expected b/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0029-expected
deleted file mode 100644
index 1022f64a290..00000000000
--- a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0029-expected
+++ /dev/null
@@ -1 +0,0 @@
-Cookie: a=b
diff --git a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0029-test b/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0029-test
deleted file mode 100644
index 17bd42f4212..00000000000
--- a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0029-test
+++ /dev/null
@@ -1,2 +0,0 @@
-Set-Cookie: a=b; path = /cookie-parser-result
-Set-Cookie: x=y; path = /book
diff --git a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0030-expected b/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0030-expected
deleted file mode 100644
index b14d4f69b58..00000000000
--- a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0030-expected
+++ /dev/null
@@ -1 +0,0 @@
-Cookie: foo=bar
diff --git a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0030-test b/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0030-test
deleted file mode 100644
index e17a2d490b7..00000000000
--- a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0030-test
+++ /dev/null
@@ -1 +0,0 @@
-Set-Cookie: foo=bar; path=/dog; path=
diff --git a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0031-expected b/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0031-expected
deleted file mode 100644
index e69de29bb2d..00000000000
--- a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0031-expected
+++ /dev/null
diff --git a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0031-test b/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0031-test
deleted file mode 100644
index 3b24090b338..00000000000
--- a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0031-test
+++ /dev/null
@@ -1 +0,0 @@
-Set-Cookie: foo=bar; path=; path=/dog
diff --git a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0032-expected b/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0032-expected
deleted file mode 100644
index e7403c4aadc..00000000000
--- a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0032-expected
+++ /dev/null
@@ -1 +0,0 @@
-Cookie: foo=qux; foo=bar
diff --git a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0032-test b/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0032-test
deleted file mode 100644
index db6ceb2ea06..00000000000
--- a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/path0032-test
+++ /dev/null
@@ -1,3 +0,0 @@
-Set-Cookie: foo=bar; path=/cookie-parser-result
-Set-Cookie: foo=qux; path=/cookie-parser-result/
-Location: /cookie-parser-result/dog?path0032
diff --git a/tests/wpt/web-platform-tests/cookies/resources/cookie-test.js b/tests/wpt/web-platform-tests/cookies/resources/cookie-test.js
index c0a03d78355..56e958263d9 100644
--- a/tests/wpt/web-platform-tests/cookies/resources/cookie-test.js
+++ b/tests/wpt/web-platform-tests/cookies/resources/cookie-test.js
@@ -22,11 +22,38 @@ async function getDefaultPathCookies(path = '/cookies/resources') {
});
}
+// getRedirectedCookies is a helper method to get and delete cookies that
+// were set from a Location header redirect.
+async function getRedirectedCookies(location, cookie) {
+ return new Promise((resolve, reject) => {
+ try {
+ const iframe = document.createElement('iframe');
+ iframe.style = 'display: none';
+ iframe.src = `${location}`;
+
+ iframe.addEventListener('load', (e) => {
+ const win = e.target.contentWindow;
+ const iframeCookies = win.getCookies();
+ win.expireCookie(cookie);
+ resolve(iframeCookies);
+ }, {once: true});
+
+ document.documentElement.appendChild(iframe);
+ } catch (e) {
+ reject(e);
+ }
+ });
+}
+
// httpCookieTest sets a |cookie| (via HTTP), then asserts it was or was not set
// via |expectedValue| (via the DOM). Then cleans it up (via HTTP). Most tests
// do not set a Path attribute, so |defaultPath| defaults to true.
+//
+// |cookie| may be a single cookie string, or an array of cookie strings, where
+// the order of the array items represents the order of the Set-Cookie headers
+// sent by the server.
function httpCookieTest(cookie, expectedValue, name, defaultPath = true) {
- let encodedCookie = encodeURIComponent(cookie);
+ let encodedCookie = encodeURIComponent(JSON.stringify(cookie));
return promise_test(
async t => {
return fetch(`/cookies/resources/cookie.py?set=${encodedCookie}`)
@@ -53,3 +80,30 @@ function httpCookieTest(cookie, expectedValue, name, defaultPath = true) {
})},
name);
}
+
+// This is a variation on httpCookieTest, where a redirect happens via
+// the Location header and we check to see if cookies are sent via
+// getRedirectedCookies
+function httpRedirectCookieTest(cookie, expectedValue, name, location) {
+ const encodedCookie = encodeURIComponent(JSON.stringify(cookie));
+ const encodedLocation = encodeURIComponent(location);
+ const setParams = `?set=${encodedCookie}&location=${encodedLocation}`;
+ return promise_test(
+ async t => {
+ return fetch(`/cookies/resources/cookie.py${setParams}`)
+ .then(async () => {
+ // for the tests where a redirect happens, we need to head
+ // to that URI to get the cookies (and then delete them there)
+ const cookies = await getRedirectedCookies(location, cookie);
+ if (Boolean(expectedValue)) {
+ assert_equals(cookies, expectedValue,
+ 'The cookie was set as expected.');
+ } else {
+ assert_equals(cookies, expectedValue, 'The cookie was rejected.');
+ }
+ }).then(() => {
+ return fetch(`/cookies/resources/cookie.py?drop=${encodedCookie}`);
+ })
+ },
+ name);
+}
diff --git a/tests/wpt/web-platform-tests/cookies/resources/cookie.py b/tests/wpt/web-platform-tests/cookies/resources/cookie.py
index 63eedf0b01e..16efcc04aeb 100644
--- a/tests/wpt/web-platform-tests/cookies/resources/cookie.py
+++ b/tests/wpt/web-platform-tests/cookies/resources/cookie.py
@@ -1,14 +1,26 @@
+import json
+
from cookies.resources.helpers import setNoCacheAndCORSHeaders
+from wptserve.utils import isomorphic_decode
from wptserve.utils import isomorphic_encode
+def set_cookie(headers, cookie_string, drop=False):
+ """Helper method to add a Set-Cookie header"""
+ if drop:
+ cookie_string = cookie_string.encode('utf-8') + b'; max-age=0'
+ headers.append((b'Set-Cookie', isomorphic_encode(cookie_string)))
+
def main(request, response):
"""Set or drop a cookie via GET params.
Usage: `/cookie.py?set={cookie}` or `/cookie.py?drop={cookie}`
- The passed-in cookie string should be encoded via encodeURIComponent,
- otherwise `parse_qsl` will split on any semicolons (used by the Request.GET
- property getter).
+ The passed-in cookie string should be stringified via JSON.stringify() (in
+ the case of multiple cookie headers sent in an array) and encoded via
+ encodeURIComponent, otherwise `parse_qsl` will split on any semicolons
+ (used by the Request.GET property getter). Note that values returned by
+ Request.GET will decode any percent-encoded sequences sent in a GET param
+ (which may or may not be surprising depending on what you're doing).
Note: here we don't use Response.delete_cookie() or similar other methods
in this resources directory because there are edge cases that are impossible
@@ -21,13 +33,22 @@ def main(request, response):
try:
if b'drop' in request.GET:
cookie = request.GET[b'drop']
- cookie += b'; max-age=0'
+ cookie = json.loads(cookie)
+ cookies = cookie if isinstance(cookie, list) else [cookie]
+ for c in cookies:
+ set_cookie(headers, c, drop=True)
if b'set' in request.GET:
- cookie = request.GET[b'set']
+ cookie = isomorphic_decode(request.GET[b'set'])
+ cookie = json.loads(cookie)
+ cookies = cookie if isinstance(cookie, list) else [cookie]
+ for c in cookies:
+ set_cookie(headers, c)
+
+ if b'location' in request.GET:
+ headers.append((b'Location', request.GET[b'location']))
+ return 302, headers, b'{"redirect": true}'
- headers.append((b'Set-Cookie', isomorphic_encode(cookie)))
return headers, b'{"success": true}'
except Exception as e:
return 500, headers, bytes({'error': '{}'.format(e)})
-
diff --git a/tests/wpt/web-platform-tests/css/selectors/focus-visible-001.html b/tests/wpt/web-platform-tests/css/selectors/focus-visible-001.html
index 2afcea22d1d..78d79e0b475 100644
--- a/tests/wpt/web-platform-tests/css/selectors/focus-visible-001.html
+++ b/tests/wpt/web-platform-tests/css/selectors/focus-visible-001.html
@@ -11,9 +11,14 @@
<script src="/resources/testdriver-actions.js"></script>
<script src="/resources/testdriver-vendor.js"></script>
<style>
+ @supports not (selector(:focus-visible)) {
+ :focus {
+ background-color: tomato;
+ }
+ }
+
:focus-visible {
- outline: darkgreen dotted 1px; /* fallback for Edge */
- outline: darkgreen auto 5px;
+ outline: darkgreen solid 5px;
}
:focus:not(:focus-visible) {
diff --git a/tests/wpt/web-platform-tests/css/selectors/focus-visible-002.html b/tests/wpt/web-platform-tests/css/selectors/focus-visible-002.html
index 19c937a7abb..703c9c0946c 100644
--- a/tests/wpt/web-platform-tests/css/selectors/focus-visible-002.html
+++ b/tests/wpt/web-platform-tests/css/selectors/focus-visible-002.html
@@ -12,9 +12,14 @@
<script src="/resources/testdriver-actions.js"></script>
<script src="/resources/testdriver-vendor.js"></script>
<style>
+ @supports not (selector(:focus-visible)) {
+ :focus {
+ background-color: tomato;
+ }
+ }
+
:focus-visible {
- outline: darkgreen dotted 1px; /* fallback for Edge */
- outline: darkgreen auto 5px;
+ outline: darkgreen solid 5px;
}
:focus:not(:focus-visible) {
diff --git a/tests/wpt/web-platform-tests/css/selectors/focus-visible-003.html b/tests/wpt/web-platform-tests/css/selectors/focus-visible-003.html
index 4620c1e4114..4d3df3d7b79 100644
--- a/tests/wpt/web-platform-tests/css/selectors/focus-visible-003.html
+++ b/tests/wpt/web-platform-tests/css/selectors/focus-visible-003.html
@@ -11,9 +11,14 @@
<script src="/resources/testdriver-actions.js"></script>
<script src="/resources/testdriver-vendor.js"></script>
<style>
+ @supports not (selector(:focus-visible)) {
+ :focus {
+ outline: red solid 5px;
+ }
+ }
+
:focus-visible {
- outline: red dotted 1px; /* fallback for Edge */
- outline: red auto 5px;
+ outline: red solid 5px;
}
:focus:not(:focus-visible) {
diff --git a/tests/wpt/web-platform-tests/css/selectors/focus-visible-004.html b/tests/wpt/web-platform-tests/css/selectors/focus-visible-004.html
index 1c3fb3fcedd..f4a33111c09 100644
--- a/tests/wpt/web-platform-tests/css/selectors/focus-visible-004.html
+++ b/tests/wpt/web-platform-tests/css/selectors/focus-visible-004.html
@@ -11,9 +11,14 @@
<script src="/resources/testdriver-actions.js"></script>
<script src="/resources/testdriver-vendor.js"></script>
<style>
+ @supports not (selector(:focus-visible)) {
+ :focus {
+ outline: red solid 5px;
+ }
+ }
+
:focus-visible {
- outline: red dotted 1px; /* fallback for Edge */
- outline: red auto 5px;
+ outline: red solid 5px;
}
:focus:not(:focus-visible) {
diff --git a/tests/wpt/web-platform-tests/css/selectors/focus-visible-005.html b/tests/wpt/web-platform-tests/css/selectors/focus-visible-005.html
index b5d58435db1..7983727f80e 100644
--- a/tests/wpt/web-platform-tests/css/selectors/focus-visible-005.html
+++ b/tests/wpt/web-platform-tests/css/selectors/focus-visible-005.html
@@ -10,9 +10,10 @@
<script src="/resources/testdriver.js"></script>
<script src="/resources/testdriver-vendor.js"></script>
<style>
- :focus-visible {
- outline: red dotted 1px; /* fallback for Edge */
- outline: red auto 5px;
+ @supports not (selector(:focus-visible)) {
+ :focus {
+ outline: red solid 5px;
+ }
}
:focus:not(:focus-visible) {
diff --git a/tests/wpt/web-platform-tests/css/selectors/focus-visible-006.html b/tests/wpt/web-platform-tests/css/selectors/focus-visible-006.html
index 12643e6cd44..0383eb841f4 100644
--- a/tests/wpt/web-platform-tests/css/selectors/focus-visible-006.html
+++ b/tests/wpt/web-platform-tests/css/selectors/focus-visible-006.html
@@ -17,9 +17,14 @@
padding: 2px 5px;
}
+ @supports not (selector(:focus-visible)) {
+ :focus {
+ background-color: tomato;
+ }
+ }
+
:focus-visible {
- outline: darkgreen dotted 1px; /* fallback for Edge */
- outline: darkgreen auto 5px;
+ outline: darkgreen solid 5px;
}
:focus:not(:focus-visible) {
@@ -33,7 +38,7 @@
<ol id="instructions">
<li>If the user-agent does not claim to support the <code>:focus-visible</code> pseudo-class then SKIP this test.</li>
<li><strong>Click</strong> the content editable span below to focus it.</li>
- <li>If the element has a red background, then the test result is FAILURE. If the element has a blue outline, then the test result is SUCCESS.</li>
+ <li>If the element has a red background, then the test result is FAILURE. If the element has a green outline, then the test result is SUCCESS.</li>
</ol>
<br />
<div>
diff --git a/tests/wpt/web-platform-tests/css/selectors/focus-visible-007.html b/tests/wpt/web-platform-tests/css/selectors/focus-visible-007.html
index 95a27006e62..9a88a6bb9f0 100644
--- a/tests/wpt/web-platform-tests/css/selectors/focus-visible-007.html
+++ b/tests/wpt/web-platform-tests/css/selectors/focus-visible-007.html
@@ -11,13 +11,11 @@
<script src="/resources/testdriver-vendor.js"></script>
<style>
[data-hadkeydown] :focus-visible {
- outline: darkgreen dotted 1px; /* fallback for Edge */
- outline: darkgreen auto 5px;
+ outline: darkgreen solid 5px;
}
[data-hadmousedown] :focus-visible {
- outline: red dotted 1px; /* fallback for Edge */
- outline: red auto 5px;
+ outline: red solid 5px;
}
[data-hadkeydown] :focus:not(:focus-visible) {
diff --git a/tests/wpt/web-platform-tests/css/selectors/focus-visible-008.html b/tests/wpt/web-platform-tests/css/selectors/focus-visible-008.html
index 75f676f53f3..171530f4119 100644
--- a/tests/wpt/web-platform-tests/css/selectors/focus-visible-008.html
+++ b/tests/wpt/web-platform-tests/css/selectors/focus-visible-008.html
@@ -11,12 +11,18 @@
<script src="/resources/testdriver-actions.js"></script>
<script src="/resources/testdriver-vendor.js"></script>
<style>
+ @supports not (selector(:focus-visible)) {
+ #el:focus {
+ background-color: tomato;
+ }
+ }
+
:focus-visible {
- outline: darkgreen auto 5px;
+ outline: darkgreen solid 5px;
}
#el:focus:not(:focus-visible) {
- background-color: tomato;;
+ background-color: tomato;
outline: 0;
}
</style>
diff --git a/tests/wpt/web-platform-tests/css/selectors/focus-visible-009.html b/tests/wpt/web-platform-tests/css/selectors/focus-visible-009.html
index 4dae6407ada..102c47e9612 100644
--- a/tests/wpt/web-platform-tests/css/selectors/focus-visible-009.html
+++ b/tests/wpt/web-platform-tests/css/selectors/focus-visible-009.html
@@ -8,12 +8,18 @@
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<style>
+ @supports not (selector(:focus-visible)) {
+ #buton:focus {
+ background-color: tomato;
+ }
+ }
+
:focus-visible {
- outline: darkgreen auto 5px;
+ outline: darkgreen solid 5px;
}
#button:focus:not(:focus-visible) {
- background-color: tomato;;
+ background-color: tomato;
outline: 0;
}
</style>
diff --git a/tests/wpt/web-platform-tests/css/selectors/focus-visible-010.html b/tests/wpt/web-platform-tests/css/selectors/focus-visible-010.html
index 00cd7f0b665..9cfc3b8146c 100644
--- a/tests/wpt/web-platform-tests/css/selectors/focus-visible-010.html
+++ b/tests/wpt/web-platform-tests/css/selectors/focus-visible-010.html
@@ -8,8 +8,14 @@
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<style>
+ @supports not (selector(:focus-visible)) {
+ :focus {
+ background-color: tomato;
+ }
+ }
+
:focus-visible {
- outline: darkgreen auto 5px;
+ outline: darkgreen solid 5px;
}
:focus:not(:focus-visible) {
diff --git a/tests/wpt/web-platform-tests/css/selectors/focus-visible-011.html b/tests/wpt/web-platform-tests/css/selectors/focus-visible-011.html
index 0c05c21800d..73c4607fd10 100644
--- a/tests/wpt/web-platform-tests/css/selectors/focus-visible-011.html
+++ b/tests/wpt/web-platform-tests/css/selectors/focus-visible-011.html
@@ -10,12 +10,18 @@
<script src="/resources/testdriver.js"></script>
<script src="/resources/testdriver-vendor.js"></script>
<style>
+ @supports not (selector(:focus-visible)) {
+ #next:focus {
+ background-color: tomato;
+ }
+ }
+
button {
border: 0;
}
#next:focus-visible {
- outline: darkgreen auto 5px;
+ outline: darkgreen solid 5px;
}
#next:focus:not(:focus-visible) {
diff --git a/tests/wpt/web-platform-tests/css/selectors/focus-visible-012.html b/tests/wpt/web-platform-tests/css/selectors/focus-visible-012.html
index a81eef3fb11..2ccb2e67561 100644
--- a/tests/wpt/web-platform-tests/css/selectors/focus-visible-012.html
+++ b/tests/wpt/web-platform-tests/css/selectors/focus-visible-012.html
@@ -11,6 +11,12 @@
<script src="/resources/testdriver-actions.js"></script>
<script src="/resources/testdriver-vendor.js"></script>
<style>
+ @supports not (selector(:focus-visible)) {
+ :focus {
+ background-color: tomato;
+ }
+ }
+
:focus-visible {
outline: 0;
outline-color: tomato;
@@ -18,8 +24,7 @@
}
:focus:not(:focus-visible) {
- outline: darkgreen dotted 1px; /* fallback for Edge */
- outline: darkgreen auto 5px;
+ outline: darkgreen solid 5px;
}
</style>
</head>
diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/css-module/import-css-module-basic.html b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/css-module/import-css-module-basic.html
index 1cb290de3fe..4ca2bb70899 100644
--- a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/css-module/import-css-module-basic.html
+++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/css-module/import-css-module-basic.html
@@ -19,6 +19,20 @@
}, "A CSS Module should load");
async_test(function (test) {
+ // This tests potential streaming compilation of modules in
+ // Chromium that is triggered only for large (32>KiB) files in older
+ // versions.
+ const iframe = document.createElement("iframe");
+ iframe.src = "resources/css-module-basic-large-iframe.html";
+ iframe.onload = test.step_func_done(function () {
+ assert_equals(getComputedStyle(iframe.contentDocument.querySelector('#test'))
+ .backgroundColor, "rgb(255, 0, 0)",
+ "CSS module import should succeed");
+ });
+ document.body.appendChild(iframe);
+ }, "A large CSS Module should load");
+
+ async_test(function (test) {
const iframe = document.createElement("iframe");
iframe.src = "resources/css-module-at-import-iframe.html";
iframe.onload = test.step_func_done(function () {
@@ -41,4 +55,4 @@
document.body.appendChild(iframe);
}, "Malformed CSS should not load");
</script>
-</body> \ No newline at end of file
+</body>
diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/css-module/resources/basic-large.css b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/css-module/resources/basic-large.css
new file mode 100644
index 00000000000..f5b0db5d6ed
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/css-module/resources/basic-large.css
@@ -0,0 +1,7 @@
+#test {
+ background-color:red;
+}
+
+#test:before {
+ content: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
+}
diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/css-module/resources/css-module-basic-large-iframe.html b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/css-module/resources/css-module-basic-large-iframe.html
new file mode 100644
index 00000000000..cc5b660e4cb
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/css-module/resources/css-module-basic-large-iframe.html
@@ -0,0 +1,18 @@
+<!DOCTYPE html>
+<body>
+ <script>
+ window.onerror = function (errorMsg, url, lineNumber, column, errorObj)
+ {
+ document.load_error = errorObj.name;
+ return true;
+ };
+ </script>
+ <script type="module">
+ import v from "./basic-large.css";
+ document.adoptedStyleSheets = [v];
+ </script>
+
+ <div id="test">
+ I am a test div.
+ </div>
+</body>
diff --git a/tests/wpt/web-platform-tests/web-nfc/NDEFReader_scan.https.html b/tests/wpt/web-platform-tests/web-nfc/NDEFReader_scan.https.html
index ba101d67e5d..281f3db5b7b 100644
--- a/tests/wpt/web-platform-tests/web-nfc/NDEFReader_scan.https.html
+++ b/tests/wpt/web-platform-tests/web-nfc/NDEFReader_scan.https.html
@@ -298,6 +298,7 @@ nfc_test(async (t, mockNFC) => {
const promise2 = promise_rejects_dom(t, 'InvalidStateError', ndef.scan());
await promise1;
await promise2;
+ await promise_rejects_dom(t, 'InvalidStateError', ndef.scan());
}, "Test that NDEFReader.scan rejects if there is already an ongoing scan.");
nfc_test(async (t, mockNFC) => {