diff options
author | bors-servo <lbergstrom+bors@mozilla.com> | 2019-04-18 00:23:38 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-04-18 00:23:38 -0400 |
commit | 04c93c511b021a1e76512f997992667540657c4e (patch) | |
tree | adef8886d129bb38b7d0b1463bccc83e12d953bb | |
parent | eac2607a06db56a468cae357a9ab0ed6a4945d82 (diff) | |
parent | 39f4d8b931cddb42c45161b34241ee679d0f4967 (diff) | |
download | servo-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]
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>षि<br>षि</div> +<div lang=hi id=test>षिषि</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>षि<br>षि</div> +<div lang=hi id=test>षिषि</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>षि</div> +<div lang=hi>षि</div> +<div lang=hi>षि</div> +<div lang=hi>षि</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); |