diff --git a/tests/wpt/metadata/MANIFEST.json b/tests/wpt/metadata/MANIFEST.json index 29acda356da..a9d191c5100 100644 --- a/tests/wpt/metadata/MANIFEST.json +++ b/tests/wpt/metadata/MANIFEST.json @@ -125643,6 +125643,42 @@ {} ] ], + "css/css-masking/clip-path/clip-path-inline-001.html": [ + [ + "/css/css-masking/clip-path/clip-path-inline-001.html", + [ + [ + "/css/reference/ref-filled-green-100px-square.xht", + "==" + ] + ], + {} + ] + ], + "css/css-masking/clip-path/clip-path-inline-002.html": [ + [ + "/css/css-masking/clip-path/clip-path-inline-002.html", + [ + [ + "/css/reference/ref-filled-green-100px-square.xht", + "==" + ] + ], + {} + ] + ], + "css/css-masking/clip-path/clip-path-inline-003.html": [ + [ + "/css/css-masking/clip-path/clip-path-inline-003.html", + [ + [ + "/css/reference/ref-filled-green-100px-square.xht", + "==" + ] + ], + {} + ] + ], "css/css-masking/clip-path/clip-path-path-001.html": [ [ "/css/css-masking/clip-path/clip-path-path-001.html", @@ -137395,6 +137431,18 @@ {} ] ], + "css/css-text/overflow-wrap/overflow-wrap-break-word-004.html": [ + [ + "/css/css-text/overflow-wrap/overflow-wrap-break-word-004.html", + [ + [ + "/css/css-text/overflow-wrap/reference/overflow-wrap-break-word-001-ref.html", + "==" + ] + ], + {} + ] + ], "css/css-text/overflow-wrap/overflow-wrap-break-word-fit-content-001.html": [ [ "/css/css-text/overflow-wrap/overflow-wrap-break-word-fit-content-001.html", @@ -139231,6 +139279,18 @@ {} ] ], + "css/css-text/white-space/pre-wrap-015.html": [ + [ + "/css/css-text/white-space/pre-wrap-015.html", + [ + [ + "/css/css-text/white-space/reference/pre-wrap-001-ref.html", + "==" + ] + ], + {} + ] + ], "css/css-text/white-space/textarea-break-spaces-001.html": [ [ "/css/css-text/white-space/textarea-break-spaces-001.html", @@ -139555,6 +139615,42 @@ {} ] ], + "css/css-text/word-break/word-break-break-all-010.html": [ + [ + "/css/css-text/word-break/word-break-break-all-010.html", + [ + [ + "/css/css-text/word-break/reference/word-break-break-all-010-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-text/word-break/word-break-break-all-011.html": [ + [ + "/css/css-text/word-break/word-break-break-all-011.html", + [ + [ + "/css/css-text/word-break/reference/word-break-break-all-010-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-text/word-break/word-break-break-all-014.html": [ + [ + "/css/css-text/word-break/word-break-break-all-014.html", + [ + [ + "/css/css-text/word-break/reference/word-break-break-all-014-ref.html", + "==" + ] + ], + {} + ] + ], "css/css-text/word-break/word-break-keep-all-000.html": [ [ "/css/css-text/word-break/word-break-keep-all-000.html", @@ -198767,11 +198863,6 @@ {} ] ], - "beacon/navigate.iFrame.sub.html": [ - [ - {} - ] - ], "beacon/resources/beacon.py": [ [ {} @@ -265762,6 +265853,16 @@ {} ] ], + "css/css-text/word-break/reference/word-break-break-all-010-ref.html": [ + [ + {} + ] + ], + "css/css-text/word-break/reference/word-break-break-all-014-ref.html": [ + [ + {} + ] + ], "css/css-text/word-break/reference/word-break-break-all-ref-000.html": [ [ {} @@ -283657,6 +283758,21 @@ {} ] ], + "html/browsers/offline/appcache/resources/appcache-data.py": [ + [ + {} + ] + ], + "html/browsers/offline/appcache/resources/appcache-iframe.manifest": [ + [ + {} + ] + ], + "html/browsers/offline/appcache/resources/appcache-iframe.py": [ + [ + {} + ] + ], "html/browsers/offline/appcache/workers/resources/appcache-dedicated-worker-not-in-cache.js": [ [ {} @@ -294027,6 +294143,11 @@ {} ] ], + "interfaces/wasm-web-api.idl": [ + [ + {} + ] + ], "interfaces/web-animations.idl": [ [ {} @@ -358201,6 +358322,12 @@ {} ] ], + "html/browsers/browsing-the-web/history-traversal/scroll-restoration-order.html": [ + [ + "/html/browsers/browsing-the-web/history-traversal/scroll-restoration-order.html", + {} + ] + ], "html/browsers/browsing-the-web/history-traversal/unset_context_name-1.html": [ [ "/html/browsers/browsing-the-web/history-traversal/unset_context_name-1.html", @@ -359291,6 +359418,12 @@ {} ] ], + "html/browsers/offline/appcache/appcache-iframe.https.html": [ + [ + "/html/browsers/offline/appcache/appcache-iframe.https.html", + {} + ] + ], "html/browsers/offline/appcache/workers/appcache-worker.https.html": [ [ "/html/browsers/offline/appcache/workers/appcache-worker.https.html", @@ -372885,6 +373018,12 @@ {} ] ], + "mediacapture-streams/MediaStream-clone.https.html": [ + [ + "/mediacapture-streams/MediaStream-clone.https.html", + {} + ] + ], "mediacapture-streams/MediaStream-default-feature-policy.https.html": [ [ "/mediacapture-streams/MediaStream-default-feature-policy.https.html", @@ -402043,6 +402182,24 @@ {} ] ], + "wasm/webapi/contenttype.any.js": [ + [ + "/wasm/webapi/contenttype.any.html", + {} + ], + [ + "/wasm/webapi/contenttype.any.serviceworker.html", + {} + ], + [ + "/wasm/webapi/contenttype.any.sharedworker.html", + {} + ], + [ + "/wasm/webapi/contenttype.any.worker.html", + {} + ] + ], "web-animations/animation-model/animation-types/accumulation-per-property.html": [ [ "/web-animations/animation-model/animation-types/accumulation-per-property.html", @@ -442447,11 +442604,11 @@ "testharness" ], "beacon/beacon-common.sub.js": [ - "0a36283b26379e16ccfd2c33cf05e0395dc18331", + "ae2f169f272e9efbbea3b7464ea77c34fe65c6e1", "support" ], "beacon/beacon-cors.sub.window.js": [ - "f4bccf177e3b4585a5efe0b6cd0d6edc24fe48f9", + "411cd1c94924127ce95c27707d283e7ca342f367", "testharness" ], "beacon/beacon-error.window.js": [ @@ -442467,7 +442624,7 @@ "testharness" ], "beacon/beacon-redirect.window.js": [ - "659759baa3f5c58b26b9ed042047348b67a23e44", + "53f229abff1744b5766efe808c00f9b656296391", "testharness" ], "beacon/headers/header-content-type.html": [ @@ -442514,10 +442671,6 @@ "958daf4865d1d7c9dfb621a163e15a8862330d2b", "testharness" ], - "beacon/navigate.iFrame.sub.html": [ - "f4c7846e522b553985cc0ad253e439bd6d315975", - "support" - ], "beacon/resources/beacon.py": [ "5f2553d3c4d506f7e292cfb73d81930a83a12d76", "support" @@ -549246,6 +549399,18 @@ "12df558fd2c2fa64783720cb9d1be07fa7f85572", "reftest" ], + "css/css-masking/clip-path/clip-path-inline-001.html": [ + "343646464a98b761fa3eee2f37260c9848ef067a", + "reftest" + ], + "css/css-masking/clip-path/clip-path-inline-002.html": [ + "d56117e22b87975d5367b0af18ebd5ad25cc744a", + "reftest" + ], + "css/css-masking/clip-path/clip-path-inline-003.html": [ + "4c907a46120da6a774193f83a6c1c89e5bd9b2f2", + "reftest" + ], "css/css-masking/clip-path/clip-path-path-001.html": [ "ebdfc2297bbcc8225f92ba9dfa2ed33819f2f9a9", "reftest" @@ -549595,7 +549760,7 @@ "support" ], "css/css-masking/mask-svg-content/reference/mask-text-001-ref.svg": [ - "48737c03d1e9d8be22b67c990be0d3ff9b420160", + "3fabeb01d762fc1eda9eb198b3051d7ad6128361", "support" ], "css/css-masking/parsing/clip-invalid.html": [ @@ -550523,7 +550688,7 @@ "reftest" ], "css/css-multicol/multicol-span-none-001-ref.xht": [ - "5472e779c8d180151a1959f9650b7398dbee50e2", + "4fcc57a658894e9ea8b75d80ee96f32353a27637", "support" ], "css/css-multicol/multicol-span-none-001.xht": [ @@ -559570,6 +559735,10 @@ "6203b55e9c6fe73cd317c3d4968c56609209b38d", "reftest" ], + "css/css-text/overflow-wrap/overflow-wrap-break-word-004.html": [ + "560ef63b2f94c5eeca83ee5ef63cdfc15fbdfe34", + "reftest" + ], "css/css-text/overflow-wrap/overflow-wrap-break-word-fit-content-001.html": [ "bce6c68389c32960d79e8fbbf61f9fa28c733165", "reftest" @@ -560974,6 +561143,10 @@ "5da564d4b73ed3c7442160bae701e38d6b7fb66a", "reftest" ], + "css/css-text/white-space/pre-wrap-015.html": [ + "f9063c98767e70c3899bc9a59b50b42a61240ae4", + "reftest" + ], "css/css-text/white-space/reference/pre-wrap-001-ref.html": [ "8a8b5132db197bb9a76b1b44e461405f4cd9d1bc", "support" @@ -561158,6 +561331,14 @@ "0768b857d96624a63129f002d317019674d1ef0d", "support" ], + "css/css-text/word-break/reference/word-break-break-all-010-ref.html": [ + "0e0300a72dc920a5ffb54cda6fbe84a2f517d010", + "support" + ], + "css/css-text/word-break/reference/word-break-break-all-014-ref.html": [ + "a8720a101c3b2d2616b661e51c60b55b85d2d667", + "support" + ], "css/css-text/word-break/reference/word-break-break-all-ref-000.html": [ "579c2dc6a06c69bbb7384e51ad4b851e7d7b4410", "support" @@ -561334,6 +561515,18 @@ "9a7a591dafd4352f7df11dc9396608027ef80cd6", "manual" ], + "css/css-text/word-break/word-break-break-all-010.html": [ + "1ab97fb146a984da98a2400af0392187531edadc", + "reftest" + ], + "css/css-text/word-break/word-break-break-all-011.html": [ + "ed07aeb7368da2273e394011f426c1ee65fe2b25", + "reftest" + ], + "css/css-text/word-break/word-break-break-all-014.html": [ + "6885553ad685700e89d4d83ded7bc65269aa1123", + "reftest" + ], "css/css-text/word-break/word-break-keep-all-000.html": [ "fce7487c33ad47aaeeb20fe5ccb1bc5180192329", "reftest" @@ -599987,7 +600180,7 @@ "support" ], "generic-sensor/generic-sensor-iframe-tests.sub.js": [ - "97defcba4b2c73544e4842a90dd92ad5294d7791", + "c4195fee5f5ed10c4c30f1556e8ad8284f106a8d", "support" ], "generic-sensor/generic-sensor-tests.js": [ @@ -600598,6 +600791,10 @@ "d7037343d7daae486ba75570ad2dba376b6fd0ef", "testharness" ], + "html/browsers/browsing-the-web/history-traversal/scroll-restoration-order.html": [ + "8fe7d9f9770b25177b8eddc3eff9e7ecbcddd0c0", + "testharness" + ], "html/browsers/browsing-the-web/history-traversal/support/window-name-after-cross-origin-main-frame-navigation-popup.sub.html": [ "e13d191658046bd584b1cd5ded7fb8d3aa4604db", "support" @@ -602010,6 +602207,22 @@ "1c45fada5a352f01bb2174cb0ce42e75e5f3d288", "support" ], + "html/browsers/offline/appcache/appcache-iframe.https.html": [ + "8e72664371540fe84f8e3d32df3912f8bee28fb3", + "testharness" + ], + "html/browsers/offline/appcache/resources/appcache-data.py": [ + "f92c5116c0839c344ed02d951d932dc57708b36d", + "support" + ], + "html/browsers/offline/appcache/resources/appcache-iframe.manifest": [ + "7221e909c6fe6db848c202f8c46544b213eea7aa", + "support" + ], + "html/browsers/offline/appcache/resources/appcache-iframe.py": [ + "bc82788045fcaf6d841bb58cf905be9a6fa6f767", + "support" + ], "html/browsers/offline/appcache/workers/appcache-worker.https.html": [ "96fe5f2b7d22c1cc208ccb61e25582a24489de0d", "testharness" @@ -602035,7 +602248,7 @@ "support" ], "html/browsers/offline/appcache/workers/resources/appcache-worker.py": [ - "00281a2be72c0b39be4b466e310e850e63ad9ddb", + "106432191993d15d04ded140407fee7b52ec68e1", "support" ], "html/browsers/offline/application-cache-api/api_status_checking-manual.html": [ @@ -619747,7 +619960,7 @@ "support" ], "interfaces/payment-request.idl": [ - "d930b57291e5301e4056d30192726023e9306512", + "843c66107b34bbb90aa64411487a09b2fa95e508", "support" ], "interfaces/performance-timeline.idl": [ @@ -619882,6 +620095,10 @@ "6de14fb8f0895a72b69f37b9dd8b72e2ab1604e0", "support" ], + "interfaces/wasm-web-api.idl": [ + "1cc2f17679b2e89604e0d4a901f0dabbaa6917e5", + "support" + ], "interfaces/web-animations.idl": [ "7dce1002e666d3efa9b18531e05b087f0f4adc0d", "support" @@ -621630,6 +621847,10 @@ "faa2c39b30f54d5f3a8a38f9a6eeb46e32e722d7", "testharness" ], + "mediacapture-streams/MediaStream-clone.https.html": [ + "134918815c3d08e20771d6177021cd24c89b4ccb", + "testharness" + ], "mediacapture-streams/MediaStream-default-feature-policy.https.html": [ "21e3f5b9af8567cb015604bbcb021cc04216e4c2", "testharness" @@ -621647,7 +621868,7 @@ "manual" ], "mediacapture-streams/MediaStream-idl.https.html": [ - "8e60709cf1b5f1381bdcd5c4deb5bef3703fea2a", + "32e34f2b4b666700aa1879dac251787cf1024ee0", "testharness" ], "mediacapture-streams/MediaStream-removetrack.https.html": [ @@ -631883,7 +632104,7 @@ "testharness" ], "payment-request/payment-request-id-attribute.https.html": [ - "455b65a7da32d5e2d7231d4c5bf692826efbf4a4", + "e5d0c7a66eee67f529cd48fa640f08481f5e5a38", "testharness" ], "payment-request/payment-request-insecure.http.html": [ @@ -647079,7 +647300,7 @@ "testharness" ], "speech-api/idlharness.window.js": [ - "2f9702878a3037c6a6e4df3d6d329827740bf41e", + "6cfcbb2e95fd7e3e7d32aab6faae7cb231c6fec6", "testharness" ], "speech-api/webspeech.js": [ @@ -656887,7 +657108,7 @@ "support" ], "tools/wptrunner/wptrunner/browsers/fennec.py": [ - "db271acc50ea08e61efd09848a9ff78b53b8ed1e", + "ddb1667a22fe39217d4488de6d44a51177a39c32", "support" ], "tools/wptrunner/wptrunner/browsers/firefox.py": [ @@ -656931,7 +657152,7 @@ "support" ], "tools/wptrunner/wptrunner/browsers/webkit.py": [ - "9482f2f774332476150d3e1bbb452d5545e2ef69", + "b09114a9a5444717157edb37c24add6ba99cf421", "support" ], "tools/wptrunner/wptrunner/config.py": [ @@ -656979,7 +657200,7 @@ "support" ], "tools/wptrunner/wptrunner/executors/executorservo.py": [ - "caa97145560ec1c1d0e78d38cdd7a857c3972d40", + "49b682c749f897eb234c6bf4bb7ade3ed021dd7b", "support" ], "tools/wptrunner/wptrunner/executors/executorservodriver.py": [ @@ -657459,7 +657680,7 @@ "support" ], "tools/wptserve/tests/functional/test_pipes.py": [ - "83b2c621641ca17b670eb5a8c08b38f8d37cc2a7", + "0299ea0e62b2d97f20054f7aa8f52a497361e472", "support" ], "tools/wptserve/tests/functional/test_request.py": [ @@ -657495,7 +657716,7 @@ "support" ], "tools/wptserve/wptserve/constants.py": [ - "ec150ba5c8f7a3b89a63903b7dc757c96dfff1a9", + "e248280ef36e93832b4c481a102c3177e618c42d", "support" ], "tools/wptserve/wptserve/handlers.py": [ @@ -657519,7 +657740,7 @@ "support" ], "tools/wptserve/wptserve/response.py": [ - "44299cc994ef43ebe72053e1444f5af7cd7f9598", + "00a609b2950ddbb696bf80f2ec0038f427f8f465", "support" ], "tools/wptserve/wptserve/router.py": [ @@ -660026,6 +660247,10 @@ "6f2ccf465e93a160c73df548fc58774a5040f0e6", "testharness" ], + "wasm/webapi/contenttype.any.js": [ + "78069c03c9ff44c4b32621f38691d8238c1972e1", + "testharness" + ], "web-animations/META.yml": [ "bf92f7a7516302641aabcefe3c482ba6889c2c23", "support" @@ -660287,7 +660512,7 @@ "testharness" ], "web-animations/timing-model/animations/play-states.html": [ - "5d8fdeac6ecc5c2908a2cfe1af9d2176359af0ad", + "ec7d8c842fc9329c3508c22916ce59a236006296", "testharness" ], "web-animations/timing-model/animations/playing-an-animation.html": [ @@ -663067,7 +663292,7 @@ "support" ], "webrtc/RTCIceTransport-extension.https.html": [ - "5adee9fbe61eb9a8f7235b7faa6670eaea45cc89", + "7803bde9b3aa61f6ac500d62c8a3aed79b1a1412", "testharness" ], "webrtc/RTCIceTransport.html": [ @@ -663087,7 +663312,7 @@ "testharness" ], "webrtc/RTCPeerConnection-addTransceiver.https.html": [ - "c0c5d782c2fa365052d08d63eb14954a756c8bc0", + "6df056117d02452e040b153147dbdad7bf8fa9bb", "testharness" ], "webrtc/RTCPeerConnection-canTrickleIceCandidates.html": [ @@ -663235,15 +663460,15 @@ "testharness" ], "webrtc/RTCQuicStream.https.html": [ - "33025451b252e1bdf2491fa118e072f4b8711d12", + "68c88e2757c2ab35736d3480dfbc6095580b06d3", "testharness" ], "webrtc/RTCQuicTransport-helper.js": [ - "3ea19d7a78e4a3788e97d0fa537d51d4b9e6b4fc", + "7e28feae0937d4a28710be5f0e807c4af0f7c039", "support" ], "webrtc/RTCQuicTransport.https.html": [ - "ec79bc228ad21de3a9ce3c2ee812a7d50e57571b", + "3bcc93d95375ccf0bbaa8ba892606099ec8f0bf4", "testharness" ], "webrtc/RTCRtpCapabilities-helper.js": [ @@ -663259,7 +663484,7 @@ "testharness" ], "webrtc/RTCRtpParameters-encodings.html": [ - "b4a60c8a6d406cd820524679be172aed6cad900b", + "b446dde230efbbdb197c7f24f16e2490271563c4", "testharness" ], "webrtc/RTCRtpParameters-headerExtensions.html": [ @@ -663267,7 +663492,7 @@ "testharness" ], "webrtc/RTCRtpParameters-helper.js": [ - "9c4b6cd412e451a57318b507f264235ea827fa82", + "c4105decdfcb12286d4b153ab07f7be25baf1aad", "support" ], "webrtc/RTCRtpParameters-rtcp.html": [ @@ -663287,7 +663512,7 @@ "testharness" ], "webrtc/RTCRtpReceiver-getParameters.html": [ - "8b6d648bf616c847d9d8300a09f8ab078ac026ce", + "97e5d10d1e53b18d3c9deca969d2046881418569", "testharness" ], "webrtc/RTCRtpReceiver-getStats.https.html": [ diff --git a/tests/wpt/metadata/css/css-text/overflow-wrap/overflow-wrap-break-word-004.html.ini b/tests/wpt/metadata/css/css-text/overflow-wrap/overflow-wrap-break-word-004.html.ini new file mode 100644 index 00000000000..1df73b03f34 --- /dev/null +++ b/tests/wpt/metadata/css/css-text/overflow-wrap/overflow-wrap-break-word-004.html.ini @@ -0,0 +1,2 @@ +[overflow-wrap-break-word-004.html] + expected: FAIL diff --git a/tests/wpt/metadata/css/css-text/word-break/word-break-break-all-010.html.ini b/tests/wpt/metadata/css/css-text/word-break/word-break-break-all-010.html.ini new file mode 100644 index 00000000000..e6a156581dd --- /dev/null +++ b/tests/wpt/metadata/css/css-text/word-break/word-break-break-all-010.html.ini @@ -0,0 +1,2 @@ +[word-break-break-all-010.html] + expected: FAIL diff --git a/tests/wpt/metadata/css/css-text/word-break/word-break-break-all-011.html.ini b/tests/wpt/metadata/css/css-text/word-break/word-break-break-all-011.html.ini new file mode 100644 index 00000000000..6833da89a76 --- /dev/null +++ b/tests/wpt/metadata/css/css-text/word-break/word-break-break-all-011.html.ini @@ -0,0 +1,2 @@ +[word-break-break-all-011.html] + expected: FAIL diff --git a/tests/wpt/metadata/css/css-transitions/transitions-animatable-properties-01.html.ini b/tests/wpt/metadata/css/css-transitions/transitions-animatable-properties-01.html.ini index 834487d446f..8b9ad0ff2b6 100644 --- a/tests/wpt/metadata/css/css-transitions/transitions-animatable-properties-01.html.ini +++ b/tests/wpt/metadata/css/css-transitions/transitions-animatable-properties-01.html.ini @@ -41,9 +41,6 @@ [outline-width intermediate] expected: FAIL - [outline-width end] - expected: FAIL - [min-width intermediate] expected: FAIL @@ -71,9 +68,6 @@ [bottom intermediate] expected: FAIL - [right end] - expected: FAIL - - [padding-left intermediate] + [text-indent intermediate] expected: FAIL diff --git a/tests/wpt/metadata/fetch/cross-origin-resource-policy/fetch-in-iframe.html.ini b/tests/wpt/metadata/fetch/cross-origin-resource-policy/fetch-in-iframe.html.ini index 3951cd266d5..0d630fb814a 100644 --- a/tests/wpt/metadata/fetch/cross-origin-resource-policy/fetch-in-iframe.html.ini +++ b/tests/wpt/metadata/fetch/cross-origin-resource-policy/fetch-in-iframe.html.ini @@ -1,4 +1,5 @@ [fetch-in-iframe.html] + expected: CRASH [Untitled] expected: FAIL diff --git a/tests/wpt/metadata/html/browsers/browsing-the-web/history-traversal/scroll-restoration-order.html.ini b/tests/wpt/metadata/html/browsers/browsing-the-web/history-traversal/scroll-restoration-order.html.ini new file mode 100644 index 00000000000..4342fc2c583 --- /dev/null +++ b/tests/wpt/metadata/html/browsers/browsing-the-web/history-traversal/scroll-restoration-order.html.ini @@ -0,0 +1,4 @@ +[scroll-restoration-order.html] + [Traversing history should restore scroll position after dispatching popstate and before dispatching hashchange] + expected: FAIL + diff --git a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini new file mode 100644 index 00000000000..87b07c3e670 --- /dev/null +++ b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini @@ -0,0 +1,4 @@ +[traverse_the_history_1.html] + [Multiple history traversals from the same task] + expected: FAIL + diff --git a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_2.html.ini b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_2.html.ini new file mode 100644 index 00000000000..75d75b4cda2 --- /dev/null +++ b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_2.html.ini @@ -0,0 +1,4 @@ +[traverse_the_history_2.html] + [Multiple history traversals, last would be aborted] + expected: FAIL + 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/browsers/history/the-location-interface/location-protocol-setter-non-broken-weird.html.ini b/tests/wpt/metadata/html/browsers/history/the-location-interface/location-protocol-setter-non-broken-weird.html.ini new file mode 100644 index 00000000000..a30c51097ab --- /dev/null +++ b/tests/wpt/metadata/html/browsers/history/the-location-interface/location-protocol-setter-non-broken-weird.html.ini @@ -0,0 +1,16 @@ +[location-protocol-setter-non-broken-weird.html] + [Set location.protocol to data] + expected: FAIL + + [Set location.protocol to ftp] + expected: FAIL + + [Set location.protocol to gopher] + expected: FAIL + + [Set location.protocol to x] + expected: FAIL + + [Set location.protocol to http+x] + expected: FAIL + diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/environment-changes/viewport-change.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/environment-changes/viewport-change.html.ini index 29b0025a2ae..0f1a214d0ee 100644 --- a/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/environment-changes/viewport-change.html.ini +++ b/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/environment-changes/viewport-change.html.ini @@ -5,11 +5,29 @@ expected: TIMEOUT [picture: source (max-width:500px) valid image, img valid image, resize to wide] - expected: TIMEOUT + expected: FAIL [picture: source (max-width:500px) valid image, img broken image, resize to narrow] expected: TIMEOUT [picture: source (max-width:500px) valid image, img valid image, resize to narrow] - expected: TIMEOUT + expected: FAIL + + [picture: source (max-width:500px) broken image, img valid image, resize to narrow] + expected: FAIL + + [img (srcset 1 cand) valid image, resize to wide] + expected: FAIL + + [picture: same URL in source (max-width:500px) and img, resize to wide] + expected: FAIL + + [img (srcset 1 cand) valid image, resize to narrow] + expected: FAIL + + [picture: source (max-width:500px) valid image, img broken image, resize to wide] + expected: FAIL + + [picture: same URL in source (max-width:500px) and img, resize to narrow] + expected: FAIL diff --git a/tests/wpt/metadata/html/syntax/parsing/DOMContentLoaded-defer.html.ini b/tests/wpt/metadata/html/syntax/parsing/DOMContentLoaded-defer.html.ini new file mode 100644 index 00000000000..a9677391662 --- /dev/null +++ b/tests/wpt/metadata/html/syntax/parsing/DOMContentLoaded-defer.html.ini @@ -0,0 +1,4 @@ +[DOMContentLoaded-defer.html] + [The end: DOMContentLoaded and defer scripts] + expected: FAIL + diff --git a/tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/aborted-parser.window.js.ini b/tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/aborted-parser.window.js.ini new file mode 100644 index 00000000000..c6d49957c4a --- /dev/null +++ b/tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/aborted-parser.window.js.ini @@ -0,0 +1,4 @@ +[aborted-parser.window.html] + [document.open() after parser is aborted] + expected: FAIL + diff --git a/tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/bailout-exception-vs-return-origin.sub.window.js.ini b/tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/bailout-exception-vs-return-origin.sub.window.js.ini index da4c074ea0a..516317bf910 100644 --- a/tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/bailout-exception-vs-return-origin.sub.window.js.ini +++ b/tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/bailout-exception-vs-return-origin.sub.window.js.ini @@ -12,3 +12,6 @@ [document.open should throw a SecurityError with cross-origin document even when the ignore-opens-during-unload counter is greater than 0 (during pagehide event)] expected: FAIL + [document.open should throw a SecurityError with cross-origin document even when there is an active parser executing script] + expected: FAIL + diff --git a/tests/wpt/metadata/quirks/unitless-length/quirks.html.ini b/tests/wpt/metadata/quirks/unitless-length/quirks.html.ini deleted file mode 100644 index 2ed601c6ff4..00000000000 --- a/tests/wpt/metadata/quirks/unitless-length/quirks.html.ini +++ /dev/null @@ -1,283 +0,0 @@ -[quirks.html] - [top: -\\31 .5] - expected: FAIL - - [bottom: -1A] - expected: FAIL - - [bottom: -1a] - expected: FAIL - - [top: @1] - expected: FAIL - - [top: "1a"] - expected: FAIL - - [top: @a] - expected: FAIL - - [bottom: "1"] - expected: FAIL - - [bottom: -/**/1] - expected: FAIL - - [top: +/**/1] - expected: FAIL - - [bottom: @1a] - expected: FAIL - - [top: 1\\31 ] - expected: FAIL - - [top: url('1')] - expected: FAIL - - [bottom: -\\31 ] - expected: FAIL - - [top: calc(1)] - expected: FAIL - - [top: \\31 ] - expected: FAIL - - [bottom: +1\\31 ] - expected: FAIL - - [bottom: 1\\31 .5] - expected: FAIL - - [bottom: #0001] - expected: FAIL - - [top: calc(2 * 2px)] - expected: FAIL - - [bottom: 1a] - expected: FAIL - - [bottom: A] - expected: FAIL - - [bottom: #01] - expected: FAIL - - [top: +\\31 .5] - expected: FAIL - - [bottom: #1] - expected: FAIL - - [top: -/**/1] - expected: FAIL - - [bottom: +\\31 .5] - expected: FAIL - - [bottom: \\31 ] - expected: FAIL - - [bottom: calc(1)] - expected: FAIL - - [top: #001] - expected: FAIL - - [top: +\\31 ] - expected: FAIL - - [bottom: +\\31 ] - expected: FAIL - - [top: +1.5] - expected: FAIL - - [top: +1\\31 ] - expected: FAIL - - [bottom: @a] - expected: FAIL - - [bottom: @1] - expected: FAIL - - [top: #1] - expected: FAIL - - [top: 1a] - expected: FAIL - - [bottom: +1a] - expected: FAIL - - [bottom: +1A] - expected: FAIL - - [bottom: "a"] - expected: FAIL - - [top: #00001] - expected: FAIL - - [bottom: -1\\31 .5] - expected: FAIL - - [top: "1"] - expected: FAIL - - [bottom: 1.5] - expected: FAIL - - [bottom: -\\31 .5] - expected: FAIL - - [bottom: url('1')] - expected: FAIL - - [bottom: -1.5] - expected: FAIL - - [top: \\31 .5] - expected: FAIL - - [bottom: "1a"] - expected: FAIL - - [bottom: calc(2 * 2px)] - expected: FAIL - - [bottom: +1\\31 .5] - expected: FAIL - - [bottom: 1\\31 ] - expected: FAIL - - [bottom: +/**/1] - expected: FAIL - - [bottom: #00001] - expected: FAIL - - [top: url(1)] - expected: FAIL - - [bottom: #001] - expected: FAIL - - [top: +1\\31 .5] - expected: FAIL - - [top: -1a] - expected: FAIL - - [top: -1A] - expected: FAIL - - [bottom: url(1)] - expected: FAIL - - [top: a] - expected: FAIL - - [top: A] - expected: FAIL - - [top: #000001] - expected: FAIL - - [top: 1] - expected: FAIL - - [top: 1\\31 .5] - expected: FAIL - - [bottom: a] - expected: FAIL - - [bottom: 1] - expected: FAIL - - [bottom: +1] - expected: FAIL - - [bottom: #000001] - expected: FAIL - - [bottom: +a] - expected: FAIL - - [bottom: +A] - expected: FAIL - - [top: 1.5] - expected: FAIL - - [top: +A] - expected: FAIL - - [top: +a] - expected: FAIL - - [top: +1] - expected: FAIL - - [top: -1.5] - expected: FAIL - - [top: -1\\31 .5] - expected: FAIL - - [top: +1a] - expected: FAIL - - [top: +1A] - expected: FAIL - - [top: @1a] - expected: FAIL - - [bottom: \\31 .5] - expected: FAIL - - [top: "a"] - expected: FAIL - - [top: #01] - expected: FAIL - - [bottom: +1.5] - expected: FAIL - - [bottom: -A] - expected: FAIL - - [bottom: -a] - expected: FAIL - - [bottom: -1\\31 ] - expected: FAIL - - [top: #0001] - expected: FAIL - - [bottom: -1] - expected: FAIL - - [top: -\\31 ] - expected: FAIL - - [top: -A] - expected: FAIL - - [top: -a] - expected: FAIL - - [top: -1] - expected: FAIL - - [top: -1\\31 ] - expected: FAIL - diff --git a/tests/wpt/metadata/url/urlencoded-parser.any.js.ini b/tests/wpt/metadata/url/urlencoded-parser.any.js.ini index f6c2f3cdc99..33b63f3c519 100644 --- a/tests/wpt/metadata/url/urlencoded-parser.any.js.ini +++ b/tests/wpt/metadata/url/urlencoded-parser.any.js.ini @@ -1,26 +1,20 @@ [urlencoded-parser.any.html] - [request.formData() with input: &&&a=b&&&&c=d&] - expected: FAIL - [response.formData() with input: a&b&c] expected: FAIL [request.formData() with input: a&b&c] expected: FAIL - [response.formData() with input: a=b&c=d&] - expected: FAIL - - [request.formData() with input: _charset_=windows-1252&test=%C2x] - expected: FAIL - [response.formData() with input: _charset_=windows-1252&test=%C2x] expected: FAIL [response.formData() with input: &&&a=b&&&&c=d&] expected: FAIL - [response.formData() with input: a=b&c=d] + [request.formData() with input: a=b&c=d] + expected: FAIL + + [request.formData() with input: a=b&c=d&] expected: FAIL @@ -28,15 +22,18 @@ [request.formData() with input: a&b&c] expected: FAIL - [response.formData() with input: a&b&c] - expected: FAIL - [request.formData() with input: a=b&c=d&] expected: FAIL - [request.formData() with input: _charset_=windows-1252&test=%C2x] - expected: FAIL - [response.formData() with input: _charset_=windows-1252&test=%C2x] expected: FAIL + [response.formData() with input: a=b&c=d&] + expected: FAIL + + [response.formData() with input: &&&a=b&&&&c=d&] + expected: FAIL + + [response.formData() with input: a=b&c=d] + expected: FAIL + diff --git a/tests/wpt/metadata/wasm/webapi/contenttype.any.js.ini b/tests/wpt/metadata/wasm/webapi/contenttype.any.js.ini new file mode 100644 index 00000000000..004edb5b712 --- /dev/null +++ b/tests/wpt/metadata/wasm/webapi/contenttype.any.js.ini @@ -0,0 +1,95 @@ +[contenttype.any.worker.html] + [Response with Content-Type "text/wasm": instantiateStreaming] + expected: FAIL + + [Response with Content-Type "": instantiateStreaming] + expected: FAIL + + [Response with Content-Type "application/octet-stream": compileStreaming] + expected: FAIL + + [Response with Content-Type "application/wasm;x": instantiateStreaming] + expected: FAIL + + [Response with Content-Type "application/wasm;x": compileStreaming] + expected: FAIL + + [Response with Content-Type "application/wasm;": compileStreaming] + expected: FAIL + + [Response with Content-Type "application/octet-stream": instantiateStreaming] + expected: FAIL + + [Response with Content-Type "application/wasm;": instantiateStreaming] + expected: FAIL + + [Response with Content-Type "application/javascript": instantiateStreaming] + expected: FAIL + + [Response with Content-Type "text/wasm": compileStreaming] + expected: FAIL + + [Response with Content-Type "application/wasm;charset=UTF-8": instantiateStreaming] + expected: FAIL + + [Response with Content-Type "application/wasm;charset=UTF-8": compileStreaming] + expected: FAIL + + [Response with Content-Type "application/javascript": compileStreaming] + expected: FAIL + + [Response with Content-Type "": compileStreaming] + expected: FAIL + + +[contenttype.any.sharedworker.html] + [contenttype] + expected: FAIL + + +[contenttype.any.html] + [Response with Content-Type "text/wasm": instantiateStreaming] + expected: FAIL + + [Response with Content-Type "": instantiateStreaming] + expected: FAIL + + [Response with Content-Type "application/octet-stream": compileStreaming] + expected: FAIL + + [Response with Content-Type "application/wasm;x": instantiateStreaming] + expected: FAIL + + [Response with Content-Type "application/wasm;x": compileStreaming] + expected: FAIL + + [Response with Content-Type "application/wasm;": compileStreaming] + expected: FAIL + + [Response with Content-Type "application/octet-stream": instantiateStreaming] + expected: FAIL + + [Response with Content-Type "application/wasm;": instantiateStreaming] + expected: FAIL + + [Response with Content-Type "application/javascript": instantiateStreaming] + expected: FAIL + + [Response with Content-Type "text/wasm": compileStreaming] + expected: FAIL + + [Response with Content-Type "application/wasm;charset=UTF-8": instantiateStreaming] + expected: FAIL + + [Response with Content-Type "application/wasm;charset=UTF-8": compileStreaming] + expected: FAIL + + [Response with Content-Type "application/javascript": compileStreaming] + expected: FAIL + + [Response with Content-Type "": compileStreaming] + expected: FAIL + + +[contenttype.any.serviceworker.html] + expected: TIMEOUT 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 a56bad443a2..66bd350083b 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,5 +1,4 @@ [realtimeanalyser-fft-scaling.html] - expected: TIMEOUT [X 2048-point FFT peak position is not equal to 64. Got 0.] expected: FAIL diff --git a/tests/wpt/metadata/workers/baseurl/alpha/import-in-moduleworker.html.ini b/tests/wpt/metadata/workers/baseurl/alpha/import-in-moduleworker.html.ini index bfd4d6dd2d6..bf2a1d61bab 100644 --- a/tests/wpt/metadata/workers/baseurl/alpha/import-in-moduleworker.html.ini +++ b/tests/wpt/metadata/workers/baseurl/alpha/import-in-moduleworker.html.ini @@ -1,5 +1,4 @@ [import-in-moduleworker.html] - expected: ERROR [Base URL in module dedicated workers: import] expected: FAIL diff --git a/tests/wpt/metadata/workers/baseurl/alpha/sharedworker-in-worker.html.ini b/tests/wpt/metadata/workers/baseurl/alpha/sharedworker-in-worker.html.ini index 650c91da4a6..333edb3a26e 100644 --- a/tests/wpt/metadata/workers/baseurl/alpha/sharedworker-in-worker.html.ini +++ b/tests/wpt/metadata/workers/baseurl/alpha/sharedworker-in-worker.html.ini @@ -1,5 +1,4 @@ [sharedworker-in-worker.html] - expected: ERROR [Base URL in workers: new SharedWorker()] expected: FAIL diff --git a/tests/wpt/web-platform-tests/beacon/beacon-common.sub.js b/tests/wpt/web-platform-tests/beacon/beacon-common.sub.js index 0a36283b263..ae2f169f272 100644 --- a/tests/wpt/web-platform-tests/beacon/beacon-common.sub.js +++ b/tests/wpt/web-platform-tests/beacon/beacon-common.sub.js @@ -138,33 +138,23 @@ function initSession(testCases) { // Schedules async_test's for each of the test cases, treating them as a single session, // and wires up the continueAfterSendingBeacon() and waitForResults() calls. // The method looks for several "extension" functions in the global scope: -// - self.buildId: if present, can change the display name of a test. // - self.buildBaseUrl: if present, can change the base URL of a beacon target URL (this // is the scheme, hostname, and port). // - self.buildTargetUrl: if present, can modify a beacon target URL (for example wrap it). // Parameters: // testCases: An array of test cases. -function runTests(testCases) { - var session = initSession(testCases); +// sendData [optional]: A function that sends the beacon. +function runTests(testCases, sendData = self.sendData) { + const session = initSession(testCases); testCases.forEach(function(testCase, testIndex) { // Make a copy of the test case as we'll be storing some metadata on it, // such as which session it belongs to. - var testCaseCopy = Object.assign({ session: session }, testCase); + const testCaseCopy = Object.assign({ session: session }, testCase); - // Extension point: generate the test id. - var testId = testCase.id; - if (self.buildId) { - testId = self.buildId(testId); - } - testCaseCopy.origId = testCaseCopy.id; - testCaseCopy.id = testId; testCaseCopy.index = testIndex; - session.add(testCaseCopy); - - // Schedule the sendbeacon in an async test. - async_test(function(test) { + async_test((test) => { // Save the testharness.js 'test' object, so that we only have one object // to pass around. testCaseCopy.test = test; @@ -174,22 +164,15 @@ function runTests(testCases) { if (self.buildBaseUrl) { baseUrl = self.buildBaseUrl(baseUrl); } - var targetUrl = `${baseUrl}/beacon/resources/beacon.py?cmd=store&sid=${session.id}&tid=${testId}&tidx=${testIndex}`; + var targetUrl = `${baseUrl}/beacon/resources/beacon.py?cmd=store&sid=${session.id}&tid=${testCaseCopy.id}&tidx=${testIndex}`; if (self.buildTargetUrl) { targetUrl = self.buildTargetUrl(targetUrl); } // Attach the URL to the test object for debugging purposes. testCaseCopy.url = targetUrl; - // Extension point: send the beacon immediately, or defer. - var sendFunc = test.step_func(function sendImmediately(testCase) { - var sendResult = sendData(testCase); - continueAfterSendingBeacon(sendResult, testCase); - }); - if (self.sendFunc) { - sendFunc = test.step_func(self.sendFunc); - } - sendFunc(testCaseCopy); + assert_true(sendData(testCaseCopy), 'sendBeacon should succeed'); + waitForResult(testCaseCopy).then(() => test.done(), test.step_func((e) => {throw e;})); }, `Verify 'navigator.sendbeacon()' successfully sends for variant: ${testCaseCopy.id}`); }); } @@ -201,161 +184,54 @@ function runTests(testCases) { // the test. // Returns the result of the 'sendbeacon()' function call, true or false. function sendData(testCase) { - var sent = false; - if (testCase.data) { - sent = self.navigator.sendBeacon(testCase.url, testCase.data); - } else { - sent = self.navigator.sendBeacon(testCase.url) - } - return sent; + return self.navigator.sendBeacon(testCase.url, testCase.data); } -// Continues a single test after the beacon has been sent for that test. -// Will trigger waitForResults() for the session if this is the last test -// in the session to send its beacon. -// Assumption: will be called on the test's step_func so that assert's do -// not have to be wrapped. -function continueAfterSendingBeacon(sendResult, testCase) { - var session = testCase.session; +// Poll the server for the test result. +async function waitForResult(testCase) { + const session = testCase.session; + const index = testCase.index; + const url = `resources/beacon.py?cmd=stat&sid=${session.id}&tidx_min=${index}&tidx_max=${index}`; + for (let i = 0; i < 30; ++i) { + const response = await fetch(url); + const text = await response.text(); + const results = JSON.parse(text); - // Recaclulate the sent vs. total counts. - if (sendResult) { - session.sentCount++; - } else { - session.totalCount--; - } - - // If this was the last test in the session to send its beacon, start polling for results. - // Note that we start polling even if just one test in the session sends successfully, - // so that if any of the others fail, we still get results from the tests that did send. - if (session.sentCount == session.totalCount) { - // Exit the current test's execution context in order to run the poll - // loop from the harness context. - step_timeout(waitForResults.bind(this, session), 0); - } - - // Now fail this test if the beacon did not send. It will be excluded from the poll - // loop because of the calculation adjustment above. - assert_true(sendResult, "'sendbeacon' function call must succeed"); -} - -// Kicks off an asynchronous monitor to poll the server for test results. As we -// verify that the server has received and validated a beacon, we will complete -// its testharness test. -function waitForResults(session) { - // Poll for status until all of the results come in. - fetch(`resources/beacon.py?cmd=stat&sid=${session.id}&tidx_min=0&tidx_max=${session.totalCount-1}`).then( - function(response) { - // Parse as text(), not json(), so that we can log the raw response if - // it's invalid. - response.text().then(function(rawResponse) { - // Check that we got a response we expect and know how to handle. - var results; - var failure; - try { - results = JSON.parse(rawResponse); - - if (results.length === undefined) { - failure = `bad validation response schema: rawResponse='${rawResponse}'`; - } - } catch (e) { - failure = `bad validation response: rawResponse='${rawResponse}', got parse error '${e}'`; - } - - if (failure) { - // At this point we can't deterministically get results for all of the - // tests in the session, so fail the entire session. - failSession(session, failure); - return; - } - - // The 'stat' call will return an array of zero or more results - // of sendbeacon() calls that the server has received and validated. - results.forEach(function(result) { - var testCase = session.testCaseLookup[result.id]; - - // While stash.take on the server is supposed to honor read-once, since we're - // polling so frequently it is possible that we will receive the same test result - // more than once. - if (!testCase.done) { - testCase.done = true; - session.doneCount++; - } - - // Validate that the sendbeacon() was actually sent to the server. - var test = testCase.test; - test.step(function() { - // null JSON values parse as null, not undefined - assert_equals(result.error, null, "'sendbeacon' data must not fail validation"); - }); - - test.done(); - }); - - // Continue polling until all of the results come in. - if (session.doneCount < session.sentCount) { - // testharness.js frowns upon the use of explicit timeouts, but there is no way - // around the need to poll for these tests, and there is no use spamming the server - // with requestAnimationFrame() just to avoid the use of step_timeout. - step_timeout(waitForResults.bind(this, session), 100); - } - }).catch(function(error) { - failSession(session, `unexpected error reading response, error='${error}'`); - }); + if (results.length === 0) { + await new Promise(resolve => step_timeout(resolve, 100)); + continue; } - ); -} - -// Fails all of the tests in the session, meant to be called when an infrastructural -// issue prevents us from deterministically completing the individual tests. -function failSession(session, reason) { - session.testCases.forEach(function(testCase) { - var test = testCase.test; - test.unreached_func(reason)(); - }); + assert_equals(results.length, 1, `bad response: '${text}'`);; + // null JSON values parse as null, not undefined + assert_equals(results[0].error, null, "'sendbeacon' data must not fail validation"); + return; + } + assert_true(false, 'timeout'); } // Creates an iframe on the document's body and runs the sample tests from the iframe. // The iframe is navigated immediately after it sends the data, and the window verifies // that the data is still successfully sent. -// funcName: "beacon" to send the data via navigator.sendBeacon(), -// "fetch" to send the data via fetch() with the keepalive flag. -function runSendInIframeAndNavigateTests(funcName) { +function runSendInIframeAndNavigateTests() { var iframe = document.createElement("iframe"); iframe.id = "iframe"; iframe.onload = function() { - var tests = Array(); - // Clear our onload handler to prevent re-running the tests as we navigate away. - this.onload = null; - - // Implement the self.buildId extension to identify the parameterized - // test in the report. - self.buildId = function(baseId) { - return `${baseId}-${funcName}-NAVIGATE`; - }; - - window.onmessage = function(e) { - // The iframe will execute sendData() for us and return the result. - var testCase = tests[e.data]; - continueAfterSendingBeacon(true /* sendResult */, testCase); - }; - - // Implement the self.sendFunc extension to send the beacon indirectly, - // from an iFrame that we can then navigate. - self.sendFunc = function(testCase) { - var iframeWindow = document.getElementById("iframe").contentWindow; - // We run into problems passing the testCase over the document boundary, - // because of structured cloning constraints. Instead we'll send over the - // test case id, and the iFrame can load the static test case by including - // beacon-common.js. - tests[testCase.origId] = testCase; - iframeWindow.postMessage([testCase.origId, testCase.url, funcName], "*"); - }; - - runTests(sampleTests); + iframe.onload = null; + function sendData(testCase) { + return iframe.contentWindow.navigator.sendBeacon(testCase.url, testCase.data); + } + const tests = []; + for (const test of sampleTests) { + const copy = Object.assign({}, test); + copy.id = `${test.id}-NAVIGATE`; + tests.push(copy); + } + runTests(tests, sendData); + // Now navigate ourselves. + iframe.contentWindow.location = "http://{{host}}:{{ports[http][0]}}/"; }; - iframe.src = "navigate.iFrame.sub.html"; + iframe.srcdoc = ''; document.body.appendChild(iframe); } diff --git a/tests/wpt/web-platform-tests/beacon/beacon-cors.sub.window.js b/tests/wpt/web-platform-tests/beacon/beacon-cors.sub.window.js index f4bccf177e3..411cd1c9492 100644 --- a/tests/wpt/web-platform-tests/beacon/beacon-cors.sub.window.js +++ b/tests/wpt/web-platform-tests/beacon/beacon-cors.sub.window.js @@ -7,12 +7,6 @@ // the beacon handler will return CORS headers. This test ensures that the // sendBeacon() succeeds in either case. [true, false].forEach(function(allowCors) { - // Implement the self.buildId extension to identify the parameterized - // test in the report. - self.buildId = function(baseId) { - return `${baseId}-${allowCors ? "CORS-ALLOW" : "CORS-FORBID"}`; - }; - // Implement the self.buildBaseUrl and self.buildTargetUrl extensions // to change the target URL to use a cross-origin domain name. self.buildBaseUrl = function(baseUrl) { @@ -35,7 +29,13 @@ return allowCors ? `${targetUrl}&origin=http://{{host}}:{{ports[http][0]}}&credentials=true` : targetUrl; } - runTests(sampleTests); + const tests = []; + for (const test of sampleTests) { + const copy = Object.assign({}, test); + copy.id = `${test.id}-${allowCors ? "CORS-ALLOW" : "CORS-FORBID"}`; + tests.push(copy); + } + runTests(tests); }); // Now test a cross-origin request that doesn't use a safelisted Content-Type and ensure @@ -43,12 +43,6 @@ // header is used there should be a preflight/options request and we should only succeed // send the payload if the proper CORS headers are used. { - // Implement the self.buildId extension to identify the parameterized - // test in the report. - self.buildId = function (baseId) { - return `${baseId}-PREFLIGHT-ALLOW`; - }; - // Implement the self.buildBaseUrl and self.buildTargetUrl extensions // to change the target URL to use a cross-origin domain name. self.buildBaseUrl = function (baseUrl) { @@ -60,8 +54,13 @@ self.buildTargetUrl = function (targetUrl) { return `${targetUrl}&origin=http://{{host}}:{{ports[http][0]}}&credentials=true&preflightExpected=true`; } - - runTests(preflightTests); + const tests = []; + for (const test of preflightTests) { + const copy = Object.assign({}, test); + copy.id = `${test.id}-PREFLIGHT-ALLOW`; + tests.push(copy); + } + runTests(tests); } -done(); \ No newline at end of file +done(); diff --git a/tests/wpt/web-platform-tests/beacon/beacon-redirect.window.js b/tests/wpt/web-platform-tests/beacon/beacon-redirect.window.js index 659759baa3f..53f229abff1 100644 --- a/tests/wpt/web-platform-tests/beacon/beacon-redirect.window.js +++ b/tests/wpt/web-platform-tests/beacon/beacon-redirect.window.js @@ -7,19 +7,18 @@ // Note that status codes 307 and 308 are the only codes that will maintain POST data // through a redirect. [307, 308].forEach(function(status) { - // Implement the self.buildId extension to identify the parameterized - // test in the report. - self.buildId = function(baseId) { - return `${baseId}-${status}`; - }; - // Implement the self.buildTargetUrl extension to inject a redirect to // the sendBeacon target. self.buildTargetUrl = function(targetUrl) { return `/common/redirect.py?status=${status}&location=${encodeURIComponent(targetUrl)}`; }; - - runTests(sampleTests); + const tests = []; + for (const test of sampleTests) { + const copy = Object.assign({}, test); + copy.id = `${test.id}-${status}`; + tests.push(copy); + } + runTests(tests); }); done(); diff --git a/tests/wpt/web-platform-tests/beacon/navigate.iFrame.sub.html b/tests/wpt/web-platform-tests/beacon/navigate.iFrame.sub.html deleted file mode 100644 index f4c7846e522..00000000000 --- a/tests/wpt/web-platform-tests/beacon/navigate.iFrame.sub.html +++ /dev/null @@ -1,45 +0,0 @@ - - - - W3C Beacon As Fetch (Fetch KeepAlive) Navigate Test - - - - - - diff --git a/tests/wpt/web-platform-tests/css/css-masking/clip-path/clip-path-inline-001.html b/tests/wpt/web-platform-tests/css/css-masking/clip-path/clip-path-inline-001.html new file mode 100644 index 00000000000..343646464a9 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-masking/clip-path/clip-path-inline-001.html @@ -0,0 +1,27 @@ + +clip-path on inline, horizontal-tb writing-mode + + + + + +

Test passes if there is a filled green square and no red.

+
+ + XX
+ XXX +
+
diff --git a/tests/wpt/web-platform-tests/css/css-masking/clip-path/clip-path-inline-002.html b/tests/wpt/web-platform-tests/css/css-masking/clip-path/clip-path-inline-002.html new file mode 100644 index 00000000000..d56117e22b8 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-masking/clip-path/clip-path-inline-002.html @@ -0,0 +1,28 @@ + +clip-path on inline, vertical-rl writing-mode + + + + + +

Test passes if there is a filled green square and no red.

+
+ + XX
+ XXX +
+
diff --git a/tests/wpt/web-platform-tests/css/css-masking/clip-path/clip-path-inline-003.html b/tests/wpt/web-platform-tests/css/css-masking/clip-path/clip-path-inline-003.html new file mode 100644 index 00000000000..4c907a46120 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-masking/clip-path/clip-path-inline-003.html @@ -0,0 +1,27 @@ + +clip-path on inline, vertical-lr writing-mode + + + + + +

Test passes if there is a filled green square and no red.

+
+ + XX
+ XXX +
+
diff --git a/tests/wpt/web-platform-tests/css/css-masking/mask-svg-content/reference/mask-text-001-ref.svg b/tests/wpt/web-platform-tests/css/css-masking/mask-svg-content/reference/mask-text-001-ref.svg index 48737c03d1e..3fabeb01d76 100644 --- a/tests/wpt/web-platform-tests/css/css-masking/mask-svg-content/reference/mask-text-001-ref.svg +++ b/tests/wpt/web-platform-tests/css/css-masking/mask-svg-content/reference/mask-text-001-ref.svg @@ -1,8 +1,9 @@ - + CSS Masking: Reftest reference svg foobar - \ No newline at end of file + diff --git a/tests/wpt/web-platform-tests/css/css-multicol/multicol-span-none-001-ref.xht b/tests/wpt/web-platform-tests/css/css-multicol/multicol-span-none-001-ref.xht index 5472e779c8d..4fcc57a6588 100644 --- a/tests/wpt/web-platform-tests/css/css-multicol/multicol-span-none-001-ref.xht +++ b/tests/wpt/web-platform-tests/css/css-multicol/multicol-span-none-001-ref.xht @@ -41,7 +41,7 @@
Image download support must be enabled Image download support must be enabled Image download support must be enabled Image download support must be enabled - Image download support must be enabled + Image download support must be enabled Image download support must be enabled Image download support must be enabled @@ -51,4 +51,4 @@
- \ No newline at end of file + diff --git a/tests/wpt/web-platform-tests/css/css-text/overflow-wrap/overflow-wrap-break-word-004.html b/tests/wpt/web-platform-tests/css/css-text/overflow-wrap/overflow-wrap-break-word-004.html new file mode 100644 index 00000000000..560ef63b2f9 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-text/overflow-wrap/overflow-wrap-break-word-004.html @@ -0,0 +1,36 @@ + + +CSS Text Test: overflow-wrap: break-word + + + + + + + +

Test passes if there is a filled green square and no red.

+

XXXXX
+
XXXXX
+ diff --git a/tests/wpt/web-platform-tests/css/css-text/white-space/pre-wrap-015.html b/tests/wpt/web-platform-tests/css/css-text/white-space/pre-wrap-015.html new file mode 100644 index 00000000000..f9063c98767 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-text/white-space/pre-wrap-015.html @@ -0,0 +1,32 @@ + + +CSS Text Test: white-space: pre-wrap + + + + + + + + +

Test passes if there is a filled green square and no red.

+
XX
XX
+
X X
+ diff --git a/tests/wpt/web-platform-tests/css/css-text/word-break/reference/word-break-break-all-010-ref.html b/tests/wpt/web-platform-tests/css/css-text/word-break/reference/word-break-break-all-010-ref.html new file mode 100644 index 00000000000..0e0300a72dc --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-text/word-break/reference/word-break-break-all-010-ref.html @@ -0,0 +1,16 @@ + + +CSS Text Reference File + + + +

Test passes if there is a filled green square and no red.

+
+ diff --git a/tests/wpt/web-platform-tests/css/css-text/word-break/reference/word-break-break-all-014-ref.html b/tests/wpt/web-platform-tests/css/css-text/word-break/reference/word-break-break-all-014-ref.html new file mode 100644 index 00000000000..a8720a101c3 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-text/word-break/reference/word-break-break-all-014-ref.html @@ -0,0 +1,6 @@ + + +CSS Text Test: overflow-wrap: break-all + +

Test passes if 2 icons are rendered in a row, matching the reference file.

+
💖
💔
diff --git a/tests/wpt/web-platform-tests/css/css-text/word-break/word-break-break-all-010.html b/tests/wpt/web-platform-tests/css/css-text/word-break/word-break-break-all-010.html new file mode 100644 index 00000000000..1ab97fb146a --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-text/word-break/word-break-break-all-010.html @@ -0,0 +1,37 @@ + + +CSS Text Test: overflow-wrap: break-word + + + + + + + +

Test passes if there is a filled green square and no red.

+
XXXX
X
+
XXXXX
+ diff --git a/tests/wpt/web-platform-tests/css/css-text/word-break/word-break-break-all-011.html b/tests/wpt/web-platform-tests/css/css-text/word-break/word-break-break-all-011.html new file mode 100644 index 00000000000..ed07aeb7368 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-text/word-break/word-break-break-all-011.html @@ -0,0 +1,36 @@ + + +CSS Text Test: overflow-wrap: break-word + + + + + + + +

Test passes if there is a filled green square and no red.

+
X
X
X
+
XX
+ diff --git a/tests/wpt/web-platform-tests/css/css-text/word-break/word-break-break-all-014.html b/tests/wpt/web-platform-tests/css/css-text/word-break/word-break-break-all-014.html new file mode 100644 index 00000000000..6885553ad68 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-text/word-break/word-break-break-all-014.html @@ -0,0 +1,16 @@ + + +CSS Text Test: overflow-wrap: break-all + + + + + + +

Test passes if 2 icons are rendered in a row, matching the reference file.

+
💖💔
diff --git a/tests/wpt/web-platform-tests/generic-sensor/generic-sensor-iframe-tests.sub.js b/tests/wpt/web-platform-tests/generic-sensor/generic-sensor-iframe-tests.sub.js index 97defcba4b2..c4195fee5f5 100644 --- a/tests/wpt/web-platform-tests/generic-sensor/generic-sensor-iframe-tests.sub.js +++ b/tests/wpt/web-platform-tests/generic-sensor/generic-sensor-iframe-tests.sub.js @@ -5,7 +5,6 @@ async function send_message_to_iframe(iframe, message, reply) { return new Promise((resolve, reject) => { let messageHandler = e => { - if (e.data.command !== message.command) { return; } @@ -131,4 +130,31 @@ function run_generic_sensor_iframe_tests(sensorName) { iframe.parentNode.removeChild(iframe); }, `${sensorName}: sensor is not suspended when focus traverses from\ to same-origin frame`); + + sensor_test(async t => { + assert_true(sensorName in self); + const iframe = document.createElement('iframe'); + iframe.allow = featurePolicies.join(';') + ';'; + iframe.src = 'https://{{host}}:{{ports[https][0]}}/generic-sensor/resources/iframe_sensor_handler.html'; + + // Create sensor in the iframe (we do not care whether this is a + // cross-origin nested context in this test). + const iframeLoadWatcher = new EventWatcher(t, iframe, 'load'); + document.body.appendChild(iframe); + await iframeLoadWatcher.wait_for('load'); + await send_message_to_iframe(iframe, {command: 'create_sensor', + type: sensorName}); + iframe.contentWindow.focus(); + await send_message_to_iframe(iframe, {command: 'start_sensor'}); + + // Remove iframe from main document and change focus. When focus changes, + // we need to determine whether a sensor must have its execution suspended + // or resumed (section 4.2.3, "Focused Area" of the Generic Sensor API + // spec). In Blink, this involves querying a frame, which might no longer + // exist at the time of the check. + // Note that we cannot send the "reset_sensor_backend" command because the + // iframe is discarded with the removeChild call. + iframe.parentNode.removeChild(iframe); + window.focus(); + }, `${sensorName}: losing a document's frame with an active sensor does not crash`); } diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/history-traversal/scroll-restoration-order.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/history-traversal/scroll-restoration-order.html new file mode 100644 index 00000000000..8fe7d9f9770 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/history-traversal/scroll-restoration-order.html @@ -0,0 +1,74 @@ + + +History restoration order test + + + + + + + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/browsers/offline/appcache/appcache-iframe.https.html b/tests/wpt/web-platform-tests/html/browsers/offline/appcache/appcache-iframe.https.html new file mode 100644 index 00000000000..8e726643715 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/offline/appcache/appcache-iframe.https.html @@ -0,0 +1,37 @@ + + + + + diff --git a/tests/wpt/web-platform-tests/html/browsers/offline/appcache/resources/appcache-data.py b/tests/wpt/web-platform-tests/html/browsers/offline/appcache/resources/appcache-data.py new file mode 100644 index 00000000000..f92c5116c08 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/offline/appcache/resources/appcache-data.py @@ -0,0 +1,5 @@ +def main(request, response): + type = request.GET['type'] + if request.GET['type'] == 'fallingback': + return 404, [('Content-Type', 'text/plain')], "Page not found" + return [('Content-Type', 'text/plain')], type diff --git a/tests/wpt/web-platform-tests/html/browsers/offline/appcache/resources/appcache-iframe.manifest b/tests/wpt/web-platform-tests/html/browsers/offline/appcache/resources/appcache-iframe.manifest new file mode 100644 index 00000000000..7221e909c6f --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/offline/appcache/resources/appcache-iframe.manifest @@ -0,0 +1,8 @@ +CACHE MANIFEST + +appcache-iframe.py?type=cached +appcache-data.py?type=cached + +FALLBACK: +appcache-iframe.py?type=fallingback appcache-iframe.py?type=fallbacked +appcache-data.py?type=fallingback appcache-data.py?type=fallbacked diff --git a/tests/wpt/web-platform-tests/html/browsers/offline/appcache/resources/appcache-iframe.py b/tests/wpt/web-platform-tests/html/browsers/offline/appcache/resources/appcache-iframe.py new file mode 100644 index 00000000000..bc82788045f --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/offline/appcache/resources/appcache-iframe.py @@ -0,0 +1,43 @@ +script = ''' + +''' + +def main(request, response): + type = request.GET['type'] + if request.GET['type'] == 'fallingback': + return 404, [('Content-Type', 'text/plain')], "Page not found" + return [('Content-Type', 'text/html')], script % type diff --git a/tests/wpt/web-platform-tests/html/browsers/offline/appcache/workers/resources/appcache-worker.py b/tests/wpt/web-platform-tests/html/browsers/offline/appcache/workers/resources/appcache-worker.py index 00281a2be72..10643219199 100644 --- a/tests/wpt/web-platform-tests/html/browsers/offline/appcache/workers/resources/appcache-worker.py +++ b/tests/wpt/web-platform-tests/html/browsers/offline/appcache/workers/resources/appcache-worker.py @@ -91,6 +91,7 @@ initPromise .then(importFallbackScriptTest) .then(fetchCachedFileTest) .then(fetchNotInCacheFileTest) + .then(fetchFallbackFileTest) .then(_ => postMessage('Done: %s'), error => postMessage(error.toString())); ''' diff --git a/tests/wpt/web-platform-tests/interfaces/payment-request.idl b/tests/wpt/web-platform-tests/interfaces/payment-request.idl index d930b57291e..843c66107b3 100644 --- a/tests/wpt/web-platform-tests/interfaces/payment-request.idl +++ b/tests/wpt/web-platform-tests/interfaces/payment-request.idl @@ -49,7 +49,7 @@ dictionary PaymentDetailsUpdate : PaymentDetailsBase { DOMString error; PaymentItem total; AddressErrors shippingAddressErrors; - PayerErrorFields payerErrors; + PayerErrors payerErrors; object paymentMethodErrors; }; @@ -169,13 +169,13 @@ interface PaymentResponse : EventTarget { }; dictionary PaymentValidationErrors { - PayerErrorFields payer; + PayerErrors payer; AddressErrors shippingAddress; DOMString error; object paymentMethod; }; -dictionary PayerErrorFields { +dictionary PayerErrors { DOMString email; DOMString name; DOMString phone; diff --git a/tests/wpt/web-platform-tests/interfaces/wasm-web-api.idl b/tests/wpt/web-platform-tests/interfaces/wasm-web-api.idl new file mode 100644 index 00000000000..1cc2f17679b --- /dev/null +++ b/tests/wpt/web-platform-tests/interfaces/wasm-web-api.idl @@ -0,0 +1,10 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into reffy-reports +// (https://github.com/tidoust/reffy-reports) +// Source: WebAssembly Web API (https://webassembly.github.io/spec/web-api/) + +partial namespace WebAssembly { + Promise compileStreaming(Promise source); + Promise instantiateStreaming( + Promise source, optional object importObject); +}; diff --git a/tests/wpt/web-platform-tests/mediacapture-streams/MediaStream-clone.https.html b/tests/wpt/web-platform-tests/mediacapture-streams/MediaStream-clone.https.html new file mode 100644 index 00000000000..134918815c3 --- /dev/null +++ b/tests/wpt/web-platform-tests/mediacapture-streams/MediaStream-clone.https.html @@ -0,0 +1,94 @@ + + + +MediaStream and MediaStreamTrack clone() + + + + +

When prompted, accept to give permission to use your audio and video devices.

+

Description

+

This test checks that cloning MediaStreams and MediaStreamTracks works as expected.

+ + + + + diff --git a/tests/wpt/web-platform-tests/mediacapture-streams/MediaStream-idl.https.html b/tests/wpt/web-platform-tests/mediacapture-streams/MediaStream-idl.https.html index 8e60709cf1b..32e34f2b4b6 100644 --- a/tests/wpt/web-platform-tests/mediacapture-streams/MediaStream-idl.https.html +++ b/tests/wpt/web-platform-tests/mediacapture-streams/MediaStream-idl.https.html @@ -20,36 +20,45 @@ follows the algorithm set in the spec.

diff --git a/tests/wpt/web-platform-tests/webrtc/RTCIceTransport-extension.https.html b/tests/wpt/web-platform-tests/webrtc/RTCIceTransport-extension.https.html index 5adee9fbe61..7803bde9b3a 100644 --- a/tests/wpt/web-platform-tests/webrtc/RTCIceTransport-extension.https.html +++ b/tests/wpt/web-platform-tests/webrtc/RTCIceTransport-extension.https.html @@ -15,12 +15,6 @@ // makeIceTransport // makeGatherAndStartTwoIceTransports -function makeIceTransport(t) { - const iceTransport = new RTCIceTransport(); - t.add_cleanup(() => iceTransport.stop()); - return iceTransport; -} - test(() => { const iceTransport = new RTCIceTransport(); }, 'RTCIceTransport constructor does not throw'); @@ -260,4 +254,49 @@ promise_test(async t => { ]); }, 'Two RTCIceTransports connect to each other'); +promise_test(async t => { + async function waitForConnectedThenSelectedCandidatePairChange(t, transport, + transportName) { + const watcher = new EventWatcher(t, transport, + [ 'statechange', 'selectedcandidatepairchange' ]); + await watcher.wait_for('statechange'); + assert_equals(transport.state, 'connected', + `${transportName} state should be 'connected'`); + await watcher.wait_for('selectedcandidatepairchange'); + const selectedCandidatePair = transport.getSelectedCandidatePair(); + assert_not_equals(selectedCandidatePair, null, + `${transportName} selected candidate pair should not be null once ` + + 'the selectedcandidatepairchange event fires'); + assert_true( + transport.getLocalCandidates().some( + ({ candidate }) => + candidate === selectedCandidatePair.local.candidate), + `${transportName} selected candidate pair local should be in the ` + + 'list of local candidates'); + assert_true( + transport.getRemoteCandidates().some( + ({ candidate }) => + candidate === selectedCandidatePair.remote.candidate), + `${transportName} selected candidate pair local should be in the ` + + 'list of remote candidates'); + } + const [ localTransport, remoteTransport ] = + makeGatherAndStartTwoIceTransports(t); + await Promise.all([ + waitForConnectedThenSelectedCandidatePairChange(t, localTransport, + 'local transport'), + waitForConnectedThenSelectedCandidatePairChange(t, remoteTransport, + 'remote transport'), + ]); +}, 'Selected candidate pair changes once the RTCIceTransports connect.'); + +promise_test(async t => { + const [ transport, ] = makeGatherAndStartTwoIceTransports(t); + const watcher = new EventWatcher(t, transport, 'selectedcandidatepairchange'); + await watcher.wait_for('selectedcandidatepairchange'); + transport.stop(); + assert_equals(transport.getSelectedCandidatePair(), null); +}, 'getSelectedCandidatePair() returns null once the RTCIceTransport is ' + + 'stopped.'); + diff --git a/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-addTransceiver.https.html b/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-addTransceiver.https.html index c0c5d782c2f..6df056117d0 100644 --- a/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-addTransceiver.https.html +++ b/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-addTransceiver.https.html @@ -354,56 +354,6 @@ }); }, `addTransceiver() with valid rid value should succeed`); - /* - 5.1. addTransceiver - 7. If any RTCRtpEncodingParameters dictionary in sendEncodings contains a - read-only parameter other than rid, throw an InvalidAccessError. - - - The sendEncodings argument can be used to specify the number of offered - simulcast encodings, and optionally their RIDs and encoding parameters. - Aside from rid , all read-only parameters in the RTCRtpEncodingParameters - dictionaries, such as ssrc, must be left unset, or an error will be thrown. - */ - test(t => { - const pc = new RTCPeerConnection(); - t.add_cleanup(() => pc.close()); - - assert_throws('InvalidAccessError', () => - pc.addTransceiver('audio', { - sendEncodings: [{ - ssrc: 2 - }] - })); - }, `addTransceiver() with readonly ssrc set should throw InvalidAccessError`); - - test(t => { - const pc = new RTCPeerConnection(); - t.add_cleanup(() => pc.close()); - - assert_throws('InvalidAccessError', () => - pc.addTransceiver('audio', { - sendEncodings: [{ - rtx: { - ssrc: 2 - } - }] - })); - }, `addTransceiver() with readonly rtx set should throw InvalidAccessError`); - - test(t => { - const pc = new RTCPeerConnection(); - t.add_cleanup(() => pc.close()); - - assert_throws('InvalidAccessError', () => - pc.addTransceiver('audio', { - sendEncodings: [{ - fec: { - ssrc: 2 - } - }] - })); - }, `addTransceiver() with readonly fec set should throw InvalidAccessError`); - test(t => { const pc = new RTCPeerConnection(); t.add_cleanup(() => pc.close()); diff --git a/tests/wpt/web-platform-tests/webrtc/RTCQuicStream.https.html b/tests/wpt/web-platform-tests/webrtc/RTCQuicStream.https.html index 33025451b25..68c88e2757c 100644 --- a/tests/wpt/web-platform-tests/webrtc/RTCQuicStream.https.html +++ b/tests/wpt/web-platform-tests/webrtc/RTCQuicStream.https.html @@ -13,19 +13,25 @@ // The following helper functions are called from RTCQuicTransport-helper.js: // makeStandaloneQuicTransport +// makeTwoConnectedQuicTransports promise_test(async t => { - const quicTransport = await makeStandaloneQuicTransport(t); + const [ quicTransport, ] = await makeTwoConnectedQuicTransports(t); const quicStream = quicTransport.createStream(); assert_equals(quicStream.transport, quicTransport, 'Expect transport to be set to the creating RTCQuicTransport.'); - assert_equals(quicStream.state, 'new', `Expect state to be 'new'.`); + assert_equals(quicStream.state, 'open', `Expect state to be 'open'.`); assert_equals(quicStream.readBufferedAmount, 0, 'Expect read buffered amount to be 0.'); assert_equals(quicStream.writeBufferedAmount, 0, 'Expect write buffered amount to be 0.'); }, 'createStream() returns an RTCQuicStream with initial properties set.'); +promise_test(async t => { + const quicTransport = await makeStandaloneQuicTransport(t); + assert_throws('InvalidStateError', () => quicTransport.createStream()); +}, 'createStream() throws if the transport is not connected.'); + promise_test(async t => { const quicTransport = await makeStandaloneQuicTransport(t); quicTransport.stop(); @@ -33,12 +39,120 @@ promise_test(async t => { }, 'createStream() throws if the transport is closed.'); promise_test(async t => { - const quicTransport = await makeStandaloneQuicTransport(t); + const [ quicTransport, ] = await makeTwoConnectedQuicTransports(t); const firstQuicStream = quicTransport.createStream(); const secondQuicStream = quicTransport.createStream(); quicTransport.stop(); assert_equals(firstQuicStream.state, 'closed'); assert_equals(secondQuicStream.state, 'closed'); -}, 'RTCQuicTransport.stop() closes all streams.'); +}, 'RTCQuicTransport.stop() closes all local streams.'); + +promise_test(async t => { + const [ localQuicTransport, remoteQuicTransport ] = + await makeTwoConnectedQuicTransports(t); + const firstLocalStream = localQuicTransport.createStream(); + firstLocalStream.finish(); + const secondLocalStream = localQuicTransport.createStream(); + secondLocalStream.finish(); + const remoteWatcher = + new EventWatcher(t, remoteQuicTransport, [ 'quicstream', 'statechange' ]); + const { stream: firstRemoteStream } = + await remoteWatcher.wait_for('quicstream'); + const { stream: secondRemoteStream } = + await remoteWatcher.wait_for('quicstream'); + localQuicTransport.stop(); + await remoteWatcher.wait_for('statechange'); + assert_equals(firstRemoteStream.state, 'closed'); + assert_equals(secondRemoteStream.state, 'closed'); +}, 'RTCQuicTransport.stop() closes all remote streams.'); + +promise_test(async t => { + const [ localQuicTransport, remoteQuicTransport ] = + await makeTwoConnectedQuicTransports(t); + const localStream = localQuicTransport.createStream(); + localStream.finish(); + assert_equals(localStream.state, 'closing'); +}, `finish() changes state to 'closing'.`); + +promise_test(async t => { + const [ localQuicTransport, remoteQuicTransport ] = + await makeTwoConnectedQuicTransports(t); + const localStream = localQuicTransport.createStream(); + localStream.finish(); + localStream.finish(); + assert_equals(localStream.state, 'closing'); +}, `finish() twice does not change state.`); + +promise_test(async t => { + const [ localQuicTransport, remoteQuicTransport ] = + await makeTwoConnectedQuicTransports(t); + const localStream = localQuicTransport.createStream(); + localStream.reset(); + assert_equals(localStream.state, 'closed'); +}, `reset() changes state to 'closed'.`); + +promise_test(async t => { + const [ localQuicTransport, remoteQuicTransport ] = + await makeTwoConnectedQuicTransports(t); + const localStream = localQuicTransport.createStream(); + localStream.finish(); + localStream.reset(); + assert_equals(localStream.state, 'closed'); +}, `reset() following finish() changes state to 'closed'.`); + +promise_test(async t => { + const [ localQuicTransport, remoteQuicTransport ] = + await makeTwoConnectedQuicTransports(t); + const localStream = localQuicTransport.createStream(); + localStream.finish(); + const remoteWatcher = new EventWatcher(t, remoteQuicTransport, 'quicstream'); + const { stream: remoteStream } = await remoteWatcher.wait_for('quicstream'); + assert_equals(remoteStream.state, 'open'); + const remoteStreamWatcher = new EventWatcher(t, remoteStream, 'statechange'); + await remoteStreamWatcher.wait_for('statechange'); + assert_equals(remoteStream.state, 'closing'); +}, 'createStream() followed by finish() fires a quicstream event followed by ' + + `a statechange event to 'closing' on the remote side.`); + +promise_test(async t => { + const [ localQuicTransport, remoteQuicTransport ] = + await makeTwoConnectedQuicTransports(t); + const localStream = localQuicTransport.createStream(); + localStream.reset(); + const remoteWatcher = new EventWatcher(t, remoteQuicTransport, 'quicstream'); + const { stream: remoteStream } = await remoteWatcher.wait_for('quicstream'); + assert_equals(remoteStream.state, 'open'); + const remoteStreamWatcher = new EventWatcher(t, remoteStream, 'statechange'); + await remoteStreamWatcher.wait_for('statechange'); + assert_equals(remoteStream.state, 'closed'); +}, 'createStream() followed by reset() fires a quicstream event followed ' + + `by a statechange event to 'closed' on the remote side.`); + +promise_test(async t => { + const [ localQuicTransport, remoteQuicTransport ] = + await makeTwoConnectedQuicTransports(t); + remoteQuicTransport.onquicstream = ({ stream }) => stream.reset(); + const localStream = localQuicTransport.createStream(); + localStream.finish(); + const localWatcher = new EventWatcher(t, localStream, 'statechange'); + await localWatcher.wait_for('statechange'); + assert_equals(localStream.state, 'closed'); +}, 'finish() on a remote stream that has already finished fires a ' + + `statechange event to 'closed' on the remote side.`); + +promise_test(async t => { + const [ localQuicTransport, remoteQuicTransport ] = + await makeTwoConnectedQuicTransports(t); + const localStream = localQuicTransport.createStream(); + localStream.finish(); + localStream.reset(); + const remoteWatcher = new EventWatcher(t, remoteQuicTransport, 'quicstream'); + const { stream: remoteStream } = await remoteWatcher.wait_for('quicstream'); + const remoteStreamWatcher = new EventWatcher(t, remoteStream, 'statechange'); + await remoteStreamWatcher.wait_for('statechange'); + assert_equals(remoteStream.state, 'closing'); + await remoteStreamWatcher.wait_for('statechange'); + assert_equals(remoteStream.state, 'closed'); +}, 'finish() then reset() fires two statechange events on the remote side.'); diff --git a/tests/wpt/web-platform-tests/webrtc/RTCQuicTransport-helper.js b/tests/wpt/web-platform-tests/webrtc/RTCQuicTransport-helper.js index 3ea19d7a78e..7e28feae093 100644 --- a/tests/wpt/web-platform-tests/webrtc/RTCQuicTransport-helper.js +++ b/tests/wpt/web-platform-tests/webrtc/RTCQuicTransport-helper.js @@ -79,4 +79,3 @@ async function makeTwoConnectedQuicTransports(t) { ]); return [ localQuicTransport, remoteQuicTransport ]; } - diff --git a/tests/wpt/web-platform-tests/webrtc/RTCQuicTransport.https.html b/tests/wpt/web-platform-tests/webrtc/RTCQuicTransport.https.html index ec79bc228ad..3bcc93d9537 100644 --- a/tests/wpt/web-platform-tests/webrtc/RTCQuicTransport.https.html +++ b/tests/wpt/web-platform-tests/webrtc/RTCQuicTransport.https.html @@ -17,6 +17,7 @@ // makeAndGatherTwoIceTransports // The following helper functions are called from RTCQuicTransport-helper.js: +// generateCertificate // makeQuicTransport // makeStandaloneQuicTransport // makeAndStartTwoQuicTransports diff --git a/tests/wpt/web-platform-tests/webrtc/RTCRtpParameters-encodings.html b/tests/wpt/web-platform-tests/webrtc/RTCRtpParameters-encodings.html index b4a60c8a6d4..b446dde230e 100644 --- a/tests/wpt/web-platform-tests/webrtc/RTCRtpParameters-encodings.html +++ b/tests/wpt/web-platform-tests/webrtc/RTCRtpParameters-encodings.html @@ -45,15 +45,6 @@ }; dictionary RTCRtpEncodingParameters { - [readonly] - unsigned long ssrc; - - [readonly] - RTCRtpRtxParameters rtx; - - [readonly] - RTCRtpFecParameters fec; - RTCDtxStatus dtx; boolean active; RTCPriorityType priority; @@ -67,16 +58,6 @@ double scaleResolutionDownBy; }; - dictionary RTCRtpRtxParameters { - [readonly] - unsigned long ssrc; - }; - - dictionary RTCRtpFecParameters { - [readonly] - unsigned long ssrc; - }; - enum RTCDtxStatus { "disabled", "enabled" @@ -229,32 +210,9 @@ param.encodings = undefined; - return promise_rejects(t, 'InvalidModificationError', + return promise_rejects(t, new TypeError(), sender.setParameters(param)); - }, `sender.setParameters() with encodings unset should reject with InvalidModificationError`); - - promise_test(async t => { - const pc = new RTCPeerConnection(); - t.add_cleanup(() => pc.close()); - const { sender } = pc.addTransceiver('audio'); - await doOfferAnswerExchange(t, pc); - - const param = sender.getParameters(); - validateSenderRtpParameters(param); - const encoding = getFirstEncoding(param); - const { rtx } = encoding; - - if(rtx === undefined) { - encoding.rtx = { ssrc: 2 }; - } else if(rtx.ssrc === undefined) { - rtx.ssrc = 2; - } else { - rtx.ssrc += 1; - } - - return promise_rejects(t, 'InvalidModificationError', - sender.setParameters(param)); - }, `setParameters() with modified encoding.rtx field should reject with InvalidModificationError`); + }, `sender.setParameters() with encodings unset should reject with TypeError`); promise_test(async t => { const pc = new RTCPeerConnection(); diff --git a/tests/wpt/web-platform-tests/webrtc/RTCRtpParameters-helper.js b/tests/wpt/web-platform-tests/webrtc/RTCRtpParameters-helper.js index 9c4b6cd412e..c4105decdfc 100644 --- a/tests/wpt/web-platform-tests/webrtc/RTCRtpParameters-helper.js +++ b/tests/wpt/web-platform-tests/webrtc/RTCRtpParameters-helper.js @@ -69,11 +69,6 @@ function validateSenderRtpParameters(param) { When getParameters is called, the RTCRtpParameters dictionary is constructed as follows: - - encodings is populated based on SSRCs and RIDs present in the current remote - description, including SSRCs used for RTX and FEC, if signaled. Every member - of the RTCRtpEncodingParameters dictionaries other than the SSRC and RID fields - is left undefined. - - The headerExtensions sequence is populated based on the header extensions that the receiver is currently prepared to receive. @@ -144,15 +139,6 @@ function validateRtpParameters(param) { /* dictionary RTCRtpEncodingParameters { - [readonly] - unsigned long ssrc; - - [readonly] - RTCRtpRtxParameters rtx; - - [readonly] - RTCRtpFecParameters fec; - RTCDtxStatus dtx; boolean active; RTCPriorityType priority; @@ -166,16 +152,6 @@ function validateRtpParameters(param) { double scaleResolutionDownBy; }; - dictionary RTCRtpRtxParameters { - [readonly] - unsigned long ssrc; - }; - - dictionary RTCRtpFecParameters { - [readonly] - unsigned long ssrc; - }; - enum RTCDtxStatus { "disabled", "enabled" @@ -189,18 +165,6 @@ function validateRtpParameters(param) { }; */ function validateEncodingParameters(encoding) { - assert_optional_unsigned_int_field(encoding, 'ssrc'); - - assert_optional_dict_field(encoding, 'rtx'); - if(encoding.rtx) { - assert_unsigned_int_field(encoding.rtx, 'ssrc'); - } - - assert_optional_dict_field(encoding, 'fec'); - if(encoding.fec) { - assert_unsigned_int_field(encoding.fec, 'ssrc'); - } - assert_optional_enum_field(encoding, 'dtx', ['disabled', 'enabled']); diff --git a/tests/wpt/web-platform-tests/webrtc/RTCRtpReceiver-getParameters.html b/tests/wpt/web-platform-tests/webrtc/RTCRtpReceiver-getParameters.html index 8b6d648bf61..97e5d10d1e5 100644 --- a/tests/wpt/web-platform-tests/webrtc/RTCRtpReceiver-getParameters.html +++ b/tests/wpt/web-platform-tests/webrtc/RTCRtpReceiver-getParameters.html @@ -22,11 +22,6 @@ When getParameters is called, the RTCRtpParameters dictionary is constructed as follows: - - encodings is populated based on SSRCs and RIDs present in the current remote - description, including SSRCs used for RTX and FEC, if signaled. Every member - of the RTCRtpEncodingParameters dictionaries other than the SSRC and RID fields - is left undefined. - - The headerExtensions sequence is populated based on the header extensions that the receiver is currently prepared to receive. diff --git a/tests/wpt/webgl/meta/conformance/textures/misc/texture-upload-size.html.ini b/tests/wpt/webgl/meta/conformance/textures/misc/texture-upload-size.html.ini index bdd647de65c..6d572b37c0b 100644 --- a/tests/wpt/webgl/meta/conformance/textures/misc/texture-upload-size.html.ini +++ b/tests/wpt/webgl/meta/conformance/textures/misc/texture-upload-size.html.ini @@ -17,3 +17,6 @@ [WebGL test #588: could not create image (SVG)] expected: FAIL + [WebGL test #156: could not create image (SVG)] + expected: FAIL +