aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorbors-servo <lbergstrom+bors@mozilla.com>2019-04-18 00:23:38 -0400
committerGitHub <noreply@github.com>2019-04-18 00:23:38 -0400
commit04c93c511b021a1e76512f997992667540657c4e (patch)
treeadef8886d129bb38b7d0b1463bccc83e12d953bb
parenteac2607a06db56a468cae357a9ab0ed6a4945d82 (diff)
parent39f4d8b931cddb42c45161b34241ee679d0f4967 (diff)
downloadservo-04c93c511b021a1e76512f997992667540657c4e.tar.gz
servo-04c93c511b021a1e76512f997992667540657c4e.zip
Auto merge of #23223 - servo-wpt-sync:wpt_update_18-04-2019, r=servo-wpt-sync
Sync WPT with upstream (18-04-2019) Automated downstream sync of changes from upstream as of 18-04-2019. [no-wpt-sync]
-rw-r--r--tests/wpt/metadata/FileAPI/url/url-in-tags-revoke.window.js.ini4
-rw-r--r--tests/wpt/metadata/FileAPI/url/url-with-fetch.any.js.ini3
-rw-r--r--tests/wpt/metadata/MANIFEST.json326
-rw-r--r--tests/wpt/metadata/css/css-fonts/variations/at-font-face-font-matching.html.ini12
-rw-r--r--tests/wpt/metadata/css/css-text/overflow-wrap/overflow-wrap-cluster-001.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-text/overflow-wrap/overflow-wrap-cluster-002.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-text/overflow-wrap/overflow-wrap-normal-keep-all-001.html.ini2
-rw-r--r--tests/wpt/metadata/encoding/single-byte-decoder.html.ini17
-rw-r--r--tests/wpt/metadata/fetch/api/basic/mode-same-origin.any.js.ini6
-rw-r--r--tests/wpt/metadata/fetch/api/basic/referrer.any.js.ini3
-rw-r--r--tests/wpt/metadata/fetch/api/cors/cors-basic.any.js.ini3
-rw-r--r--tests/wpt/metadata/fetch/api/cors/cors-cookies.any.js.ini3
-rw-r--r--tests/wpt/metadata/fetch/api/cors/cors-no-preflight.any.js.ini6
-rw-r--r--tests/wpt/metadata/fetch/api/cors/cors-origin.any.js.ini6
-rw-r--r--tests/wpt/metadata/fetch/api/cors/cors-preflight-not-cors-safelisted.any.js.ini3
-rw-r--r--tests/wpt/metadata/fetch/api/cors/cors-preflight-redirect.any.js.ini3
-rw-r--r--tests/wpt/metadata/fetch/api/cors/cors-preflight-referrer.any.js.ini3
-rw-r--r--tests/wpt/metadata/fetch/api/cors/cors-preflight-star.any.js.ini3
-rw-r--r--tests/wpt/metadata/fetch/api/cors/cors-preflight-status.any.js.ini3
-rw-r--r--tests/wpt/metadata/fetch/api/cors/cors-preflight.any.js.ini3
-rw-r--r--tests/wpt/metadata/fetch/api/cors/cors-redirect-credentials.any.js.ini6
-rw-r--r--tests/wpt/metadata/fetch/api/cors/cors-redirect-preflight.any.js.ini6
-rw-r--r--tests/wpt/metadata/fetch/api/cors/cors-redirect.any.js.ini3
-rw-r--r--tests/wpt/metadata/fetch/api/redirect/redirect-back-to-original-origin.any.js.ini3
-rw-r--r--tests/wpt/metadata/fetch/api/redirect/redirect-mode.any.js.ini1
-rw-r--r--tests/wpt/metadata/fetch/api/redirect/redirect-origin.any.js.ini6
-rw-r--r--tests/wpt/metadata/fetch/api/redirect/redirect-referrer.any.js.ini3
-rw-r--r--tests/wpt/metadata/fetch/api/redirect/redirect-to-dataurl.any.js.ini6
-rw-r--r--tests/wpt/metadata/fetch/content-type/response.window.js.ini9
-rw-r--r--tests/wpt/metadata/fetch/cross-origin-resource-policy/fetch.https.any.js.ini3
-rw-r--r--tests/wpt/metadata/fetch/cross-origin-resource-policy/syntax.any.js.ini6
-rw-r--r--tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini3
-rw-r--r--tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-abort/javascript-url-abort-return-value-string.tentative.html.ini4
-rw-r--r--tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-abort/javascript-url-abort-return-value-undefined.tentative.html.ini5
-rw-r--r--tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini4
-rw-r--r--tests/wpt/metadata/html/semantics/scripting-1/the-script-element/script-onerror-insertion-point-2.html.ini2
-rw-r--r--tests/wpt/metadata/referrer-policy/css-integration/svg/processing-instruction.html.ini7
-rw-r--r--tests/wpt/metadata/resource-timing/crossorigin-sandwich-TAO.sub.html.ini5
-rw-r--r--tests/wpt/metadata/resource-timing/crossorigin-sandwich-no-TAO.sub.html.ini5
-rw-r--r--tests/wpt/metadata/webaudio/the-audio-api/the-analysernode-interface/realtimeanalyser-fft-scaling.html.ini1
-rw-r--r--tests/wpt/web-platform-tests/animation-worklet/worklet-animation-play.https.html (renamed from tests/wpt/web-platform-tests/animation-worklet/animator-animate.https.html)24
-rw-r--r--tests/wpt/web-platform-tests/clipboard-apis/async-interfaces.https.html2
-rw-r--r--tests/wpt/web-platform-tests/clipboard-apis/async-navigator-clipboard-basics.https.html28
-rw-r--r--tests/wpt/web-platform-tests/clipboard-apis/async-write-blobs-read-blobs-manual.https.html21
-rw-r--r--tests/wpt/web-platform-tests/clipboard-apis/async-write-blobtext-read-blobtext-manual.https.html18
-rw-r--r--tests/wpt/web-platform-tests/clipboard-apis/async-write-blobtext-read-text-manual.https.html10
-rw-r--r--tests/wpt/web-platform-tests/clipboard-apis/async-write-image-read-image-manual.https.html19
-rw-r--r--tests/wpt/web-platform-tests/clipboard-apis/async-write-text-read-blobtext-manual.https.html16
-rw-r--r--tests/wpt/web-platform-tests/clipboard-apis/async-write-text-read-text-manual.https.html1
-rw-r--r--tests/wpt/web-platform-tests/clipboard-apis/clipboard-item.https.html78
-rw-r--r--tests/wpt/web-platform-tests/common/get-host-info.sub.js5
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/overflow-wrap/overflow-wrap-cluster-001.html22
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/overflow-wrap/overflow-wrap-cluster-002.html22
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/overflow-wrap/overflow-wrap-normal-keep-all-001.html18
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/overflow-wrap/reference/overflow-wrap-cluster-001-ref.html17
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/overflow-wrap/reference/overflow-wrap-normal-keep-all-001-ref.html7
-rw-r--r--tests/wpt/web-platform-tests/feature-policy/feature-policy-for-sandbox/resources/helper.js4
-rw-r--r--tests/wpt/web-platform-tests/interfaces/wake-lock.idl9
-rw-r--r--tests/wpt/web-platform-tests/interfaces/webxr.idl20
-rw-r--r--tests/wpt/web-platform-tests/mathml/presentation-markup/operators/mo-paint-lspace-rspace.html2
-rw-r--r--tests/wpt/web-platform-tests/mathml/relations/html5-tree/required-extensions-1.html12
-rw-r--r--tests/wpt/web-platform-tests/native-file-system/FileSystemBaseHandle-copyTo.tentative.window.js72
-rw-r--r--tests/wpt/web-platform-tests/native-file-system/FileSystemBaseHandle-moveTo.tentative.window.js72
-rw-r--r--tests/wpt/web-platform-tests/native-file-system/FileSystemBaseHandle-remove.tentative.window.js41
-rw-r--r--tests/wpt/web-platform-tests/native-file-system/FileSystemDirectoryHandle-getDirectory.tentative.window.js57
-rw-r--r--tests/wpt/web-platform-tests/native-file-system/FileSystemDirectoryHandle-getFile.tentative.window.js62
-rw-r--r--tests/wpt/web-platform-tests/native-file-system/FileSystemWriter.tentative.window.js96
-rw-r--r--tests/wpt/web-platform-tests/native-file-system/README.md2
-rw-r--r--tests/wpt/web-platform-tests/native-file-system/resources/test-helpers.js67
-rw-r--r--tests/wpt/web-platform-tests/resource-timing/crossorigin-sandwich-TAO.sub.html46
-rw-r--r--tests/wpt/web-platform-tests/resource-timing/crossorigin-sandwich-no-TAO.sub.html45
-rw-r--r--tests/wpt/web-platform-tests/resource-timing/resources/multi_redirect.py20
-rw-r--r--tests/wpt/web-platform-tests/resources/chromium/image_capture.mojom.js12
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/requirements.txt2
-rw-r--r--tests/wpt/web-platform-tests/webxr/xrDevice_requestSession_immersive.https.html2
-rw-r--r--tests/wpt/web-platform-tests/webxr/xrDevice_requestSession_immersive_no_gesture.https.html2
-rw-r--r--tests/wpt/web-platform-tests/webxr/xrDevice_requestSession_immersive_unsupported.https.html2
-rw-r--r--tests/wpt/web-platform-tests/webxr/xrDevice_requestSession_no_mode.https.html22
-rw-r--r--tests/wpt/web-platform-tests/webxr/xrDevice_requestSession_non_immersive_no_gesture.https.html4
-rw-r--r--tests/wpt/web-platform-tests/webxr/xrFrame_getPose.https.html6
-rw-r--r--tests/wpt/web-platform-tests/webxr/xrFrame_lifetime.https.html7
-rw-r--r--tests/wpt/web-platform-tests/webxr/xrRigidTransform_constructor.https.html3
-rw-r--r--tests/wpt/web-platform-tests/webxr/xrRigidTransform_inverse.https.html3
-rw-r--r--tests/wpt/web-platform-tests/webxr/xrSession_cancelAnimationFrame.https.html7
-rw-r--r--tests/wpt/web-platform-tests/webxr/xrSession_cancelAnimationFrame_invalidhandle.https.html7
-rw-r--r--tests/wpt/web-platform-tests/webxr/xrSession_end.https.html7
-rw-r--r--tests/wpt/web-platform-tests/webxr/xrSession_identity_referenceSpace.https.html7
-rw-r--r--tests/wpt/web-platform-tests/webxr/xrSession_mode.https.html2
-rw-r--r--tests/wpt/web-platform-tests/webxr/xrSession_prevent_multiple_exclusive.https.html6
-rw-r--r--tests/wpt/web-platform-tests/webxr/xrSession_requestAnimationFrame_callback_calls.https.html7
-rw-r--r--tests/wpt/web-platform-tests/webxr/xrSession_requestAnimationFrame_data_valid.https.html3
-rw-r--r--tests/wpt/web-platform-tests/webxr/xrSession_requestAnimationFrame_getViewerPose.https.html7
-rw-r--r--tests/wpt/web-platform-tests/webxr/xrSession_requestReferenceSpace.https.html7
-rw-r--r--tests/wpt/web-platform-tests/webxr/xrSession_transfer_outputContext.https.html4
94 files changed, 1332 insertions, 233 deletions
diff --git a/tests/wpt/metadata/FileAPI/url/url-in-tags-revoke.window.js.ini b/tests/wpt/metadata/FileAPI/url/url-in-tags-revoke.window.js.ini
index 76b398963ae..dd4ffcf4345 100644
--- a/tests/wpt/metadata/FileAPI/url/url-in-tags-revoke.window.js.ini
+++ b/tests/wpt/metadata/FileAPI/url/url-in-tags-revoke.window.js.ini
@@ -1,5 +1,4 @@
[url-in-tags-revoke.window.html]
- expected: TIMEOUT
[Fetching a blob URL immediately before revoking it works in an iframe.]
expected: FAIL
@@ -15,6 +14,3 @@
[Opening a blob URL in a new window by clicking an <a> tag works immediately before revoking the URL.]
expected: FAIL
- [Fetching a blob URL immediately before revoking it works in <script> tags.]
- expected: TIMEOUT
-
diff --git a/tests/wpt/metadata/FileAPI/url/url-with-fetch.any.js.ini b/tests/wpt/metadata/FileAPI/url/url-with-fetch.any.js.ini
index 3b874fc1748..3a3d15b8406 100644
--- a/tests/wpt/metadata/FileAPI/url/url-with-fetch.any.js.ini
+++ b/tests/wpt/metadata/FileAPI/url/url-with-fetch.any.js.ini
@@ -14,6 +14,9 @@
[Revoke blob URL after creating Request, will fetch]
expected: FAIL
+ [Revoke blob URL after calling fetch, fetch should succeed]
+ expected: FAIL
+
[url-with-fetch.any.html]
[Untitled]
diff --git a/tests/wpt/metadata/MANIFEST.json b/tests/wpt/metadata/MANIFEST.json
index 42a7cf5df6e..819e9f8f8f4 100644
--- a/tests/wpt/metadata/MANIFEST.json
+++ b/tests/wpt/metadata/MANIFEST.json
@@ -142529,6 +142529,30 @@
{}
]
],
+ "css/css-text/overflow-wrap/overflow-wrap-cluster-001.html": [
+ [
+ "css/css-text/overflow-wrap/overflow-wrap-cluster-001.html",
+ [
+ [
+ "/css/css-text/overflow-wrap/reference/overflow-wrap-cluster-001-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-text/overflow-wrap/overflow-wrap-cluster-002.html": [
+ [
+ "css/css-text/overflow-wrap/overflow-wrap-cluster-002.html",
+ [
+ [
+ "/css/css-text/overflow-wrap/reference/overflow-wrap-cluster-001-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"css/css-text/overflow-wrap/overflow-wrap-min-content-size-001.html": [
[
"css/css-text/overflow-wrap/overflow-wrap-min-content-size-001.html",
@@ -142577,6 +142601,18 @@
{}
]
],
+ "css/css-text/overflow-wrap/overflow-wrap-normal-keep-all-001.html": [
+ [
+ "css/css-text/overflow-wrap/overflow-wrap-normal-keep-all-001.html",
+ [
+ [
+ "/css/css-text/overflow-wrap/reference/overflow-wrap-normal-keep-all-001-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"css/css-text/overflow-wrap/word-wrap-001.html": [
[
"css/css-text/overflow-wrap/word-wrap-001.html",
@@ -275451,6 +275487,11 @@
{}
]
],
+ "css/css-text/overflow-wrap/reference/overflow-wrap-cluster-001-ref.html": [
+ [
+ {}
+ ]
+ ],
"css/css-text/overflow-wrap/reference/overflow-wrap-min-content-size-001-ref.html": [
[
{}
@@ -275471,6 +275512,11 @@
{}
]
],
+ "css/css-text/overflow-wrap/reference/overflow-wrap-normal-keep-all-001-ref.html": [
+ [
+ {}
+ ]
+ ],
"css/css-text/shaping/reference/shaping-000-ref.html": [
[
{}
@@ -308411,6 +308457,16 @@
{}
]
],
+ "native-file-system/README.md": [
+ [
+ {}
+ ]
+ ],
+ "native-file-system/resources/test-helpers.js": [
+ [
+ {}
+ ]
+ ],
"navigation-timing/META.yml": [
[
{}
@@ -346817,12 +346873,6 @@
{}
]
],
- "animation-worklet/animator-animate.https.html": [
- [
- "animation-worklet/animator-animate.https.html",
- {}
- ]
- ],
"animation-worklet/animator-with-options.https.html": [
[
"animation-worklet/animator-with-options.https.html",
@@ -346921,6 +346971,12 @@
{}
]
],
+ "animation-worklet/worklet-animation-play.https.html": [
+ [
+ "animation-worklet/worklet-animation-play.https.html",
+ {}
+ ]
+ ],
"animation-worklet/worklet-animation-with-fill-mode.https.html": [
[
"animation-worklet/worklet-animation-with-fill-mode.https.html",
@@ -348936,6 +348992,12 @@
{}
]
],
+ "clipboard-apis/clipboard-item.https.html": [
+ [
+ "clipboard-apis/clipboard-item.https.html",
+ {}
+ ]
+ ],
"compat/css-style-declaration-alias-enumeration.html": [
[
"compat/css-style-declaration-alias-enumeration.html",
@@ -400777,12 +400839,6 @@
}
]
],
- "mathml/relations/html5-tree/required-extensions-1.html": [
- [
- "mathml/relations/html5-tree/required-extensions-1.html",
- {}
- ]
- ],
"mathml/relations/html5-tree/unique-identifier-2.html": [
[
"mathml/relations/html5-tree/unique-identifier-2.html",
@@ -404591,6 +404647,84 @@
}
]
],
+ "native-file-system/FileSystemBaseHandle-copyTo.tentative.window.js": [
+ [
+ "native-file-system/FileSystemBaseHandle-copyTo.tentative.window.html",
+ {
+ "script_metadata": [
+ [
+ "script",
+ "resources/test-helpers.js"
+ ]
+ ]
+ }
+ ]
+ ],
+ "native-file-system/FileSystemBaseHandle-moveTo.tentative.window.js": [
+ [
+ "native-file-system/FileSystemBaseHandle-moveTo.tentative.window.html",
+ {
+ "script_metadata": [
+ [
+ "script",
+ "resources/test-helpers.js"
+ ]
+ ]
+ }
+ ]
+ ],
+ "native-file-system/FileSystemBaseHandle-remove.tentative.window.js": [
+ [
+ "native-file-system/FileSystemBaseHandle-remove.tentative.window.html",
+ {
+ "script_metadata": [
+ [
+ "script",
+ "resources/test-helpers.js"
+ ]
+ ]
+ }
+ ]
+ ],
+ "native-file-system/FileSystemDirectoryHandle-getDirectory.tentative.window.js": [
+ [
+ "native-file-system/FileSystemDirectoryHandle-getDirectory.tentative.window.html",
+ {
+ "script_metadata": [
+ [
+ "script",
+ "resources/test-helpers.js"
+ ]
+ ]
+ }
+ ]
+ ],
+ "native-file-system/FileSystemDirectoryHandle-getFile.tentative.window.js": [
+ [
+ "native-file-system/FileSystemDirectoryHandle-getFile.tentative.window.html",
+ {
+ "script_metadata": [
+ [
+ "script",
+ "resources/test-helpers.js"
+ ]
+ ]
+ }
+ ]
+ ],
+ "native-file-system/FileSystemWriter.tentative.window.js": [
+ [
+ "native-file-system/FileSystemWriter.tentative.window.html",
+ {
+ "script_metadata": [
+ [
+ "script",
+ "resources/test-helpers.js"
+ ]
+ ]
+ }
+ ]
+ ],
"navigation-timing/dom_interactive_image_document.html": [
[
"navigation-timing/dom_interactive_image_document.html",
@@ -427034,6 +427168,18 @@
{}
]
],
+ "resource-timing/crossorigin-sandwich-TAO.sub.html": [
+ [
+ "resource-timing/crossorigin-sandwich-TAO.sub.html",
+ {}
+ ]
+ ],
+ "resource-timing/crossorigin-sandwich-no-TAO.sub.html": [
+ [
+ "resource-timing/crossorigin-sandwich-no-TAO.sub.html",
+ {}
+ ]
+ ],
"resource-timing/document-domain-no-impact-loader.sub.html": [
[
"resource-timing/document-domain-no-impact-loader.sub.html",
@@ -449682,6 +449828,12 @@
{}
]
],
+ "webxr/xrDevice_requestSession_no_mode.https.html": [
+ [
+ "webxr/xrDevice_requestSession_no_mode.https.html",
+ {}
+ ]
+ ],
"webxr/xrDevice_requestSession_non_immersive_no_gesture.https.html": [
[
"webxr/xrDevice_requestSession_non_immersive_no_gesture.https.html",
@@ -482449,10 +482601,6 @@
"415f39440156e0c3906799869662f65e19ceef38",
"testharness"
],
- "animation-worklet/animator-animate.https.html": [
- "2ac25498bceb06180e5e1d0eefc243e9e85aab31",
- "testharness"
- ],
"animation-worklet/animator-with-options.https.html": [
"975c57f03847025e7a53c74bcc4bc10ecf99c996",
"testharness"
@@ -482549,6 +482697,10 @@
"417db9e37a61193a99908648e4cbc3be4c2e9618",
"testharness"
],
+ "animation-worklet/worklet-animation-play.https.html": [
+ "038cd74aab06d11352ad4235263b23978a8b863e",
+ "testharness"
+ ],
"animation-worklet/worklet-animation-set-keyframes-ref.html": [
"26bf33fdb403877f2e3adf9b8bb3fca6bf8301bb",
"support"
@@ -485842,41 +485994,45 @@
"support"
],
"clipboard-apis/async-interfaces.https.html": [
- "e0d0977959b5dbe943005587c1442de451d9a18d",
+ "e19c958f975d7967b8028a13d6901bdbd2ab4553",
"testharness"
],
"clipboard-apis/async-navigator-clipboard-basics.https.html": [
- "b71b43efe064c3fba60c6922c09da7e835398903",
+ "706093af61314dc0de57ff8fa5415011c13089ee",
"testharness"
],
"clipboard-apis/async-write-blobs-read-blobs-manual.https.html": [
- "57cf542ca77bc648d4a839e21775957f287ec60f",
+ "b5f0f3d9dc13d2b67264b3a61b9f0f8be0cd6ecd",
"manual"
],
"clipboard-apis/async-write-blobtext-read-blobtext-manual.https.html": [
- "fded721f9bfa1a9efd9e42b05b4ddcc40a3b8e48",
+ "b374333ca944a5a675f71678f1f30f1216a100d1",
"manual"
],
"clipboard-apis/async-write-blobtext-read-text-manual.https.html": [
- "98ff7c27b667182432d744edcdbdfc5ca36dabb0",
+ "2d78b2f186e3c761549b578555f3ac6c15145221",
"manual"
],
"clipboard-apis/async-write-image-read-image-manual.https.html": [
- "6c326cf8ddeaa8777ef6b41d6bc9e4c32282a5c3",
+ "351e74bd74568b4c221cd60c145c2681e1dc6ed5",
"manual"
],
"clipboard-apis/async-write-text-read-blobtext-manual.https.html": [
- "ab85a6fc649e6a6c7a86127adb1a41845324f3ff",
+ "4f9fe25bca588d47d4d4d045a8fa3afe0cd44314",
"manual"
],
"clipboard-apis/async-write-text-read-text-manual.https.html": [
- "25c7edb43f061552717459caf6d4df969383e84c",
+ "48e5adb51d249b0846398a5a742c430809972e87",
"manual"
],
"clipboard-apis/clipboard-events-synthetic.html": [
"fa40d8c20038c5a9c2cc09fe7dcfb1568de58be2",
"testharness"
],
+ "clipboard-apis/clipboard-item.https.html": [
+ "9218ee299e2b66a3bd7e70b6ac58c6cb26fdfaac",
+ "testharness"
+ ],
"clipboard-apis/copy-event-manual.html": [
"6f687af196fa198cda7d83f468945f9f69330568",
"manual"
@@ -485994,7 +486150,7 @@
"support"
],
"common/get-host-info.sub.js": [
- "743bec18ec26279dc2e83dba664873e4babbf6c3",
+ "595a539f1953db41ff828abfc383c030ba58baac",
"support"
],
"common/get-host-info.sub.js.headers": [
@@ -605729,6 +605885,14 @@
"39426d0420287a730dcac47696bd69520e8a6b72",
"testharness"
],
+ "css/css-text/overflow-wrap/overflow-wrap-cluster-001.html": [
+ "7911a1b214c04490e16418e71ff733f8f228b45c",
+ "reftest"
+ ],
+ "css/css-text/overflow-wrap/overflow-wrap-cluster-002.html": [
+ "bd5c9a60d87aaff978d45c31fe9cfd51cc8823e9",
+ "reftest"
+ ],
"css/css-text/overflow-wrap/overflow-wrap-min-content-size-001.html": [
"608d4853a2425d9b4157bbe331fd78763985cecd",
"reftest"
@@ -605745,6 +605909,10 @@
"7ee2b344f7fdee15b05e590ff93a23c04cf63ffc",
"reftest"
],
+ "css/css-text/overflow-wrap/overflow-wrap-normal-keep-all-001.html": [
+ "8047aba133af1e4ece4b66fffcec48fa853da386",
+ "reftest"
+ ],
"css/css-text/overflow-wrap/reference/overflow-wrap-break-word-001-ref.html": [
"0e0300a72dc920a5ffb54cda6fbe84a2f517d010",
"support"
@@ -605765,6 +605933,10 @@
"0264bcf322f4a6f9af451ffd6bed6e0fbdc46ef2",
"support"
],
+ "css/css-text/overflow-wrap/reference/overflow-wrap-cluster-001-ref.html": [
+ "5a00d7284b2b8d3c592340819599e83f0bf4c216",
+ "support"
+ ],
"css/css-text/overflow-wrap/reference/overflow-wrap-min-content-size-001-ref.html": [
"99d964777c663fb8ca37be00c162ddfbb82951c9",
"support"
@@ -605781,6 +605953,10 @@
"c37f3f107841a33afd891a7f39433146ab4704cc",
"support"
],
+ "css/css-text/overflow-wrap/reference/overflow-wrap-normal-keep-all-001-ref.html": [
+ "f0b41134fa0b84e6fce29ed5596598a358b2c2a9",
+ "support"
+ ],
"css/css-text/overflow-wrap/word-wrap-001.html": [
"af326a6cdf2d02aa51e6eccfd11b90fcc4c16456",
"reftest"
@@ -646150,7 +646326,7 @@
"testharness"
],
"feature-policy/feature-policy-for-sandbox/resources/helper.js": [
- "09a8aa7846cd724e203bb12ce9a014662d01ea0d",
+ "9de8416535613fc1d46396953750cc9ab6a7990b",
"support"
],
"feature-policy/feature-policy-for-sandbox/resources/opened_window.html": [
@@ -670022,7 +670198,7 @@
"support"
],
"interfaces/wake-lock.idl": [
- "4c11b695f49986e7e9852348f21fe9bd5e68d185",
+ "c0d4bc9c239aae45d48924ef79c6fe354bbe7204",
"support"
],
"interfaces/wasm-js-api.idl": [
@@ -670094,7 +670270,7 @@
"support"
],
"interfaces/webxr.idl": [
- "edd7e73fd6f00a6bdbac7869b392db42993b1ea2",
+ "6a45597594631eb458c459e3d8bf6cca43fbd06c",
"support"
],
"interfaces/worklets.idl": [
@@ -670854,7 +671030,7 @@
"support"
],
"mathml/presentation-markup/operators/mo-paint-lspace-rspace.html": [
- "66df88264d191d91234364aebaa33c849e0217b5",
+ "879962c4776181b6bb505d1e0072b5f5e58b667e",
"reftest"
],
"mathml/presentation-markup/radicals/root-parameters-1.html": [
@@ -671193,10 +671369,6 @@
"1feb8317ff12252bc131dd7368c8162b79a0d803",
"reftest"
],
- "mathml/relations/html5-tree/required-extensions-1.html": [
- "3dd7f168ec1e2d61e7b98d8987b94050babe5bb0",
- "testharness"
- ],
"mathml/relations/html5-tree/required-extensions-2-ref.html": [
"dcc5b2b7d337e769299df17a0eacafddc92665c6",
"support"
@@ -674997,6 +675169,38 @@
"0d9137dc6fb91b1499d922e01d6ad96049f5757b",
"testharness"
],
+ "native-file-system/FileSystemBaseHandle-copyTo.tentative.window.js": [
+ "2019024363ab5f4c17b3d8a8cef3eddf9008c948",
+ "testharness"
+ ],
+ "native-file-system/FileSystemBaseHandle-moveTo.tentative.window.js": [
+ "3badce1ca9487fc3584674e101246e3b1c72787c",
+ "testharness"
+ ],
+ "native-file-system/FileSystemBaseHandle-remove.tentative.window.js": [
+ "33ac96038829b249312f7463fc5c072b9f805825",
+ "testharness"
+ ],
+ "native-file-system/FileSystemDirectoryHandle-getDirectory.tentative.window.js": [
+ "105879dbd1e0cc34cd10d6872d6299ba3fe00431",
+ "testharness"
+ ],
+ "native-file-system/FileSystemDirectoryHandle-getFile.tentative.window.js": [
+ "0d9bacd87ee266b9b1637f66808244786c22ebde",
+ "testharness"
+ ],
+ "native-file-system/FileSystemWriter.tentative.window.js": [
+ "cc8444237b6576f5425f74c0c3c5b12d0f644cd0",
+ "testharness"
+ ],
+ "native-file-system/README.md": [
+ "6905a68e7901ce26bc1a363062304e1536604400",
+ "support"
+ ],
+ "native-file-system/resources/test-helpers.js": [
+ "dc5f376233bd2de148d77a17cf2bcdbc4cc0c687",
+ "support"
+ ],
"navigation-timing/META.yml": [
"c09a6e03fd19f5a405b391c2c4671df6ff04edf1",
"support"
@@ -693181,6 +693385,14 @@
"eaf21b483ccd6ec63bcb8dc87c9e19a4305bf43d",
"testharness"
],
+ "resource-timing/crossorigin-sandwich-TAO.sub.html": [
+ "c3085950bd68ac72e1079a04d52ac3e1e1c603fb",
+ "testharness"
+ ],
+ "resource-timing/crossorigin-sandwich-no-TAO.sub.html": [
+ "c7e7e5948dc5cbb5fb331112ab2dc562d5e430ad",
+ "testharness"
+ ],
"resource-timing/document-domain-no-impact-loader.sub.html": [
"8a1c433a5c3a7b79d92b797ee1057c624d4a9866",
"testharness"
@@ -693514,7 +693726,7 @@
"support"
],
"resource-timing/resources/multi_redirect.py": [
- "d1802a1e02d9aacad091e814cc2955d244d2f977",
+ "39121ddbb45824240655eafd0ef6554334bcffd8",
"support"
],
"resource-timing/resources/navigate_back.html": [
@@ -693682,7 +693894,7 @@
"support"
],
"resources/chromium/image_capture.mojom.js": [
- "bf8dd16ca75d4be1095808138d09a9c400159b86",
+ "50428ffcb80c736c1f63f8a91e0c65ff472ef463",
"support"
],
"resources/chromium/mock-barcodedetection.js": [
@@ -709386,7 +709598,7 @@
"support"
],
"tools/wptrunner/requirements.txt": [
- "887068b34d28bdf875e42f440cedac478b9f411a",
+ "4b568b746168fdf5e06e4a5e592194f5e87f49d4",
"support"
],
"tools/wptrunner/requirements_chrome.txt": [
@@ -721102,19 +721314,23 @@
"testharness"
],
"webxr/xrDevice_requestSession_immersive.https.html": [
- "c5956e7f3d12745638092558abb0b41749fb16d6",
+ "50a9d344541c8ce3b6bca11d1d5b30a52a835227",
"testharness"
],
"webxr/xrDevice_requestSession_immersive_no_gesture.https.html": [
- "c1b3286709d3a7d4dc45029253e3bbffb579e237",
+ "eb5a4fda0bdfc6e69cc9fbafa276d2ac85a2a16e",
"testharness"
],
"webxr/xrDevice_requestSession_immersive_unsupported.https.html": [
- "60e9e6cc6e1c0fa990af396e42418bb16984a5e8",
+ "2592f3a4a0d4b96b81ca2d3b0e2c43c06343c9aa",
+ "testharness"
+ ],
+ "webxr/xrDevice_requestSession_no_mode.https.html": [
+ "c4ac3f6b6d77e9aab391069eb8895a28cb1c904a",
"testharness"
],
"webxr/xrDevice_requestSession_non_immersive_no_gesture.https.html": [
- "241b5ded0a50495cf21b2b5c78aee8327f384a62",
+ "40e6f4928b3f63c9c6e4bd71d40022e86dbf4bec",
"testharness"
],
"webxr/xrDevice_supportsSession_immersive.https.html": [
@@ -721130,11 +721346,11 @@
"testharness"
],
"webxr/xrFrame_getPose.https.html": [
- "2c75275a1120e8715975ba3839de882b3c21ecae",
+ "a8015e3276acc3f97cced60c964d92c752a25d24",
"testharness"
],
"webxr/xrFrame_lifetime.https.html": [
- "30cf5f996773b9c278370c3ae7df086574d3b72d",
+ "b924c89771e89457966f0f2d3a8e8e4408376a10",
"testharness"
],
"webxr/xrRay_constructor.https.html": [
@@ -721146,11 +721362,11 @@
"testharness"
],
"webxr/xrRigidTransform_constructor.https.html": [
- "abaf8bf9ebe2fed3c99cef5bf52d697b9e8ed1c8",
+ "15666973473abbf722fdd3bc8e90d679a36b8732",
"testharness"
],
"webxr/xrRigidTransform_inverse.https.html": [
- "e795a99538e27d7a85a75c652b9b972d119e91d6",
+ "da34fec60f00c15fe814e64b918e4a30d9716f70",
"testharness"
],
"webxr/xrRigidTransform_matrix.https.html": [
@@ -721158,47 +721374,47 @@
"testharness"
],
"webxr/xrSession_cancelAnimationFrame.https.html": [
- "cc7b8802cba01ac03adb53a06308acd5642dd0af",
+ "d45349ad24464ef424e411cae0d059fbbb33d570",
"testharness"
],
"webxr/xrSession_cancelAnimationFrame_invalidhandle.https.html": [
- "e6a9c0665435034fdf493e9ab2d4c8a6731eff13",
+ "b93f4e27909efa888793a85f4529d8da7bf0546c",
"testharness"
],
"webxr/xrSession_end.https.html": [
- "6365c7de508a426f674ae239d99846d77af94615",
+ "26b6b47d2bfeea35249bd36ca49fda1d5b2ec1f8",
"testharness"
],
"webxr/xrSession_identity_referenceSpace.https.html": [
- "fb18edf6ddd4369887599617a5577de65a126b33",
+ "07abc39728c0453668a4fbdc785a9194a2dfb7a0",
"testharness"
],
"webxr/xrSession_mode.https.html": [
- "4b54d9480211b3641997f78a61dfdc7058592ecd",
+ "a1d066084393742559a020cb6e71277740793db7",
"testharness"
],
"webxr/xrSession_prevent_multiple_exclusive.https.html": [
- "c2e7f3bf444d38506f6a54c2cf9904c2927b2ad5",
+ "e61bd392718ae3b0f8ac8de0fa81604f2d32dcce",
"testharness"
],
"webxr/xrSession_requestAnimationFrame_callback_calls.https.html": [
- "92f7d1f79dcb61e400e21e4f5a80a85e3685ec9f",
+ "2ed468bc3a5a44c1653de6bdb3716d8de4078167",
"testharness"
],
"webxr/xrSession_requestAnimationFrame_data_valid.https.html": [
- "2278666a1d7cfc43362b5e09ddf0df25fef42681",
+ "44e903e4fb980d672ad6580f2d630874fa9c4b72",
"testharness"
],
"webxr/xrSession_requestAnimationFrame_getViewerPose.https.html": [
- "8c8e26aa12db1c35e67be8928c4e5f9836a5b5e0",
+ "5606fa1ab12b1f359de4e88bdf703b5835be2c16",
"testharness"
],
"webxr/xrSession_requestReferenceSpace.https.html": [
- "ed31f372ceb2b6c3cbfd34da47cdb801b4f366fc",
+ "0027d5dce01af7499e1037311c27ad29f66328d1",
"testharness"
],
"webxr/xrSession_transfer_outputContext.https.html": [
- "658cb322487df1af1f2333423ac8c223fdd8733c",
+ "759d97ba184067f0f4df431500f5eabddd788921",
"testharness"
],
"workers/META.yml": [
diff --git a/tests/wpt/metadata/css/css-fonts/variations/at-font-face-font-matching.html.ini b/tests/wpt/metadata/css/css-fonts/variations/at-font-face-font-matching.html.ini
index 7117872b917..bf30dc76bd0 100644
--- a/tests/wpt/metadata/css/css-fonts/variations/at-font-face-font-matching.html.ini
+++ b/tests/wpt/metadata/css/css-fonts/variations/at-font-face-font-matching.html.ini
@@ -323,3 +323,15 @@
[Matching font-style: 'oblique -10deg' should prefer 'oblique -50deg -40deg' over 'italic']
expected: FAIL
+ [Matching font-weight: '400' should prefer '400' over '450 460']
+ expected: FAIL
+
+ [Matching font-style: 'oblique 20deg' should prefer 'oblique 0deg' over 'oblique -50deg -20deg']
+ expected: FAIL
+
+ [Matching font-style: 'italic' should prefer 'oblique 0deg' over 'oblique -60deg -30deg']
+ expected: FAIL
+
+ [Matching font-style: 'oblique -10deg' should prefer 'oblique -1deg 0deg' over 'oblique -20deg -15deg']
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-text/overflow-wrap/overflow-wrap-cluster-001.html.ini b/tests/wpt/metadata/css/css-text/overflow-wrap/overflow-wrap-cluster-001.html.ini
new file mode 100644
index 00000000000..13aaeddda68
--- /dev/null
+++ b/tests/wpt/metadata/css/css-text/overflow-wrap/overflow-wrap-cluster-001.html.ini
@@ -0,0 +1,2 @@
+[overflow-wrap-cluster-001.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/css-text/overflow-wrap/overflow-wrap-cluster-002.html.ini b/tests/wpt/metadata/css/css-text/overflow-wrap/overflow-wrap-cluster-002.html.ini
new file mode 100644
index 00000000000..a99d5a153ac
--- /dev/null
+++ b/tests/wpt/metadata/css/css-text/overflow-wrap/overflow-wrap-cluster-002.html.ini
@@ -0,0 +1,2 @@
+[overflow-wrap-cluster-002.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/css-text/overflow-wrap/overflow-wrap-normal-keep-all-001.html.ini b/tests/wpt/metadata/css/css-text/overflow-wrap/overflow-wrap-normal-keep-all-001.html.ini
new file mode 100644
index 00000000000..6faeef871fd
--- /dev/null
+++ b/tests/wpt/metadata/css/css-text/overflow-wrap/overflow-wrap-normal-keep-all-001.html.ini
@@ -0,0 +1,2 @@
+[overflow-wrap-normal-keep-all-001.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/encoding/single-byte-decoder.html.ini b/tests/wpt/metadata/encoding/single-byte-decoder.html.ini
index 0bf8ce261c1..21e70fcda1c 100644
--- a/tests/wpt/metadata/encoding/single-byte-decoder.html.ini
+++ b/tests/wpt/metadata/encoding/single-byte-decoder.html.ini
@@ -32,7 +32,7 @@
[single-byte-decoder.html?XMLHttpRequest]
- expected: CRASH
+ expected: TIMEOUT
[ISO-8859-2: iso_8859-2:1987 (XMLHttpRequest)]
expected: FAIL
@@ -69,9 +69,6 @@
[windows-1254: x-cp1254 (XMLHttpRequest)]
expected: TIMEOUT
- [windows-1255: cp1255 (XMLHttpRequest)]
- expected: TIMEOUT
-
[windows-1255: windows-1255 (XMLHttpRequest)]
expected: TIMEOUT
@@ -90,15 +87,6 @@
[windows-1254: iso88599 (XMLHttpRequest)]
expected: TIMEOUT
- [windows-1254: iso-8859-9 (XMLHttpRequest)]
- expected: TIMEOUT
-
- [windows-1254: csisolatin5 (XMLHttpRequest)]
- expected: TIMEOUT
-
- [windows-1254: iso-ir-148 (XMLHttpRequest)]
- expected: TIMEOUT
-
[windows-1254: iso_8859-9 (XMLHttpRequest)]
expected: TIMEOUT
@@ -129,5 +117,8 @@
[windows-1254: latin5 (XMLHttpRequest)]
expected: TIMEOUT
+ [windows-1254: iso8859-9 (XMLHttpRequest)]
+ expected: TIMEOUT
+
[single-byte-decoder.html?TextDecoder]
diff --git a/tests/wpt/metadata/fetch/api/basic/mode-same-origin.any.js.ini b/tests/wpt/metadata/fetch/api/basic/mode-same-origin.any.js.ini
new file mode 100644
index 00000000000..3e782cfed90
--- /dev/null
+++ b/tests/wpt/metadata/fetch/api/basic/mode-same-origin.any.js.ini
@@ -0,0 +1,6 @@
+[mode-same-origin.any.html]
+
+[mode-same-origin.any.worker.html]
+ [mode-same-origin]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/fetch/api/basic/referrer.any.js.ini b/tests/wpt/metadata/fetch/api/basic/referrer.any.js.ini
index d6ed989f793..9449847104b 100644
--- a/tests/wpt/metadata/fetch/api/basic/referrer.any.js.ini
+++ b/tests/wpt/metadata/fetch/api/basic/referrer.any.js.ini
@@ -12,6 +12,9 @@
[origin-when-cross-origin policy on a same-origin URL after cross-origin redirection]
expected: FAIL
+ [referrer]
+ expected: FAIL
+
[referrer.any.html]
type: testharness
diff --git a/tests/wpt/metadata/fetch/api/cors/cors-basic.any.js.ini b/tests/wpt/metadata/fetch/api/cors/cors-basic.any.js.ini
index 9eba8181e2b..e3a99c31a3b 100644
--- a/tests/wpt/metadata/fetch/api/cors/cors-basic.any.js.ini
+++ b/tests/wpt/metadata/fetch/api/cors/cors-basic.any.js.ini
@@ -15,6 +15,9 @@
[Cross domain different protocol [no-cors mode\]]
expected: FAIL
+ [cors-basic]
+ expected: FAIL
+
[cors-basic.any.html]
type: testharness
diff --git a/tests/wpt/metadata/fetch/api/cors/cors-cookies.any.js.ini b/tests/wpt/metadata/fetch/api/cors/cors-cookies.any.js.ini
index b5e73be7547..ef83bd38240 100644
--- a/tests/wpt/metadata/fetch/api/cors/cors-cookies.any.js.ini
+++ b/tests/wpt/metadata/fetch/api/cors/cors-cookies.any.js.ini
@@ -36,3 +36,6 @@
[Include mode: local cookies are not sent with remote request]
expected: FAIL
+ [cors-cookies]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/fetch/api/cors/cors-no-preflight.any.js.ini b/tests/wpt/metadata/fetch/api/cors/cors-no-preflight.any.js.ini
new file mode 100644
index 00000000000..c5162d39ec0
--- /dev/null
+++ b/tests/wpt/metadata/fetch/api/cors/cors-no-preflight.any.js.ini
@@ -0,0 +1,6 @@
+[cors-no-preflight.any.html]
+
+[cors-no-preflight.any.worker.html]
+ [cors-no-preflight]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/fetch/api/cors/cors-origin.any.js.ini b/tests/wpt/metadata/fetch/api/cors/cors-origin.any.js.ini
new file mode 100644
index 00000000000..7246b3e076c
--- /dev/null
+++ b/tests/wpt/metadata/fetch/api/cors/cors-origin.any.js.ini
@@ -0,0 +1,6 @@
+[cors-origin.any.worker.html]
+ [cors-origin]
+ expected: FAIL
+
+
+[cors-origin.any.html]
diff --git a/tests/wpt/metadata/fetch/api/cors/cors-preflight-not-cors-safelisted.any.js.ini b/tests/wpt/metadata/fetch/api/cors/cors-preflight-not-cors-safelisted.any.js.ini
index c581f51c88e..5e7e455146f 100644
--- a/tests/wpt/metadata/fetch/api/cors/cors-preflight-not-cors-safelisted.any.js.ini
+++ b/tests/wpt/metadata/fetch/api/cors/cors-preflight-not-cors-safelisted.any.js.ini
@@ -43,3 +43,6 @@
[Need CORS-preflight for accept/012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678 header]
expected: FAIL
+ [cors-preflight-not-cors-safelisted]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/fetch/api/cors/cors-preflight-redirect.any.js.ini b/tests/wpt/metadata/fetch/api/cors/cors-preflight-redirect.any.js.ini
index 3a2c6e2b89b..8a9abe9e756 100644
--- a/tests/wpt/metadata/fetch/api/cors/cors-preflight-redirect.any.js.ini
+++ b/tests/wpt/metadata/fetch/api/cors/cors-preflight-redirect.any.js.ini
@@ -63,3 +63,6 @@
[Redirection 308 after preflight failed]
expected: FAIL
+ [cors-preflight-redirect]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/fetch/api/cors/cors-preflight-referrer.any.js.ini b/tests/wpt/metadata/fetch/api/cors/cors-preflight-referrer.any.js.ini
index 36a518419fc..2bb5f8819e2 100644
--- a/tests/wpt/metadata/fetch/api/cors/cors-preflight-referrer.any.js.ini
+++ b/tests/wpt/metadata/fetch/api/cors/cors-preflight-referrer.any.js.ini
@@ -30,6 +30,9 @@
[Referrer policy: unsafe-url and referrer: 'myreferrer']
expected: FAIL
+ [cors-preflight-referrer]
+ expected: FAIL
+
[cors-preflight-referrer.any.html]
type: testharness
diff --git a/tests/wpt/metadata/fetch/api/cors/cors-preflight-star.any.js.ini b/tests/wpt/metadata/fetch/api/cors/cors-preflight-star.any.js.ini
index 775345b3f73..775b548a45d 100644
--- a/tests/wpt/metadata/fetch/api/cors/cors-preflight-star.any.js.ini
+++ b/tests/wpt/metadata/fetch/api/cors/cors-preflight-star.any.js.ini
@@ -27,3 +27,6 @@
[CORS that succeeds with credentials: true; method: * (allowed: *); header: *,1 (allowed: *)]
expected: FAIL
+ [cors-preflight-star]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/fetch/api/cors/cors-preflight-status.any.js.ini b/tests/wpt/metadata/fetch/api/cors/cors-preflight-status.any.js.ini
index 0668c47f151..1e82624ce45 100644
--- a/tests/wpt/metadata/fetch/api/cors/cors-preflight-status.any.js.ini
+++ b/tests/wpt/metadata/fetch/api/cors/cors-preflight-status.any.js.ini
@@ -45,3 +45,6 @@
[Preflight answered with status 206]
expected: FAIL
+ [cors-preflight-status]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/fetch/api/cors/cors-preflight.any.js.ini b/tests/wpt/metadata/fetch/api/cors/cors-preflight.any.js.ini
index 338a4ba3c2b..29972520799 100644
--- a/tests/wpt/metadata/fetch/api/cors/cors-preflight.any.js.ini
+++ b/tests/wpt/metadata/fetch/api/cors/cors-preflight.any.js.ini
@@ -15,3 +15,6 @@
[CORS [PUT\] [several headers\], server allows]
expected: FAIL
+ [cors-preflight]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/fetch/api/cors/cors-redirect-credentials.any.js.ini b/tests/wpt/metadata/fetch/api/cors/cors-redirect-credentials.any.js.ini
new file mode 100644
index 00000000000..136af685782
--- /dev/null
+++ b/tests/wpt/metadata/fetch/api/cors/cors-redirect-credentials.any.js.ini
@@ -0,0 +1,6 @@
+[cors-redirect-credentials.any.worker.html]
+ [cors-redirect-credentials]
+ expected: FAIL
+
+
+[cors-redirect-credentials.any.html]
diff --git a/tests/wpt/metadata/fetch/api/cors/cors-redirect-preflight.any.js.ini b/tests/wpt/metadata/fetch/api/cors/cors-redirect-preflight.any.js.ini
new file mode 100644
index 00000000000..6fdb1b03681
--- /dev/null
+++ b/tests/wpt/metadata/fetch/api/cors/cors-redirect-preflight.any.js.ini
@@ -0,0 +1,6 @@
+[cors-redirect-preflight.any.worker.html]
+ [cors-redirect-preflight]
+ expected: FAIL
+
+
+[cors-redirect-preflight.any.html]
diff --git a/tests/wpt/metadata/fetch/api/cors/cors-redirect.any.js.ini b/tests/wpt/metadata/fetch/api/cors/cors-redirect.any.js.ini
index 60b5048cc85..ec50a061be3 100644
--- a/tests/wpt/metadata/fetch/api/cors/cors-redirect.any.js.ini
+++ b/tests/wpt/metadata/fetch/api/cors/cors-redirect.any.js.ini
@@ -30,6 +30,9 @@
[Redirect 308: same origin to cors]
expected: FAIL
+ [cors-redirect]
+ expected: FAIL
+
[cors-redirect.any.html]
type: testharness
diff --git a/tests/wpt/metadata/fetch/api/redirect/redirect-back-to-original-origin.any.js.ini b/tests/wpt/metadata/fetch/api/redirect/redirect-back-to-original-origin.any.js.ini
index d80d3da39b7..8781aaf992b 100644
--- a/tests/wpt/metadata/fetch/api/redirect/redirect-back-to-original-origin.any.js.ini
+++ b/tests/wpt/metadata/fetch/api/redirect/redirect-back-to-original-origin.any.js.ini
@@ -7,3 +7,6 @@
[original => remote => original with mode: "no-cors"]
expected: FAIL
+ [redirect-back-to-original-origin]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/fetch/api/redirect/redirect-mode.any.js.ini b/tests/wpt/metadata/fetch/api/redirect/redirect-mode.any.js.ini
index b6eadc3b5cd..e0987eb6cc2 100644
--- a/tests/wpt/metadata/fetch/api/redirect/redirect-mode.any.js.ini
+++ b/tests/wpt/metadata/fetch/api/redirect/redirect-mode.any.js.ini
@@ -1,4 +1,5 @@
[redirect-mode.any.worker.html]
+ expected: ERROR
[same-origin redirect 301 in manual redirect and cors mode]
expected: FAIL
diff --git a/tests/wpt/metadata/fetch/api/redirect/redirect-origin.any.js.ini b/tests/wpt/metadata/fetch/api/redirect/redirect-origin.any.js.ini
new file mode 100644
index 00000000000..d805ac8f263
--- /dev/null
+++ b/tests/wpt/metadata/fetch/api/redirect/redirect-origin.any.js.ini
@@ -0,0 +1,6 @@
+[redirect-origin.any.html]
+
+[redirect-origin.any.worker.html]
+ [redirect-origin]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/fetch/api/redirect/redirect-referrer.any.js.ini b/tests/wpt/metadata/fetch/api/redirect/redirect-referrer.any.js.ini
index e44f44dc769..d58e1b74723 100644
--- a/tests/wpt/metadata/fetch/api/redirect/redirect-referrer.any.js.ini
+++ b/tests/wpt/metadata/fetch/api/redirect/redirect-referrer.any.js.ini
@@ -80,6 +80,9 @@
[Cross origin redirection, empty redirect header, strict-origin-when-cross-origin init ]
expected: FAIL
+ [redirect-referrer]
+ expected: FAIL
+
[redirect-referrer.any.html]
[Same origin redirection, empty init, unsafe-url redirect header ]
diff --git a/tests/wpt/metadata/fetch/api/redirect/redirect-to-dataurl.any.js.ini b/tests/wpt/metadata/fetch/api/redirect/redirect-to-dataurl.any.js.ini
new file mode 100644
index 00000000000..ffdc96c3933
--- /dev/null
+++ b/tests/wpt/metadata/fetch/api/redirect/redirect-to-dataurl.any.js.ini
@@ -0,0 +1,6 @@
+[redirect-to-dataurl.any.html]
+
+[redirect-to-dataurl.any.worker.html]
+ [redirect-to-dataurl]
+ 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 18f786d4963..2781b3e391c 100644
--- a/tests/wpt/metadata/fetch/content-type/response.window.js.ini
+++ b/tests/wpt/metadata/fetch/content-type/response.window.js.ini
@@ -312,3 +312,12 @@
[<iframe>: separate response Content-Type: text/plain */*;charset=gbk]
expected: FAIL
+ [<iframe>: combined response Content-Type: text/html;" text/plain]
+ expected: FAIL
+
+ [<iframe>: separate response Content-Type: text/html;" \\" text/plain]
+ expected: FAIL
+
+ [<iframe>: combined response Content-Type: text/html;x=" text/plain]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/fetch/cross-origin-resource-policy/fetch.https.any.js.ini b/tests/wpt/metadata/fetch/cross-origin-resource-policy/fetch.https.any.js.ini
index fb9488016dc..2f44646bbb5 100644
--- a/tests/wpt/metadata/fetch/cross-origin-resource-policy/fetch.https.any.js.ini
+++ b/tests/wpt/metadata/fetch/cross-origin-resource-policy/fetch.https.any.js.ini
@@ -35,3 +35,6 @@
[Cross-origin no-cors fetch with a 'Cross-Origin-Resource-Policy: same-site' response header.]
expected: FAIL
+ [fetch]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/fetch/cross-origin-resource-policy/syntax.any.js.ini b/tests/wpt/metadata/fetch/cross-origin-resource-policy/syntax.any.js.ini
new file mode 100644
index 00000000000..b7c5d297e09
--- /dev/null
+++ b/tests/wpt/metadata/fetch/cross-origin-resource-policy/syntax.any.js.ini
@@ -0,0 +1,6 @@
+[syntax.any.worker.html]
+ [syntax]
+ expected: FAIL
+
+
+[syntax.any.html]
diff --git a/tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini b/tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini
index 87c807a49ff..a639f15230c 100644
--- a/tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini
+++ b/tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini
@@ -11,3 +11,6 @@
[X-Content-Type-Options%3A%20nosniff%0C]
expected: FAIL
+ [Content-Type-Options%3A%20nosniff]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-abort/javascript-url-abort-return-value-string.tentative.html.ini b/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-abort/javascript-url-abort-return-value-string.tentative.html.ini
deleted file mode 100644
index 9bacb9f5c4e..00000000000
--- a/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-abort/javascript-url-abort-return-value-string.tentative.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[javascript-url-abort-return-value-string.tentative.html]
- [Aborting fetch for javascript:string navigation]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-abort/javascript-url-abort-return-value-undefined.tentative.html.ini b/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-abort/javascript-url-abort-return-value-undefined.tentative.html.ini
new file mode 100644
index 00000000000..78879bad5f1
--- /dev/null
+++ b/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-abort/javascript-url-abort-return-value-undefined.tentative.html.ini
@@ -0,0 +1,5 @@
+[javascript-url-abort-return-value-undefined.tentative.html]
+ expected: TIMEOUT
+ [Not aborting fetch for javascript:undefined navigation]
+ expected: TIMEOUT
+
diff --git a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini
new file mode 100644
index 00000000000..dc2e45516de
--- /dev/null
+++ b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini
@@ -0,0 +1,4 @@
+[traverse_the_history_5.html]
+ [Multiple history traversals, last would be aborted]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/script-onerror-insertion-point-2.html.ini b/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/script-onerror-insertion-point-2.html.ini
deleted file mode 100644
index 178680e5d14..00000000000
--- a/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/script-onerror-insertion-point-2.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[script-onerror-insertion-point-2.html]
- expected: TIMEOUT
diff --git a/tests/wpt/metadata/referrer-policy/css-integration/svg/processing-instruction.html.ini b/tests/wpt/metadata/referrer-policy/css-integration/svg/processing-instruction.html.ini
index 0884c846962..0a95e8057cc 100644
--- a/tests/wpt/metadata/referrer-policy/css-integration/svg/processing-instruction.html.ini
+++ b/tests/wpt/metadata/referrer-policy/css-integration/svg/processing-instruction.html.ini
@@ -1,5 +1,4 @@
[processing-instruction.html]
- expected: TIMEOUT
[Styling SVG from ProcessingInstruction stroke]
expected: FAIL
@@ -7,10 +6,10 @@
expected: FAIL
[Styling SVG from ProcessingInstruction mask-image]
- expected: NOTRUN
+ expected: FAIL
[Styling SVG from ProcessingInstruction marker-end]
- expected: TIMEOUT
+ expected: FAIL
[Styling SVG from ProcessingInstruction marker-mid]
expected: FAIL
@@ -25,5 +24,5 @@
expected: FAIL
[Styling SVG from ProcessingInstruction mask]
- expected: NOTRUN
+ expected: FAIL
diff --git a/tests/wpt/metadata/resource-timing/crossorigin-sandwich-TAO.sub.html.ini b/tests/wpt/metadata/resource-timing/crossorigin-sandwich-TAO.sub.html.ini
new file mode 100644
index 00000000000..e5993b3eadf
--- /dev/null
+++ b/tests/wpt/metadata/resource-timing/crossorigin-sandwich-TAO.sub.html.ini
@@ -0,0 +1,5 @@
+[crossorigin-sandwich-TAO.sub.html]
+ expected: ERROR
+ [There should be one entry.]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/resource-timing/crossorigin-sandwich-no-TAO.sub.html.ini b/tests/wpt/metadata/resource-timing/crossorigin-sandwich-no-TAO.sub.html.ini
new file mode 100644
index 00000000000..cc2fa16e8b8
--- /dev/null
+++ b/tests/wpt/metadata/resource-timing/crossorigin-sandwich-no-TAO.sub.html.ini
@@ -0,0 +1,5 @@
+[crossorigin-sandwich-no-TAO.sub.html]
+ expected: ERROR
+ [There should be one entry.]
+ 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/web-platform-tests/animation-worklet/animator-animate.https.html b/tests/wpt/web-platform-tests/animation-worklet/worklet-animation-play.https.html
index 2ac25498bce..038cd74aab0 100644
--- a/tests/wpt/web-platform-tests/animation-worklet/animator-animate.https.html
+++ b/tests/wpt/web-platform-tests/animation-worklet/worklet-animation-play.https.html
@@ -21,5 +21,25 @@
return getComputedStyle(target).opacity != '1';
});
assert_equals(getComputedStyle(target).opacity, "0.5");
- }, "Simple worklet animation should output values at specified local time");
-</script> \ No newline at end of file
+
+ animation.cancel();
+ }, "A running worklet animation should output values at specified local time.");
+
+ promise_test(async t => {
+ await registerConstantLocalTimeAnimator(500);
+ const effect = new KeyframeEffect(target, [{ opacity: 0 }], { duration: 1000 });
+ const animation = new WorkletAnimation('constant_time', effect);
+ animation.play();
+
+ await waitForAnimationFrameWithCondition(_=> {
+ return animation.playState == "running"
+ });
+
+ const prevCurrentTime = animation.currentTime;
+ animation.play();
+ assert_equals(animation.playState, "running");
+ assert_equals(animation.currentTime, prevCurrentTime)
+
+ animation.cancel();
+ }, "Playing a running animation should be a no-op.");
+</script>
diff --git a/tests/wpt/web-platform-tests/clipboard-apis/async-interfaces.https.html b/tests/wpt/web-platform-tests/clipboard-apis/async-interfaces.https.html
index e0d0977959b..e19c958f975 100644
--- a/tests/wpt/web-platform-tests/clipboard-apis/async-interfaces.https.html
+++ b/tests/wpt/web-platform-tests/clipboard-apis/async-interfaces.https.html
@@ -1,7 +1,7 @@
<!DOCTYPE html>
<meta charset=utf-8>
<title>Clipboard IDL test</title>
-<link rel='help' href='https://w3c.github.io/clipboard-apis/'>
+<link rel='help' href='https://w3c.github.io/clipboard-apis/#async-clipboard-api'>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/resources/WebIDLParser.js"></script>
diff --git a/tests/wpt/web-platform-tests/clipboard-apis/async-navigator-clipboard-basics.https.html b/tests/wpt/web-platform-tests/clipboard-apis/async-navigator-clipboard-basics.https.html
index b71b43efe06..706093af613 100644
--- a/tests/wpt/web-platform-tests/clipboard-apis/async-navigator-clipboard-basics.https.html
+++ b/tests/wpt/web-platform-tests/clipboard-apis/async-navigator-clipboard-basics.https.html
@@ -1,6 +1,7 @@
<!DOCTYPE html>
<meta charset="utf-8">
<title>Async Clipboard input type validation tests</title>
+<link rel="help" href="https://w3c.github.io/clipboard-apis/#async-clipboard-api">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script>
@@ -13,29 +14,28 @@ test(() => {
promise_test(async () => {
const blob = new Blob(['hello'], {type: 'text/plain'});
- await navigator.clipboard.write({'text/plain': blob});
-}, 'navigator.clipboard.write({string : text/plain Blob}) succeeds');
+ const item = new ClipboardItem({'text/plain': blob});
+
+ await navigator.clipboard.write([item]);
+}, 'navigator.clipboard.write([text/plain ClipboardItem]) succeeds');
promise_test(async t => {
- await promise_rejects(t, new TypeError(),
- navigator.clipboard.write());
-}, 'navigator.clipboard.write() fails (expect {string : Blob})');
+ await promise_rejects(t, new TypeError(), navigator.clipboard.write());
+}, 'navigator.clipboard.write() fails (expect [ClipboardItem])');
promise_test(async t => {
- await promise_rejects(t, new TypeError(),
- navigator.clipboard.write(null));
-}, 'navigator.clipboard.write(null) fails (expect {string : Blob})');
+ await promise_rejects(t, new TypeError(), navigator.clipboard.write(null));
+}, 'navigator.clipboard.write(null) fails (expect [ClipboardItem])');
promise_test(async t => {
await promise_rejects(t, new TypeError(),
navigator.clipboard.write('Bad string'));
-}, 'navigator.clipboard.write(DOMString) fails (expect {string : Blob})');
+}, 'navigator.clipboard.write(DOMString) fails (expect [ClipboardItem])');
promise_test(async t => {
const blob = new Blob(['hello'], {type: 'text/plain'});
- await promise_rejects(t, 'NotAllowedError',
- navigator.clipboard.write(blob));
-}, 'navigator.clipboard.write(Blob) fails (expect {string : Blob})');
+ await promise_rejects(t, new TypeError(), navigator.clipboard.write(blob));
+}, 'navigator.clipboard.write(Blob) fails (expect [ClipboardItem])');
promise_test(async () => {
await navigator.clipboard.writeText('New clipboard text');
@@ -50,13 +50,15 @@ promise_test(async () => {
const fetched = await fetch(
'http://localhost:8001/clipboard-apis/resources/greenbox.png');
const image = await fetched.blob();
+ const item = new ClipboardItem({'image/png': image});
- await navigator.clipboard.write({'image/png' : image});
+ await navigator.clipboard.write([item]);
}, 'navigator.clipboard.write({string : image/png Blob}) succeeds');
promise_test(async () => {
const result = await navigator.clipboard.read();
assert_true(result instanceof Object);
+ assert_true(result[0] instanceof ClipboardItem);
}, 'navigator.clipboard.read() succeeds');
promise_test(async () => {
diff --git a/tests/wpt/web-platform-tests/clipboard-apis/async-write-blobs-read-blobs-manual.https.html b/tests/wpt/web-platform-tests/clipboard-apis/async-write-blobs-read-blobs-manual.https.html
index 57cf542ca77..b5f0f3d9dc1 100644
--- a/tests/wpt/web-platform-tests/clipboard-apis/async-write-blobs-read-blobs-manual.https.html
+++ b/tests/wpt/web-platform-tests/clipboard-apis/async-write-blobs-read-blobs-manual.https.html
@@ -3,6 +3,7 @@
<title>
Async Clipboard write blobs -> read blobs tests
</title>
+<link rel="help" href="https://w3c.github.io/clipboard-apis/#async-clipboard-api">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
@@ -19,14 +20,22 @@ promise_test(async t => {
assert_equals(blobText.type, 'text/plain');
assert_equals(blobImage.type, 'image/png');
- await navigator.clipboard.write(
+ const clipboardItemInput = new ClipboardItem(
{'text/plain' : blobText, 'image/png' : blobImage});
- const output = await navigator.clipboard.read();
- assert_equals(Object.keys(output).length, 2);
- assert_equals(output['text/plain'].type, 'text/plain');
- assert_equals(output['image/png'].type, 'image/png');
-}, 'Verify write and read clipboard (multiple blobs)');
+ await navigator.clipboard.write([clipboardItemInput]);
+ const clipboardItems = await navigator.clipboard.read();
+
+ assert_equals(clipboardItems.length, 1);
+ const clipboardItem = clipboardItems[0];
+ assert_true(clipboardItem instanceof ClipboardItem);
+
+ assert_equals(clipboardItem.types.length, 2);
+ const blobTextOutput = await clipboardItem.getType('text/plain');
+ const blobImageOutput = await clipboardItem.getType('image/png');
+ assert_equals(blobTextOutput.type, 'text/plain');
+ assert_equals(blobImageOutput.type, 'image/png');
+}, 'Verify write and read clipboard (multiple types)');
</script>
<p>
Note: This is a manual test because it writes/reads to the shared system
diff --git a/tests/wpt/web-platform-tests/clipboard-apis/async-write-blobtext-read-blobtext-manual.https.html b/tests/wpt/web-platform-tests/clipboard-apis/async-write-blobtext-read-blobtext-manual.https.html
index fded721f9bf..b374333ca94 100644
--- a/tests/wpt/web-platform-tests/clipboard-apis/async-write-blobtext-read-blobtext-manual.https.html
+++ b/tests/wpt/web-platform-tests/clipboard-apis/async-write-blobtext-read-blobtext-manual.https.html
@@ -1,19 +1,25 @@
<!DOCTYPE html>
<meta charset="utf-8">
<title>
- Async Clipboard write ([text/plain Blob]) -> read ([text/plain Blob]) tests
+ Async Clipboard write ([text/plain ClipboardItem]) ->
+ read ([text/plain ClipboardItem]) tests
</title>
+<link rel="help" href="https://w3c.github.io/clipboard-apis/#async-clipboard-api">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script>
async function readWriteTest(textInput) {
promise_test(async t => {
const blobInput = new Blob([textInput], {type: 'text/plain'});
+ const clipboardItemInput = new ClipboardItem({'text/plain': blobInput});
- await navigator.clipboard.write({'text/plain': blobInput});
- const blobsOutput = await navigator.clipboard.read();
- assert_equals(Object.keys(blobsOutput).length, 1);
- const blobOutput = blobsOutput['text/plain'];
+ await navigator.clipboard.write([clipboardItemInput]);
+ const clipboardItems = await navigator.clipboard.read();
+ assert_equals(clipboardItems.length, 1);
+ const clipboardItemOutput = clipboardItems[0];
+ assert_true(clipboardItemOutput instanceof ClipboardItem);
+ assert_equals(clipboardItemOutput.types.length, 1);
+ const blobOutput = await clipboardItemOutput.getType('text/plain');
assert_equals(blobOutput.type, 'text/plain');
const textOutput = await (new Response(blobOutput)).text();
@@ -21,7 +27,7 @@ async function readWriteTest(textInput) {
}, 'Verify write and read clipboard given text: ' + textInput);
}
-readWriteTest('Clipboard write ([text/plain Blob]) -> read ([text/plain Blob]) test');
+readWriteTest('Clipboard write ([text/plain ClipboardItem]) -> read ([text/plain ClipboardItem]) test');
readWriteTest('non-Latin1 text encoding test データ');
</script>
<p>
diff --git a/tests/wpt/web-platform-tests/clipboard-apis/async-write-blobtext-read-text-manual.https.html b/tests/wpt/web-platform-tests/clipboard-apis/async-write-blobtext-read-text-manual.https.html
index 98ff7c27b66..2d78b2f186e 100644
--- a/tests/wpt/web-platform-tests/clipboard-apis/async-write-blobtext-read-text-manual.https.html
+++ b/tests/wpt/web-platform-tests/clipboard-apis/async-write-blobtext-read-text-manual.https.html
@@ -1,21 +1,25 @@
<!DOCTYPE html>
<meta charset="utf-8">
-<title>Async Clipboard write ([text/plain Blob]) -> readText tests</title>
+<title>
+ Async Clipboard write ([text/plain ClipboardItem]) -> readText tests
+</title>
+<link rel="help" href="https://w3c.github.io/clipboard-apis/#async-clipboard-api">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script>
async function readWriteTest(textInput) {
promise_test(async t => {
const blobInput = new Blob([textInput], {type: 'text/plain'});
+ const clipboardItem = new ClipboardItem({'text/plain': blobInput});
- await navigator.clipboard.write({'text/plain': blobInput});
+ await navigator.clipboard.write([clipboardItem]);
const textOutput = await navigator.clipboard.readText();
assert_equals(textOutput, textInput);
}, 'Verify write and read clipboard given text: ' + textInput);
}
-readWriteTest('Clipboard write ([text/plain Blob]) -> read text test');
+readWriteTest('Clipboard write ([text/plain ClipboardItem) -> read text test');
readWriteTest('non-Latin1 text encoding test データ');
</script>
<p>
diff --git a/tests/wpt/web-platform-tests/clipboard-apis/async-write-image-read-image-manual.https.html b/tests/wpt/web-platform-tests/clipboard-apis/async-write-image-read-image-manual.https.html
index 6c326cf8dde..351e74bd745 100644
--- a/tests/wpt/web-platform-tests/clipboard-apis/async-write-image-read-image-manual.https.html
+++ b/tests/wpt/web-platform-tests/clipboard-apis/async-write-image-read-image-manual.https.html
@@ -1,8 +1,10 @@
<!DOCTYPE html>
<meta charset="utf-8">
<title>
- Async Clipboard write [image/png Blob] -> read [image/png Blob] tests
+ Async Clipboard write [image/png ClipboardItem] ->
+ read [image/png ClipboardItem] tests
</title>
+<link rel="help" href="https://w3c.github.io/clipboard-apis/#async-clipboard-api">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
@@ -40,10 +42,15 @@ promise_test(async t => {
const blobInput = await loadBlob('resources/greenbox.png');
assert_equals(blobInput.type, 'image/png');
- await navigator.clipboard.write({'image/png' : blobInput});
- const blobsOutput = await navigator.clipboard.read();
- assert_equals(Object.keys(blobsOutput).length, 1);
- const blobOutput = blobsOutput['image/png'];
+ const clipboardItemInput = new ClipboardItem({'image/png' : blobInput});
+ await navigator.clipboard.write([clipboardItemInput]);
+ const clipboardItems = await navigator.clipboard.read();
+
+ assert_equals(clipboardItems.length, 1);
+ const clipboardItem = clipboardItems[0];
+ assert_true(clipboardItem instanceof ClipboardItem);
+ assert_equals(clipboardItem.types.length, 1);
+ const blobOutput = await clipboardItem.getType('image/png');
assert_equals(blobOutput.type, 'image/png');
document.getElementById('image-on-clipboard').src =
@@ -53,7 +60,7 @@ promise_test(async t => {
const comparableOutput = await getBitmapString(blobOutput);
assert_equals(comparableOutput, comparableInput);
-}, 'Verify write and read clipboard ([image/png Blob])');
+}, 'Verify write and read clipboard [image/png Blob]');
</script>
<p>
Note: This is a manual test because it writes/reads to the shared system
diff --git a/tests/wpt/web-platform-tests/clipboard-apis/async-write-text-read-blobtext-manual.https.html b/tests/wpt/web-platform-tests/clipboard-apis/async-write-text-read-blobtext-manual.https.html
index ab85a6fc649..4f9fe25bca5 100644
--- a/tests/wpt/web-platform-tests/clipboard-apis/async-write-text-read-blobtext-manual.https.html
+++ b/tests/wpt/web-platform-tests/clipboard-apis/async-write-text-read-blobtext-manual.https.html
@@ -1,15 +1,21 @@
<!DOCTYPE html>
<meta charset="utf-8">
-<title>Async Clipboard writeText -> read ([text/plain Blob]) tests</title>
+<title>
+ Async Clipboard writeText -> read ([text/plain ClipboardItem]) tests
+</title>
+<link rel="help" href="https://w3c.github.io/clipboard-apis/#async-clipboard-api">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script>
async function readWriteTest(textInput) {
promise_test(async t => {
await navigator.clipboard.writeText(textInput);
- const blobsOutput = await navigator.clipboard.read();
- assert_equals(Object.keys(blobsOutput).length, 1);
- const blobOutput = blobsOutput['text/plain'];
+ const clipboardItems = await navigator.clipboard.read();
+ assert_equals(clipboardItems.length, 1);
+ const clipboardItem = clipboardItems[0];
+ assert_true(clipboardItem instanceof ClipboardItem);
+ assert_equals(clipboardItem.types.length, 1);
+ const blobOutput = await clipboardItem.getType('text/plain');
assert_equals(blobOutput.type, 'text/plain');
const textOutput = await (new Response(blobOutput)).text();
@@ -17,7 +23,7 @@ async function readWriteTest(textInput) {
}, 'Verify write and read clipboard given text: ' + textInput);
}
-readWriteTest('Clipboard write text -> read ([text/plain Blob]) test');
+readWriteTest('Clipboard write text -> read ([text/plain ClipboardItem]) test');
readWriteTest('non-Latin1 text encoding test データ');
</script>
<p>
diff --git a/tests/wpt/web-platform-tests/clipboard-apis/async-write-text-read-text-manual.https.html b/tests/wpt/web-platform-tests/clipboard-apis/async-write-text-read-text-manual.https.html
index 25c7edb43f0..48e5adb51d2 100644
--- a/tests/wpt/web-platform-tests/clipboard-apis/async-write-text-read-text-manual.https.html
+++ b/tests/wpt/web-platform-tests/clipboard-apis/async-write-text-read-text-manual.https.html
@@ -1,6 +1,7 @@
<!DOCTYPE html>
<meta charset="utf-8">
<title>Async Clipboard writeText -> readText tests</title>
+<link rel="help" href="https://w3c.github.io/clipboard-apis/#async-clipboard-api">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script>
diff --git a/tests/wpt/web-platform-tests/clipboard-apis/clipboard-item.https.html b/tests/wpt/web-platform-tests/clipboard-apis/clipboard-item.https.html
new file mode 100644
index 00000000000..9218ee299e2
--- /dev/null
+++ b/tests/wpt/web-platform-tests/clipboard-apis/clipboard-item.https.html
@@ -0,0 +1,78 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>ClipboardItem tests</title>
+<link rel="help" href="https://w3c.github.io/clipboard-apis/#async-clipboard-api">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script>
+
+const blob = new Blob(['hello'], {type: 'text/plain'});
+const blob2 = new Blob(['this should work'], {type: 'not a/real type'});
+
+test(() => {
+ new ClipboardItem({'text/plain': blob});
+ new ClipboardItem({'text/plain': blob, 'not a/real type': blob2});
+}, "ClipboardItem({string, Blob}) succeeds with different types");
+
+test(() => {
+ new ClipboardItem({'text/plain': blob}, {});
+}, "ClipboardItem() succeeds with empty options");
+
+test(() => {
+ assert_throws(new TypeError(), () => {new ClipboardItem({});});
+}, "ClipboardItem({}) fails with empty dictionary input");
+
+test(() => {
+ assert_throws(new TypeError(), () => {new ClipboardItem(blob);});
+}, "ClipboardItem(Blob) fails");
+
+test(() => {
+ assert_throws(new TypeError(), () => {new ClipboardItem(null);});
+}, "ClipboardItem() fails with null input");
+
+test(() => {
+ assert_throws(new TypeError(), () => {new ClipboardItem();});
+}, "ClipboardItem() fails with no input");
+
+test(() => {
+ const item = new ClipboardItem({'text/plain': blob});
+ const types = item.types;
+ assert_equals(types.length, 1);
+ assert_equals(types[0], 'text/plain');
+ const item2 =
+ new ClipboardItem({'text/plain': blob, 'not a/real type': blob2});
+ const types2 = item2.types;
+ assert_equals(types2.length, 2);
+ assert_equals(types2[0], 'text/plain');
+ assert_equals(types2[1], 'not a/real type');
+}, "types() returns correct values");
+
+promise_test(async () => {
+ const item =
+ new ClipboardItem({'text/plain': blob, 'not a/real type': blob2});
+
+ const blobOutput = await item.getType('text/plain');
+ assert_true(blobOutput.type.includes('text/plain'));
+ const text = await (new Response(blobOutput)).text();
+
+ assert_equals('hello', text);
+}, "getType(DOMString valid type) succeeds with correct output");
+
+promise_test(async () => {
+ const item =
+ new ClipboardItem({'text/plain': blob, 'not a/real type': blob2});
+
+ const blobOutput = await item.getType('not a/real type');
+ assert_true(blobOutput.type.includes('not a/real type'));
+ const text = await (new Response(blobOutput)).text();
+
+ assert_equals('this should work', text);
+}, "getType(DOMString invalid type) succeeds with correct output");
+
+promise_test(async t => {
+ const item =
+ new ClipboardItem({'text/plain': blob, 'not a/real type': blob2});
+ promise_rejects(t, "NotFoundError", item.getType('type not in item'));
+ promise_rejects(t, "NotFoundError", item.getType('text/plain:subtype'));
+}, "getType(DOMString type) rejects correctly when querying for missing type");
+</script>
diff --git a/tests/wpt/web-platform-tests/common/get-host-info.sub.js b/tests/wpt/web-platform-tests/common/get-host-info.sub.js
index 743bec18ec2..595a539f195 100644
--- a/tests/wpt/web-platform-tests/common/get-host-info.sub.js
+++ b/tests/wpt/web-platform-tests/common/get-host-info.sub.js
@@ -3,9 +3,12 @@ function get_host_info() {
var HTTP_PORT = '{{ports[http][0]}}';
var HTTP_PORT2 = '{{ports[http][1]}}';
var HTTPS_PORT = '{{ports[https][0]}}';
+ var PROTOCOL = window.location.protocol;
+ var IS_HTTPS = (PROTOCOL == "https:");
var HTTP_PORT_ELIDED = HTTP_PORT == "80" ? "" : (":" + HTTP_PORT);
var HTTP_PORT2_ELIDED = HTTP_PORT2 == "80" ? "" : (":" + HTTP_PORT2);
var HTTPS_PORT_ELIDED = HTTPS_PORT == "443" ? "" : (":" + HTTPS_PORT);
+ var PORT_ELIDED = IS_HTTPS ? HTTPS_PORT_ELIDED : HTTP_PORT_ELIDED;
var ORIGINAL_HOST = '{{host}}';
var REMOTE_HOST = (ORIGINAL_HOST === 'localhost') ? '127.0.0.1' : ('www1.' + ORIGINAL_HOST);
var OTHER_HOST = '{{domains[www2]}}';
@@ -18,10 +21,12 @@ function get_host_info() {
ORIGINAL_HOST: ORIGINAL_HOST,
REMOTE_HOST: REMOTE_HOST,
+ ORIGIN: PROTOCOL + "//" + ORIGINAL_HOST + PORT_ELIDED,
HTTP_ORIGIN: 'http://' + ORIGINAL_HOST + HTTP_PORT_ELIDED,
HTTPS_ORIGIN: 'https://' + ORIGINAL_HOST + HTTPS_PORT_ELIDED,
HTTPS_ORIGIN_WITH_CREDS: 'https://foo:bar@' + ORIGINAL_HOST + HTTPS_PORT_ELIDED,
HTTP_ORIGIN_WITH_DIFFERENT_PORT: 'http://' + ORIGINAL_HOST + HTTP_PORT2_ELIDED,
+ REMOTE_ORIGIN: PROTOCOL + "//" + REMOTE_HOST + PORT_ELIDED,
HTTP_REMOTE_ORIGIN: 'http://' + REMOTE_HOST + HTTP_PORT_ELIDED,
HTTP_NOTSAMESITE_ORIGIN: 'http://' + NOTSAMESITE_HOST + HTTP_PORT_ELIDED,
HTTP_REMOTE_ORIGIN_WITH_DIFFERENT_PORT: 'http://' + REMOTE_HOST + HTTP_PORT2_ELIDED,
diff --git a/tests/wpt/web-platform-tests/css/css-text/overflow-wrap/overflow-wrap-cluster-001.html b/tests/wpt/web-platform-tests/css/css-text/overflow-wrap/overflow-wrap-cluster-001.html
new file mode 100644
index 00000000000..7911a1b214c
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/overflow-wrap/overflow-wrap-cluster-001.html
@@ -0,0 +1,22 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Text level 3 Test: overflow-wrap:break-word and grapheme clusters</title>
+<link rel="author" title="Florian Rivoal" href="https://florian.rivoal.net/">
+<link rel="help" href="https://www.w3.org/TR/css-text-3/#overflow-wrap-property">
+<link rel="match" href="reference/overflow-wrap-cluster-001-ref.html">
+<meta name="assert" content="grapheme clusters must stay together as one unit when a line is broken by overflow-wrap:break-word">
+<style>
+ div {
+ font-size: 4em;
+ margin: 1rem;
+ width: 4em;
+ }
+ #test {
+ overflow-wrap: break-word;
+ width: 0;
+ }
+</style>
+
+<p>Test passes if there are four identical lines of text below.
+<div lang=hi id=ref>&#x0937;&#x093F;<br>&#x0937;&#x093F;</div>
+<div lang=hi id=test>&#x0937;&#x093F;&#x0937;&#x093F;</div>
diff --git a/tests/wpt/web-platform-tests/css/css-text/overflow-wrap/overflow-wrap-cluster-002.html b/tests/wpt/web-platform-tests/css/css-text/overflow-wrap/overflow-wrap-cluster-002.html
new file mode 100644
index 00000000000..bd5c9a60d87
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/overflow-wrap/overflow-wrap-cluster-002.html
@@ -0,0 +1,22 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Text level 3 Test: overflow-wrap:anywhere and grapheme clusters</title>
+<link rel="author" title="Florian Rivoal" href="https://florian.rivoal.net/">
+<link rel="help" href="https://www.w3.org/TR/css-text-3/#overflow-wrap-property">
+<link rel="match" href="reference/overflow-wrap-cluster-001-ref.html">
+<meta name="assert" content="grapheme clusters must stay together as one unit when a line is broken by overflow-wrap:break-word">
+<style>
+ div {
+ font-size: 4em;
+ margin: 1rem;
+ width: 4em;
+ }
+ #test {
+ overflow-wrap: anywhere;
+ width: 0;
+ }
+</style>
+
+<p>Test passes if there are four identical lines of text below.
+<div lang=hi id=ref>&#x0937;&#x093F;<br>&#x0937;&#x093F;</div>
+<div lang=hi id=test>&#x0937;&#x093F;&#x0937;&#x093F;</div>
diff --git a/tests/wpt/web-platform-tests/css/css-text/overflow-wrap/overflow-wrap-normal-keep-all-001.html b/tests/wpt/web-platform-tests/css/css-text/overflow-wrap/overflow-wrap-normal-keep-all-001.html
new file mode 100644
index 00000000000..8047aba133a
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/overflow-wrap/overflow-wrap-normal-keep-all-001.html
@@ -0,0 +1,18 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Text level 3 Test: word-break-keep-all and overflow-wrap:normal</title>
+<link rel="author" title="Florian Rivoal" href="https://florian.rivoal.net/">
+<link rel="help" href="https://www.w3.org/TR/css-text-3/#overflow-wrap-property">
+<link rel="match" href="reference/overflow-wrap-normal-keep-all-001-ref.html">
+<meta name="flags" content="may">
+<meta name="assert" content="with overflow-wrap:normal, the restrictions introduced by word-break:keep-all may be relaxed to match word-break:normal if there are no otherwise-acceptable break points in the line.">
+<style>
+ div {
+ overflow-wrap: normal;
+ word-break: keep-all;
+ width: 0;
+ }
+</style>
+
+<p>Test passes if there is a column of 文 characters on top of eachother below.
+<div lang=ja>文文文文文文文文</div>
diff --git a/tests/wpt/web-platform-tests/css/css-text/overflow-wrap/reference/overflow-wrap-cluster-001-ref.html b/tests/wpt/web-platform-tests/css/css-text/overflow-wrap/reference/overflow-wrap-cluster-001-ref.html
new file mode 100644
index 00000000000..5a00d7284b2
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/overflow-wrap/reference/overflow-wrap-cluster-001-ref.html
@@ -0,0 +1,17 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Text level 3 Test reference</title>
+<link rel="author" title="Florian Rivoal" href="https://florian.rivoal.net/">
+<style>
+ div {
+ font-size: 4em;
+ margin: 1rem;
+ width: 4em;
+ }
+</style>
+
+<p>Test passes if there are four identical lines of text below.
+<div lang=hi>&#x0937;&#x093F;</div>
+<div lang=hi>&#x0937;&#x093F;</div>
+<div lang=hi>&#x0937;&#x093F;</div>
+<div lang=hi>&#x0937;&#x093F;</div>
diff --git a/tests/wpt/web-platform-tests/css/css-text/overflow-wrap/reference/overflow-wrap-normal-keep-all-001-ref.html b/tests/wpt/web-platform-tests/css/css-text/overflow-wrap/reference/overflow-wrap-normal-keep-all-001-ref.html
new file mode 100644
index 00000000000..f0b41134fa0
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/overflow-wrap/reference/overflow-wrap-normal-keep-all-001-ref.html
@@ -0,0 +1,7 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Text level 3 Test reference</title>
+<link rel="author" title="Florian Rivoal" href="https://florian.rivoal.net/">
+
+<p>Test passes if there is a column of 文 characters on top of eachother below.
+<div lang=ja>文<br>文<br>文<br>文<br>文<br>文<br>文<br>文</div>
diff --git a/tests/wpt/web-platform-tests/feature-policy/feature-policy-for-sandbox/resources/helper.js b/tests/wpt/web-platform-tests/feature-policy/feature-policy-for-sandbox/resources/helper.js
index 09a8aa7846c..9de84165356 100644
--- a/tests/wpt/web-platform-tests/feature-policy/feature-policy-for-sandbox/resources/helper.js
+++ b/tests/wpt/web-platform-tests/feature-policy/feature-policy-for-sandbox/resources/helper.js
@@ -7,8 +7,8 @@ const ignore_features_for_auxilary_context = ["popups", "scripts"];
// Feature-policies that represent specific sandbox flags.
const sandbox_features = [
- "forms", "modals", "orientation-lock", "pointer-lock", "popups",
- "presentation", "scripts", "top-navigation"];
+ "downloads-without-user-activation", "forms", "modals", "orientation-lock",
+ "pointer-lock", "popups", "presentation", "scripts", "top-navigation"];
// TODO(ekaramad): Figure out different inheritance requirements for different
// policies.
diff --git a/tests/wpt/web-platform-tests/interfaces/wake-lock.idl b/tests/wpt/web-platform-tests/interfaces/wake-lock.idl
index 4c11b695f49..c0d4bc9c239 100644
--- a/tests/wpt/web-platform-tests/interfaces/wake-lock.idl
+++ b/tests/wpt/web-platform-tests/interfaces/wake-lock.idl
@@ -11,16 +11,13 @@ enum WakeLockType { "screen", "system" };
[Constructor(WakeLockType type), SecureContext, Exposed=(DedicatedWorker,Window)]
interface WakeLock : EventTarget {
+ [Exposed=Window] static Promise<PermissionState> requestPermission(WakeLockType type);
readonly attribute WakeLockType type;
readonly attribute boolean active;
attribute EventHandler onactivechange;
- Promise<void> request(optional WakeLockRequestOptions options);
+ Promise<void> request();
+ void abort();
static sequence<WakeLock> query(optional WakeLockQueryFilter filter);
- [Exposed=Window] static Promise<PermissionState> requestPermission(WakeLockType type);
-};
-
-dictionary WakeLockRequestOptions {
- AbortSignal? signal;
};
dictionary WakeLockQueryFilter {
diff --git a/tests/wpt/web-platform-tests/interfaces/webxr.idl b/tests/wpt/web-platform-tests/interfaces/webxr.idl
index edd7e73fd6f..6a455975946 100644
--- a/tests/wpt/web-platform-tests/interfaces/webxr.idl
+++ b/tests/wpt/web-platform-tests/interfaces/webxr.idl
@@ -10,12 +10,18 @@ partial interface Navigator {
[SecureContext, Exposed=Window] interface XR : EventTarget {
// Methods
Promise<void> supportsSessionMode(XRSessionMode mode);
- Promise<XRSession> requestSession(optional XRSessionCreationOptions parameters);
+ Promise<XRSession> requestSession(XRSessionMode mode);
// Events
attribute EventHandler ondevicechange;
};
+enum XRSessionMode {
+ "inline",
+ "immersive-vr",
+ "immersive-ar"
+};
+
enum XREnvironmentBlendMode {
"opaque",
"additive",
@@ -50,19 +56,10 @@ enum XREnvironmentBlendMode {
attribute EventHandler onselectend;
};
-enum XRSessionMode {
- "inline",
- "immersive-vr",
- "immersive-ar"
-};
-
-dictionary XRSessionCreationOptions {
- XRSessionMode mode = "inline";
-};
-
dictionary XRRenderStateInit {
double depthNear;
double depthFar;
+ double inlineVerticalFieldOfView;
XRLayer? baseLayer;
XRPresentationContext? outputContext;
};
@@ -70,6 +67,7 @@ dictionary XRRenderStateInit {
[SecureContext, Exposed=Window] interface XRRenderState {
readonly attribute double depthNear;
readonly attribute double depthFar;
+ readonly attribute double? inlineVerticalFieldOfView;
readonly attribute XRLayer? baseLayer;
readonly attribute XRPresentationContext? outputContext;
};
diff --git a/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/mo-paint-lspace-rspace.html b/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/mo-paint-lspace-rspace.html
index 66df88264d1..879962c4776 100644
--- a/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/mo-paint-lspace-rspace.html
+++ b/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/mo-paint-lspace-rspace.html
@@ -13,7 +13,7 @@
<p>The test passes if the arrow has a leading space of 100px, which is as wide as the black block to the left,
and a trailing space of 200px, which is as wide as the black block to the right.</p>
- <mth>
+ <math>
<mspace width="100px" height="10px" depth="10px" style="background: black"></mspace>
<mo lspace="100px" rspace="200px">→</mo>
<mspace width="200px" height="10px" depth="10px" style="background: black"></mspace>
diff --git a/tests/wpt/web-platform-tests/mathml/relations/html5-tree/required-extensions-1.html b/tests/wpt/web-platform-tests/mathml/relations/html5-tree/required-extensions-1.html
deleted file mode 100644
index 3dd7f168ec1..00000000000
--- a/tests/wpt/web-platform-tests/mathml/relations/html5-tree/required-extensions-1.html
+++ /dev/null
@@ -1,12 +0,0 @@
-<!DOCTYPE html>
-<meta charset="utf-8">
-<title>SVG requiredExtensions</title>
-<link rel="help" href="https://mathml-refresh.github.io/mathml-core/#dom">
-<meta name="assert" content="Verify whether the MathML namespace is recognized as a required extensions of SVG foreignObject when using the hasExtension javascript function.">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script>
- test(function() {
- assert_true(document.createElementNS("http://www.w3.org/2000/svg", "foreignObject").hasExtension("http://www.w3.org/1998/Math/MathML"))
- }, "Testing foreignObject.hasExtension('http://www.w3.org/1998/Math/MathML')");
-</script>
diff --git a/tests/wpt/web-platform-tests/native-file-system/FileSystemBaseHandle-copyTo.tentative.window.js b/tests/wpt/web-platform-tests/native-file-system/FileSystemBaseHandle-copyTo.tentative.window.js
new file mode 100644
index 00000000000..2019024363a
--- /dev/null
+++ b/tests/wpt/web-platform-tests/native-file-system/FileSystemBaseHandle-copyTo.tentative.window.js
@@ -0,0 +1,72 @@
+// META: script=resources/test-helpers.js
+promise_test(async t => cleanupSandboxedFileSystem(),
+ 'Cleanup to setup test environment');
+
+promise_test(async t => {
+ const old_handle = await createFileWithContents(t, 'old-file', '12345');
+ const dir = await old_handle.getParent();
+ const new_handle = await old_handle.copyTo(dir, 'new-name');
+ t.add_cleanup(() => new_handle.remove());
+
+ // Verify new file.
+ assert_true(new_handle.isFile);
+ assert_false(new_handle.isDirectory);
+ assert_equals(new_handle.name, 'new-name');
+ assert_equals(await getFileContents(new_handle), '12345');
+
+ // And verify old file is still around as well.
+ assert_equals(await getFileContents(old_handle), '12345');
+
+ // Verify directory entries.
+ assert_array_equals(await getSortedDirectoryEntries(dir), ['new-name', 'old-file']);
+}, 'copyTo() into the same parent directory');
+
+promise_test(async t => {
+ const dir = await FileSystemDirectoryHandle.getSystemDirectory({ type: 'sandbox' });
+ const old_handle = await createFileWithContents(t, 'old-file', '12345');
+ const target_dir = await dir.getDirectory('dir-name', { create: true });
+ t.add_cleanup(() => target_dir.removeRecursively());
+
+ const new_handle = await old_handle.copyTo(target_dir);
+
+ // Verify new file.
+ assert_true(new_handle.isFile);
+ assert_false(new_handle.isDirectory);
+ assert_equals(new_handle.name, 'old-file');
+ assert_equals(await getFileContents(new_handle), '12345');
+
+ // And verify old file is still around as well.
+ assert_equals(await getFileContents(old_handle), '12345');
+
+ // Verify directory entries.
+ assert_array_equals(await getSortedDirectoryEntries(dir), ['dir-name/', 'old-file']);
+ assert_array_equals(await getSortedDirectoryEntries(target_dir), ['old-file']);
+}, 'copyTo() to copy a file into a sub-directory');
+
+
+promise_test(async t => {
+ const handle = await createFileWithContents(t, 'old-file', '12345');
+ const dir = await handle.getParent();
+
+ await promise_rejects(t, 'InvalidModificationError', handle.copyTo(dir));
+ await promise_rejects(t, 'InvalidModificationError', handle.copyTo(dir, handle.name));
+
+ // Verify file still exists.
+ assert_equals(await getFileContents(handle), '12345');
+ assert_array_equals(await getSortedDirectoryEntries(dir), ['old-file']);
+}, 'copyTo() with existing name and parent should fail');
+
+promise_test(async t => {
+ const handle = await createFileWithContents(t, 'old-file', '12345');
+ const target_handle = await createFileWithContents(t, 'target', 'abc');
+ const dir = await handle.getParent();
+
+ await handle.copyTo(dir, target_handle.name);
+
+ // Verify state of files.
+ assert_equals(await getFileContents(handle), '12345');
+ assert_equals(await getFileContents(target_handle), '12345');
+ assert_array_equals(await getSortedDirectoryEntries(dir), ['old-file', 'target']);
+}, 'copyTo() when target file already exists should overwrite target');
+
+// TODO(mek): Tests to copy directories.
diff --git a/tests/wpt/web-platform-tests/native-file-system/FileSystemBaseHandle-moveTo.tentative.window.js b/tests/wpt/web-platform-tests/native-file-system/FileSystemBaseHandle-moveTo.tentative.window.js
new file mode 100644
index 00000000000..3badce1ca94
--- /dev/null
+++ b/tests/wpt/web-platform-tests/native-file-system/FileSystemBaseHandle-moveTo.tentative.window.js
@@ -0,0 +1,72 @@
+// META: script=resources/test-helpers.js
+promise_test(async t => cleanupSandboxedFileSystem(),
+ 'Cleanup to setup test environment');
+
+promise_test(async t => {
+ const old_handle = await createFileWithContents(t, 'old-file', '12345');
+ const dir = await old_handle.getParent();
+ const new_handle = await old_handle.moveTo(dir, 'new-name');
+ t.add_cleanup(() => new_handle.remove());
+
+ // Verify new file.
+ assert_true(new_handle.isFile);
+ assert_false(new_handle.isDirectory);
+ assert_equals(new_handle.name, 'new-name');
+ assert_equals(await getFileContents(new_handle), '12345');
+
+ // And verify old file is gone.
+ await promise_rejects(t, 'NotFoundError', getFileContents(old_handle));
+
+ // Verify directory entries.
+ assert_array_equals(await getSortedDirectoryEntries(dir), ['new-name']);
+}, 'moveTo() to rename a file');
+
+promise_test(async t => {
+ const dir = await FileSystemDirectoryHandle.getSystemDirectory({ type: 'sandbox' });
+ const old_handle = await createFileWithContents(t, 'old-file', '12345');
+ const target_dir = await dir.getDirectory('dir-name', { create: true });
+ t.add_cleanup(() => target_dir.removeRecursively());
+
+ const new_handle = await old_handle.moveTo(target_dir);
+
+ // Verify new file.
+ assert_true(new_handle.isFile);
+ assert_false(new_handle.isDirectory);
+ assert_equals(new_handle.name, 'old-file');
+ assert_equals(await getFileContents(new_handle), '12345');
+
+ // And verify old file is gone.
+ await promise_rejects(t, 'NotFoundError', getFileContents(old_handle));
+
+ // Verify directory entries.
+ assert_array_equals(await getSortedDirectoryEntries(dir), ['dir-name/']);
+ assert_array_equals(await getSortedDirectoryEntries(target_dir), ['old-file']);
+}, 'moveTo() to move a file into a sub-directory');
+
+
+promise_test(async t => {
+ const handle = await createFileWithContents(t, 'old-file', '12345');
+ const dir = await handle.getParent();
+
+ await promise_rejects(t, 'InvalidModificationError', handle.moveTo(dir));
+ await promise_rejects(t, 'InvalidModificationError', handle.moveTo(dir, handle.name));
+
+ // Verify file still exists.
+ assert_equals(await getFileContents(handle), '12345');
+ assert_array_equals(await getSortedDirectoryEntries(dir), ['old-file']);
+}, 'moveTo() with existing name and parent should fail');
+
+promise_test(async t => {
+ const handle = await createFileWithContents(t, 'old-file', '12345');
+ const target_handle = await createFileWithContents(t, 'target', 'abc');
+ const dir = await handle.getParent();
+
+ await handle.moveTo(dir, target_handle.name);
+
+ // Verify state of files.
+ await promise_rejects(t, 'NotFoundError', getFileContents(handle));
+ assert_equals(await getFileContents(target_handle), '12345');
+ assert_array_equals(await getSortedDirectoryEntries(dir), ['target']);
+}, 'moveTo() when target file already exists should overwrite target');
+
+// TODO(mek): Tests to move directories. \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/native-file-system/FileSystemBaseHandle-remove.tentative.window.js b/tests/wpt/web-platform-tests/native-file-system/FileSystemBaseHandle-remove.tentative.window.js
new file mode 100644
index 00000000000..33ac9603882
--- /dev/null
+++ b/tests/wpt/web-platform-tests/native-file-system/FileSystemBaseHandle-remove.tentative.window.js
@@ -0,0 +1,41 @@
+// META: script=resources/test-helpers.js
+promise_test(async t => cleanupSandboxedFileSystem(),
+ 'Cleanup to setup test environment');
+
+promise_test(async t => {
+ const handle = await createFileWithContents(t, 'file-to-remove', '12345');
+ const dir = await handle.getParent();
+ await createFileWithContents(t, 'file-to-keep', 'abc');
+ await handle.remove();
+
+ assert_array_equals(await getSortedDirectoryEntries(dir), ['file-to-keep']);
+ await promise_rejects(t, 'NotFoundError', getFileContents(handle));
+}, 'remove() to remove a file');
+
+promise_test(async t => {
+ const handle = await createFileWithContents(t, 'file-to-remove', '12345');
+ await handle.remove();
+
+ await promise_rejects(t, 'NotFoundError', handle.remove());
+}, 'remove() on an already removed file should fail');
+
+promise_test(async t => {
+ const root = await FileSystemDirectoryHandle.getSystemDirectory({ type: 'sandbox' });
+ const dir = await root.getDirectory('dir-to-remove', { create: true });
+ await createFileWithContents(t, 'file-to-keep', 'abc');
+ await dir.remove();
+
+ assert_array_equals(await getSortedDirectoryEntries(root), ['file-to-keep']);
+ await promise_rejects(t, 'NotFoundError', getSortedDirectoryEntries(dir));
+}, 'remove() to remove an empty directory');
+
+promise_test(async t => {
+ const root = await FileSystemDirectoryHandle.getSystemDirectory({ type: 'sandbox' });
+ const dir = await root.getDirectory('dir-to-remove', { create: true });
+ t.add_cleanup(() => dir.removeRecursively());
+ await createEmptyFile(t, 'file-in-dir', dir);
+
+ await promise_rejects(t, 'InvalidModificationError', dir.remove());
+ assert_array_equals(await getSortedDirectoryEntries(root), ['dir-to-remove/']);
+ assert_array_equals(await getSortedDirectoryEntries(dir), ['file-in-dir']);
+}, 'remove() on a non-empty directory should fail'); \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/native-file-system/FileSystemDirectoryHandle-getDirectory.tentative.window.js b/tests/wpt/web-platform-tests/native-file-system/FileSystemDirectoryHandle-getDirectory.tentative.window.js
new file mode 100644
index 00000000000..105879dbd1e
--- /dev/null
+++ b/tests/wpt/web-platform-tests/native-file-system/FileSystemDirectoryHandle-getDirectory.tentative.window.js
@@ -0,0 +1,57 @@
+// META: script=resources/test-helpers.js
+promise_test(async t => cleanupSandboxedFileSystem(),
+ 'Cleanup to setup test environment');
+
+promise_test(async t => {
+ const root = await FileSystemDirectoryHandle.getSystemDirectory({ type: 'sandbox' });
+ await promise_rejects(t, 'NotFoundError', root.getDirectory('non-existing-dir'));
+}, 'getDirectory(create=false) rejects for non-existing directories');
+
+promise_test(async t => {
+ const root = await FileSystemDirectoryHandle.getSystemDirectory({ type: 'sandbox' });
+ const handle = await root.getDirectory('non-existing-dir', { create: true });
+ t.add_cleanup(() => handle.removeRecursively());
+
+ assert_false(handle.isFile);
+ assert_true(handle.isDirectory);
+ assert_equals(handle.name, 'non-existing-dir');
+ assert_equals(await getDirectoryEntryCount(handle), 0);
+ assert_array_equals(await getSortedDirectoryEntries(root), ['non-existing-dir/']);
+}, 'getDirectory(create=true) creates an empty directory');
+
+promise_test(async t => {
+ const root = await FileSystemDirectoryHandle.getSystemDirectory({ type: 'sandbox' });
+ const existing_handle = await root.getDirectory('dir-with-contents', { create: true });
+ t.add_cleanup(() => existing_handle.removeRecursively());
+ const file_handle = await createEmptyFile(t, 'test-file', existing_handle);
+
+ const handle = await root.getDirectory('dir-with-contents', { create: false });
+
+ assert_false(handle.isFile);
+ assert_true(handle.isDirectory);
+ assert_equals(handle.name, 'dir-with-contents');
+ assert_array_equals(await getSortedDirectoryEntries(handle), ['test-file']);
+}, 'getDirectory(create=false) returns existing directories');
+
+promise_test(async t => {
+ const root = await FileSystemDirectoryHandle.getSystemDirectory({ type: 'sandbox' });
+ const existing_handle = await root.getDirectory('dir-with-contents', { create: true });
+ t.add_cleanup(() => existing_handle.removeRecursively());
+ const file_handle = await existing_handle.getFile('test-file', { create: true });
+
+ const handle = await root.getDirectory('dir-with-contents', { create: true });
+
+ assert_false(handle.isFile);
+ assert_true(handle.isDirectory);
+ assert_equals(handle.name, 'dir-with-contents');
+ assert_array_equals(await getSortedDirectoryEntries(handle), ['test-file']);
+}, 'getDirectory(create=true) returns existing directories without erasing');
+
+promise_test(async t => {
+ const root = await FileSystemDirectoryHandle.getSystemDirectory({ type: 'sandbox' });
+ await createEmptyFile(t, 'file-name');
+
+ await promise_rejects(t, 'TypeMismatchError', root.getDirectory('file-name'));
+ await promise_rejects(t, 'TypeMismatchError', root.getDirectory('file-name', { create: false }));
+ await promise_rejects(t, 'TypeMismatchError', root.getDirectory('file-name', { create: true }));
+}, 'getDirectory() when a file already exists with the same name');
diff --git a/tests/wpt/web-platform-tests/native-file-system/FileSystemDirectoryHandle-getFile.tentative.window.js b/tests/wpt/web-platform-tests/native-file-system/FileSystemDirectoryHandle-getFile.tentative.window.js
new file mode 100644
index 00000000000..0d9bacd87ee
--- /dev/null
+++ b/tests/wpt/web-platform-tests/native-file-system/FileSystemDirectoryHandle-getFile.tentative.window.js
@@ -0,0 +1,62 @@
+// META: script=resources/test-helpers.js
+promise_test(async t => cleanupSandboxedFileSystem(),
+ 'Cleanup to setup test environment');
+
+promise_test(async t => {
+ const dir = await FileSystemDirectoryHandle.getSystemDirectory({ type: 'sandbox' });
+ await promise_rejects(t, 'NotFoundError', dir.getFile('non-existing-file'));
+}, 'getFile(create=false) rejects for non-existing files');
+
+promise_test(async t => {
+ const dir = await FileSystemDirectoryHandle.getSystemDirectory({ type: 'sandbox' });
+ const handle = await dir.getFile('non-existing-file', { create: true });
+ t.add_cleanup(() => handle.remove());
+
+ assert_true(handle.isFile);
+ assert_false(handle.isDirectory);
+ assert_equals(handle.name, 'non-existing-file');
+ assert_equals(await getFileSize(handle), 0);
+ assert_equals(await getFileContents(handle), '');
+}, 'getFile(create=true) creates an empty file for non-existing files');
+
+promise_test(async t => {
+ const existing_handle = await createFileWithContents(t, 'existing-file', '1234567890');
+
+ const dir = await FileSystemDirectoryHandle.getSystemDirectory({ type: 'sandbox' });
+ const handle = await dir.getFile('existing-file');
+
+ assert_true(handle.isFile);
+ assert_false(handle.isDirectory);
+ assert_equals(handle.name, 'existing-file');
+ assert_equals(await getFileSize(handle), 10);
+ assert_equals(await getFileContents(handle), '1234567890');
+}, 'getFile(create=false) returns existing files');
+
+promise_test(async t => {
+ const existing_handle = await createFileWithContents(t, 'file-with-contents', '1234567890');
+
+ const dir = await FileSystemDirectoryHandle.getSystemDirectory({ type: 'sandbox' });
+ const handle = await dir.getFile('file-with-contents', { create: true });
+
+ assert_true(handle.isFile);
+ assert_false(handle.isDirectory);
+ assert_equals(handle.name, 'file-with-contents');
+ assert_equals(await getFileSize(handle), 10);
+ assert_equals(await getFileContents(handle), '1234567890');
+}, 'getFile(create=true) returns existing files without erasing');
+
+promise_test(async t => {
+ const dir = await FileSystemDirectoryHandle.getSystemDirectory({ type: 'sandbox' });
+ const dir_handle = await dir.getDirectory('dir-name', { create: true });
+ t.add_cleanup(() => dir_handle.removeRecursively());
+
+ await promise_rejects(t, 'TypeMismatchError', dir.getFile('dir-name'));
+}, 'getFile(create=false) when a directory already exists with the same name');
+
+promise_test(async t => {
+ const dir = await FileSystemDirectoryHandle.getSystemDirectory({ type: 'sandbox' });
+ const dir_handle = await dir.getDirectory('dir-name', { create: true });
+ t.add_cleanup(() => dir_handle.removeRecursively());
+
+ await promise_rejects(t, 'TypeMismatchError', dir.getFile('dir-name', { create: true }));
+}, 'getFile(create=true) when a directory already exists with the same name'); \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/native-file-system/FileSystemWriter.tentative.window.js b/tests/wpt/web-platform-tests/native-file-system/FileSystemWriter.tentative.window.js
new file mode 100644
index 00000000000..cc8444237b6
--- /dev/null
+++ b/tests/wpt/web-platform-tests/native-file-system/FileSystemWriter.tentative.window.js
@@ -0,0 +1,96 @@
+// META: script=resources/test-helpers.js
+promise_test(async t => cleanupSandboxedFileSystem(),
+ 'Cleanup to setup test environment');
+
+promise_test(async t => {
+ const handle = await createEmptyFile(t, 'empty_blob');
+ const writer = await handle.createWriter();
+
+ await writer.write(0, new Blob([]));
+
+ assert_equals(await getFileContents(handle), '');
+ assert_equals(await getFileSize(handle), 0);
+}, 'write() with an empty blob to an empty file');
+
+promise_test(async t => {
+ const handle = await createEmptyFile(t, 'valid_blob');
+ const writer = await handle.createWriter();
+
+ await writer.write(0, new Blob(['1234567890']));
+
+ assert_equals(await getFileContents(handle), '1234567890');
+ assert_equals(await getFileSize(handle), 10);
+}, 'write() a blob to an empty file');
+
+promise_test(async t => {
+ const handle = await createEmptyFile(t, 'blob_with_offset');
+ const writer = await handle.createWriter();
+
+ await writer.write(0, new Blob(['1234567890']));
+ await writer.write(4, new Blob(['abc']));
+
+ assert_equals(await getFileContents(handle), '1234abc890');
+ assert_equals(await getFileSize(handle), 10);
+}, 'write() called with a blob and a valid offset');
+
+promise_test(async t => {
+ const handle = await createEmptyFile(t, 'bad_offset');
+ const writer = await handle.createWriter();
+
+ await promise_rejects(t, 'InvalidStateError', writer.write(4, new Blob(['abc'])));
+
+ assert_equals(await getFileContents(handle), '');
+ assert_equals(await getFileSize(handle), 0);
+}, 'write() called with an invalid offset');
+
+promise_test(async t => {
+ const handle = await createEmptyFile(t, 'trunc_shrink');
+ const writer = await handle.createWriter();
+
+ await writer.write(0, new Blob(['1234567890']));
+ await writer.truncate(5);
+
+ assert_equals(await getFileContents(handle), '12345');
+ assert_equals(await getFileSize(handle), 5);
+}, 'truncate() to shrink a file');
+
+promise_test(async t => {
+ const handle = await createEmptyFile(t, 'trunc_grow');
+ const writer = await handle.createWriter();
+
+ await writer.write(0, new Blob(['abc']));
+ await writer.truncate(5);
+
+ assert_equals(await getFileContents(handle), 'abc\0\0');
+ assert_equals(await getFileSize(handle), 5);
+}, 'truncate() to grow a file');
+
+promise_test(async t => {
+ const handle = await createEmptyFile(t, 'write_stream');
+ const writer = await handle.createWriter();
+
+ const stream = new Response('1234567890').body;
+ await writer.write(0, stream);
+
+ assert_equals(await getFileContents(handle), '1234567890');
+ assert_equals(await getFileSize(handle), 10);
+}, 'write() called with a ReadableStream');
+
+promise_test(async t => {
+ const handle = await createEmptyFile(t, 'write_stream');
+ const handle_writer = await handle.createWriter();
+
+ const { writable, readable } = new TransformStream();
+ const write_result = handle_writer.write(0, readable);
+
+ const stream_writer = writable.getWriter();
+ stream_writer.write(new Uint8Array([0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 0x73, 0x21]));
+ garbageCollect();
+ stream_writer.write(new Uint8Array([0x21, 0x21]));
+ stream_writer.close();
+
+ await write_result;
+
+ assert_equals(await getFileContents(handle), 'streams!!!');
+ assert_equals(await getFileSize(handle), 10);
+}, 'Using a WritableStream writer to write');
diff --git a/tests/wpt/web-platform-tests/native-file-system/README.md b/tests/wpt/web-platform-tests/native-file-system/README.md
new file mode 100644
index 00000000000..6905a68e790
--- /dev/null
+++ b/tests/wpt/web-platform-tests/native-file-system/README.md
@@ -0,0 +1,2 @@
+This directory contains (tentative) tests for the
+[Native File System](https://wicg.github.io/native-file-system/) specification.
diff --git a/tests/wpt/web-platform-tests/native-file-system/resources/test-helpers.js b/tests/wpt/web-platform-tests/native-file-system/resources/test-helpers.js
new file mode 100644
index 00000000000..dc5f376233b
--- /dev/null
+++ b/tests/wpt/web-platform-tests/native-file-system/resources/test-helpers.js
@@ -0,0 +1,67 @@
+async function cleanupSandboxedFileSystem() {
+ const dir = await FileSystemDirectoryHandle.getSystemDirectory({ type: 'sandbox' });
+ for await (let entry of dir.getEntries()) {
+ if (entry.isDirectory)
+ await entry.removeRecursively();
+ else
+ await entry.remove();
+ }
+}
+
+async function getFileSize(handle) {
+ const file = await handle.getFile();
+ return file.size;
+}
+
+async function getFileContents(handle) {
+ const file = await handle.getFile();
+ return new Response(file).text();
+}
+
+async function getDirectoryEntryCount(handle) {
+ let result = 0;
+ for await (let entry of handle.getEntries()) {
+ result++;
+ }
+ return result;
+}
+
+async function getSortedDirectoryEntries(handle) {
+ let result = [];
+ for await (let entry of handle.getEntries()) {
+ if (entry.isDirectory)
+ result.push(entry.name + '/');
+ else
+ result.push(entry.name);
+ }
+ result.sort();
+ return result;
+}
+
+async function createEmptyFile(test, name, parent) {
+ const dir = parent ? parent : await FileSystemDirectoryHandle.getSystemDirectory({ type: 'sandbox' });
+ const handle = await dir.getFile(name, { create: true });
+ test.add_cleanup(async () => {
+ try {
+ await handle.remove();
+ } catch (e) {
+ // Ignore any errors when removing files, as tests might already remove the file.
+ }
+ });
+ // Make sure the file is empty.
+ assert_equals(await getFileSize(handle), 0);
+ return handle;
+}
+
+async function createFileWithContents(test, name, contents, parent) {
+ const handle = await createEmptyFile(test, name, parent);
+ const writer = await handle.createWriter();
+ await writer.write(0, new Blob([contents]));
+ return handle;
+}
+
+function garbageCollect() {
+ // TODO(https://github.com/web-platform-tests/wpt/issues/7899): Change to
+ // some sort of cross-browser GC trigger.
+ if (self.gc) self.gc();
+}; \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/resource-timing/crossorigin-sandwich-TAO.sub.html b/tests/wpt/web-platform-tests/resource-timing/crossorigin-sandwich-TAO.sub.html
new file mode 100644
index 00000000000..c3085950bd6
--- /dev/null
+++ b/tests/wpt/web-platform-tests/resource-timing/crossorigin-sandwich-TAO.sub.html
@@ -0,0 +1,46 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+<meta charset="utf-8" />
+<title>This test validates resource timing information for a same-origin=>cross-origin=>same-origin redirect chain with Timing-Allow-Origin.</title>
+<link rel="help" href="http://www.w3.org/TR/resource-timing/#performanceresourcetiming"/>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/common/get-host-info.sub.js"></script>
+<script src="resources/webperftestharness.js"></script>
+<script src="resources/webperftestharnessextension.js"></script>
+
+<script>
+ setup({explicit_done: true});
+ test_namespace('getEntriesByName');
+ const pageOrigin = get_host_info()['ORIGIN'];
+ const crossOrigin = get_host_info()['REMOTE_ORIGIN'];
+
+ function onload_test()
+ {
+ const entries = performance.getEntriesByName(document.getElementById('frameContext').src, 'resource');
+ test_equals(entries.length, 1, 'There should be one entry.');
+ const entry = entries[0];
+
+ test_greater_than(entry.redirectStart, 0, 'redirectStart > 0 in cross-origin redirect with Timing-Allow-Origin.');
+ test_greater_than(entry.redirectEnd, 0, 'redirectEnd > 0 in cross-origin redirect with Timing-Allow-Origin.');
+ test_greater_than(entry.fetchStart, 0, 'fetchStart > 0 in cross-origin redirect.');
+ test_greater_than(entry.fetchStart, entry.startTime, 'startTime < fetchStart in cross-origin redirect with Timing-Allow-Origin.');
+ done();
+ }
+</script>
+
+</head>
+<body>
+<iframe id="frameContext" src="" style="width: 250px; height: 250px;"></iframe>
+<script>
+ let destUrl = pageOrigin + '/resource-timing/resources/multi_redirect.py?';
+ destUrl += 'page_origin=' + pageOrigin;
+ destUrl += '&timing_allow=1';
+ destUrl += '&cross_origin=' + crossOrigin;
+ const frameContext = document.getElementById('frameContext');
+ frameContext.onload = onload_test;
+ frameContext.src = destUrl;
+</script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/resource-timing/crossorigin-sandwich-no-TAO.sub.html b/tests/wpt/web-platform-tests/resource-timing/crossorigin-sandwich-no-TAO.sub.html
new file mode 100644
index 00000000000..c7e7e5948dc
--- /dev/null
+++ b/tests/wpt/web-platform-tests/resource-timing/crossorigin-sandwich-no-TAO.sub.html
@@ -0,0 +1,45 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+<meta charset="utf-8" />
+<title>This test validates resource timing information for a same-origin=>cross-origin=>same-origin redirect chain without Timing-Allow-Origin.</title>
+<link rel="help" href="http://www.w3.org/TR/resource-timing/#performanceresourcetiming"/>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/common/get-host-info.sub.js"></script>
+<script src="resources/webperftestharness.js"></script>
+<script src="resources/webperftestharnessextension.js"></script>
+
+<script>
+ setup({explicit_done: true});
+ test_namespace('getEntriesByName');
+ const pageOrigin = get_host_info()['ORIGIN'];
+ const crossOrigin = get_host_info()['REMOTE_ORIGIN'];
+
+ function onload_test()
+ {
+ const entries = performance.getEntriesByName(document.getElementById('frameContext').src, 'resource');
+ test_equals(entries.length, 1, 'There should be one entry.');
+ const entry = entries[0];
+
+ test_equals(entry.redirectStart, 0, 'redirectStart == 0 in cross-origin redirect with no Timing-Allow-Origin.');
+ test_equals(entry.redirectEnd, 0, 'redirectEnd == 0 in cross-origin redirect with no Timing-Allow-Origin.');
+ test_greater_than(entry.fetchStart, 0, 'fetchStart > 0 in cross-origin redirect.');
+ test_equals(entry.fetchStart, entry.startTime, 'startTime == fetchStart in cross-origin redirect with no Timing-Allow-Origin.');
+ done();
+ }
+</script>
+
+</head>
+<body>
+<iframe id="frameContext" src="" style="width: 250px; height: 250px;"></iframe>
+<script>
+ let destUrl = pageOrigin + '/resource-timing/resources/multi_redirect.py?';
+ destUrl += 'page_origin=' + pageOrigin;
+ destUrl += '&cross_origin=' + crossOrigin;
+ const frameContext = document.getElementById('frameContext');
+ frameContext.onload = onload_test;
+ frameContext.src = destUrl;
+</script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/resource-timing/resources/multi_redirect.py b/tests/wpt/web-platform-tests/resource-timing/resources/multi_redirect.py
index d1802a1e02d..39121ddbb45 100644
--- a/tests/wpt/web-platform-tests/resource-timing/resources/multi_redirect.py
+++ b/tests/wpt/web-platform-tests/resource-timing/resources/multi_redirect.py
@@ -13,27 +13,31 @@ def main(request, response):
except ValueError:
pass
+ origin = request.url_parts.scheme + "://" + request.url_parts.hostname + ":" + str(request.url_parts.port)
page_origin = request.GET.first("page_origin")
cross_origin = request.GET.first("cross_origin")
timing_allow = "0"
if "timing_allow" in request.GET:
timing_allow = request.GET.first("timing_allow")
- redirect_url = "/resource-timing/resources/multi_redirect.py?"
- redirect_url += "page_origin=" + page_origin
- redirect_url += "&cross_origin=" + cross_origin
- redirect_url += "&timing_allow=" + timing_allow
- redirect_url += "&step="
+ redirect_url_path = "/resource-timing/resources/multi_redirect.py?"
+ redirect_url_path += "page_origin=" + page_origin
+ redirect_url_path += "&cross_origin=" + cross_origin
+ redirect_url_path += "&timing_allow=" + timing_allow
+ redirect_url_path += "&step="
if step == 1:
- redirect_url = cross_origin + redirect_url + "2"
- if timing_allow != "0":
+ # On the first request, redirect to a cross origin URL
+ redirect_url = cross_origin + redirect_url_path + "2"
+ if timing_allow != "0" and origin != page_origin:
response.headers.set("timing-allow-origin", page_origin)
elif step == 2:
- redirect_url = page_origin + redirect_url + "3"
+ # On the second request, redirect to a same origin URL
+ redirect_url = page_origin + redirect_url_path + "3"
if timing_allow != "0":
response.headers.set("timing-allow-origin", page_origin)
else:
+ # On the third request, redirect to a static response
redirect_url = page_origin + "/resource-timing/resources/blank_page_green.htm"
response.status = 302
diff --git a/tests/wpt/web-platform-tests/resources/chromium/image_capture.mojom.js b/tests/wpt/web-platform-tests/resources/chromium/image_capture.mojom.js
index bf8dd16ca75..50428ffcb80 100644
--- a/tests/wpt/web-platform-tests/resources/chromium/image_capture.mojom.js
+++ b/tests/wpt/web-platform-tests/resources/chromium/image_capture.mojom.js
@@ -434,7 +434,7 @@
return err;
var kVersionSizes = [
- {version: 0, numBytes: 16}
+ {version: 0, numBytes: 24}
];
err = messageValidator.validateStructVersion(offset, kVersionSizes);
if (err !== validator.validationError.NONE)
@@ -445,15 +445,15 @@
return validator.validationError.NONE;
};
- Point2D.encodedSize = codec.kStructHeaderSize + 8;
+ Point2D.encodedSize = codec.kStructHeaderSize + 16;
Point2D.decode = function(decoder) {
var packed;
var val = new Point2D();
var numberOfBytes = decoder.readUint32();
var version = decoder.readUint32();
- val.x = decoder.decodeStruct(codec.Float);
- val.y = decoder.decodeStruct(codec.Float);
+ val.x = decoder.decodeStruct(codec.Double);
+ val.y = decoder.decodeStruct(codec.Double);
return val;
};
@@ -461,8 +461,8 @@
var packed;
encoder.writeUint32(Point2D.encodedSize);
encoder.writeUint32(0);
- encoder.encodeStruct(codec.Float, val.x);
- encoder.encodeStruct(codec.Float, val.y);
+ encoder.encodeStruct(codec.Double, val.x);
+ encoder.encodeStruct(codec.Double, val.y);
};
function PhotoSettings(values) {
this.initDefaults_();
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/requirements.txt b/tests/wpt/web-platform-tests/tools/wptrunner/requirements.txt
index 887068b34d2..4b568b74616 100644
--- a/tests/wpt/web-platform-tests/tools/wptrunner/requirements.txt
+++ b/tests/wpt/web-platform-tests/tools/wptrunner/requirements.txt
@@ -3,6 +3,6 @@ mozinfo==1.1.0
mozlog==4.0
mozdebug==0.1.1
pillow==6.0.0
-urllib3[secure]==1.24.1
+urllib3[secure]==1.24.2
requests==2.21.0
six>=1.8
diff --git a/tests/wpt/web-platform-tests/webxr/xrDevice_requestSession_immersive.https.html b/tests/wpt/web-platform-tests/webxr/xrDevice_requestSession_immersive.https.html
index c5956e7f3d1..50a9d344541 100644
--- a/tests/wpt/web-platform-tests/webxr/xrDevice_requestSession_immersive.https.html
+++ b/tests/wpt/web-platform-tests/webxr/xrDevice_requestSession_immersive.https.html
@@ -9,6 +9,6 @@
"Tests requestSession resolves when supported",
(session) => {
assert_not_equals(session, null);
- }, { supportsImmersive:true }, { mode: 'immersive-vr' });
+ }, { supportsImmersive:true }, 'immersive-vr');
</script>
</body> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/webxr/xrDevice_requestSession_immersive_no_gesture.https.html b/tests/wpt/web-platform-tests/webxr/xrDevice_requestSession_immersive_no_gesture.https.html
index c1b3286709d..eb5a4fda0bd 100644
--- a/tests/wpt/web-platform-tests/webxr/xrDevice_requestSession_immersive_no_gesture.https.html
+++ b/tests/wpt/web-platform-tests/webxr/xrDevice_requestSession_immersive_no_gesture.https.html
@@ -9,7 +9,7 @@
(t) => {
return XRTest.simulateDeviceConnection({ supportsImmersive:true })
.then( (controller) => promise_rejects(
- t, 'SecurityError', navigator.xr.requestSession({ mode: 'immersive-vr' })));
+ t, 'SecurityError', navigator.xr.requestSession('immersive-vr')));
});
</script>
</body>
diff --git a/tests/wpt/web-platform-tests/webxr/xrDevice_requestSession_immersive_unsupported.https.html b/tests/wpt/web-platform-tests/webxr/xrDevice_requestSession_immersive_unsupported.https.html
index 60e9e6cc6e1..2592f3a4a0d 100644
--- a/tests/wpt/web-platform-tests/webxr/xrDevice_requestSession_immersive_unsupported.https.html
+++ b/tests/wpt/web-platform-tests/webxr/xrDevice_requestSession_immersive_unsupported.https.html
@@ -13,7 +13,7 @@
resolve(promise_rejects(
t,
"NotSupportedError",
- navigator.xr.requestSession({ mode: 'immersive-vr' })
+ navigator.xr.requestSession('immersive-vr')
))
});
}));
diff --git a/tests/wpt/web-platform-tests/webxr/xrDevice_requestSession_no_mode.https.html b/tests/wpt/web-platform-tests/webxr/xrDevice_requestSession_no_mode.https.html
new file mode 100644
index 00000000000..c4ac3f6b6d7
--- /dev/null
+++ b/tests/wpt/web-platform-tests/webxr/xrDevice_requestSession_no_mode.https.html
@@ -0,0 +1,22 @@
+<!DOCTYPE html>
+<body>
+ <script src=/resources/testharness.js></script>
+ <script src=/resources/testharnessreport.js></script>
+ <script src="resources/webxr_util.js"></script>
+ <script>
+ xr_promise_test(
+ "Requesting a session with no mode rejects",
+ (t) => {
+ return XRTest.simulateDeviceConnection({ supportsImmersive:false })
+ .then( (controller) => new Promise((resolve) => {
+ XRTest.simulateUserActivation( () => {
+ resolve(promise_rejects(
+ t,
+ new TypeError(),
+ navigator.xr.requestSession()
+ ))
+ });
+ }));
+ });
+ </script>
+</body>
diff --git a/tests/wpt/web-platform-tests/webxr/xrDevice_requestSession_non_immersive_no_gesture.https.html b/tests/wpt/web-platform-tests/webxr/xrDevice_requestSession_non_immersive_no_gesture.https.html
index 241b5ded0a5..40e6f4928b3 100644
--- a/tests/wpt/web-platform-tests/webxr/xrDevice_requestSession_non_immersive_no_gesture.https.html
+++ b/tests/wpt/web-platform-tests/webxr/xrDevice_requestSession_non_immersive_no_gesture.https.html
@@ -8,9 +8,7 @@
"Requesting non-immersive session outside of a user gesture succeeds",
(t) => {
return XRTest.simulateDeviceConnection({ supportsImmersive:false })
- .then( (controller) => navigator.xr.requestSession({
- mode: 'inline'
- }))
+ .then( (controller) => navigator.xr.requestSession('inline'))
.then( (session) => { assert_not_equals(session, null); });
});
</script>
diff --git a/tests/wpt/web-platform-tests/webxr/xrFrame_getPose.https.html b/tests/wpt/web-platform-tests/webxr/xrFrame_getPose.https.html
index 2c75275a112..a8015e3276a 100644
--- a/tests/wpt/web-platform-tests/webxr/xrFrame_getPose.https.html
+++ b/tests/wpt/web-platform-tests/webxr/xrFrame_getPose.https.html
@@ -12,8 +12,6 @@ let immersiveTestName = "XRFrame.getPose works for immersive sessions";
let nonImmersiveTestName = "XRFrame.getPose works for non-immersive sessions";
let fakeDeviceInitParams = { supportsImmersive:true };
-let immersiveSessionOptions = { mode: 'immersive-vr' };
-let nonImmersiveSessionOptions = { outputContext: getOutputContext() };
let testFunction = function(session, fakeDeviceController, t) {
// Need to have a valid pose or input events don't process.
@@ -88,8 +86,8 @@ let testFunction = function(session, fakeDeviceController, t) {
};
xr_session_promise_test(immersiveTestName, testFunction,
- fakeDeviceInitParams, immersiveSessionOptions);
+ fakeDeviceInitParams, 'immersive-vr');
xr_session_promise_test(nonImmersiveTestName, testFunction,
- fakeDeviceInitParams, nonImmersiveSessionOptions);
+ fakeDeviceInitParams, 'inline');
</script>
diff --git a/tests/wpt/web-platform-tests/webxr/xrFrame_lifetime.https.html b/tests/wpt/web-platform-tests/webxr/xrFrame_lifetime.https.html
index 30cf5f99677..b924c89771e 100644
--- a/tests/wpt/web-platform-tests/webxr/xrFrame_lifetime.https.html
+++ b/tests/wpt/web-platform-tests/webxr/xrFrame_lifetime.https.html
@@ -13,9 +13,6 @@
let fakeDeviceInitParams = { supportsImmersive:true };
- let immersiveSessionOptions = { mode: 'immersive-vr' };
- let nonImmersiveSessionOptions = { outputContext: getOutputContext() };
-
let testFunction = (testSession, testController, t) => new Promise((resolve) => {
let staleFrame = null;
let currentReferenceSpace = null;
@@ -48,9 +45,9 @@
});
xr_session_promise_test(immersiveTestName, testFunction,
- fakeDeviceInitParams, immersiveSessionOptions);
+ fakeDeviceInitParams, 'immersive-vr');
xr_session_promise_test(nonImmersiveTestName, testFunction,
- fakeDeviceInitParams, nonImmersiveSessionOptions);
+ fakeDeviceInitParams, 'inline');
</script>
</body> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/webxr/xrRigidTransform_constructor.https.html b/tests/wpt/web-platform-tests/webxr/xrRigidTransform_constructor.https.html
index abaf8bf9ebe..15666973473 100644
--- a/tests/wpt/web-platform-tests/webxr/xrRigidTransform_constructor.https.html
+++ b/tests/wpt/web-platform-tests/webxr/xrRigidTransform_constructor.https.html
@@ -9,7 +9,6 @@
let testName = "XRRigidTransform constructor works";
let fakeDeviceInitParams = { supportsImmersive: true };
-let requestSessionOptions = { mode: 'immersive-vr' };
let testFunction =
(session, fakeDeviceController, t) => new Promise((resolve, reject) => {
@@ -108,6 +107,6 @@ let testFunction =
});
xr_session_promise_test(testName, testFunction, fakeDeviceInitParams,
- requestSessionOptions);
+ 'immersive-vr');
</script>
diff --git a/tests/wpt/web-platform-tests/webxr/xrRigidTransform_inverse.https.html b/tests/wpt/web-platform-tests/webxr/xrRigidTransform_inverse.https.html
index e795a99538e..da34fec60f0 100644
--- a/tests/wpt/web-platform-tests/webxr/xrRigidTransform_inverse.https.html
+++ b/tests/wpt/web-platform-tests/webxr/xrRigidTransform_inverse.https.html
@@ -9,7 +9,6 @@
let testName = "XRRigidTransform inverse works";
let fakeDeviceInitParams = { supportsImmersive: true };
-let requestSessionOptions = { mode: 'immersive-vr' };
let testFunction =
(session, fakeDeviceController, t) => new Promise((resolve, reject) => {
@@ -103,6 +102,6 @@ let testFunction =
});
xr_session_promise_test(testName, testFunction, fakeDeviceInitParams,
- requestSessionOptions);
+ 'immersive-vr');
</script>
diff --git a/tests/wpt/web-platform-tests/webxr/xrSession_cancelAnimationFrame.https.html b/tests/wpt/web-platform-tests/webxr/xrSession_cancelAnimationFrame.https.html
index cc7b8802cba..d45349ad244 100644
--- a/tests/wpt/web-platform-tests/webxr/xrSession_cancelAnimationFrame.https.html
+++ b/tests/wpt/web-platform-tests/webxr/xrSession_cancelAnimationFrame.https.html
@@ -13,9 +13,6 @@
let fakeDeviceInitParams = { supportsImmersive:true };
- let immersiveSessionOptions = { mode: 'immersive-vr' };
- let nonImmersiveSessionOptions = { mode: 'inline' };
-
let testFunction = (session) => new Promise((resolve, reject) => {
// Schedule and immediately cancel animation frame
@@ -49,9 +46,9 @@
});
xr_session_promise_test(immersiveTestName, testFunction,
- fakeDeviceInitParams, immersiveSessionOptions);
+ fakeDeviceInitParams, 'immersive-vr');
xr_session_promise_test(nonImmersiveTestName, testFunction,
- fakeDeviceInitParams, nonImmersiveSessionOptions);
+ fakeDeviceInitParams, 'inline');
</script>
</body>
diff --git a/tests/wpt/web-platform-tests/webxr/xrSession_cancelAnimationFrame_invalidhandle.https.html b/tests/wpt/web-platform-tests/webxr/xrSession_cancelAnimationFrame_invalidhandle.https.html
index e6a9c066543..b93f4e27909 100644
--- a/tests/wpt/web-platform-tests/webxr/xrSession_cancelAnimationFrame_invalidhandle.https.html
+++ b/tests/wpt/web-platform-tests/webxr/xrSession_cancelAnimationFrame_invalidhandle.https.html
@@ -12,9 +12,6 @@
let fakeDeviceInitParams = { supportsImmersive:true };
- let immersiveSessionOptions = { mode: 'immersive-vr' };
- let nonImmersiveSessionOptions = { mode: 'inline' };
-
let testFunction = (testSession) => new Promise((resolve) => {
let counter = 0;
@@ -37,9 +34,9 @@
});
xr_session_promise_test(
- immersiveTestName, testFunction, fakeDeviceInitParams, immersiveSessionOptions);
+ immersiveTestName, testFunction, fakeDeviceInitParams, 'immersive-vr');
xr_session_promise_test(
- nonImmersiveTestName, testFunction, fakeDeviceInitParams, nonImmersiveSessionOptions);
+ nonImmersiveTestName, testFunction, fakeDeviceInitParams, 'inline');
</script>
</body>
diff --git a/tests/wpt/web-platform-tests/webxr/xrSession_end.https.html b/tests/wpt/web-platform-tests/webxr/xrSession_end.https.html
index 6365c7de508..26b6b47d2bf 100644
--- a/tests/wpt/web-platform-tests/webxr/xrSession_end.https.html
+++ b/tests/wpt/web-platform-tests/webxr/xrSession_end.https.html
@@ -11,9 +11,6 @@
let watcherDone = new Event("watcherdone");
const fakeDeviceInitParams = { supportsImmersive:true };
- const immersiveSessionOptions = { mode: 'immersive-vr' };
- const nonImmersiveSessionOptions = { mode: 'inline' };
-
let testFunction = function(session, testDeviceController, t) {
let eventWatcher = new EventWatcher(t, session, ["end", "watcherdone"]);
let eventPromise = eventWatcher.wait_for(["end", "watcherdone"]);
@@ -31,8 +28,8 @@
};
xr_session_promise_test(immersivetestName, testFunction,
- fakeDeviceInitParams, immersiveSessionOptions);
+ fakeDeviceInitParams, 'immersive-vr');
xr_session_promise_test(nonimmersiveTestName, testFunction,
- fakeDeviceInitParams, nonImmersiveSessionOptions);
+ fakeDeviceInitParams, 'inline');
</script>
</body> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/webxr/xrSession_identity_referenceSpace.https.html b/tests/wpt/web-platform-tests/webxr/xrSession_identity_referenceSpace.https.html
index fb18edf6ddd..07abc39728c 100644
--- a/tests/wpt/web-platform-tests/webxr/xrSession_identity_referenceSpace.https.html
+++ b/tests/wpt/web-platform-tests/webxr/xrSession_identity_referenceSpace.https.html
@@ -14,9 +14,6 @@
let fakeDeviceInitParams = { supportsImmersive: true };
- let immersiveSessionOptions = { mode: 'immersive-vr' };
- let inlineSessionOptions = { mode: 'inline' };
-
const identityMatrix = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];
// Valid matrices for when we don't care about specific values
@@ -80,9 +77,9 @@
};
xr_session_promise_test(inlineTestName, testFunction,
- fakeDeviceInitParams, inlineSessionOptions);
+ fakeDeviceInitParams, 'inline');
xr_session_promise_test(immersiveTestName, testFunction,
- fakeDeviceInitParams, immersiveSessionOptions);
+ fakeDeviceInitParams, 'immersive-vr');
</script>
</body>
diff --git a/tests/wpt/web-platform-tests/webxr/xrSession_mode.https.html b/tests/wpt/web-platform-tests/webxr/xrSession_mode.https.html
index 4b54d948021..a1d06608439 100644
--- a/tests/wpt/web-platform-tests/webxr/xrSession_mode.https.html
+++ b/tests/wpt/web-platform-tests/webxr/xrSession_mode.https.html
@@ -11,7 +11,7 @@
return XRTest.simulateDeviceConnection({ supportsImmersive:true })
.then( (controller) => new Promise((resolve) => {
XRTest.simulateUserActivation( () => {
- resolve(navigator.xr.requestSession({ mode: 'immersive-vr' }).then( (session) => {
+ resolve(navigator.xr.requestSession('immersive-vr').then( (session) => {
assert_equals(session.mode, 'immersive-vr');
}));
});
diff --git a/tests/wpt/web-platform-tests/webxr/xrSession_prevent_multiple_exclusive.https.html b/tests/wpt/web-platform-tests/webxr/xrSession_prevent_multiple_exclusive.https.html
index c2e7f3bf444..e61bd392718 100644
--- a/tests/wpt/web-platform-tests/webxr/xrSession_prevent_multiple_exclusive.https.html
+++ b/tests/wpt/web-platform-tests/webxr/xrSession_prevent_multiple_exclusive.https.html
@@ -12,7 +12,7 @@
return XRTest.simulateDeviceConnection({ supportsImmersive:true })
.then( (controller) => new Promise((resolve) => {
XRTest.simulateUserActivation( () => {
- resolve(navigator.xr.requestSession({ mode: 'immersive-vr' })
+ resolve(navigator.xr.requestSession('immersive-vr')
.then( (session) => new Promise((resolve) => {
XRTest.simulateUserActivation( () => {
// Requesting a second immersive session when another immersive
@@ -22,13 +22,13 @@
resolve(promise_rejects(
t,
"InvalidStateError",
- navigator.xr.requestSession({ mode: 'immersive-vr' })
+ navigator.xr.requestSession('immersive-vr')
).then( () => {
// End the immersive session and try again. Now the immersive
// session creation should succeed.
return session.end().then( () => new Promise((resolve) => {
XRTest.simulateUserActivation( () => {
- resolve(navigator.xr.requestSession({ mode: 'immersive-vr' }));
+ resolve(navigator.xr.requestSession('immersive-vr'));
});
}));
}));
diff --git a/tests/wpt/web-platform-tests/webxr/xrSession_requestAnimationFrame_callback_calls.https.html b/tests/wpt/web-platform-tests/webxr/xrSession_requestAnimationFrame_callback_calls.https.html
index 92f7d1f79dc..2ed468bc3a5 100644
--- a/tests/wpt/web-platform-tests/webxr/xrSession_requestAnimationFrame_callback_calls.https.html
+++ b/tests/wpt/web-platform-tests/webxr/xrSession_requestAnimationFrame_callback_calls.https.html
@@ -13,9 +13,6 @@
let fakeDeviceInitParams = { supportsImmersive:true };
- let immersiveSessionOptions = { mode: 'immersive-vr' };
- let nonImmersiveSessionOptions = { mode: 'inline' };
-
let testFunction = (testSession) => new Promise((resolve) => {
function onFrame(time, xrFrame) {
assert_true(xrFrame instanceof XRFrame);
@@ -27,9 +24,9 @@
});
xr_session_promise_test(immersiveTestName, testFunction,
- fakeDeviceInitParams, immersiveSessionOptions);
+ fakeDeviceInitParams, 'immersive-vr');
xr_session_promise_test(nonImmersiveTestName, testFunction,
- fakeDeviceInitParams, nonImmersiveSessionOptions);
+ fakeDeviceInitParams, 'inline');
</script>
</body> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/webxr/xrSession_requestAnimationFrame_data_valid.https.html b/tests/wpt/web-platform-tests/webxr/xrSession_requestAnimationFrame_data_valid.https.html
index 2278666a1d7..44e903e4fb9 100644
--- a/tests/wpt/web-platform-tests/webxr/xrSession_requestAnimationFrame_data_valid.https.html
+++ b/tests/wpt/web-platform-tests/webxr/xrSession_requestAnimationFrame_data_valid.https.html
@@ -28,7 +28,6 @@
};
const fakeDeviceInitOptions = { supportsImmersive:true };
- const sessionOptions = { mode: 'immersive-vr' };
let testSession;
@@ -77,6 +76,6 @@
}
xr_session_promise_test(
- testName, testFunction, fakeDeviceInitOptions, sessionOptions);
+ testName, testFunction, fakeDeviceInitOptions, 'immersive-vr');
</script>
</body>
diff --git a/tests/wpt/web-platform-tests/webxr/xrSession_requestAnimationFrame_getViewerPose.https.html b/tests/wpt/web-platform-tests/webxr/xrSession_requestAnimationFrame_getViewerPose.https.html
index 8c8e26aa12d..5606fa1ab12 100644
--- a/tests/wpt/web-platform-tests/webxr/xrSession_requestAnimationFrame_getViewerPose.https.html
+++ b/tests/wpt/web-platform-tests/webxr/xrSession_requestAnimationFrame_getViewerPose.https.html
@@ -14,9 +14,6 @@
let fakeDeviceInitParams = { supportsImmersive: true };
- let immersiveSessionOptions = { mode: 'immersive-vr' };
- let nonImmersiveSessionOptions = { mode: 'inline' };
-
// Valid matrices for when we don't care about specific values
const validPoseMatrix = [0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 1, 1];
const validProjectionMatrix = [1, 0, 0, 0, 0, 1, 0, 0, 3, 2, -1, -1, 0, 0, -0.2, 0];
@@ -71,9 +68,9 @@
};
xr_session_promise_test(nonImmersiveTestName, testFunction,
- fakeDeviceInitParams, nonImmersiveSessionOptions);
+ fakeDeviceInitParams, 'inline');
xr_session_promise_test(immersiveTestName, testFunction,
- fakeDeviceInitParams, immersiveSessionOptions);
+ fakeDeviceInitParams, 'immersive-vr');
</script>
</body>
diff --git a/tests/wpt/web-platform-tests/webxr/xrSession_requestReferenceSpace.https.html b/tests/wpt/web-platform-tests/webxr/xrSession_requestReferenceSpace.https.html
index ed31f372ceb..0027d5dce01 100644
--- a/tests/wpt/web-platform-tests/webxr/xrSession_requestReferenceSpace.https.html
+++ b/tests/wpt/web-platform-tests/webxr/xrSession_requestReferenceSpace.https.html
@@ -13,9 +13,6 @@
let fakeDeviceInitParams = { supportsImmersive: true };
- let immersiveSessionOptions = { mode: 'immersive-vr' };
- let nonImmersiveSessionOptions = { mode: 'inline' };
-
let testFunction = function(session, fakeDeviceController, t) {
return promise_rejects(t, new TypeError(), session.requestReferenceSpace({ type: "foo" }))
.then(() => promise_rejects(t, "NotSupportedError", session.requestReferenceSpace({ type: "stationary" })))
@@ -75,9 +72,9 @@
};
xr_session_promise_test(
- immersiveTestName, testFunction, fakeDeviceInitParams, immersiveSessionOptions);
+ immersiveTestName, testFunction, fakeDeviceInitParams, 'immersive-vr');
xr_session_promise_test(
- nonImmersiveTestName, testFunction, fakeDeviceInitParams, nonImmersiveSessionOptions);
+ nonImmersiveTestName, testFunction, fakeDeviceInitParams, 'inline');
</script>
</body> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/webxr/xrSession_transfer_outputContext.https.html b/tests/wpt/web-platform-tests/webxr/xrSession_transfer_outputContext.https.html
index 658cb322487..759d97ba184 100644
--- a/tests/wpt/web-platform-tests/webxr/xrSession_transfer_outputContext.https.html
+++ b/tests/wpt/web-platform-tests/webxr/xrSession_transfer_outputContext.https.html
@@ -11,8 +11,8 @@
return XRTest.simulateDeviceConnection({ supportsImmersive:false })
.then( (controller) => {
return Promise.all([
- navigator.xr.requestSession({ mode: 'inline'}),
- navigator.xr.requestSession({ mode: 'inline'})
+ navigator.xr.requestSession('inline'),
+ navigator.xr.requestSession('inline')
]).then((sessions) => {
t.step(() => {
assert_not_equals(sessions[0], null);