diff options
456 files changed, 10558 insertions, 5105 deletions
diff --git a/tests/wpt/metadata/FileAPI/reading-data-section/filereader_readAsDataURL.html.ini b/tests/wpt/metadata/FileAPI/reading-data-section/filereader_readAsDataURL.html.ini new file mode 100644 index 00000000000..310828ac974 --- /dev/null +++ b/tests/wpt/metadata/FileAPI/reading-data-section/filereader_readAsDataURL.html.ini @@ -0,0 +1,4 @@ +[filereader_readAsDataURL.html] + [readAsDataURL result for Blob with unspecified MIME type] + expected: FAIL + 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 d1bed36295e..e100670fed4 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 @@ -15,3 +15,6 @@ [Opening a blob URL in a noopener about:blank window immediately before revoking it works.] expected: FAIL + [Opening a blob URL in a new window by clicking an <a> tag works immediately before revoking the URL.] + expected: FAIL + 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 0acab30aa18..09045aca349 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 @@ -1,7 +1,12 @@ [url-with-fetch.any.worker.html] - expected: ERROR + [url-with-fetch] + expected: FAIL + [url-with-fetch.any.html] [Untitled] expected: FAIL + [url-with-fetch] + expected: FAIL + diff --git a/tests/wpt/metadata/FileAPI/url/url-with-xhr.any.js.ini b/tests/wpt/metadata/FileAPI/url/url-with-xhr.any.js.ini index b006924a7b4..41e92b2e366 100644 --- a/tests/wpt/metadata/FileAPI/url/url-with-xhr.any.js.ini +++ b/tests/wpt/metadata/FileAPI/url/url-with-xhr.any.js.ini @@ -2,6 +2,11 @@ [Untitled] expected: FAIL + [url-with-xhr] + expected: FAIL + [url-with-xhr.any.worker.html] - expected: ERROR + [url-with-xhr] + expected: FAIL + diff --git a/tests/wpt/metadata/MANIFEST.json b/tests/wpt/metadata/MANIFEST.json index 4e90c9c572a..570c138fcbb 100644 --- a/tests/wpt/metadata/MANIFEST.json +++ b/tests/wpt/metadata/MANIFEST.json @@ -11779,6 +11779,12 @@ {} ] ], + "html/browsers/browsing-the-web/unloading-documents/unload/pagehide-manual.html": [ + [ + "/html/browsers/browsing-the-web/unloading-documents/unload/pagehide-manual.html", + {} + ] + ], "html/browsers/history/the-history-interface/non-automated/traverse_the_history_unload_prompt_1-manual.html": [ [ "/html/browsers/history/the-history-interface/non-automated/traverse_the_history_unload_prompt_1-manual.html", @@ -109363,6 +109369,18 @@ {} ] ], + "css/css-contain/contain-size-013.html": [ + [ + "/css/css-contain/contain-size-013.html", + [ + [ + "/css/reference/ref-filled-green-100px-square.xht", + "==" + ] + ], + {} + ] + ], "css/css-contain/contain-size-breaks-001.html": [ [ "/css/css-contain/contain-size-breaks-001.html", @@ -110167,6 +110185,18 @@ {} ] ], + "css/css-display/display-contents-sharing-001.html": [ + [ + "/css/css-display/display-contents-sharing-001.html", + [ + [ + "/css/css-display/display-contents-sharing-001-ref.html", + "==" + ] + ], + {} + ] + ], "css/css-display/display-contents-state-change-001.html": [ [ "/css/css-display/display-contents-state-change-001.html", @@ -130003,6 +130033,30 @@ {} ] ], + "css/css-scoping/shadow-directionality-001.tentative.html": [ + [ + "/css/css-scoping/shadow-directionality-001.tentative.html", + [ + [ + "/css/css-scoping/reference/green-box.html", + "==" + ] + ], + {} + ] + ], + "css/css-scoping/shadow-directionality-002.tentative.html": [ + [ + "/css/css-scoping/shadow-directionality-002.tentative.html", + [ + [ + "/css/css-scoping/reference/green-box.html", + "==" + ] + ], + {} + ] + ], "css/css-scoping/shadow-disabled-sheet-001.html": [ [ "/css/css-scoping/shadow-disabled-sheet-001.html", @@ -130087,6 +130141,30 @@ {} ] ], + "css/css-scoping/shadow-link-rel-stylesheet-no-style-leak.html": [ + [ + "/css/css-scoping/shadow-link-rel-stylesheet-no-style-leak.html", + [ + [ + "/css/css-scoping/reference/green-box.html", + "==" + ] + ], + {} + ] + ], + "css/css-scoping/shadow-link-rel-stylesheet.html": [ + [ + "/css/css-scoping/shadow-link-rel-stylesheet.html", + [ + [ + "/css/css-scoping/reference/green-box.html", + "==" + ] + ], + {} + ] + ], "css/css-scoping/shadow-reassign-dynamic-001.html": [ [ "/css/css-scoping/shadow-reassign-dynamic-001.html", @@ -183755,6 +183833,18 @@ {} ] ], + "shadow-dom/directionality-001.tentative.html": [ + [ + "/shadow-dom/directionality-001.tentative.html", + [ + [ + "/shadow-dom/directionality-001-ref.html", + "==" + ] + ], + {} + ] + ], "shadow-dom/layout-slot-no-longer-assigned.html": [ [ "/shadow-dom/layout-slot-no-longer-assigned.html", @@ -184019,6 +184109,30 @@ {} ] ], + "svg/painting/reftests/paint-context-001.svg": [ + [ + "/svg/painting/reftests/paint-context-001.svg", + [ + [ + "/svg/painting/reftests/paint-context-001-ref.svg", + "==" + ] + ], + {} + ] + ], + "svg/painting/reftests/paint-context-002.svg": [ + [ + "/svg/painting/reftests/paint-context-002.svg", + [ + [ + "/svg/painting/reftests/paint-context-002-ref.svg", + "==" + ] + ], + {} + ] + ], "svg/path/bearing/absolute.svg": [ [ "/svg/path/bearing/absolute.svg", @@ -184139,6 +184253,18 @@ {} ] ], + "svg/pservers/reftests/radialgradient-basic-002.svg": [ + [ + "/svg/pservers/reftests/radialgradient-basic-002.svg", + [ + [ + "/svg/pservers/reftests/radialgradient-basic-002-ref.svg", + "==" + ] + ], + {} + ] + ], "svg/shapes/line-dasharray.svg": [ [ "/svg/shapes/line-dasharray.svg", @@ -216626,6 +216752,11 @@ {} ] ], + "content-security-policy/unsafe-hashes/support/child_window_location_navigate.sub.html": [ + [ + {} + ] + ], "cookie-store/META.yml": [ [ {} @@ -239301,6 +239432,11 @@ {} ] ], + "css/compositing/parsing/resources/parsing-testcommon.js": [ + [ + {} + ] + ], "css/compositing/svg/reference/mix-blend-mode-svg-rectangle-ref.html": [ [ {} @@ -241266,6 +241402,11 @@ {} ] ], + "css/css-display/display-contents-sharing-001-ref.html": [ + [ + {} + ] + ], "css/css-display/display-contents-state-change-001-ref.html": [ [ {} @@ -253521,6 +253662,31 @@ {} ] ], + "css/css-properties-values-api/support/alt/alt.css": [ + [ + {} + ] + ], + "css/css-properties-values-api/support/alt/alt.js": [ + [ + {} + ] + ], + "css/css-properties-values-api/support/main/main.css": [ + [ + {} + ] + ], + "css/css-properties-values-api/support/main/main.js": [ + [ + {} + ] + ], + "css/css-properties-values-api/support/main/main.utf16be.css": [ + [ + {} + ] + ], "css/css-pseudo/META.yml": [ [ {} @@ -255666,6 +255832,11 @@ {} ] ], + "css/css-tables/height-distribution/support/scrollbars.css": [ + [ + {} + ] + ], "css/css-tables/height-distribution/td-different-subpixel-padding-in-same-row-ref.html": [ [ {} @@ -259681,7 +259852,7 @@ {} ] ], - "css/css-ui/parsing/resources/parsing-testcommon.js": [ + "css/css-ui/parsing/support/parsing-testcommon.js": [ [ {} ] @@ -276601,12 +276772,7 @@ {} ] ], - "html/browsers/browsing-the-web/unloading-documents/unload/manual-001-1.html": [ - [ - {} - ] - ], - "html/browsers/browsing-the-web/unloading-documents/unload/manual-001.html": [ + "html/browsers/browsing-the-web/unloading-documents/unload/pagehide-manual-1.html": [ [ {} ] @@ -285436,7 +285602,12 @@ {} ] ], - "html/semantics/embedded-content/the-img-element/sizes/sizes-iframed.sub.html": [ + "html/semantics/embedded-content/the-img-element/sizes/support/parse-a-sizes-attribute.js": [ + [ + {} + ] + ], + "html/semantics/embedded-content/the-img-element/sizes/support/sizes-iframed.sub.html": [ [ {} ] @@ -288356,6 +288527,21 @@ {} ] ], + "infrastructure/server/resources/expect-global.js": [ + [ + {} + ] + ], + "infrastructure/server/resources/expect-seen-testharness.js": [ + [ + {} + ] + ], + "infrastructure/server/resources/expect-title-meta.js": [ + [ + {} + ] + ], "infrastructure/webdriver/tests/conftest.py": [ [ {} @@ -288436,6 +288622,11 @@ {} ] ], + "interfaces/beacon.idl": [ + [ + {} + ] + ], "interfaces/budget-api.idl": [ [ {} @@ -288461,6 +288652,21 @@ {} ] ], + "interfaces/cors-rfc1918.idl": [ + [ + {} + ] + ], + "interfaces/css-animations.idl": [ + [ + {} + ] + ], + "interfaces/css-conditional.idl": [ + [ + {} + ] + ], "interfaces/css-font-loading.idl": [ [ {} @@ -288481,6 +288687,11 @@ {} ] ], + "interfaces/css-transitions.idl": [ + [ + {} + ] + ], "interfaces/css-typed-om.idl": [ [ {} @@ -288596,16 +288807,41 @@ {} ] ], + "interfaces/mediacapture-depth.idl": [ + [ + {} + ] + ], + "interfaces/mediacapture-fromelement.idl": [ + [ + {} + ] + ], + "interfaces/mediacapture-image.idl": [ + [ + {} + ] + ], "interfaces/mediacapture-main.idl": [ [ {} ] ], + "interfaces/mediacapture-record.idl": [ + [ + {} + ] + ], "interfaces/mediasession.idl": [ [ {} ] ], + "interfaces/orientation-event.idl": [ + [ + {} + ] + ], "interfaces/orientation-sensor.idl": [ [ {} @@ -288646,11 +288882,26 @@ {} ] ], + "interfaces/presentation-api.idl": [ + [ + {} + ] + ], "interfaces/proximity.idl": [ [ {} ] ], + "interfaces/push-api.idl": [ + [ + {} + ] + ], + "interfaces/referrer-policy.idl": [ + [ + {} + ] + ], "interfaces/remote-playback.idl": [ [ {} @@ -288666,6 +288917,16 @@ {} ] ], + "interfaces/scroll-animations.idl": [ + [ + {} + ] + ], + "interfaces/secure-contexts.idl": [ + [ + {} + ] + ], "interfaces/selection-api.idl": [ [ {} @@ -288681,11 +288942,21 @@ {} ] ], + "interfaces/shape-detection-api.idl": [ + [ + {} + ] + ], "interfaces/storage.idl": [ [ {} ] ], + "interfaces/touch-events.idl": [ + [ + {} + ] + ], "interfaces/touchevents.idl": [ [ {} @@ -288721,7 +288992,7 @@ {} ] ], - "interfaces/web-audio-api.idl": [ + "interfaces/web-bluetooth.idl": [ [ {} ] @@ -288736,7 +289007,7 @@ {} ] ], - "interfaces/webappsec-referrer-policy.idl": [ + "interfaces/webaudio.idl": [ [ {} ] @@ -289216,6 +289487,11 @@ {} ] ], + "media-source/mediasource-changetype-util.js": [ + [ + {} + ] + ], "media-source/mediasource-config-changes.js": [ [ {} @@ -289226,6 +289502,11 @@ {} ] ], + "media-source/mp3/sound_5.mp3": [ + [ + {} + ] + ], "media-source/mp4/test-a-128k-44100Hz-1ch-manifest.json": [ [ {} @@ -289436,6 +289717,11 @@ {} ] ], + "media-source/webm/test-vp9.webm": [ + [ + {} + ] + ], "media-source/webm/test.webm": [ [ {} @@ -289571,6 +289857,11 @@ {} ] ], + "mediacapture-depth/META.yml": [ + [ + {} + ] + ], "mediacapture-fromelement/META.yml": [ [ {} @@ -291041,6 +291332,11 @@ {} ] ], + "push-api/META.yml": [ + [ + {} + ] + ], "quirks/META.yml": [ [ {} @@ -293906,6 +294202,11 @@ {} ] ], + "scroll-animations/META.yml": [ + [ + {} + ] + ], "secure-contexts/META.yml": [ [ {} @@ -295386,6 +295687,21 @@ {} ] ], + "service-workers/service-worker/resources/cors-approved.txt": [ + [ + {} + ] + ], + "service-workers/service-worker/resources/cors-approved.txt.headers": [ + [ + {} + ] + ], + "service-workers/service-worker/resources/cors-denied.txt": [ + [ + {} + ] + ], "service-workers/service-worker/resources/dummy-shared-worker-interceptor.js": [ [ {} @@ -296551,6 +296867,11 @@ {} ] ], + "shadow-dom/directionality-001-ref.html": [ + [ + {} + ] + ], "shadow-dom/reference/empty.html": [ [ {} @@ -296626,6 +296947,11 @@ {} ] ], + "shape-detection/META.yml": [ + [ + {} + ] + ], "speech-api/META.yml": [ [ {} @@ -297451,6 +297777,16 @@ {} ] ], + "svg/painting/reftests/paint-context-001-ref.svg": [ + [ + {} + ] + ], + "svg/painting/reftests/paint-context-002-ref.svg": [ + [ + {} + ] + ], "svg/path/bearing/absolute-ref.svg": [ [ {} @@ -297501,6 +297837,11 @@ {} ] ], + "svg/pservers/reftests/radialgradient-basic-002-ref.svg": [ + [ + {} + ] + ], "svg/shapes/line-dasharray-ref.svg": [ [ {} @@ -298971,6 +299312,16 @@ {} ] ], + "webrtc-stats/META.yml": [ + [ + {} + ] + ], + "webrtc-stats/README.md": [ + [ + {} + ] + ], "webrtc/META.yml": [ [ {} @@ -299356,11 +299707,6 @@ {} ] ], - "webusb/resources/idlharness.dedicatedworker.sharedworker.js": [ - [ - {} - ] - ], "webusb/resources/open-in-iframe.html": [ [ {} @@ -299381,22 +299727,17 @@ {} ] ], - "webusb/resources/usb.dedicatedworker.sharedworker.js": [ - [ - {} - ] - ], - "webusb/resources/usb.serviceworker.js": [ + "webusb/usb-allowed-by-feature-policy.https.sub.html.headers": [ [ {} ] ], - "webusb/usb-allowed-by-feature-policy.https.sub.html.headers": [ + "webusb/usb-disabled-by-feature-policy.https.sub.html.headers": [ [ {} ] ], - "webusb/usb-disabled-by-feature-policy.https.sub.html.headers": [ + "webusb/usb.serviceworker.js": [ [ {} ] @@ -302036,6 +302377,11 @@ {} ] ], + "workers/support/parent_of_nested_worker.js": [ + [ + {} + ] + ], "workers/support/sandboxed-tests.html": [ [ {} @@ -302046,6 +302392,16 @@ {} ] ], + "workers/support/sync_xhr.js": [ + [ + {} + ] + ], + "workers/support/sync_xhr_target.xml": [ + [ + {} + ] + ], "worklets/META.yml": [ [ {} @@ -307482,13 +307838,13 @@ {} ] ], - "BackgroundSync/interfaces.any.js": [ + "BackgroundSync/interfaces.https.any.js": [ [ - "/BackgroundSync/interfaces.any.html", + "/BackgroundSync/interfaces.https.any.html", {} ], [ - "/BackgroundSync/interfaces.any.worker.html", + "/BackgroundSync/interfaces.https.any.worker.html", {} ] ], @@ -309918,123 +310274,165 @@ } ] ], - "WebCryptoAPI/derive_bits_keys/ecdh_bits.https.worker.js": [ + "WebCryptoAPI/derive_bits_keys/ecdh_bits.https.any.js": [ + [ + "/WebCryptoAPI/derive_bits_keys/ecdh_bits.https.any.html", + {} + ], [ - "/WebCryptoAPI/derive_bits_keys/ecdh_bits.https.worker.html", + "/WebCryptoAPI/derive_bits_keys/ecdh_bits.https.any.worker.html", {} ] ], - "WebCryptoAPI/derive_bits_keys/ecdh_keys.https.worker.js": [ + "WebCryptoAPI/derive_bits_keys/ecdh_keys.https.any.js": [ [ - "/WebCryptoAPI/derive_bits_keys/ecdh_keys.https.worker.html", + "/WebCryptoAPI/derive_bits_keys/ecdh_keys.https.any.html", + {} + ], + [ + "/WebCryptoAPI/derive_bits_keys/ecdh_keys.https.any.worker.html", {} ] ], - "WebCryptoAPI/derive_bits_keys/hkdf.https.worker.js": [ + "WebCryptoAPI/derive_bits_keys/hkdf.https.any.js": [ + [ + "/WebCryptoAPI/derive_bits_keys/hkdf.https.any.html?1-1000", + {} + ], + [ + "/WebCryptoAPI/derive_bits_keys/hkdf.https.any.html?1001-2000", + {} + ], [ - "/WebCryptoAPI/derive_bits_keys/hkdf.https.worker.html", + "/WebCryptoAPI/derive_bits_keys/hkdf.https.any.html?2001-3000", + {} + ], + [ + "/WebCryptoAPI/derive_bits_keys/hkdf.https.any.html?3001-last", + {} + ], + [ + "/WebCryptoAPI/derive_bits_keys/hkdf.https.any.worker.html?1-1000", + {} + ], + [ + "/WebCryptoAPI/derive_bits_keys/hkdf.https.any.worker.html?1001-2000", + {} + ], + [ + "/WebCryptoAPI/derive_bits_keys/hkdf.https.any.worker.html?2001-3000", + {} + ], + [ + "/WebCryptoAPI/derive_bits_keys/hkdf.https.any.worker.html?3001-last", {} ] ], - "WebCryptoAPI/derive_bits_keys/pbkdf2.https.worker.js": [ + "WebCryptoAPI/derive_bits_keys/pbkdf2.https.any.js": [ [ - "/WebCryptoAPI/derive_bits_keys/pbkdf2.https.worker.html", + "/WebCryptoAPI/derive_bits_keys/pbkdf2.https.any.html?1-1000", { "timeout": "long" } - ] - ], - "WebCryptoAPI/derive_bits_keys/test_ecdh_bits.https.html": [ + ], [ - "/WebCryptoAPI/derive_bits_keys/test_ecdh_bits.https.html", + "/WebCryptoAPI/derive_bits_keys/pbkdf2.https.any.html?1001-2000", { "timeout": "long" } - ] - ], - "WebCryptoAPI/derive_bits_keys/test_ecdh_keys.https.html": [ + ], [ - "/WebCryptoAPI/derive_bits_keys/test_ecdh_keys.https.html", + "/WebCryptoAPI/derive_bits_keys/pbkdf2.https.any.html?2001-3000", { "timeout": "long" } - ] - ], - "WebCryptoAPI/derive_bits_keys/test_hkdf.https.html": [ + ], [ - "/WebCryptoAPI/derive_bits_keys/test_hkdf.https.html", + "/WebCryptoAPI/derive_bits_keys/pbkdf2.https.any.html?3001-4000", { "timeout": "long" } - ] - ], - "WebCryptoAPI/derive_bits_keys/test_pbkdf2_empty_empty.https.html": [ + ], [ - "/WebCryptoAPI/derive_bits_keys/test_pbkdf2_empty_empty.https.html", + "/WebCryptoAPI/derive_bits_keys/pbkdf2.https.any.html?4001-5000", { "timeout": "long" } - ] - ], - "WebCryptoAPI/derive_bits_keys/test_pbkdf2_empty_long.https.html": [ + ], [ - "/WebCryptoAPI/derive_bits_keys/test_pbkdf2_empty_long.https.html", + "/WebCryptoAPI/derive_bits_keys/pbkdf2.https.any.html?5001-6000", { "timeout": "long" } - ] - ], - "WebCryptoAPI/derive_bits_keys/test_pbkdf2_empty_short.https.html": [ + ], [ - "/WebCryptoAPI/derive_bits_keys/test_pbkdf2_empty_short.https.html", + "/WebCryptoAPI/derive_bits_keys/pbkdf2.https.any.html?6001-7000", { "timeout": "long" } - ] - ], - "WebCryptoAPI/derive_bits_keys/test_pbkdf2_long_empty.https.html": [ + ], [ - "/WebCryptoAPI/derive_bits_keys/test_pbkdf2_long_empty.https.html", + "/WebCryptoAPI/derive_bits_keys/pbkdf2.https.any.html?7001-8000", { "timeout": "long" } - ] - ], - "WebCryptoAPI/derive_bits_keys/test_pbkdf2_long_long.https.html": [ + ], [ - "/WebCryptoAPI/derive_bits_keys/test_pbkdf2_long_long.https.html", + "/WebCryptoAPI/derive_bits_keys/pbkdf2.https.any.html?8001-last", { "timeout": "long" } - ] - ], - "WebCryptoAPI/derive_bits_keys/test_pbkdf2_long_short.https.html": [ + ], [ - "/WebCryptoAPI/derive_bits_keys/test_pbkdf2_long_short.https.html", + "/WebCryptoAPI/derive_bits_keys/pbkdf2.https.any.worker.html?1-1000", { "timeout": "long" } - ] - ], - "WebCryptoAPI/derive_bits_keys/test_pbkdf2_short_empty.https.html": [ + ], [ - "/WebCryptoAPI/derive_bits_keys/test_pbkdf2_short_empty.https.html", + "/WebCryptoAPI/derive_bits_keys/pbkdf2.https.any.worker.html?1001-2000", { "timeout": "long" } - ] - ], - "WebCryptoAPI/derive_bits_keys/test_pbkdf2_short_long.https.html": [ + ], [ - "/WebCryptoAPI/derive_bits_keys/test_pbkdf2_short_long.https.html", + "/WebCryptoAPI/derive_bits_keys/pbkdf2.https.any.worker.html?2001-3000", { "timeout": "long" } - ] - ], - "WebCryptoAPI/derive_bits_keys/test_pbkdf2_short_short.https.html": [ + ], [ - "/WebCryptoAPI/derive_bits_keys/test_pbkdf2_short_short.https.html", + "/WebCryptoAPI/derive_bits_keys/pbkdf2.https.any.worker.html?3001-4000", + { + "timeout": "long" + } + ], + [ + "/WebCryptoAPI/derive_bits_keys/pbkdf2.https.any.worker.html?4001-5000", + { + "timeout": "long" + } + ], + [ + "/WebCryptoAPI/derive_bits_keys/pbkdf2.https.any.worker.html?5001-6000", + { + "timeout": "long" + } + ], + [ + "/WebCryptoAPI/derive_bits_keys/pbkdf2.https.any.worker.html?6001-7000", + { + "timeout": "long" + } + ], + [ + "/WebCryptoAPI/derive_bits_keys/pbkdf2.https.any.worker.html?7001-8000", + { + "timeout": "long" + } + ], + [ + "/WebCryptoAPI/derive_bits_keys/pbkdf2.https.any.worker.html?8001-last", { "timeout": "long" } @@ -311058,21 +311456,13 @@ {} ] ], - "background-fetch/interfaces-worker.https.html": [ - [ - "/background-fetch/interfaces-worker.https.html", - {} - ] - ], - "background-fetch/interfaces.html": [ + "background-fetch/interfaces.https.any.js": [ [ - "/background-fetch/interfaces.html", + "/background-fetch/interfaces.https.any.html", {} - ] - ], - "background-fetch/interfaces.worker.js": [ + ], [ - "/background-fetch/interfaces.worker.html", + "/background-fetch/interfaces.https.any.worker.html", {} ] ], @@ -311262,6 +311652,16 @@ {} ] ], + "beacon/idlharness.any.js": [ + [ + "/beacon/idlharness.any.html", + {} + ], + [ + "/beacon/idlharness.any.worker.html", + {} + ] + ], "bluetooth/characteristic/characteristicProperties.https.html": [ [ "/bluetooth/characteristic/characteristicProperties.https.html", @@ -311544,6 +311944,12 @@ {} ] ], + "bluetooth/idl/idlharness.tentative.window.js": [ + [ + "/bluetooth/idl/idlharness.tentative.window.html", + {} + ] + ], "bluetooth/requestDevice/acceptAllDevices/device-with-empty-name.https.html": [ [ "/bluetooth/requestDevice/acceptAllDevices/device-with-empty-name.https.html", @@ -312956,9 +313362,9 @@ {} ] ], - "content-security-policy/embedded-enforcement/subsumption_algorithm-unsafe_hashed_attributes.html": [ + "content-security-policy/embedded-enforcement/subsumption_algorithm-unsafe_hashes.html": [ [ - "/content-security-policy/embedded-enforcement/subsumption_algorithm-unsafe_hashed_attributes.html", + "/content-security-policy/embedded-enforcement/subsumption_algorithm-unsafe_hashes.html", {} ] ], @@ -314840,21 +315246,111 @@ {} ] ], - "content-security-policy/unsafe-hashed-attributes/script_event_handlers_allowed.html": [ + "content-security-policy/unsafe-hashes/javascript_src_allowed-href.html": [ + [ + "/content-security-policy/unsafe-hashes/javascript_src_allowed-href.html", + {} + ] + ], + "content-security-policy/unsafe-hashes/javascript_src_allowed-href_blank.html": [ + [ + "/content-security-policy/unsafe-hashes/javascript_src_allowed-href_blank.html", + {} + ] + ], + "content-security-policy/unsafe-hashes/javascript_src_allowed-window_location.html": [ + [ + "/content-security-policy/unsafe-hashes/javascript_src_allowed-window_location.html", + {} + ] + ], + "content-security-policy/unsafe-hashes/javascript_src_allowed-window_open.html": [ + [ + "/content-security-policy/unsafe-hashes/javascript_src_allowed-window_open.html", + {} + ] + ], + "content-security-policy/unsafe-hashes/javascript_src_denied_missing_unsafe_hashes-href.html": [ + [ + "/content-security-policy/unsafe-hashes/javascript_src_denied_missing_unsafe_hashes-href.html", + {} + ] + ], + "content-security-policy/unsafe-hashes/javascript_src_denied_missing_unsafe_hashes-href_blank.html": [ + [ + "/content-security-policy/unsafe-hashes/javascript_src_denied_missing_unsafe_hashes-href_blank.html", + {} + ] + ], + "content-security-policy/unsafe-hashes/javascript_src_denied_missing_unsafe_hashes-window_location.html": [ + [ + "/content-security-policy/unsafe-hashes/javascript_src_denied_missing_unsafe_hashes-window_location.html", + {} + ] + ], + "content-security-policy/unsafe-hashes/javascript_src_denied_missing_unsafe_hashes-window_open.html": [ + [ + "/content-security-policy/unsafe-hashes/javascript_src_denied_missing_unsafe_hashes-window_open.html", + {} + ] + ], + "content-security-policy/unsafe-hashes/javascript_src_denied_wrong_hash-href.html": [ [ - "/content-security-policy/unsafe-hashed-attributes/script_event_handlers_allowed.html", + "/content-security-policy/unsafe-hashes/javascript_src_denied_wrong_hash-href.html", {} ] ], - "content-security-policy/unsafe-hashed-attributes/script_event_handlers_denied_matching_hash_no_unsafe_inline_attribute.html": [ + "content-security-policy/unsafe-hashes/javascript_src_denied_wrong_hash-href_blank.html": [ [ - "/content-security-policy/unsafe-hashed-attributes/script_event_handlers_denied_matching_hash_no_unsafe_inline_attribute.html", + "/content-security-policy/unsafe-hashes/javascript_src_denied_wrong_hash-href_blank.html", {} ] ], - "content-security-policy/unsafe-hashed-attributes/script_event_handlers_denied_not_matching_hash.html": [ + "content-security-policy/unsafe-hashes/javascript_src_denied_wrong_hash-window_location.html": [ [ - "/content-security-policy/unsafe-hashed-attributes/script_event_handlers_denied_not_matching_hash.html", + "/content-security-policy/unsafe-hashes/javascript_src_denied_wrong_hash-window_location.html", + {} + ] + ], + "content-security-policy/unsafe-hashes/javascript_src_denied_wrong_hash-window_open.html": [ + [ + "/content-security-policy/unsafe-hashes/javascript_src_denied_wrong_hash-window_open.html", + {} + ] + ], + "content-security-policy/unsafe-hashes/script_event_handlers_allowed.html": [ + [ + "/content-security-policy/unsafe-hashes/script_event_handlers_allowed.html", + {} + ] + ], + "content-security-policy/unsafe-hashes/script_event_handlers_denied_missing_unsafe_hashes.html": [ + [ + "/content-security-policy/unsafe-hashes/script_event_handlers_denied_missing_unsafe_hashes.html", + {} + ] + ], + "content-security-policy/unsafe-hashes/script_event_handlers_denied_wrong_hash.html": [ + [ + "/content-security-policy/unsafe-hashes/script_event_handlers_denied_wrong_hash.html", + {} + ] + ], + "content-security-policy/unsafe-hashes/style_attribute_allowed.html": [ + [ + "/content-security-policy/unsafe-hashes/style_attribute_allowed.html", + {} + ] + ], + "content-security-policy/unsafe-hashes/style_attribute_denied_missing_unsafe_hashes.html": [ + [ + "/content-security-policy/unsafe-hashes/style_attribute_denied_missing_unsafe_hashes.html", + {} + ] + ], + "content-security-policy/unsafe-hashes/style_attribute_denied_wrong_hash.html": [ + [ + "/content-security-policy/unsafe-hashes/style_attribute_denied_wrong_hash.html", {} ] ], @@ -315020,6 +315516,12 @@ {} ] ], + "cookie-store/cookieListItem_attributes.tentative.window.js": [ + [ + "/cookie-store/cookieListItem_attributes.tentative.window.html", + {} + ] + ], "cookie-store/cookieStore_delete_arguments.tentative.window.js": [ [ "/cookie-store/cookieStore_delete_arguments.tentative.window.html", @@ -315622,6 +316124,42 @@ {} ] ], + "css/compositing/parsing/background-blend-mode-invalid.html": [ + [ + "/css/compositing/parsing/background-blend-mode-invalid.html", + {} + ] + ], + "css/compositing/parsing/background-blend-mode-valid.html": [ + [ + "/css/compositing/parsing/background-blend-mode-valid.html", + {} + ] + ], + "css/compositing/parsing/isolation-invalid.html": [ + [ + "/css/compositing/parsing/isolation-invalid.html", + {} + ] + ], + "css/compositing/parsing/isolation-valid.html": [ + [ + "/css/compositing/parsing/isolation-valid.html", + {} + ] + ], + "css/compositing/parsing/mix-blend-mode-invalid.html": [ + [ + "/css/compositing/parsing/mix-blend-mode-invalid.html", + {} + ] + ], + "css/compositing/parsing/mix-blend-mode-valid.html": [ + [ + "/css/compositing/parsing/mix-blend-mode-valid.html", + {} + ] + ], "css/css-align/content-distribution/parse-align-content-001.html": [ [ "/css/css-align/content-distribution/parse-align-content-001.html", @@ -316170,6 +316708,12 @@ {} ] ], + "css/css-animations/idlharness.html": [ + [ + "/css/css-animations/idlharness.html", + {} + ] + ], "css/css-animations/pending-style-changes-001.html": [ [ "/css/css-animations/pending-style-changes-001.html", @@ -316526,6 +317070,12 @@ {} ] ], + "css/css-conditional/idlharness.html": [ + [ + "/css/css-conditional/idlharness.html", + {} + ] + ], "css/css-conditional/js/001.html": [ [ "/css/css-conditional/js/001.html", @@ -316568,6 +317118,48 @@ {} ] ], + "css/css-env/at-supports.tentative.html": [ + [ + "/css/css-env/at-supports.tentative.html", + {} + ] + ], + "css/css-env/env-in-custom-properties.tentative.html": [ + [ + "/css/css-env/env-in-custom-properties.tentative.html", + {} + ] + ], + "css/css-env/fallback-nested-var.tentative.html": [ + [ + "/css/css-env/fallback-nested-var.tentative.html", + {} + ] + ], + "css/css-env/seralization-round-tripping.tentative.html": [ + [ + "/css/css-env/seralization-round-tripping.tentative.html", + {} + ] + ], + "css/css-env/supports-script.tentative.html": [ + [ + "/css/css-env/supports-script.tentative.html", + {} + ] + ], + "css/css-env/syntax.tentative.html": [ + [ + "/css/css-env/syntax.tentative.html", + {} + ] + ], + "css/css-env/unknown-env-names-override-previous.tentative.html": [ + [ + "/css/css-env/unknown-env-names-override-previous.tentative.html", + {} + ] + ], "css/css-exclusions/wrap-flow-001.html": [ [ "/css/css-exclusions/wrap-flow-001.html", @@ -317162,6 +317754,12 @@ {} ] ], + "css/css-fonts/font-shorthand-serialization-font-stretch.html": [ + [ + "/css/css-fonts/font-shorthand-serialization-font-stretch.html", + {} + ] + ], "css/css-fonts/font-variant-alternates-parsing.html": [ [ "/css/css-fonts/font-variant-alternates-parsing.html", @@ -317366,6 +317964,18 @@ {} ] ], + "css/css-grid/abspos/grid-positioned-items-gaps-002-rtl.html": [ + [ + "/css/css-grid/abspos/grid-positioned-items-gaps-002-rtl.html", + {} + ] + ], + "css/css-grid/abspos/grid-positioned-items-gaps-002.html": [ + [ + "/css/css-grid/abspos/grid-positioned-items-gaps-002.html", + {} + ] + ], "css/css-grid/abspos/grid-positioned-items-gaps-rtl-001.html": [ [ "/css/css-grid/abspos/grid-positioned-items-gaps-rtl-001.html", @@ -319148,6 +319758,12 @@ {} ] ], + "css/css-properties-values-api/url-resolution.tentative.html": [ + [ + "/css/css-properties-values-api/url-resolution.tentative.html", + {} + ] + ], "css/css-properties-values-api/var-reference-registered-properties-cycles.html": [ [ "/css/css-properties-values-api/var-reference-registered-properties-cycles.html", @@ -321836,6 +322452,12 @@ {} ] ], + "css/css-transitions/idlharness.html": [ + [ + "/css/css-transitions/idlharness.html", + {} + ] + ], "css/css-transitions/properties-value-001.html": [ [ "/css/css-transitions/properties-value-001.html", @@ -324146,6 +324768,12 @@ {} ] ], + "css/css-values/calc-rounding-001.html": [ + [ + "/css/css-values/calc-rounding-001.html", + {} + ] + ], "css/css-values/calc-serialization.html": [ [ "/css/css-values/calc-serialization.html", @@ -324914,6 +325542,12 @@ {} ] ], + "css/cssom-view/elementFromPoint-mixed-font-sizes.html": [ + [ + "/css/cssom-view/elementFromPoint-mixed-font-sizes.html", + {} + ] + ], "css/cssom-view/elementFromPoint-parameters.html": [ [ "/css/cssom-view/elementFromPoint-parameters.html", @@ -325082,6 +325716,12 @@ {} ] ], + "css/cssom-view/scrollIntoView-vertical-rl-writing-mode.html": [ + [ + "/css/cssom-view/scrollIntoView-vertical-rl-writing-mode.html", + {} + ] + ], "css/cssom-view/scrollWidthHeight.xht": [ [ "/css/cssom-view/scrollWidthHeight.xht", @@ -325394,6 +326034,18 @@ {} ] ], + "css/cssom/getComputedStyle-display-none-001.html": [ + [ + "/css/cssom/getComputedStyle-display-none-001.html", + {} + ] + ], + "css/cssom/getComputedStyle-display-none-002.html": [ + [ + "/css/cssom/getComputedStyle-display-none-002.html", + {} + ] + ], "css/cssom/getComputedStyle-dynamic-subdoc.html": [ [ "/css/cssom/getComputedStyle-dynamic-subdoc.html", @@ -327035,11 +327687,15 @@ "dom/interfaces.html": [ [ "/dom/interfaces.html?exclude=Node", - {} + { + "timeout": "long" + } ], [ "/dom/interfaces.html?include=Node", - {} + { + "timeout": "long" + } ] ], "dom/lists/DOMTokenList-Iterable.html": [ @@ -338782,6 +339438,16 @@ {} ] ], + "fetch/cors-rfc1918/idlharness.tentative.any.js": [ + [ + "/fetch/cors-rfc1918/idlharness.tentative.any.html", + {} + ], + [ + "/fetch/cors-rfc1918/idlharness.tentative.any.worker.html", + {} + ] + ], "fetch/cross-origin-resource-policy/fetch-in-iframe.html": [ [ "/fetch/cross-origin-resource-policy/fetch-in-iframe.html", @@ -343350,10 +344016,60 @@ ], "html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/parsing.html": [ [ - "/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/parsing.html", - { - "timeout": "long" - } + "/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/parsing.html?1-10", + {} + ], + [ + "/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/parsing.html?101-110", + {} + ], + [ + "/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/parsing.html?11-20", + {} + ], + [ + "/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/parsing.html?111-120", + {} + ], + [ + "/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/parsing.html?121-130", + {} + ], + [ + "/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/parsing.html?131-last", + {} + ], + [ + "/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/parsing.html?21-30", + {} + ], + [ + "/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/parsing.html?31-40", + {} + ], + [ + "/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/parsing.html?41-50", + {} + ], + [ + "/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/parsing.html?51-60", + {} + ], + [ + "/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/parsing.html?61-70", + {} + ], + [ + "/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/parsing.html?71-80", + {} + ], + [ + "/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/parsing.html?81-90", + {} + ], + [ + "/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/parsing.html?91-100", + {} ] ], "html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/remove-from-document.html": [ @@ -345934,6 +346650,12 @@ {} ] ], + "html/semantics/embedded-content/the-iframe-element/iframe-allow.html": [ + [ + "/html/semantics/embedded-content/the-iframe-element/iframe-allow.html", + {} + ] + ], "html/semantics/embedded-content/the-iframe-element/iframe-allowfullscreen.html": [ [ "/html/semantics/embedded-content/the-iframe-element/iframe-allowfullscreen.html", @@ -346380,12 +347102,28 @@ {} ] ], - "html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute.html": [ + "html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-display-none.html": [ [ - "/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute.html", - { - "timeout": "long" - } + "/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-display-none.html", + {} + ] + ], + "html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-quirks-mode.html": [ + [ + "/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-quirks-mode.html", + {} + ] + ], + "html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-standards-mode.html": [ + [ + "/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-standards-mode.html", + {} + ] + ], + "html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-width-1000px.html": [ + [ + "/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-width-1000px.html", + {} ] ], "html/semantics/embedded-content/the-img-element/srcset/parse-a-srcset-attribute.html": [ @@ -347558,18 +348296,6 @@ {} ] ], - "html/semantics/forms/the-textarea-element/textarea-maxlength.html": [ - [ - "/html/semantics/forms/the-textarea-element/textarea-maxlength.html", - {} - ] - ], - "html/semantics/forms/the-textarea-element/textarea-minlength.html": [ - [ - "/html/semantics/forms/the-textarea-element/textarea-minlength.html", - {} - ] - ], "html/semantics/forms/the-textarea-element/textarea-type.html": [ [ "/html/semantics/forms/the-textarea-element/textarea-type.html", @@ -352038,6 +352764,34 @@ {} ] ], + "infrastructure/server/order-of-metas.any.js": [ + [ + "/infrastructure/server/order-of-metas.any.html", + { + "timeout": "long" + } + ], + [ + "/infrastructure/server/order-of-metas.any.sharedworker.html", + { + "timeout": "long" + } + ], + [ + "/infrastructure/server/order-of-metas.any.worker.html", + { + "timeout": "long" + } + ] + ], + "infrastructure/server/order-of-metas.window.js": [ + [ + "/infrastructure/server/order-of-metas.window.html", + { + "timeout": "long" + } + ] + ], "infrastructure/server/secure-context.https.any.js": [ [ "/infrastructure/server/secure-context.https.any.html", @@ -352048,6 +352802,20 @@ {} ] ], + "infrastructure/server/title.any.js": [ + [ + "/infrastructure/server/title.any.html", + {} + ], + [ + "/infrastructure/server/title.any.sharedworker.html", + {} + ], + [ + "/infrastructure/server/title.any.worker.html", + {} + ] + ], "infrastructure/server/wpt-server-http.sub.html": [ [ "/infrastructure/server/wpt-server-http.sub.html", @@ -352798,6 +353566,18 @@ {} ] ], + "media-source/mediasource-changetype-play.html": [ + [ + "/media-source/mediasource-changetype-play.html", + {} + ] + ], + "media-source/mediasource-changetype.html": [ + [ + "/media-source/mediasource-changetype.html", + {} + ] + ], "media-source/mediasource-closed.html": [ [ "/media-source/mediasource-closed.html", @@ -353052,6 +353832,12 @@ {} ] ], + "mediacapture-depth/idlharness.html": [ + [ + "/mediacapture-depth/idlharness.html", + {} + ] + ], "mediacapture-fromelement/capture.html": [ [ "/mediacapture-fromelement/capture.html", @@ -364484,9 +365270,9 @@ {} ] ], - "orientation-event/idlharness.html": [ + "orientation-event/idlharness.window.js": [ [ - "/orientation-event/idlharness.html", + "/orientation-event/idlharness.window.html", {} ] ], @@ -365030,9 +365816,13 @@ {} ] ], - "performance-timeline/performanceentry-tojson.html": [ + "performance-timeline/performanceentry-tojson.any.js": [ [ - "/performance-timeline/performanceentry-tojson.html", + "/performance-timeline/performanceentry-tojson.any.html", + {} + ], + [ + "/performance-timeline/performanceentry-tojson.any.worker.html", {} ] ], @@ -365108,15 +365898,23 @@ {} ] ], - "performance-timeline/po-takeRecords.html": [ + "performance-timeline/po-takeRecords.any.js": [ + [ + "/performance-timeline/po-takeRecords.any.html", + {} + ], [ - "/performance-timeline/po-takeRecords.html", + "/performance-timeline/po-takeRecords.any.worker.html", {} ] ], - "performance-timeline/webtiming-resolution.html": [ + "performance-timeline/webtiming-resolution.any.js": [ [ - "/performance-timeline/webtiming-resolution.html", + "/performance-timeline/webtiming-resolution.any.html", + {} + ], + [ + "/performance-timeline/webtiming-resolution.any.worker.html", {} ] ], @@ -365492,6 +366290,24 @@ {} ] ], + "push-api/idlharness.https.any.js": [ + [ + "/push-api/idlharness.https.any.html", + {} + ], + [ + "/push-api/idlharness.https.any.serviceworker.html", + {} + ], + [ + "/push-api/idlharness.https.any.sharedworker.html", + {} + ], + [ + "/push-api/idlharness.https.any.worker.html", + {} + ] + ], "quirks/blocks-ignore-line-height.html": [ [ "/quirks/blocks-ignore-line-height.html", @@ -374662,6 +375478,12 @@ {} ] ], + "scroll-animations/idlharness.html": [ + [ + "/scroll-animations/idlharness.html", + {} + ] + ], "secure-contexts/basic-dedicated-worker.html": [ [ "/secure-contexts/basic-dedicated-worker.html", @@ -374698,6 +375520,24 @@ {} ] ], + "secure-contexts/idlharness.any.js": [ + [ + "/secure-contexts/idlharness.any.html", + {} + ], + [ + "/secure-contexts/idlharness.any.sharedworker.html", + {} + ], + [ + "/secure-contexts/idlharness.any.worker.html", + {} + ], + [ + "/secure-contexts/idlharness.https.any.serviceworker.html", + {} + ] + ], "secure-contexts/shared-worker-insecure-first.https.html": [ [ "/secure-contexts/shared-worker-insecure-first.https.html", @@ -375024,9 +375864,9 @@ {} ] ], - "server-timing/service_worker_idl.html": [ + "server-timing/service_worker_idl.https.html": [ [ - "/server-timing/service_worker_idl.html", + "/server-timing/service_worker_idl.https.html", {} ] ], @@ -375528,6 +376368,12 @@ {} ] ], + "service-workers/service-worker/controller-with-no-fetch-event-handler.https.html": [ + [ + "/service-workers/service-worker/controller-with-no-fetch-event-handler.https.html", + {} + ] + ], "service-workers/service-worker/dedicated-worker-service-worker-interception.https.html": [ [ "/service-workers/service-worker/dedicated-worker-service-worker-interception.https.html", @@ -376015,7 +376861,9 @@ "service-workers/service-worker/navigation-redirect.https.html": [ [ "/service-workers/service-worker/navigation-redirect.https.html", - {} + { + "timeout": "long" + } ] ], "service-workers/service-worker/navigation-timing.https.html": [ @@ -376976,6 +377824,16 @@ {} ] ], + "shape-detection/idlharness.any.js": [ + [ + "/shape-detection/idlharness.any.html", + {} + ], + [ + "/shape-detection/idlharness.any.worker.html", + {} + ] + ], "speech-api/SpeechSynthesis-speak-ownership.html": [ [ "/speech-api/SpeechSynthesis-speak-ownership.html", @@ -378640,6 +379498,12 @@ {} ] ], + "svg/styling/required-properties.svg": [ + [ + "/svg/styling/required-properties.svg", + {} + ] + ], "svg/svg-in-svg/svg-in-svg-circular-filter-reference-crash.html": [ [ "/svg/svg-in-svg/svg-in-svg-circular-filter-reference-crash.html", @@ -378862,6 +379726,12 @@ {} ] ], + "touch-events/idlharness.window.js": [ + [ + "/touch-events/idlharness.window.html", + {} + ] + ], "touch-events/touch-globaleventhandler-interface.html": [ [ "/touch-events/touch-globaleventhandler-interface.html", @@ -380196,12 +381066,6 @@ {} ] ], - "webaudio/the-audio-api/the-audiobuffer-interface/idl-test.html": [ - [ - "/webaudio/the-audio-api/the-audiobuffer-interface/idl-test.html", - {} - ] - ], "webaudio/the-audio-api/the-audiobuffersourcenode-interface/ctor-audiobuffersource.html": [ [ "/webaudio/the-audio-api/the-audiobuffersourcenode-interface/ctor-audiobuffersource.html", @@ -380226,12 +381090,6 @@ {} ] ], - "webaudio/the-audio-api/the-audiodestinationnode-interface/idl-test.html": [ - [ - "/webaudio/the-audio-api/the-audiodestinationnode-interface/idl-test.html", - {} - ] - ], "webaudio/the-audio-api/the-audionode-interface/audionode-channel-rules.html": [ [ "/webaudio/the-audio-api/the-audionode-interface/audionode-channel-rules.html", @@ -380358,12 +381216,6 @@ {} ] ], - "webaudio/the-audio-api/the-audioparam-interface/idl-test.html": [ - [ - "/webaudio/the-audio-api/the-audioparam-interface/idl-test.html", - {} - ] - ], "webaudio/the-audio-api/the-audioparam-interface/k-rate-audioworklet.https.html": [ [ "/webaudio/the-audio-api/the-audioparam-interface/k-rate-audioworklet.https.html", @@ -383261,15 +384113,11 @@ "websockets/constructor/014.html": [ [ "/websockets/constructor/014.html", - { - "timeout": "long" - } + {} ], [ "/websockets/constructor/014.html?wss", - { - "timeout": "long" - } + {} ] ], "websockets/constructor/016.html": [ @@ -384602,9 +385450,17 @@ {} ] ], - "webusb/idlharness.https.html": [ + "webusb/idlharness.https.any.js": [ + [ + "/webusb/idlharness.https.any.html", + {} + ], [ - "/webusb/idlharness.https.html", + "/webusb/idlharness.https.any.sharedworker.html", + {} + ], + [ + "/webusb/idlharness.https.any.worker.html", {} ] ], @@ -384638,95 +385494,147 @@ {} ] ], - "webusb/usb.https.html": [ + "webusb/usb.https.any.js": [ [ - "/webusb/usb.https.html", - { - "testdriver": true - } - ] - ], - "webusb/usbConnectionEvent.https.html": [ + "/webusb/usb.https.any.html", + {} + ], [ - "/webusb/usbConnectionEvent.https.html", + "/webusb/usb.https.any.sharedworker.html", {} - ] - ], - "webusb/usbDevice-iframe.https.html": [ + ], [ - "/webusb/usbDevice-iframe.https.html", + "/webusb/usb.https.any.worker.html", {} ] ], - "webusb/usbDevice.https.html": [ + "webusb/usb.https.window.js": [ [ - "/webusb/usbDevice.https.html", + "/webusb/usb.https.window.html", {} ] ], - "webusb/usbInTransferResult.https.html": [ + "webusb/usb.serviceworker.https.html": [ [ - "/webusb/usbInTransferResult.https.html", + "/webusb/usb.serviceworker.https.html", {} ] ], - "webusb/usbIsochronousInTransferPacket.https.html": [ + "webusb/usbConnectionEvent.https.any.js": [ [ - "/webusb/usbIsochronousInTransferPacket.https.html", + "/webusb/usbConnectionEvent.https.any.html", {} - ] - ], - "webusb/usbIsochronousInTransferResult.https.html": [ + ], [ - "/webusb/usbIsochronousInTransferResult.https.html", + "/webusb/usbConnectionEvent.https.any.sharedworker.html", + {} + ], + [ + "/webusb/usbConnectionEvent.https.any.worker.html", {} ] ], - "webusb/usbIsochronousOutTransferPacket.https.html": [ + "webusb/usbDevice-iframe.https.html": [ [ - "/webusb/usbIsochronousOutTransferPacket.https.html", + "/webusb/usbDevice-iframe.https.html", {} ] ], - "webusb/usbIsochronousOutTransferResult.https.html": [ + "webusb/usbDevice.https.any.js": [ [ - "/webusb/usbIsochronousOutTransferResult.https.html", + "/webusb/usbDevice.https.any.html", + {} + ], + [ + "/webusb/usbDevice.https.any.sharedworker.html", + {} + ], + [ + "/webusb/usbDevice.https.any.worker.html", {} ] ], - "webusb/usbOutTransferResult.https.html": [ + "webusb/usbInTransferResult.https.any.js": [ + [ + "/webusb/usbInTransferResult.https.any.html", + {} + ], [ - "/webusb/usbOutTransferResult.https.html", + "/webusb/usbInTransferResult.https.any.sharedworker.html", + {} + ], + [ + "/webusb/usbInTransferResult.https.any.worker.html", {} ] ], - "webusb/worker/idlharness.dedicatedworker.https.html": [ + "webusb/usbIsochronousInTransferPacket.https.any.js": [ [ - "/webusb/worker/idlharness.dedicatedworker.https.html", + "/webusb/usbIsochronousInTransferPacket.https.any.html", + {} + ], + [ + "/webusb/usbIsochronousInTransferPacket.https.any.sharedworker.html", + {} + ], + [ + "/webusb/usbIsochronousInTransferPacket.https.any.worker.html", {} ] ], - "webusb/worker/idlharness.sharedworker.https.html": [ + "webusb/usbIsochronousInTransferResult.https.any.js": [ [ - "/webusb/worker/idlharness.sharedworker.https.html", + "/webusb/usbIsochronousInTransferResult.https.any.html", + {} + ], + [ + "/webusb/usbIsochronousInTransferResult.https.any.sharedworker.html", + {} + ], + [ + "/webusb/usbIsochronousInTransferResult.https.any.worker.html", {} ] ], - "webusb/worker/usb.dedicatedworker.https.html": [ + "webusb/usbIsochronousOutTransferPacket.https.any.js": [ [ - "/webusb/worker/usb.dedicatedworker.https.html", + "/webusb/usbIsochronousOutTransferPacket.https.any.html", + {} + ], + [ + "/webusb/usbIsochronousOutTransferPacket.https.any.sharedworker.html", + {} + ], + [ + "/webusb/usbIsochronousOutTransferPacket.https.any.worker.html", {} ] ], - "webusb/worker/usb.serviceworker.https.html": [ + "webusb/usbIsochronousOutTransferResult.https.any.js": [ + [ + "/webusb/usbIsochronousOutTransferResult.https.any.html", + {} + ], [ - "/webusb/worker/usb.serviceworker.https.html", + "/webusb/usbIsochronousOutTransferResult.https.any.sharedworker.html", + {} + ], + [ + "/webusb/usbIsochronousOutTransferResult.https.any.worker.html", {} ] ], - "webusb/worker/usb.sharedworker.https.html": [ + "webusb/usbOutTransferResult.https.any.js": [ + [ + "/webusb/usbOutTransferResult.https.any.html", + {} + ], + [ + "/webusb/usbOutTransferResult.https.any.sharedworker.html", + {} + ], [ - "/webusb/worker/usb.sharedworker.https.html", + "/webusb/usbOutTransferResult.https.any.worker.html", {} ] ], @@ -386062,9 +386970,13 @@ {} ] ], - "workers/modules/dedicated-worker-import.html": [ + "workers/modules/dedicated-worker-import.any.js": [ [ - "/workers/modules/dedicated-worker-import.html", + "/workers/modules/dedicated-worker-import.any.html", + {} + ], + [ + "/workers/modules/dedicated-worker-import.any.worker.html", {} ] ], @@ -386092,6 +387004,36 @@ {} ] ], + "workers/nested_worker_close_from_parent_worker.html": [ + [ + "/workers/nested_worker_close_from_parent_worker.html", + {} + ] + ], + "workers/nested_worker_close_self.worker.js": [ + [ + "/workers/nested_worker_close_self.worker.html", + {} + ] + ], + "workers/nested_worker_importScripts.worker.js": [ + [ + "/workers/nested_worker_importScripts.worker.html", + {} + ] + ], + "workers/nested_worker_sync_xhr.worker.js": [ + [ + "/workers/nested_worker_sync_xhr.worker.html", + {} + ] + ], + "workers/nested_worker_terminate_from_document.html": [ + [ + "/workers/nested_worker_terminate_from_document.html", + {} + ] + ], "workers/opaque-origin.html": [ [ "/workers/opaque-origin.html", @@ -411951,7 +412893,7 @@ "d4b8d3ee30aca9e9bd4435534615172c89f9ca9c", "support" ], - "BackgroundSync/interfaces.any.js": [ + "BackgroundSync/interfaces.https.any.js": [ "4b754f0550409475495768483f2075e8f54782d0", "testharness" ], @@ -412128,7 +413070,7 @@ "testharness" ], "FileAPI/reading-data-section/filereader_readAsDataURL.html": [ - "52371f9c51952984ea5cb07e2a6e3d8dfcf50d16", + "883decab747ac39e6cf9c946f309e7a26c4257f7", "testharness" ], "FileAPI/reading-data-section/filereader_readAsText.html": [ @@ -412220,7 +413162,7 @@ "testharness" ], "FileAPI/url/url-in-tags-revoke.window.js": [ - "058021aab41c4ace8b6246ac33891f6eddbdd8b3", + "9454eb78fa619775f2dfc6d67a2a629f9b736424", "testharness" ], "FileAPI/url/url-in-tags.window.js": [ @@ -412668,7 +413610,7 @@ "testharness" ], "IndexedDB/idbdatabase-createObjectStore-exception-order.htm": [ - "24d86e0a278a52c759f1a220041838bedd59959e", + "91fbbe23f8cdfc231aa01b8ad276ebb88d377c51", "testharness" ], "IndexedDB/idbdatabase-deleteObjectStore-exception-order.htm": [ @@ -413695,94 +414637,46 @@ "de7dd2ee8b4d23b5170349e7c2dc94862e5faed2", "support" ], - "WebCryptoAPI/derive_bits_keys/ecdh_bits.https.worker.js": [ - "b5b14e550d5dbff9f63666b42bd46e29b5be8709", + "WebCryptoAPI/derive_bits_keys/ecdh_bits.https.any.js": [ + "864eecab9e1a79b80118c0c3f678b8f38d204bed", "testharness" ], "WebCryptoAPI/derive_bits_keys/ecdh_bits.js": [ "becf212639e53f6cae83994feeb2a2d0ecb6feeb", "support" ], - "WebCryptoAPI/derive_bits_keys/ecdh_keys.https.worker.js": [ - "25bcc549b62ecc99df4e2af27753e311c3910e70", + "WebCryptoAPI/derive_bits_keys/ecdh_keys.https.any.js": [ + "e18057a3c9fda70c897950a6e6eb4251efef55c4", "testharness" ], "WebCryptoAPI/derive_bits_keys/ecdh_keys.js": [ "c030ebe3984538c73ee1fca4ec378e4356bccbf4", "support" ], - "WebCryptoAPI/derive_bits_keys/hkdf.https.worker.js": [ - "0ea6fb5e51a60e8a521da7a2853fde9a4ff2af8f", + "WebCryptoAPI/derive_bits_keys/hkdf.https.any.js": [ + "ab1a44ea74a479a73c122537505b8655479e515f", "testharness" ], "WebCryptoAPI/derive_bits_keys/hkdf.js": [ - "7c50dfe98c29038cc758cf90d56cf4b328d1fc37", + "0b64461f3017121398eee84980565ffdec11da78", "support" ], "WebCryptoAPI/derive_bits_keys/hkdf_vectors.js": [ "766a7184da406918e9dc6718125975a59d3d5d36", "support" ], - "WebCryptoAPI/derive_bits_keys/pbkdf2.https.worker.js": [ - "1149c335951baa52b7d1ad3192292fb46176d491", + "WebCryptoAPI/derive_bits_keys/pbkdf2.https.any.js": [ + "1570f67d4d803e12d1711e861e0ea1b37e76db45", "testharness" ], "WebCryptoAPI/derive_bits_keys/pbkdf2.js": [ - "dfd8eea5707720186820549837c8a1a319a8ecc4", + "d91520b4b779d5a8ecd55398a23a1e0fdbe1a9b3", "support" ], "WebCryptoAPI/derive_bits_keys/pbkdf2_vectors.js": [ "0a073cb726ad239110545eb3cecada2a0ce5daf7", "support" ], - "WebCryptoAPI/derive_bits_keys/test_ecdh_bits.https.html": [ - "eb82990143fa33de7b62cdacd2db566512d74d44", - "testharness" - ], - "WebCryptoAPI/derive_bits_keys/test_ecdh_keys.https.html": [ - "d896626491b4f710970b28d30eb89604034fb8c4", - "testharness" - ], - "WebCryptoAPI/derive_bits_keys/test_hkdf.https.html": [ - "6d0def388fed4db1606d03f2cbfd59020bd00c56", - "testharness" - ], - "WebCryptoAPI/derive_bits_keys/test_pbkdf2_empty_empty.https.html": [ - "48b0c6ac60cc130a5bc109fd43b5b1da74bad6da", - "testharness" - ], - "WebCryptoAPI/derive_bits_keys/test_pbkdf2_empty_long.https.html": [ - "9f28363c1c182c354d688a44249abe3f6c6e9ff5", - "testharness" - ], - "WebCryptoAPI/derive_bits_keys/test_pbkdf2_empty_short.https.html": [ - "2a6b28ee191cc62575872c19a21b402f668cd0d5", - "testharness" - ], - "WebCryptoAPI/derive_bits_keys/test_pbkdf2_long_empty.https.html": [ - "e1d654a4ccefef12b57ef32388debf5df170e938", - "testharness" - ], - "WebCryptoAPI/derive_bits_keys/test_pbkdf2_long_long.https.html": [ - "2e3e354fe0b4b96d2429bd6e3b5b702a327d9e84", - "testharness" - ], - "WebCryptoAPI/derive_bits_keys/test_pbkdf2_long_short.https.html": [ - "b53dd1eb6d350d6546e71e77d829eb3da4fc4c68", - "testharness" - ], - "WebCryptoAPI/derive_bits_keys/test_pbkdf2_short_empty.https.html": [ - "d36de62c712d53d29aa8cc6995851493d814654f", - "testharness" - ], - "WebCryptoAPI/derive_bits_keys/test_pbkdf2_short_long.https.html": [ - "518afb29e8f859a793e0e39317c6516aae99fb67", - "testharness" - ], - "WebCryptoAPI/derive_bits_keys/test_pbkdf2_short_short.https.html": [ - "5e776aa3f202bb72a328947983b020f03ba6ec4d", - "testharness" - ], "WebCryptoAPI/digest/digest.https.worker.js": [ "a9a6b7a15bf0b795729190a94bdda6ed1ddc013d", "testharness" @@ -413856,43 +414750,43 @@ "support" ], "WebCryptoAPI/generateKey/failures_AES-CBC.https.any.js": [ - "43e43b7fbf6441d1fcd6ddf46c30f0621b1edba7", + "8dcb56464b85de7d54bb3bc1c06d6bda630cf4a0", "testharness" ], "WebCryptoAPI/generateKey/failures_AES-CTR.https.any.js": [ - "2c884e027696683642ea9a554fbb458c80d7c250", + "135d0fdf4e8ca3c44af7af73919ea8ffe7129c5b", "testharness" ], "WebCryptoAPI/generateKey/failures_AES-GCM.https.any.js": [ - "a04245d270369f78f8043d0e18e78813d023143c", + "3d5858db114e2bcd58c7a5f2fd60c47643433007", "testharness" ], "WebCryptoAPI/generateKey/failures_AES-KW.https.any.js": [ - "926c029def9b80da51ebff1185692f24d403cecf", + "c1cba74aeccf6d59d9b1d8aa84cacf2352d1aa93", "testharness" ], "WebCryptoAPI/generateKey/failures_ECDH.https.any.js": [ - "89fe37aa9252d976f76823cdf285630ddadfbfce", + "a4e5c1acc05e321904fda9a8ab442aa63af2fb43", "testharness" ], "WebCryptoAPI/generateKey/failures_ECDSA.https.any.js": [ - "ab6acf474fb27f7a630847ce07d6fb6a9167ad92", + "a2bc85c93a660752db6250b9798240de8b3d3f96", "testharness" ], "WebCryptoAPI/generateKey/failures_HMAC.https.any.js": [ - "6f00681d254f24abf00f073806a162738bcbe8e7", + "13e7fd5352320e6e9e2af9cf54c45e2eae5032ca", "testharness" ], "WebCryptoAPI/generateKey/failures_RSA-OAEP.https.any.js": [ - "c6d7efb5ed58bb1ea96e141763e249b1ad99a6be", + "fb73abf86b9aaf51b032b57d1813d45256e2cbeb", "testharness" ], "WebCryptoAPI/generateKey/failures_RSA-PSS.https.any.js": [ - "dc18838f5c4f84436c892051a728de7ad83fe854", + "51b1195ef2c2f3084b35460c772c355515e2803c", "testharness" ], "WebCryptoAPI/generateKey/failures_RSASSA-PKCS1-v1_5.https.any.js": [ - "170964b911cd3d1aacaa261de01b013ee3fd745a", + "eebe6f227f86a0359690c36d118fb6d516991b5b", "testharness" ], "WebCryptoAPI/generateKey/successes.js": [ @@ -413900,43 +414794,43 @@ "support" ], "WebCryptoAPI/generateKey/successes_AES-CBC.https.any.js": [ - "49ce28516303c7525f74d29fbbe36b578e9e0d08", + "4f11c263cf8c1a10805dbdbf37e68441cc1524db", "testharness" ], "WebCryptoAPI/generateKey/successes_AES-CTR.https.any.js": [ - "377e8f0ec969f36949c9dc08ae935063d25c08d8", + "7f71cabebd7c4771b0338a86f0db249275c166e6", "testharness" ], "WebCryptoAPI/generateKey/successes_AES-GCM.https.any.js": [ - "a65a71f8f83b017fe9eb8fccbd8da3489ed1f9f0", + "b2818ac6f3bd48fc5343e11c9f3a5fb4e7e159b7", "testharness" ], "WebCryptoAPI/generateKey/successes_AES-KW.https.any.js": [ - "165159903403f67cc27d29f78d46369eb598811c", + "7fb055fd3d32f9b0f0934f0bcf6e4cc8e914c0bc", "testharness" ], "WebCryptoAPI/generateKey/successes_ECDH.https.any.js": [ - "525b874eff610c6db8cca7f50ba0c074b8975001", + "e9ac12b43efef8652a12a3a7dfdaf1f6d14c31fc", "testharness" ], "WebCryptoAPI/generateKey/successes_ECDSA.https.any.js": [ - "2a63f8d0d12987ca2e4c41e5eb28a53741a091f5", + "c1e3ea8f949413099f4d5c9903d4f86ae6b9ddeb", "testharness" ], "WebCryptoAPI/generateKey/successes_HMAC.https.any.js": [ - "af064fd9cc422c35718d1dcf2f6c861aab7385cc", + "6bc1c27059fca5fd8ec0eacb5a4092affd934aa2", "testharness" ], "WebCryptoAPI/generateKey/successes_RSA-OAEP.https.any.js": [ - "f82ce4307fea94a097ccdf470b766f110d876b87", + "c18bce1c96c0904d80ed0e8f6c6f52c422bd04cd", "testharness" ], "WebCryptoAPI/generateKey/successes_RSA-PSS.https.any.js": [ - "8ff33e42d855b7482455ebb3caab5ac311e7cbf5", + "e91f38538a40c448cbeaea5e3188df4a4c02870a", "testharness" ], "WebCryptoAPI/generateKey/successes_RSASSA-PKCS1-v1_5.https.any.js": [ - "fbbbef333461a7845ea1b3cba2169435c7f82761", + "7a507269004b76a7455cb41e476f69178fed7162", "testharness" ], "WebCryptoAPI/getRandomValues.any.js": [ @@ -414636,7 +415530,7 @@ "manual" ], "accelerometer/META.yml": [ - "939b04014d0d0c4818e330d4119ba6fdc9f7db58", + "f99b5f4f8bb9d631f1b55857512be56738801e6e", "support" ], "accelerometer/idlharness.https.html": [ @@ -415460,7 +416354,7 @@ "manual" ], "ambient-light/META.yml": [ - "91896df5cc21140f5a3bb733c38e9443df6dc4e7", + "ac7cd201b98202bfef2c967328008cc581e9091f", "support" ], "ambient-light/idlharness.https.html": [ @@ -417523,16 +418417,8 @@ "fd9efe16c485c6fa6cc4b587b492eb24bf9ccac2", "testharness" ], - "background-fetch/interfaces-worker.https.html": [ - "3bdcb55c864d99da109cdc0abe56c06aaf3e3d1e", - "testharness" - ], - "background-fetch/interfaces.html": [ - "dc48b3e0bff00fed4a0e846e35f2499d6579dcd8", - "testharness" - ], - "background-fetch/interfaces.worker.js": [ - "f1013d140f361226c81c24926548860d975ec3b2", + "background-fetch/interfaces.https.any.js": [ + "af1d0da2759a9c1c5b993eb9ea0905601f531301", "testharness" ], "background-fetch/mixed-content-and-allowed-schemes.https.window.js": [ @@ -417699,6 +418585,10 @@ "8185d2b31fbf67a573444d3c8f828f96422526f5", "support" ], + "beacon/idlharness.any.js": [ + "eee7ad4981ba48eef9df1f61b5d4d9ce39bc684d", + "testharness" + ], "beacon/navigate.iFrame.sub.html": [ "03a7f2477d3efef7572b1c45a6ed113350aec948", "support" @@ -417875,6 +418765,10 @@ "fa121bcbea3d19898a71f7dda79708ee941e4b6c", "testharness" ], + "bluetooth/idl/idlharness.tentative.window.js": [ + "02a6bf3346f34196fab9b5788131641d44bf9b77", + "testharness" + ], "bluetooth/requestDevice/acceptAllDevices/device-with-empty-name.https.html": [ "850418b4a67df894ac4b21d2e5a18c5c266d03fd", "testharness" @@ -436480,11 +437374,11 @@ "support" ], "console/console-count-logging-manual.html": [ - "1ffcacf40728c1cd9f0eadbd68dad59e7c2c35d3", + "f2e0d5c03356d15844f2ffa3f8800a7b44fd6319", "manual" ], "console/console-countReset-logging-manual.html": [ - "587de5bb8dcb002025244e8058b52d4ba0b1bdd3", + "6edce76ce23ebc0b885f171020909617409016b9", "manual" ], "console/console-is-a-namespace.any.js": [ @@ -436496,11 +437390,11 @@ "testharness" ], "console/console-number-format-specifiers-symbol-manual.html": [ - "a0b0c97ec5312027ff0152536458071254235d01", + "0ad8917ef886b6c9a6d0ce5f3befcca76a3b0fa4", "manual" ], "console/console-string-format-specifier-symbol-manual.html": [ - "d3126f4c136d646f79f2534f66b4d9f8d0c5c67d", + "d1b45d95169637c84eb6509aa3f8d4cf118dcc8c", "manual" ], "console/console-tests-historical.any.js": [ @@ -436759,8 +437653,8 @@ "8d1a3cb1754e08585851553defc828f424e3f402", "testharness" ], - "content-security-policy/embedded-enforcement/subsumption_algorithm-unsafe_hashed_attributes.html": [ - "f6888b5ea15ed20082ff9b2d323af0a495b9fe56", + "content-security-policy/embedded-enforcement/subsumption_algorithm-unsafe_hashes.html": [ + "221c608dd2ac6af81550ca6211c20a90e9f45dad", "testharness" ], "content-security-policy/embedded-enforcement/subsumption_algorithm-unsafe_inline.html": [ @@ -438771,18 +439665,82 @@ "2676e375c60899dbd2281b49e01e82e1b3d9451e", "testharness" ], - "content-security-policy/unsafe-hashed-attributes/script_event_handlers_allowed.html": [ - "3dac897440d3bcca283c606c51d23a9d37c66a62", + "content-security-policy/unsafe-hashes/javascript_src_allowed-href.html": [ + "2bd3fb3fae8a5bc7a25d17670b47327b8584a88c", "testharness" ], - "content-security-policy/unsafe-hashed-attributes/script_event_handlers_denied_matching_hash_no_unsafe_inline_attribute.html": [ - "2864ff4485ab5fee87000898cba6c9d786586684", + "content-security-policy/unsafe-hashes/javascript_src_allowed-href_blank.html": [ + "349baa33e86ccd020758817ef25503f6b5dddaa1", "testharness" ], - "content-security-policy/unsafe-hashed-attributes/script_event_handlers_denied_not_matching_hash.html": [ - "d4f78683e9e76a341134c34be726d435d113b71b", + "content-security-policy/unsafe-hashes/javascript_src_allowed-window_location.html": [ + "979110bfd5000798d635d3ccdd44acfcdcec8e0d", "testharness" ], + "content-security-policy/unsafe-hashes/javascript_src_allowed-window_open.html": [ + "1f6ce394551c57a521ce8df202cce59d8b27b0a0", + "testharness" + ], + "content-security-policy/unsafe-hashes/javascript_src_denied_missing_unsafe_hashes-href.html": [ + "8ebd1793dfc9ef510e0c78e19e02719e2a30f526", + "testharness" + ], + "content-security-policy/unsafe-hashes/javascript_src_denied_missing_unsafe_hashes-href_blank.html": [ + "a8a9080c1a1f7c26c1b30e9d43e13f53f4576360", + "testharness" + ], + "content-security-policy/unsafe-hashes/javascript_src_denied_missing_unsafe_hashes-window_location.html": [ + "4ac5fac6f6c58c8c172ed02594d73f631799cf7a", + "testharness" + ], + "content-security-policy/unsafe-hashes/javascript_src_denied_missing_unsafe_hashes-window_open.html": [ + "f62182571c99ce20bdb7ff7c94592355a6b41743", + "testharness" + ], + "content-security-policy/unsafe-hashes/javascript_src_denied_wrong_hash-href.html": [ + "5cefbd1b0017f318ea83b77e4766b0ed4b4295dd", + "testharness" + ], + "content-security-policy/unsafe-hashes/javascript_src_denied_wrong_hash-href_blank.html": [ + "4c12e6e13a95ad4fd6222d93427a48257f3a0b77", + "testharness" + ], + "content-security-policy/unsafe-hashes/javascript_src_denied_wrong_hash-window_location.html": [ + "401d00812bcb6aee37f5779f2794ecbb6792a7dc", + "testharness" + ], + "content-security-policy/unsafe-hashes/javascript_src_denied_wrong_hash-window_open.html": [ + "20348d6da0ecdb7f5295bc704191cd217dd726b6", + "testharness" + ], + "content-security-policy/unsafe-hashes/script_event_handlers_allowed.html": [ + "e8e57afe913c38d603d1e7256412b33a1b333004", + "testharness" + ], + "content-security-policy/unsafe-hashes/script_event_handlers_denied_missing_unsafe_hashes.html": [ + "9e80d3eb04bb86ea53eb8cce065490550fd19e79", + "testharness" + ], + "content-security-policy/unsafe-hashes/script_event_handlers_denied_wrong_hash.html": [ + "76831255a317844b60de42cb137ddbef52aa81b9", + "testharness" + ], + "content-security-policy/unsafe-hashes/style_attribute_allowed.html": [ + "02676f3fe19f2da59f166f2a7be071a4071615c6", + "testharness" + ], + "content-security-policy/unsafe-hashes/style_attribute_denied_missing_unsafe_hashes.html": [ + "759d2d1ba03562cce5a4c24327e0cd63fe297cd5", + "testharness" + ], + "content-security-policy/unsafe-hashes/style_attribute_denied_wrong_hash.html": [ + "6cc4455b0d5afa4c23ee5e8eb0c33969149fd36c", + "testharness" + ], + "content-security-policy/unsafe-hashes/support/child_window_location_navigate.sub.html": [ + "02990045a9427bfb19b439bb0691d0a5ed56453a", + "support" + ], "content-security-policy/worker-src/dedicated-child.sub.html": [ "fb394b266d3c21a44d7f0edfbbcc5d5ff31e8b6f", "testharness" @@ -438892,15 +439850,19 @@ "testharness" ], "cookie-store/META.yml": [ - "c04035be35660a958882953b9fc701a0b8d38322", + "b0d8c58c78cfd2dcc8a81b83fb17afadeabfb375", "support" ], "cookie-store/README.md": [ "40595162d15dec7e315ef16f94646045596d7b1c", "support" ], + "cookie-store/cookieListItem_attributes.tentative.window.js": [ + "7d89e9ee77bad065c75bdb4f3467852dbf256b09", + "testharness" + ], "cookie-store/cookieStore_delete_arguments.tentative.window.js": [ - "a2a3b036e62ed11e8013f7e255bbc418576dd451", + "740fccd53713d8ffdd84aa388580630025fc016c", "testharness" ], "cookie-store/cookieStore_delete_basic.tentative.window.js": [ @@ -438956,7 +439918,7 @@ "testharness" ], "cookie-store/cookieStore_set_arguments.tentative.window.js": [ - "33e7ed082d0e461147eb01dfabf305022952401f", + "86cdff2d6d564eef090342adb3d41c0b1e1c4513", "testharness" ], "cookie-store/cookieStore_set_expires_option.tentative.window.js": [ @@ -499351,6 +500313,34 @@ "2467ddfd1f4960c0c26096114b7b7302c3c02377", "support" ], + "css/compositing/parsing/background-blend-mode-invalid.html": [ + "718dafaca2e1aedaf4857e3af730f2c52a6ea9bf", + "testharness" + ], + "css/compositing/parsing/background-blend-mode-valid.html": [ + "3f7ae3abfd651a9a0f7f931cacec1b3f7635c81b", + "testharness" + ], + "css/compositing/parsing/isolation-invalid.html": [ + "5b16bc373fd6318f4f0d9ee24b7ac9719d7fd2da", + "testharness" + ], + "css/compositing/parsing/isolation-valid.html": [ + "760c18881d30fb5e41c948eaf5b46d3da69f8fe7", + "testharness" + ], + "css/compositing/parsing/mix-blend-mode-invalid.html": [ + "a20ce9b9858263fdf73b43ef4f8b0b02535a9df0", + "testharness" + ], + "css/compositing/parsing/mix-blend-mode-valid.html": [ + "092d740ae5549c4aaa4bf31fa0d7ed4df2ca2dee", + "testharness" + ], + "css/compositing/parsing/resources/parsing-testcommon.js": [ + "14f32b772f27a9bc75fe90e2ea1d8e4fb3649e95", + "support" + ], "css/compositing/svg/mix-blend-mode-in-svg-image.html": [ "fc6b8df4e7e8bbca443279335b969146313db604", "reftest" @@ -500083,6 +501073,10 @@ "0115580619b629e47ae0f2635cc84e1e80442a8f", "testharness" ], + "css/css-animations/idlharness.html": [ + "75e949c1edef367f29d23a1c4921fe7748c78a3f", + "testharness" + ], "css/css-animations/pending-style-changes-001.html": [ "5f2bf4b6712dd230109be62407cd31800451a271", "testharness" @@ -504567,6 +505561,10 @@ "a8e29f1bf5e6e6b4dec9da57036e8d95359f561b", "reftest" ], + "css/css-conditional/idlharness.html": [ + "3952fffe4e25eb06467eb2136f63d63c2bfa8191", + "testharness" + ], "css/css-conditional/js/001.html": [ "8da103d0787969a76df019c6d83aa59dd3884a52", "testharness" @@ -504775,6 +505773,10 @@ "51cc7a37659688af3830dbca89b9a515e22b2551", "reftest" ], + "css/css-contain/contain-size-013.html": [ + "22031a540503764e51111a7e5f9c91a0509b01f8", + "reftest" + ], "css/css-contain/contain-size-breaks-001.html": [ "3a3c80029a6c126c584a21e2ff3b25e5459c32e8", "reftest" @@ -505875,6 +506877,14 @@ "d6212621df87df9426ddb29b936703ace2813888", "support" ], + "css/css-display/display-contents-sharing-001-ref.html": [ + "b258dc5bd923a67b912b01ab9a86e0149f4aef43", + "support" + ], + "css/css-display/display-contents-sharing-001.html": [ + "0276d2d8870748dd0940716ee113d59ef349ade8", + "reftest" + ], "css/css-display/display-contents-state-change-001-ref.html": [ "f7e25855cc7ef1896a9a52005d3c1379bf74746b", "support" @@ -506947,6 +507957,34 @@ "f9699f59878f869cf0eb62d6b46ff118f6abfcf3", "support" ], + "css/css-env/at-supports.tentative.html": [ + "a93a3fe4ce531b5693060c3bb3c1c340a25ea490", + "testharness" + ], + "css/css-env/env-in-custom-properties.tentative.html": [ + "e7d3162835077f4698231a3a7466bcbcc31084cb", + "testharness" + ], + "css/css-env/fallback-nested-var.tentative.html": [ + "f88369824b722bc13d942fd86b9ef9a175e9ffe1", + "testharness" + ], + "css/css-env/seralization-round-tripping.tentative.html": [ + "d59add04498132c8db14fcc4b2bafdb33cffd6b1", + "testharness" + ], + "css/css-env/supports-script.tentative.html": [ + "8c2359decb8377ac80ef296dd303f03e2f7fd3a9", + "testharness" + ], + "css/css-env/syntax.tentative.html": [ + "47d940df02d19a4f8b66767bf646b4bce5de120f", + "testharness" + ], + "css/css-env/unknown-env-names-override-previous.tentative.html": [ + "46996cb158a0077db59425c5c72ac7a9396833d9", + "testharness" + ], "css/css-exclusions/META.yml": [ "3ce5754412de34748eedf62d4c86b59326b80927", "support" @@ -510539,6 +511577,10 @@ "003d315d72019673041c63b28a90f436c7e3855f", "testharness" ], + "css/css-fonts/font-shorthand-serialization-font-stretch.html": [ + "478f7730ecd2a733d7f41a75d46ecb2facb6936d", + "testharness" + ], "css/css-fonts/font-size-adjust-001-ref.html": [ "f477ee1d0669cc35acc873d267a5a9e7bcac8dae", "support" @@ -517420,7 +518462,7 @@ "testharness" ], "css/css-fonts/test_font_feature_values_parsing.html": [ - "a6397508316c35300513830a7a53d882debe3829", + "fb4bbba9672183a627f7535399af8a58beec6eb8", "testharness" ], "css/css-fonts/variations/META.yml": [ @@ -517867,6 +518909,14 @@ "59ad78731845efdee151a7db5f963484505e9b49", "testharness" ], + "css/css-grid/abspos/grid-positioned-items-gaps-002-rtl.html": [ + "5ca5422ebe3729773a46dd05a031636edc0fe669", + "testharness" + ], + "css/css-grid/abspos/grid-positioned-items-gaps-002.html": [ + "16b1e1d23bab903b3779c7b755624b336f4f9588", + "testharness" + ], "css/css-grid/abspos/grid-positioned-items-gaps-rtl-001.html": [ "618bf5f6b8ca90359e9df147f201ad4ba5d84e8e", "testharness" @@ -523991,6 +525041,30 @@ "90a089424b1c884a4ce6fe1684eed3ca03055158", "testharness" ], + "css/css-properties-values-api/support/alt/alt.css": [ + "9497bedbe2a13e5412c6d58fcaccaffce44797ab", + "support" + ], + "css/css-properties-values-api/support/alt/alt.js": [ + "0a9a8e1621ae44a94177d84b0183adfa514c21de", + "support" + ], + "css/css-properties-values-api/support/main/main.css": [ + "d1fa3f542b12beff80a2c157523fd49547f22abe", + "support" + ], + "css/css-properties-values-api/support/main/main.js": [ + "311fa24d3d02518cc9378bab785bf8e49714b78c", + "support" + ], + "css/css-properties-values-api/support/main/main.utf16be.css": [ + "bd7bbb7cfc8ca930399abcf886c3da0d446725eb", + "support" + ], + "css/css-properties-values-api/url-resolution.tentative.html": [ + "2f651c735028307632a6f7fb934e138e626acac7", + "testharness" + ], "css/css-properties-values-api/var-reference-registered-properties-cycles.html": [ "bc061780caa0085fca5b003c1aed68c7b162eabd", "testharness" @@ -526395,6 +527469,14 @@ "46913ea7e47811b11be898de5c3bd0a330ea6637", "testharness" ], + "css/css-scoping/shadow-directionality-001.tentative.html": [ + "51cf8c6780bb66f64082a0054f24f64c09b0258f", + "reftest" + ], + "css/css-scoping/shadow-directionality-002.tentative.html": [ + "c5cc9738b5b81a728c7cc16569360bd65b857ab3", + "reftest" + ], "css/css-scoping/shadow-disabled-sheet-001.html": [ "3de2d23c1b3339b964ec2c009832a3207a3b9dc4", "reftest" @@ -526423,6 +527505,14 @@ "99af6e29e69b3131b59dbdc2b0eead52931123c2", "reftest" ], + "css/css-scoping/shadow-link-rel-stylesheet-no-style-leak.html": [ + "a46be006762a16c2deb3d1d3a760e3c4e348668c", + "reftest" + ], + "css/css-scoping/shadow-link-rel-stylesheet.html": [ + "07862ce7d2a954988bdbce882869a4c5f097089a", + "reftest" + ], "css/css-scoping/shadow-reassign-dynamic-001.html": [ "11ed4da2e6ce88d8a2b98a8f1c814417ef7770dd", "reftest" @@ -528504,11 +529594,11 @@ "reftest" ], "css/css-tables/height-distribution/percentage-sizing-of-table-cell-children-002-ref.html": [ - "6e351eb38a72f6e6d67b73bcae030da73b7034d9", + "2547bb318d489887e72b10ac1f53d4899c5cc11b", "support" ], "css/css-tables/height-distribution/percentage-sizing-of-table-cell-children-002.html": [ - "b8a7f312ff67da23ed7fc212b27f78ae712eec21", + "6982f26692e67f13e9be51721ee81008a70fb22b", "reftest" ], "css/css-tables/height-distribution/percentage-sizing-of-table-cell-children.html": [ @@ -528516,13 +529606,17 @@ "testharness" ], "css/css-tables/height-distribution/percentage-sizing-of-table-cell-replaced-children-001-ref.html": [ - "44b8eefa18e5c99f034b997c40a5245d5b8d8497", + "d7411639b9c2d7df82ac45f89c14ca627770f9d1", "support" ], "css/css-tables/height-distribution/percentage-sizing-of-table-cell-replaced-children-001.html": [ - "9f50c6aacca1d1c5a8ad5814b92566aae707cebd", + "73fe30c46ab5e4a5bcc85a2473362908663e21c2", "reftest" ], + "css/css-tables/height-distribution/support/scrollbars.css": [ + "999eb08da2bd765f8716f22194d8e0282a40602d", + "support" + ], "css/css-tables/height-distribution/td-different-subpixel-padding-in-same-row-ref.html": [ "2bb8a26451a23ebcf548ad147d301ea5d9603c25", "support" @@ -538663,6 +539757,10 @@ "971be3c362daabff565737c0d98be96e2356adb8", "testharness" ], + "css/css-transitions/idlharness.html": [ + "ff6ec5d0e21891ea44637ad97187957c86add0a4", + "testharness" + ], "css/css-transitions/properties-value-001.html": [ "66853fd915a18b3a8eb78e5d551fc7eb529b72cf", "testharness" @@ -541600,95 +542698,95 @@ "reftest" ], "css/css-ui/parsing/box-sizing-invalid.html": [ - "f6d47c2136afc9b6538e2dfc5b8f1f13efd51359", + "d6c0f262fc9194e92627062a02db9bc2300976f5", "testharness" ], "css/css-ui/parsing/box-sizing-valid.html": [ - "ae42aa258f80502238e4106c5aad8cd3a86b67be", + "cdea435ef74fdb66bc9b480bd23771f918da6db0", "testharness" ], "css/css-ui/parsing/caret-color-invalid.html": [ - "4f661bf5354591a4763dc0e2e24262135274e851", + "d094b012b055649557e2db27c4a41084b5504ff4", "testharness" ], "css/css-ui/parsing/caret-color-valid.html": [ - "43e5e627b82425fe9b5f2e8aa631a3e29076a894", + "9499e106fbc910331750f1580e296feb141caa39", "testharness" ], "css/css-ui/parsing/cursor-invalid.html": [ - "9dc6470ff66b178b131df50baa4983e9c268f150", + "34a18b4943bc71be6e4537800cae3bfed0b924a0", "testharness" ], "css/css-ui/parsing/cursor-valid.html": [ - "b0a45e0783e4fc8d238941add086337a26352f97", + "2cc358e954aaa33bcf87ae410e3d65ee672ace17", "testharness" ], "css/css-ui/parsing/outline-color-invalid.html": [ - "c2c76b237c6a3cb3e6c739b46907afb3b168a00c", + "edf914872ef9267b25ec2ab9a0f1c58159341694", "testharness" ], "css/css-ui/parsing/outline-color-valid-mandatory.html": [ - "d4353c1c614c9352636351fd4f6060d5ebdf2551", + "dd895036c95d84f9c9d6f7632eafd9a1b7aecb8d", "testharness" ], "css/css-ui/parsing/outline-color-valid-optional.html": [ - "b68ab57f63120ae95944c55e0ea52d3155573267", + "f77a0c9af4c627fbf59e2c55b4bcc3dfb49b9771", "testharness" ], "css/css-ui/parsing/outline-invalid.html": [ - "e579a7ab952531873dea0ea2c1b749949336024c", + "8ba3081d8628a487310c9d7acda70c6c76158857", "testharness" ], "css/css-ui/parsing/outline-offset-invalid.html": [ - "924035eac723af4bf4712c3786543306ae6fcc10", + "e1587c0a9fefe8eeec8325ed6bb2b7c2d6b4428c", "testharness" ], "css/css-ui/parsing/outline-offset-valid.html": [ - "1f0e8b438dec00532cc115f959db11b77cedfb31", + "361108b768a172752c85f4b2794a511d464e745e", "testharness" ], "css/css-ui/parsing/outline-style-invalid.html": [ - "3f6a0a0842d5ca76c481eb92269fff221c8386c9", + "14ca6f72222fbb551b85cef7c8c5d9da3788c139", "testharness" ], "css/css-ui/parsing/outline-style-valid.html": [ - "a72005f961c1aad7ef1244541193e4959e496a71", + "74997c2c984b523229f4f68e534aeb6e2b2725d9", "testharness" ], "css/css-ui/parsing/outline-valid-mandatory.html": [ - "567b86da51778fc5350d11288dbd3e3f3e12bada", + "647d29a5fdd7b352a2d1fbbfa4bb0436e2eaa784", "testharness" ], "css/css-ui/parsing/outline-valid-optional.html": [ - "aa6ea1da3f43ca74a44527e84cee0ab8d2e4b091", + "9fc8bd366735dd05cc37c1497c7aed6a91e32630", "testharness" ], "css/css-ui/parsing/outline-width-invalid.html": [ - "78e0dc7d541e7000d507a4773908ca851c50a5cb", + "0403c9910c17f76da0e834d2c9263898b405d049", "testharness" ], "css/css-ui/parsing/outline-width-valid.html": [ - "a31c9f3572566e75dce6a36d58f9e21aaa727405", + "b902d6da35d6dac8d0e08fe99760434294311263", "testharness" ], "css/css-ui/parsing/resize-invalid.html": [ - "972f102e81b150ea63b9616728aa0c27b6f31dfb", + "fd6f661bc65d483cf2136d4d889f3778d5012ddf", "testharness" ], "css/css-ui/parsing/resize-valid.html": [ - "f10a19dae64b6b8d02bc188dc2bb7df778fa4d60", + "70bff9554807d01fdf39b1c8566a24ea864aca58", "testharness" ], - "css/css-ui/parsing/resources/parsing-testcommon.js": [ + "css/css-ui/parsing/support/parsing-testcommon.js": [ "14f32b772f27a9bc75fe90e2ea1d8e4fb3649e95", "support" ], "css/css-ui/parsing/text-overflow-invalid.html": [ - "576fd63bd6455a8e0e3623e853dfc260662d3a86", + "d0cf5f82994d7004d27a57adf9caa8981220847a", "testharness" ], "css/css-ui/parsing/text-overflow-valid.html": [ - "79c05636c160aa39475e059ede5de6b60afafaca", + "cb1d4d0815d3e7b55c5adf33dae95cedcdcf75ae", "testharness" ], "css/css-ui/reference/box-sizing-001-ref.html": [ @@ -543079,6 +544177,10 @@ "6fa668d2bcaf01f5c4680e3e14a0e86160d1b5d5", "reftest" ], + "css/css-values/calc-rounding-001.html": [ + "a74b631cd97db18ef120a0a5e7132c9e14b67f81", + "testharness" + ], "css/css-values/calc-serialization.html": [ "d0bcbd402cb78e704dabc7f1665d40ba163e30eb", "testharness" @@ -550327,6 +551429,10 @@ "6ee9a47112c9a5fe4f0c85f85ea577575790c5be", "testharness" ], + "css/cssom-view/elementFromPoint-mixed-font-sizes.html": [ + "d73025913e0ff9d0ba490b8a54f543e876808450", + "testharness" + ], "css/cssom-view/elementFromPoint-parameters.html": [ "0c31602268a831eae1bcd44b4a5e7b678a7ed7cb", "testharness" @@ -550459,6 +551565,10 @@ "7461663514681b85aaa1b2be6e2e2807c71a9e51", "testharness" ], + "css/cssom-view/scrollIntoView-vertical-rl-writing-mode.html": [ + "c630846b4220925cb92e6cfda77f8d54b09d4a05", + "testharness" + ], "css/cssom-view/scrollTop-display-change-ref.html": [ "bb9079ba597cbcc27604cf8cc5556b4e6e0cda93", "support" @@ -550868,7 +551978,15 @@ "testharness" ], "css/cssom/getComputedStyle-detached-subtree.html": [ - "01978ca7ea08cbf61b28e9d77753fe5852bcbff9", + "886f72b4eaa82d3aeb4de5c5b27f71369dbe0186", + "testharness" + ], + "css/cssom/getComputedStyle-display-none-001.html": [ + "0e1f381bb67d045c9a92461f664c3c4d61de280f", + "testharness" + ], + "css/cssom/getComputedStyle-display-none-002.html": [ + "23a362d9423cdfe6d8c29809fdadca525054d175", "testharness" ], "css/cssom/getComputedStyle-dynamic-subdoc.html": [ @@ -550876,7 +551994,7 @@ "testharness" ], "css/cssom/getComputedStyle-pseudo.html": [ - "d3ef09fb6092078562f8923879b9ece97938df47", + "1e5befe5a5494fef67f7c001301f0caddf1aa060", "testharness" ], "css/cssom/historical.html": [ @@ -563108,7 +564226,7 @@ "testharness" ], "custom-elements/Document-createElement.html": [ - "5beef262e1e1a1c98eb320019c88d9a7bda02ba5", + "095cf0b0907bcd53ba8f0b655ec1655329959a98", "testharness" ], "custom-elements/Document-createElementNS.html": [ @@ -563536,7 +564654,7 @@ "support" ], "docs/_writing-tests/testharness.md": [ - "45475b5c261fb5a3fe571fd1c4151e7e3507cf67", + "67801e31fa6bf99a22a5407a7e59567e714ee7c3", "support" ], "docs/_writing-tests/visual.md": [ @@ -563868,7 +564986,7 @@ "testharness" ], "dom/interfaces.html": [ - "46cfe52f726e7b5fdbe737470b05b34aaff2e358", + "de6fe70821503daa1d134113c644371feee4c7e5", "testharness" ], "dom/lists/DOMTokenList-Iterable.html": [ @@ -564784,7 +565902,7 @@ "testharness" ], "dom/nodes/attributes.html": [ - "cddff48a942168622772069ca2b2bcf0318deed4", + "a39c668569ca64cddb49ea050884580fcb18aa68", "testharness" ], "dom/nodes/attributes.js": [ @@ -567508,7 +568626,7 @@ "testharness" ], "encrypted-media/idlharness.https.html": [ - "29f3c9774b623413c4127ea0e5a915e67f24cd24", + "ab08c64408ed83c880f9a6ae9624d6f097929514", "testharness" ], "encrypted-media/polyfill/cast-polyfill.js": [ @@ -568732,7 +569850,7 @@ "testharness" ], "fetch/api/idl.any.js": [ - "e5aad955f348ef56288fa0d50b9396a3b5f02571", + "807763b90c8b6d237371b1ab574b0a2283e28f15", "testharness" ], "fetch/api/policies/csp-blocked-worker.html": [ @@ -569471,6 +570589,10 @@ "465d933f4e52ef4e5a4bd0de40873410195843cd", "testharness" ], + "fetch/cors-rfc1918/idlharness.tentative.any.js": [ + "08d7db9d67437d64350503f153abfd7015a0d27e", + "testharness" + ], "fetch/cross-origin-resource-policy/fetch-in-iframe.html": [ "4d836bed1e90a2d14b1651c0f3229b3f3d0b6b91", "testharness" @@ -569724,7 +570846,7 @@ "support" ], "fetch/sec-metadata/fetch.tentative.https.sub.html": [ - "39325c2758284c6d36d996c21cdb7e8845a17ea3", + "80ed267f8a5a8aa6bf7e146af4836b2b56430721", "testharness" ], "fetch/sec-metadata/iframe.tentative.https.sub.html": [ @@ -569744,7 +570866,7 @@ "support" ], "fetch/sec-metadata/resources/helper.js": [ - "64d204e36b6ab3b7268d6fd8e0694081222b98ee", + "ee91fc4ff739485eed66c7ebc8fb19311f205536", "support" ], "fetch/sec-metadata/resources/post-to-owner.py": [ @@ -570664,7 +571786,7 @@ "manual" ], "generic-sensor/META.yml": [ - "501e235c91dc76460ba4932e9da1d074d657dd1e", + "5de173230a2e4904d93951cb5da07c2140768f2c", "support" ], "generic-sensor/README.md": [ @@ -570804,7 +571926,7 @@ "testharness" ], "geolocation-sensor/META.yml": [ - "b01c3f57ae359f08bb0ac0600e5dfde4a9b36571", + "5de8e1095bec7eb4dded143ac269e09ba4fa02c4", "support" ], "geolocation-sensor/idlharness.https.html": [ @@ -570888,7 +572010,7 @@ "manual" ], "gyroscope/META.yml": [ - "939b04014d0d0c4818e330d4119ba6fdc9f7db58", + "f99b5f4f8bb9d631f1b55857512be56738801e6e", "support" ], "gyroscope/idlharness.https.html": [ @@ -572044,7 +573166,7 @@ "testharness" ], "html/browsers/browsing-the-web/unloading-documents/unload/006-1.html": [ - "73183ec1fbbdb0f8bbf7ef0c0e2ca2d940465299", + "a26197e9ed1f2fc73b9b297cb1e92c21619dcbbb", "support" ], "html/browsers/browsing-the-web/unloading-documents/unload/006-2.html": [ @@ -572083,13 +573205,13 @@ "97d775ccd5a50fe561100794417c7c7eb97939e7", "testharness" ], - "html/browsers/browsing-the-web/unloading-documents/unload/manual-001-1.html": [ + "html/browsers/browsing-the-web/unloading-documents/unload/pagehide-manual-1.html": [ "ff9aaf41f253012553868cc998e0b97ab6fe2970", "support" ], - "html/browsers/browsing-the-web/unloading-documents/unload/manual-001.html": [ - "2a96f64ae79f1f1089ead1d0bae17b733540a8c5", - "support" + "html/browsers/browsing-the-web/unloading-documents/unload/pagehide-manual.html": [ + "8e6158718a67cef7e4912dda69d1287b2171654f", + "manual" ], "html/browsers/history/.gitkeep": [ "da39a3ee5e6b4b0d3255bfef95601890afd80709", @@ -581648,7 +582770,7 @@ "testharness" ], "html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/parsing.html": [ - "80aa762a69d2ed8a702ad42fc38a3b9ef58c8be1", + "aec3c5c7f676e0bb3a94d945587ef51c8ac35078", "testharness" ], "html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/remove-from-document.html": [ @@ -584187,8 +585309,12 @@ "cf6e961b764d5c6e7e1289f3db988fe94efaf030", "testharness" ], + "html/semantics/embedded-content/the-iframe-element/iframe-allow.html": [ + "5355ec5b17bfdd57d961c6827b0a590ecca233fc", + "testharness" + ], "html/semantics/embedded-content/the-iframe-element/iframe-allowfullscreen.html": [ - "70a1607f74e1550681a4b7b589f7a41db9174e7a", + "42d4ae046daa9080bd945de796e769c37ffe335c", "testharness" ], "html/semantics/embedded-content/the-iframe-element/iframe-append-to-child-document.html": [ @@ -584771,8 +585897,20 @@ "d8bdb2208a32d2200afb173368c38826fede8476", "support" ], - "html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute.html": [ - "22040d8543a29c1e4f1708017096a5f9de478549", + "html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-display-none.html": [ + "0640911a07b6d8d52a99657bab9cfd60f12ca039", + "testharness" + ], + "html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-quirks-mode.html": [ + "5654a57151b4f3d4cbea49dce643aa67921faef3", + "testharness" + ], + "html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-standards-mode.html": [ + "2fe5520523418bf16c57108dc2f3eda06cf7084e", + "testharness" + ], + "html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-width-1000px.html": [ + "043e76618e8ddbdf7c62a28150e467840f3a2193", "testharness" ], "html/semantics/embedded-content/the-img-element/sizes/sizes-dynamic-001-ref.html": [ @@ -584783,7 +585921,11 @@ "c25df42c0fa9b20cfac886da13c74801c63d8d40", "reftest" ], - "html/semantics/embedded-content/the-img-element/sizes/sizes-iframed.sub.html": [ + "html/semantics/embedded-content/the-img-element/sizes/support/parse-a-sizes-attribute.js": [ + "4ddd034873cb0340ef07eebe6579c12f1c78b767", + "support" + ], + "html/semantics/embedded-content/the-img-element/sizes/support/sizes-iframed.sub.html": [ "47e56d828d8c366a95d0ea77571a1dbcaaca3164", "support" ], @@ -585895,14 +587037,6 @@ "b61235681689807b5d46b8aaca9ae6c7a18039f7", "testharness" ], - "html/semantics/forms/the-textarea-element/textarea-maxlength.html": [ - "fb2796fe7e542bd9551c18c0176a4f822ee347cd", - "testharness" - ], - "html/semantics/forms/the-textarea-element/textarea-minlength.html": [ - "fcccb00d0db7222af1fb03e7481ccf31e51ec924", - "testharness" - ], "html/semantics/forms/the-textarea-element/textarea-newline-bidi-ref.html": [ "26eb3e615f8b0e15cf02b7ee18d39fd71b04da70", "support" @@ -587480,11 +588614,11 @@ "testharness" ], "html/semantics/scripting-1/the-script-element/module/dynamic-import/string-compilation-nonce-classic.html": [ - "d49f673f10045316bf897ded5d0cd24ab3933a5b", + "fd4a01519ff3b522b95b5b5f81a2c9f5f6672e49", "testharness" ], "html/semantics/scripting-1/the-script-element/module/dynamic-import/string-compilation-nonce-module.html": [ - "2566b1d80cd2617c62667c300fe9568a640fe1a5", + "0ee0b781ac22fc0382f51ac4aae6087536dd42d4", "testharness" ], "html/semantics/scripting-1/the-script-element/module/dynamic-import/string-compilation-of-promise-result.html": [ @@ -590843,10 +591977,34 @@ "7c39501c8a2ddcd9ee0405af1df84e259205ab04", "reftest" ], + "infrastructure/server/order-of-metas.any.js": [ + "13cf63163e3aad97c71982929fbcc27ebf4fd5d1", + "testharness" + ], + "infrastructure/server/order-of-metas.window.js": [ + "43c1f60e50759125c485fea1c536715b51b47444", + "testharness" + ], + "infrastructure/server/resources/expect-global.js": [ + "0f13f760c717d07673e3f86662a115f855972a35", + "support" + ], + "infrastructure/server/resources/expect-seen-testharness.js": [ + "3e40b1eb70e88f6666463b4711520528f26833e1", + "support" + ], + "infrastructure/server/resources/expect-title-meta.js": [ + "c2ea5aab7970615d4d4f6b706d1d974fcabbddb9", + "support" + ], "infrastructure/server/secure-context.https.any.js": [ "6f246bdc6d67a92a6518870542c20d2f8b2b5f5d", "testharness" ], + "infrastructure/server/title.any.js": [ + "d1220af2e8cc4fab720497311064666393eea7c8", + "testharness" + ], "infrastructure/server/wpt-server-http.sub.html": [ "2a400478de23a6aecf31bdc08b187784c36be629", "testharness" @@ -590948,13 +592106,17 @@ "support" ], "interfaces/background-fetch.idl": [ - "f2c8fc84af7bf785ba42f1398181e2ab08c3826a", + "272d5ef66a2df3a6c3fefaf9688802ed93a9ad5f", "support" ], "interfaces/battery.idl": [ "37550560186be55b56d226be2fdecc1e36574a6d", "support" ], + "interfaces/beacon.idl": [ + "0c44727b2685654751d2927f9c384f7e05cc7cf3", + "support" + ], "interfaces/budget-api.idl": [ "caba22c23688d761adef48dae1b58cc13a3e90ea", "support" @@ -590975,6 +592137,18 @@ "bb4c385873deafd746f186058b111193c8aebf01", "support" ], + "interfaces/cors-rfc1918.idl": [ + "d7f133c8dd6e1656f82c077d9795714827b9c869", + "support" + ], + "interfaces/css-animations.idl": [ + "520ed1f6d245c75551aed3f74f988026edf3ff59", + "support" + ], + "interfaces/css-conditional.idl": [ + "0019e54201874e5d2a2b10c887e44b8c42199c32", + "support" + ], "interfaces/css-font-loading.idl": [ "9f2f252c5b63c159d9680de46a932bfa4335bf11", "support" @@ -590991,6 +592165,10 @@ "9939fb7f08cab0f167e6e0762eac6ad94b2dfd9f", "support" ], + "interfaces/css-transitions.idl": [ + "54dd701233a71187c8b675ebbf7336f852a7cace", + "support" + ], "interfaces/css-typed-om.idl": [ "36526913c07a04f9fd329a5650430db82407d766", "support" @@ -591016,7 +592194,7 @@ "support" ], "interfaces/encrypted-media.idl": [ - "ef1f1432c42fc6d01f3bfbd576fa5c7de349de96", + "9965e27558616e512abdfacb451a4798035cf1df", "support" ], "interfaces/entries-api.idl": [ @@ -591083,14 +592261,34 @@ "17413896d6281553091cf2c369c29de42d450962", "support" ], + "interfaces/mediacapture-depth.idl": [ + "d14de04445755e1f6bc88023d3bd85b601ed5209", + "support" + ], + "interfaces/mediacapture-fromelement.idl": [ + "501b9ce0b557e52c122a2bb7f3be1a3e360da512", + "support" + ], + "interfaces/mediacapture-image.idl": [ + "22f1cdf8c2c07e72570786750f50168d0a5ba782", + "support" + ], "interfaces/mediacapture-main.idl": [ - "3400c775504ebf32af3f8e1165a53ca60f258495", + "a2a5e12acdc863828532e28574ed4904f0b0b2b8", + "support" + ], + "interfaces/mediacapture-record.idl": [ + "2af81807d578af4bfec67e58aeb17fa194bf83b4", "support" ], "interfaces/mediasession.idl": [ "7cbe73f7f563ee45772bb466ce63e16a549548d3", "support" ], + "interfaces/orientation-event.idl": [ + "0188bd03cdd323e354e8e7c3d279c6983f701378", + "support" + ], "interfaces/orientation-sensor.idl": [ "1f0698a8611726b1ba724a5d7a0961e836c7b07e", "support" @@ -591123,10 +592321,22 @@ "6d3ff2b3f8b4015f3cb282db2cd2dbb8c2e90db5", "support" ], + "interfaces/presentation-api.idl": [ + "2f9d2c446e561acea02f9954f4f35f1c4dc61f2c", + "support" + ], "interfaces/proximity.idl": [ "5416752c31de2d0f7a3b72941e24a0030d98599c", "support" ], + "interfaces/push-api.idl": [ + "8157418c11faef0a36f0829f42b070daca8b57f5", + "support" + ], + "interfaces/referrer-policy.idl": [ + "04193aef279c9c8e0cb060d715d91c66045aaf17", + "support" + ], "interfaces/remote-playback.idl": [ "9ddb3a7bfce2454a3f7d835785db912f70521449", "support" @@ -591139,6 +592349,14 @@ "ace5a4ae79933cdfd7ecf5c3801e93f0636fe57b", "support" ], + "interfaces/scroll-animations.idl": [ + "b8a8781f130345d09ceb3cf064ce02ef1cd1c96a", + "support" + ], + "interfaces/secure-contexts.idl": [ + "27034035747147b5b460d6ee782e060cfa58b2f5", + "support" + ], "interfaces/selection-api.idl": [ "c8c9e45b541e511673dbe8ddd1321dceef2856b4", "support" @@ -591151,10 +592369,18 @@ "0c9862d6e00d02a0955a1eaf2ec4f237bd060ac4", "support" ], + "interfaces/shape-detection-api.idl": [ + "e348a282e353caac1d0bb93e453e06031b1aca75", + "support" + ], "interfaces/storage.idl": [ "a1ad440d60e04902f494ecaced1fceb8560adc5c", "support" ], + "interfaces/touch-events.idl": [ + "00811ff421c7ecafb8070d1a3d17310e1228c725", + "support" + ], "interfaces/touchevents.idl": [ "6ce4f601cda6cd3b99a300e0b28d2886647f06d3", "support" @@ -591183,8 +592409,8 @@ "a68224b17684bd43309bef57e7ad835f5f324a3a", "support" ], - "interfaces/web-audio-api.idl": [ - "6e6a41a2b1dfde69171a8d28252cc3354c86b83e", + "interfaces/web-bluetooth.idl": [ + "48e51b15f2338d6b3b0a8c0a013b4f1bfdf6ca1f", "support" ], "interfaces/web-nfc.idl": [ @@ -591195,8 +592421,8 @@ "21b54128664c5962c29fd708ebba3d8d90987f26", "support" ], - "interfaces/webappsec-referrer-policy.idl": [ - "d19ab092de767fd06ede1b77236b35d9cbe45c4c", + "interfaces/webaudio.idl": [ + "a2adb319de88d1d33080a837972caefa5c5c1946", "support" ], "interfaces/webauthn.idl": [ @@ -591224,7 +592450,7 @@ "support" ], "interfaces/webxr.idl": [ - "cea1f5425969a98f261fa4173aba6ddb91ee5a8d", + "abc92e822310850493632eb1ee7183b6e859b78a", "support" ], "interfaces/xhr.idl": [ @@ -591576,7 +592802,7 @@ "support" ], "magnetometer/META.yml": [ - "939b04014d0d0c4818e330d4119ba6fdc9f7db58", + "f99b5f4f8bb9d631f1b55857512be56738801e6e", "support" ], "magnetometer/Magnetometer-disabled-by-feature-policy.https.html": [ @@ -592148,7 +593374,7 @@ "support" ], "media-source/interfaces.html": [ - "fa1b832ea50c89a6fc1880befecc5fa059ceb60a", + "f836da38e12662cd56590d5a0534ad555dbf249e", "testharness" ], "media-source/manifest.txt": [ @@ -592168,7 +593394,7 @@ "testharness" ], "media-source/mediasource-append-buffer.html": [ - "a29b47e56f3f3b963063ff2a8e9d41c05299e024", + "44a899df039dcda1082df46ff47345acf043fac7", "testharness" ], "media-source/mediasource-appendbuffer-quota-exceeded.html": [ @@ -592191,6 +593417,18 @@ "8bcf804c70f5a6af46e9a20dfaa7f64d758ea5eb", "testharness" ], + "media-source/mediasource-changetype-play.html": [ + "42d295c33e59d14e4977c39d5d68dcd0b51d3918", + "testharness" + ], + "media-source/mediasource-changetype-util.js": [ + "a886523b16f314c6988fc734dacfd9568b707c27", + "support" + ], + "media-source/mediasource-changetype.html": [ + "682711fe3a58f295d34294f6a232dde7652b7b20", + "testharness" + ], "media-source/mediasource-closed.html": [ "313b2214c931ae32d12204381263bfed26a925bf", "testharness" @@ -592367,6 +593605,10 @@ "72b8c59a8eb6ed9f672eac1ba237e19d0d6fc4fa", "support" ], + "media-source/mp3/sound_5.mp3": [ + "61d1f0d6c12324489c6e96496128b135e68c5b76", + "support" + ], "media-source/mp4/test-a-128k-44100Hz-1ch-manifest.json": [ "f3b00f2cfe93e463e13fb0e3318be7ce63f05434", "support" @@ -592535,6 +593777,10 @@ "aae8ea4cf4b4fa88b0e88094f2e64c63df4bceb9", "support" ], + "media-source/webm/test-vp9.webm": [ + "0ffc952fe129f14c316c2895f5909442c1ee24b0", + "support" + ], "media-source/webm/test.webm": [ "a06d964d2c7a770ddfc375532d06b94bf1a83c3c", "support" @@ -592643,6 +593889,14 @@ "c3f2ab0ca87e837a5ffc6dfc1e757e1357c49d1f", "support" ], + "mediacapture-depth/META.yml": [ + "13b336e701676dce031336c06116fef63930ad45", + "support" + ], + "mediacapture-depth/idlharness.html": [ + "72bf5f2a0d73828f2b0e60046b978e0a9490e7a5", + "testharness" + ], "mediacapture-fromelement/META.yml": [ "40a8ff568344b2cb7809312603fd2fe82f123719", "support" @@ -592664,7 +593918,7 @@ "testharness" ], "mediacapture-fromelement/idlharness.html": [ - "ceeb48e7982eb88561f4c1630cb0fcf15d9cf73c", + "cbda24f01aad5bbcc75ce5e19df2979d3e2e9c3a", "testharness" ], "mediacapture-image/META.yml": [ @@ -592672,7 +593926,7 @@ "support" ], "mediacapture-image/idlharness.html": [ - "7ccf7fcab0344a2e1893e89d7689e2312287b64d", + "69441fcf969ff3bd014ac6109c1f8b1a18a8ec54", "testharness" ], "mediacapture-record/BlobEvent-constructor.html": [ @@ -592684,7 +593938,7 @@ "support" ], "mediacapture-record/idlharness.html": [ - "99adc299359aad8cdd4f08ba920dde780bd06063", + "fade50f6800c09a97104c96c0b5d80b2094455b6", "testharness" ], "mediacapture-streams/GUM-api.https.html": [ @@ -592724,11 +593978,11 @@ "support" ], "mediacapture-streams/MediaDevices-IDL-all.html": [ - "42f245551c0d64377f949efda4cfad4934323b48", + "9c67c8e7fe285c5bad2497408a830d1d20dcc103", "testharness" ], "mediacapture-streams/MediaDevices-IDL-enumerateDevices.html": [ - "cea6395d985eadd8340a4f3d64df2bb266a7f793", + "7d47f11a93d68c886612de8ac6847194fc02ad67", "testharness" ], "mediacapture-streams/MediaDevices-enumerateDevices.https.html": [ @@ -592804,7 +594058,7 @@ "testharness" ], "mediacapture-streams/MediaStreamTrack-getSettings.https.html": [ - "e73c53bfd0c77c91f2f736cb5bb723856c2d1501", + "64136d9276455bd7ff619db1f3914b83b7076da0", "testharness" ], "mediacapture-streams/MediaStreamTrack-id.https.html": [ @@ -601095,8 +602349,8 @@ "ef54a144013c5eb07a1c5742d8239e741a2a18dc", "manual" ], - "orientation-event/idlharness.html": [ - "0e9e6441b4ccbf7618b21fdb5a02f9fa8fab87dd", + "orientation-event/idlharness.window.js": [ + "824ae0a40b84ce1746f813cd16be75e550f2bd6c", "testharness" ], "orientation-event/screen-upmost-manual.html": [ @@ -601196,7 +602450,7 @@ "testharness" ], "orientation-sensor/META.yml": [ - "939b04014d0d0c4818e330d4119ba6fdc9f7db58", + "f99b5f4f8bb9d631f1b55857512be56738801e6e", "support" ], "orientation-sensor/OrientationSensor_insecure_context.html": [ @@ -601632,7 +602886,7 @@ "testharness" ], "payment-request/payment-request-canmakepayment-method-manual.https.html": [ - "9d0df3f544b0183130d4d3e59e457edbb6f5202f", + "20edcf57236087023cf7379cec4a4ab3b57f3155", "manual" ], "payment-request/payment-request-constructor-crash.https.html": [ @@ -601783,8 +603037,8 @@ "0a3ea0b532a1634008b776489b7409b348952d6f", "testharness" ], - "performance-timeline/performanceentry-tojson.html": [ - "bc8a6f3fb13af9df11781a21b96f342e7d7ddf4e", + "performance-timeline/performanceentry-tojson.any.js": [ + "dabdb522fde4513d92878f541dc652651829e0a2", "testharness" ], "performance-timeline/performanceobservers.js": [ @@ -601823,8 +603077,8 @@ "e06354c2fd72bb868f8964cbf9ab393b629a3789", "testharness" ], - "performance-timeline/po-takeRecords.html": [ - "e674c882ca331e48c92e6b9bf88d8b8a054316e4", + "performance-timeline/po-takeRecords.any.js": [ + "b767e4ba133c33b1354768105472b4c8261224e9", "testharness" ], "performance-timeline/resources/square.png": [ @@ -601835,8 +603089,8 @@ "6536127a1136f45cd59f62a9851fe61ceabe3d5b", "support" ], - "performance-timeline/webtiming-resolution.html": [ - "75737bc80f456599ecdc247d0f0054d48f59e3ae", + "performance-timeline/webtiming-resolution.any.js": [ + "17b1c06f9b31b0e77e1601f3f83e1759d66cc41b", "testharness" ], "performance-timeline/worker-with-performance-observer.html": [ @@ -602580,7 +603834,7 @@ "testharness" ], "presentation-api/controlling-ua/idlharness.https.html": [ - "2c04fce046431ca8e3ddb3eee5428ac99e4c217a", + "75dca68e8398772129feacc28bfe574e9c8d402b", "testharness" ], "presentation-api/controlling-ua/reconnectToPresentation_notfound_error.https.html": [ @@ -602708,7 +603962,7 @@ "support" ], "presentation-api/receiving-ua/support/idlharness_receiving-ua.html": [ - "7d2a67a137e77029179039e34a86a9abe81189d7", + "b6845e5a67df93b3631ab2c45cf920ae85613981", "support" ], "presentation-api/receiving-ua/support/iframe.html": [ @@ -602748,7 +604002,7 @@ "support" ], "proximity/META.yml": [ - "eb4e334f1292eca9fff96530ef05c96d2cb0db89", + "7645b3f88917eec4c54b28d41ed2a8941c198975", "support" ], "proximity/ProximitySensor.https.html": [ @@ -602767,6 +604021,14 @@ "7265649abefcaec47f159b4980b0c43ca7e47528", "testharness" ], + "push-api/META.yml": [ + "d4b8d3ee30aca9e9bd4435534615172c89f9ca9c", + "support" + ], + "push-api/idlharness.https.any.js": [ + "683d97ccd02091c86052375e8f6c4b7da214e76f", + "testharness" + ], "quirks/META.yml": [ "45472ac8906e7b383d80ab0b92ecddd6b900f726", "support" @@ -611179,6 +612441,14 @@ "9984a22d62b08da1aa2102936b0c5375fe237548", "support" ], + "scroll-animations/META.yml": [ + "df377d2d8c7e81a85e1676b0ca9dd186837710a6", + "support" + ], + "scroll-animations/idlharness.html": [ + "343f75a4f8c405542f2fbe8ec5bdb6e757d17d0a", + "testharness" + ], "secure-contexts/META.yml": [ "4966e7a03e815dac333218faf57875b57b9dd535", "support" @@ -611211,6 +612481,10 @@ "7241035c47bc2a0251826d2c9ad3bc5f9acd61d2", "testharness" ], + "secure-contexts/idlharness.any.js": [ + "aadb6cb566dfa52c34e7c9f261874ecbcb55d13a", + "testharness" + ], "secure-contexts/postMessage-helper.html": [ "8b5438e8ff88bd322c5231b5116128f50652f43b", "support" @@ -612163,7 +613437,7 @@ "10f756bbf749b7ad8f7c6eb4efe752ee79c44b4a", "testharness" ], - "server-timing/service_worker_idl.html": [ + "server-timing/service_worker_idl.https.html": [ "cb5ea3136399f88fb6c4e8071ad8e3b7ccebb242", "testharness" ], @@ -612619,6 +613893,10 @@ "8402c159967bb6e91903adc52e7d68c8d2443a72", "testharness" ], + "service-workers/service-worker/controller-with-no-fetch-event-handler.https.html": [ + "c555850c4c7b56781532de9f10f935f337ac50dc", + "testharness" + ], "service-workers/service-worker/dedicated-worker-service-worker-interception.https.html": [ "f0eefc8b5ca0e26d87bddd7821bcfcb2a387d6f8", "testharness" @@ -612836,7 +614114,7 @@ "testharness" ], "service-workers/service-worker/http-to-https-redirect-and-register.https.html": [ - "d9e1cc801c3ee075ceb5a5e68ce662cfb2432965", + "a047873e7a25ed44f4ed953dc5993ac8dd08b9b8", "testharness" ], "service-workers/service-worker/immutable-prototype-serviceworker.https.html": [ @@ -613044,7 +614322,7 @@ "testharness" ], "service-workers/service-worker/navigation-redirect.https.html": [ - "109f463deeaad2d60d4dab644c782ad633e97a7d", + "92638db88808806e49a648c55749f23af4bf8cc1", "testharness" ], "service-workers/service-worker/navigation-timing.https.html": [ @@ -613335,6 +614613,18 @@ "1557f173e6cc5d1540ed9d78e8c9216b312fabb5", "support" ], + "service-workers/service-worker/resources/cors-approved.txt": [ + "d58bf2436c1b4596c8725efbf332fa65f8387350", + "support" + ], + "service-workers/service-worker/resources/cors-approved.txt.headers": [ + "3ddccda06ce83050ec70996773f2b595e28a7bea", + "support" + ], + "service-workers/service-worker/resources/cors-denied.txt": [ + "b4802b6e97bfb4fe22a10b1f4f9bfedf882df51d", + "support" + ], "service-workers/service-worker/resources/dummy-shared-worker-interceptor.js": [ "dd3d9a5f1c9cb6cbfcf018ba13118439dfa13eef", "support" @@ -613672,7 +614962,7 @@ "support" ], "service-workers/service-worker/resources/http-to-https-redirect-and-register-iframe.html": [ - "b1a69bedbfbcb8f5b38d35f637f75f167d80118a", + "c1d36190219535c1daae941d7823d97a1ac7e056", "support" ], "service-workers/service-worker/resources/iframe-with-image.html": [ @@ -614675,6 +615965,14 @@ "61f7da763fa4eb6f21077868caf0a07a4a9e44ae", "testharness" ], + "shadow-dom/directionality-001-ref.html": [ + "818d966e37de205936380fd47605f13b5aa505d7", + "support" + ], + "shadow-dom/directionality-001.tentative.html": [ + "763fd90e8ed83fb616379997735a5c283f0bd869", + "reftest" + ], "shadow-dom/event-composed-path-after-dom-mutation.html": [ "69ea3efc8230a0ed31968f24379289c6691d77d1", "testharness" @@ -615067,6 +616365,14 @@ "bc28599cea839c13daf4739168f8c1ea42526050", "testharness" ], + "shape-detection/META.yml": [ + "35f8c1f9b9d7489b1dc57b71c1a9d6a99f9129b7", + "support" + ], + "shape-detection/idlharness.any.js": [ + "da1729edd2fbb4552c67029572940b8d5ad71b16", + "testharness" + ], "speech-api/META.yml": [ "52d79b2a35757493915c591ff306a108a5e77121", "support" @@ -618919,6 +620225,22 @@ "1367de727c679521d6b7237b97b86c5516e9363c", "support" ], + "svg/painting/reftests/paint-context-001-ref.svg": [ + "d7e12d36f0b3168c677edf95ce401b3e1e5eccbe", + "support" + ], + "svg/painting/reftests/paint-context-001.svg": [ + "d39d2988c685db29c1487e800f12e9ebea02ceac", + "reftest" + ], + "svg/painting/reftests/paint-context-002-ref.svg": [ + "d625175aeaa329436b79b1a3c5d349b7fc4c18b7", + "support" + ], + "svg/painting/reftests/paint-context-002.svg": [ + "510bd6b75e4e3688fd604fa7145c27587e63d6ff", + "reftest" + ], "svg/path/bearing/absolute-ref.svg": [ "6ad5320a05fcc31fd2af98d2bbd0bd6fbc558daa", "support" @@ -619023,6 +620345,14 @@ "b85e9086b134478e4c4b468cb19cc4e57aca06ae", "support" ], + "svg/pservers/reftests/radialgradient-basic-002-ref.svg": [ + "65ce2b6056fcf008cdfeabf94a7e7314654731c5", + "support" + ], + "svg/pservers/reftests/radialgradient-basic-002.svg": [ + "03751dba3c2dfc7b4d478879dc94878b0dffcc99", + "reftest" + ], "svg/scripted/text-attrs-dxdy-have-length.svg": [ "91cd3e09332fa52800b05346d8c183bb599d7f46", "testharness" @@ -619099,6 +620429,10 @@ "42ecd7bc94a3379d920687c79c12e2d3c55b9e98", "testharness" ], + "svg/styling/required-properties.svg": [ + "b59f278e8303641d5654420c89da3d1e64995458", + "testharness" + ], "svg/svg-in-svg/svg-in-svg-circular-filter-reference-crash.html": [ "2976a4812636c4515cc5e2c633b17c47bee392ab", "testharness" @@ -619255,6 +620589,10 @@ "2a748b6f1b66874fa613f3188125a04c95587976", "testharness" ], + "touch-events/idlharness.window.js": [ + "c5bcdd44381f6f49f0e653c48d05cc14c93f424a", + "testharness" + ], "touch-events/multi-touch-interactions-manual.html": [ "c9f99610d07a8bc64512d2f309f404a8da4b99d2", "manual" @@ -621832,7 +623170,7 @@ "testharness" ], "webaudio/idlharness.https.html": [ - "af74995e367b63d17b5dea6bd2bfa9646ab08798", + "ce6a8abcc0eb9863b0515d6ec2f16e7b42b4151c", "testharness" ], "webaudio/js/buffer-loader.js": [ @@ -621979,10 +623317,6 @@ "34d9e7ccb333ce23c838126a4e84918321292d33", "testharness" ], - "webaudio/the-audio-api/the-audiobuffer-interface/idl-test.html": [ - "480a05cc2a25f50ccc61771f6b149c7090432d07", - "testharness" - ], "webaudio/the-audio-api/the-audiobuffersourcenode-interface/.gitkeep": [ "da39a3ee5e6b4b0d3255bfef95601890afd80709", "support" @@ -622011,10 +623345,6 @@ "da39a3ee5e6b4b0d3255bfef95601890afd80709", "support" ], - "webaudio/the-audio-api/the-audiodestinationnode-interface/idl-test.html": [ - "e8b85f97399b430c338e75a90b32d07277d6ef0c", - "testharness" - ], "webaudio/the-audio-api/the-audiolistener-interface/.gitkeep": [ "da39a3ee5e6b4b0d3255bfef95601890afd80709", "support" @@ -622115,10 +623445,6 @@ "a41ff42bd211f135a9942e885f2134fa41a1e1d7", "testharness" ], - "webaudio/the-audio-api/the-audioparam-interface/idl-test.html": [ - "871ff25a150ee9a893d4580b13acd79ca3dd5a4d", - "testharness" - ], "webaudio/the-audio-api/the-audioparam-interface/k-rate-audioworklet.https.html": [ "cfe68d4899ed1582d2827f6dea5cf8960ac4e192", "testharness" @@ -623763,6 +625089,14 @@ "7665873355c531e009824021a2b75daaf2dd6e3f", "testharness" ], + "webrtc-stats/META.yml": [ + "fe059455b173c57e29cbcd0ce90e6e5b6c21afb3", + "support" + ], + "webrtc-stats/README.md": [ + "927d32e9ebff034b34cf3bebde7955bbf3330e08", + "support" + ], "webrtc/META.yml": [ "211af3b4837a5d879fc390270db420088b228807", "support" @@ -623896,7 +625230,7 @@ "testharness" ], "webrtc/RTCPeerConnection-getStats.https.html": [ - "f0d783d2d2ebf9d303976a63981328f485bb21f7", + "f703ed5bf1fc434afd72f525e1639c7e4621e1b7", "testharness" ], "webrtc/RTCPeerConnection-getTransceivers.html": [ @@ -623904,7 +625238,7 @@ "testharness" ], "webrtc/RTCPeerConnection-helper.js": [ - "481c2c11f030f30fdc5c919c72e971e8bae48228", + "e25c8f69e6a9c9b5c565d1375d7bb6dd210f4784", "support" ], "webrtc/RTCPeerConnection-iceConnectionState.html": [ @@ -623932,7 +625266,7 @@ "testharness" ], "webrtc/RTCPeerConnection-removeTrack.https.html": [ - "dfd8c24034da48944eb5c5fe805f940c5fc5a282", + "0cc7f4a5694e69e9e604fda5849c0b81f360db7d", "testharness" ], "webrtc/RTCPeerConnection-setDescription-transceiver.html": [ @@ -624120,7 +625454,7 @@ "support" ], "webrtc/interfaces.https.html": [ - "ef5a449587001f2bdfe82dad68920972f2aeafb1", + "e66dc8812ea38e216c4483dbb3c7814574c39653", "testharness" ], "webrtc/no-media-call.html": [ @@ -624560,7 +625894,7 @@ "testharness" ], "websockets/constructor/014.html": [ - "13b62c474c2b1f2604cc1f65a13c3ae6705200df", + "c6edfd33ef3f0e6644d344ed24387ce610992723", "testharness" ], "websockets/constructor/016.html": [ @@ -625387,18 +626721,14 @@ "34eaa588ed78672070782cb556939ea711a18caf", "support" ], - "webusb/idlharness.https.html": [ - "f225060cbc1af55acd1f795a2ffeb1d3f4c91a02", + "webusb/idlharness.https.any.js": [ + "250dab11ef835eb0b4f0a45071816e720042129e", "testharness" ], "webusb/resources/fake-devices.js": [ "2cfce7b35b9441529946c4bcea9427e261808c36", "support" ], - "webusb/resources/idlharness.dedicatedworker.sharedworker.js": [ - "02bbfadd68f2c2aefbc18dc2440bbfcb534c6b17", - "support" - ], "webusb/resources/open-in-iframe.html": [ "6e6050f742e0da58fc94a5c0a0aa75f16dfcede9", "support" @@ -625415,14 +626745,6 @@ "7a5878c9f4c472bafa8f3db026573feba8e746b0", "support" ], - "webusb/resources/usb.dedicatedworker.sharedworker.js": [ - "03b6be56c0697a47598582f0f94c138a275c0be1", - "support" - ], - "webusb/resources/usb.serviceworker.js": [ - "04f3078ecce997964c055ef52dfbbc16bc367d78", - "support" - ], "webusb/usb-allowed-by-feature-policy-attribute-redirect-on-load.https.sub.html": [ "bb86e36bfa4fcc9ba022a589565bfaba1584d4dc", "testharness" @@ -625451,64 +626773,56 @@ "7cc713de57caf823d0f778d943d6e7bb3900fb1e", "support" ], - "webusb/usb.https.html": [ - "47be065f386fecc7557993c6d8ec61cac88fe71a", + "webusb/usb.https.any.js": [ + "7948886fb51b0993d188667bdf4eb4b0c2d92f7c", "testharness" ], - "webusb/usbConnectionEvent.https.html": [ - "b350ec95c8dfc96783b80d4914b932eeecbe00a1", + "webusb/usb.https.window.js": [ + "a15e35e1e5fabf3c73a5341b6e8ac993efe0c04a", "testharness" ], - "webusb/usbDevice-iframe.https.html": [ - "d2c3f13551a4d3b58e155aec01fb19f6fade5073", + "webusb/usb.serviceworker.https.html": [ + "3f205f2d67a3b04c9cb003b4c46ec9ad331cda54", "testharness" ], - "webusb/usbDevice.https.html": [ - "db4de6d427f744294fc24f8a11c0971c2df207b1", - "testharness" - ], - "webusb/usbInTransferResult.https.html": [ - "abfce8f939654027c4f9ef275878016dca126bb6", - "testharness" - ], - "webusb/usbIsochronousInTransferPacket.https.html": [ - "0c13763ed243ed0981f00658d50eace2e49e654b", - "testharness" + "webusb/usb.serviceworker.js": [ + "04f3078ecce997964c055ef52dfbbc16bc367d78", + "support" ], - "webusb/usbIsochronousInTransferResult.https.html": [ - "131e36c8782adf4c02198b1905d233159295d5aa", + "webusb/usbConnectionEvent.https.any.js": [ + "8f234619bb6729b2733266a8ba5123ffebc5f52d", "testharness" ], - "webusb/usbIsochronousOutTransferPacket.https.html": [ - "c8cd321d866b6ff693fe15b02d8808d092929ce1", + "webusb/usbDevice-iframe.https.html": [ + "d2c3f13551a4d3b58e155aec01fb19f6fade5073", "testharness" ], - "webusb/usbIsochronousOutTransferResult.https.html": [ - "ec9dfc49ebcb419d777c16995940d91678a26954", + "webusb/usbDevice.https.any.js": [ + "d657b9852f228786cb5573e7f85a4b19bd22533d", "testharness" ], - "webusb/usbOutTransferResult.https.html": [ - "f08a98a927d57cda8b780a8304a0fa6cf727cc81", + "webusb/usbInTransferResult.https.any.js": [ + "44a2a0864c0b0f632322fd8a09e4b601d6fbb1f9", "testharness" ], - "webusb/worker/idlharness.dedicatedworker.https.html": [ - "159ede02aac087e0409632c2fcbac3a597ec4c45", + "webusb/usbIsochronousInTransferPacket.https.any.js": [ + "58629374099ec04761cd34f455a3939d8140fa5e", "testharness" ], - "webusb/worker/idlharness.sharedworker.https.html": [ - "4dc8b85f2590397f6e8bcbf63dc64381b1f95559", + "webusb/usbIsochronousInTransferResult.https.any.js": [ + "4ea4491ea4c73a72ea4bcc6a1536e76472040d95", "testharness" ], - "webusb/worker/usb.dedicatedworker.https.html": [ - "556e26de5f184609e0e49f02795f96aef524a7c2", + "webusb/usbIsochronousOutTransferPacket.https.any.js": [ + "7f7e34236d6dbbc87262f7b1bdb370301f227949", "testharness" ], - "webusb/worker/usb.serviceworker.https.html": [ - "e225db3ae598448f9d02273f5df90d5078c4fbf2", + "webusb/usbIsochronousOutTransferResult.https.any.js": [ + "87db9a0e44a4ef1815a8303fc9e77c398cc2ff94", "testharness" ], - "webusb/worker/usb.sharedworker.https.html": [ - "54351ba4a607da19d5f190884b84c9cbea2e41b7", + "webusb/usbOutTransferResult.https.any.js": [ + "68b6d6779b66eddfbdee1d955b8360b643e213f0", "testharness" ], "webvr/META.yml": [ @@ -628388,7 +629702,7 @@ "support" ], "webxr/resources/webxr_util.js": [ - "df6490ff3370ea580015f6b02ef5ec7ef2bb1e2b", + "e8e9631d39b75b8e01a583636de765bc9c81dcd1", "support" ], "webxr/webxr_availability.http.sub.html": [ @@ -629115,8 +630429,8 @@ "309df42ef9329addc1fc59e2d3c0443454e14ad7", "testharness" ], - "workers/modules/dedicated-worker-import.html": [ - "0b839e87ae98ad1abf32216a2086334cbc011ac0", + "workers/modules/dedicated-worker-import.any.js": [ + "8a3a5bdcf6034d99cb244cc6ff36ada8f422ef37", "testharness" ], "workers/modules/dedicated-worker-options-credentials.html": [ @@ -629243,6 +630557,26 @@ "4f3e18270ff312e53a8ccb6dacfd7af80e5355e4", "testharness" ], + "workers/nested_worker_close_from_parent_worker.html": [ + "2224e949cc23fd7741d0372d2876c5128c5005df", + "testharness" + ], + "workers/nested_worker_close_self.worker.js": [ + "70714124e09615d7f4756ecca18789e7e981a524", + "testharness" + ], + "workers/nested_worker_importScripts.worker.js": [ + "6409ab5cfc9ffd1db51a1ed1cccac90e8bd1c68e", + "testharness" + ], + "workers/nested_worker_sync_xhr.worker.js": [ + "637b556d0e1a0fdbb270df3f2215c100681ccc63", + "testharness" + ], + "workers/nested_worker_terminate_from_document.html": [ + "597512ecf36dc5536dcaf33671cc8b8dd4680f7a", + "testharness" + ], "workers/non-automated/application-cache-dedicated.html": [ "73258fa7c4803f0d5035d5593354af41d3119c78", "support" @@ -629587,6 +630921,10 @@ "aa81cbafc77ccc9407cba3ac0bd4498e5076bf2b", "support" ], + "workers/support/parent_of_nested_worker.js": [ + "18710328994ab49eed94453068d1e56c6a7313f1", + "support" + ], "workers/support/sandboxed-tests.html": [ "89547c85b03f401be7cfc0c29251d5bc55236e44", "support" @@ -629595,6 +630933,14 @@ "671ecb263ceb15ca28ef9cfc2ee6efa6e08a70fb", "support" ], + "workers/support/sync_xhr.js": [ + "e6ba3a7274b17ed3e8f936a2792fb08c148d9fd6", + "support" + ], + "workers/support/sync_xhr_target.xml": [ + "abdd02de96974a9140bd74862e0b1b581da79bfd", + "support" + ], "workers/worker-from-blob-url.window.js": [ "173e62999ab5556c2b1f0b587473c54683555f94", "testharness" diff --git a/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/ecdh_bits.https.any.js.ini b/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/ecdh_bits.https.any.js.ini new file mode 100644 index 00000000000..763dd68b4cd --- /dev/null +++ b/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/ecdh_bits.https.any.js.ini @@ -0,0 +1,9 @@ +[ecdh_bits.https.any.worker.html] + [WebCryptoAPI: deriveBits() Using ECDH] + expected: FAIL + + +[ecdh_bits.https.any.html] + [WebCryptoAPI: deriveBits() Using ECDH] + expected: FAIL + diff --git a/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/ecdh_bits.https.worker.js.ini b/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/ecdh_bits.https.worker.js.ini deleted file mode 100644 index 125c7716ec1..00000000000 --- a/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/ecdh_bits.https.worker.js.ini +++ /dev/null @@ -1,4 +0,0 @@ -[ecdh_bits.https.worker.html] - [Untitled] - expected: FAIL - diff --git a/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/ecdh_keys.https.any.js.ini b/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/ecdh_keys.https.any.js.ini new file mode 100644 index 00000000000..07be8dd8e0d --- /dev/null +++ b/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/ecdh_keys.https.any.js.ini @@ -0,0 +1,9 @@ +[ecdh_keys.https.any.html] + [WebCryptoAPI: deriveKey() Using ECDH] + expected: FAIL + + +[ecdh_keys.https.any.worker.html] + [WebCryptoAPI: deriveKey() Using ECDH] + expected: FAIL + diff --git a/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/ecdh_keys.https.worker.js.ini b/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/ecdh_keys.https.worker.js.ini deleted file mode 100644 index bc636df94ac..00000000000 --- a/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/ecdh_keys.https.worker.js.ini +++ /dev/null @@ -1,4 +0,0 @@ -[ecdh_keys.https.worker.html] - [Untitled] - expected: FAIL - diff --git a/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/hkdf.https.any.js.ini b/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/hkdf.https.any.js.ini new file mode 100644 index 00000000000..d8ae431d4c0 --- /dev/null +++ b/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/hkdf.https.any.js.ini @@ -0,0 +1,39 @@ +[hkdf.https.any.worker.html?1-1000] + [WebCryptoAPI: deriveBits() and deriveKey() Using HKDF] + expected: FAIL + + +[hkdf.https.any.worker.html?1001-2000] + [WebCryptoAPI: deriveBits() and deriveKey() Using HKDF] + expected: FAIL + + +[hkdf.https.any.html?2001-3000] + [WebCryptoAPI: deriveBits() and deriveKey() Using HKDF] + expected: FAIL + + +[hkdf.https.any.worker.html?2001-3000] + [WebCryptoAPI: deriveBits() and deriveKey() Using HKDF] + expected: FAIL + + +[hkdf.https.any.html?1001-2000] + [WebCryptoAPI: deriveBits() and deriveKey() Using HKDF] + expected: FAIL + + +[hkdf.https.any.html?1-1000] + [WebCryptoAPI: deriveBits() and deriveKey() Using HKDF] + expected: FAIL + + +[hkdf.https.any.worker.html?3001-last] + [WebCryptoAPI: deriveBits() and deriveKey() Using HKDF] + expected: FAIL + + +[hkdf.https.any.html?3001-last] + [WebCryptoAPI: deriveBits() and deriveKey() Using HKDF] + expected: FAIL + diff --git a/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/hkdf.https.worker.js.ini b/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/hkdf.https.worker.js.ini deleted file mode 100644 index e54642475b0..00000000000 --- a/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/hkdf.https.worker.js.ini +++ /dev/null @@ -1,4 +0,0 @@ -[hkdf.https.worker.html] - [Untitled] - expected: FAIL - diff --git a/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/pbkdf2.https.any.js.ini b/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/pbkdf2.https.any.js.ini new file mode 100644 index 00000000000..e370d770d05 --- /dev/null +++ b/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/pbkdf2.https.any.js.ini @@ -0,0 +1,89 @@ +[pbkdf2.https.any.worker.html?2001-3000] + [WebCryptoAPI: deriveBits() and deriveKey() Using PBKDF2] + expected: FAIL + + +[pbkdf2.https.any.worker.html?1-1000] + [WebCryptoAPI: deriveBits() and deriveKey() Using PBKDF2] + expected: FAIL + + +[pbkdf2.https.any.worker.html?1001-2000] + [WebCryptoAPI: deriveBits() and deriveKey() Using PBKDF2] + expected: FAIL + + +[pbkdf2.https.any.worker.html?3001-4000] + [WebCryptoAPI: deriveBits() and deriveKey() Using PBKDF2] + expected: FAIL + + +[pbkdf2.https.any.html?1001-2000] + [WebCryptoAPI: deriveBits() and deriveKey() Using PBKDF2] + expected: FAIL + + +[pbkdf2.https.any.html?3001-4000] + [WebCryptoAPI: deriveBits() and deriveKey() Using PBKDF2] + expected: FAIL + + +[pbkdf2.https.any.worker.html?8001-last] + [WebCryptoAPI: deriveBits() and deriveKey() Using PBKDF2] + expected: FAIL + + +[pbkdf2.https.any.html?1-1000] + [WebCryptoAPI: deriveBits() and deriveKey() Using PBKDF2] + expected: FAIL + + +[pbkdf2.https.any.html?5001-6000] + [WebCryptoAPI: deriveBits() and deriveKey() Using PBKDF2] + expected: FAIL + + +[pbkdf2.https.any.html?7001-8000] + [WebCryptoAPI: deriveBits() and deriveKey() Using PBKDF2] + expected: FAIL + + +[pbkdf2.https.any.worker.html?4001-5000] + [WebCryptoAPI: deriveBits() and deriveKey() Using PBKDF2] + expected: FAIL + + +[pbkdf2.https.any.worker.html?7001-8000] + [WebCryptoAPI: deriveBits() and deriveKey() Using PBKDF2] + expected: FAIL + + +[pbkdf2.https.any.html?2001-3000] + [WebCryptoAPI: deriveBits() and deriveKey() Using PBKDF2] + expected: FAIL + + +[pbkdf2.https.any.worker.html?6001-7000] + [WebCryptoAPI: deriveBits() and deriveKey() Using PBKDF2] + expected: FAIL + + +[pbkdf2.https.any.html?8001-last] + [WebCryptoAPI: deriveBits() and deriveKey() Using PBKDF2] + expected: FAIL + + +[pbkdf2.https.any.html?4001-5000] + [WebCryptoAPI: deriveBits() and deriveKey() Using PBKDF2] + expected: FAIL + + +[pbkdf2.https.any.worker.html?5001-6000] + [WebCryptoAPI: deriveBits() and deriveKey() Using PBKDF2] + expected: FAIL + + +[pbkdf2.https.any.html?6001-7000] + [WebCryptoAPI: deriveBits() and deriveKey() Using PBKDF2] + expected: FAIL + diff --git a/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/pbkdf2.https.worker.js.ini b/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/pbkdf2.https.worker.js.ini deleted file mode 100644 index 325daee1a61..00000000000 --- a/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/pbkdf2.https.worker.js.ini +++ /dev/null @@ -1,4 +0,0 @@ -[pbkdf2.https.worker.html] - [Untitled] - expected: FAIL - diff --git a/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/test_ecdh_bits.https.html.ini b/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/test_ecdh_bits.https.html.ini deleted file mode 100644 index 2ad7971b265..00000000000 --- a/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/test_ecdh_bits.https.html.ini +++ /dev/null @@ -1,5 +0,0 @@ -[test_ecdh_bits.https.html] - type: testharness - [WebCryptoAPI: deriveBits() Using ECDH] - expected: FAIL - diff --git a/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/test_ecdh_keys.https.html.ini b/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/test_ecdh_keys.https.html.ini deleted file mode 100644 index 260d80ed192..00000000000 --- a/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/test_ecdh_keys.https.html.ini +++ /dev/null @@ -1,5 +0,0 @@ -[test_ecdh_keys.https.html] - type: testharness - [WebCryptoAPI:deriveKey() Using ECDH] - expected: FAIL - diff --git a/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/test_hkdf.https.html.ini b/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/test_hkdf.https.html.ini deleted file mode 100644 index 8b87ece79d4..00000000000 --- a/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/test_hkdf.https.html.ini +++ /dev/null @@ -1,5 +0,0 @@ -[test_hkdf.https.html] - type: testharness - [WebCryptoAPI: deriveBits() and deriveKey() Using HKDF] - expected: FAIL - diff --git a/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/test_pbkdf2_empty_empty.https.html.ini b/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/test_pbkdf2_empty_empty.https.html.ini deleted file mode 100644 index 6f275525cdd..00000000000 --- a/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/test_pbkdf2_empty_empty.https.html.ini +++ /dev/null @@ -1,5 +0,0 @@ -[test_pbkdf2_empty_empty.https.html] - type: testharness - [WebCryptoAPI: deriveBits() and deriveKey() Using PBKDF2] - expected: FAIL - diff --git a/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/test_pbkdf2_empty_long.https.html.ini b/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/test_pbkdf2_empty_long.https.html.ini deleted file mode 100644 index 92a69cf1a69..00000000000 --- a/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/test_pbkdf2_empty_long.https.html.ini +++ /dev/null @@ -1,5 +0,0 @@ -[test_pbkdf2_empty_long.https.html] - type: testharness - [WebCryptoAPI: deriveBits() and deriveKey() Using PBKDF2] - expected: FAIL - diff --git a/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/test_pbkdf2_empty_short.https.html.ini b/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/test_pbkdf2_empty_short.https.html.ini deleted file mode 100644 index dea7525e569..00000000000 --- a/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/test_pbkdf2_empty_short.https.html.ini +++ /dev/null @@ -1,5 +0,0 @@ -[test_pbkdf2_empty_short.https.html] - type: testharness - [WebCryptoAPI: deriveBits() and deriveKey() Using PBKDF2] - expected: FAIL - diff --git a/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/test_pbkdf2_long_empty.https.html.ini b/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/test_pbkdf2_long_empty.https.html.ini deleted file mode 100644 index fd2e73d51a6..00000000000 --- a/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/test_pbkdf2_long_empty.https.html.ini +++ /dev/null @@ -1,5 +0,0 @@ -[test_pbkdf2_long_empty.https.html] - type: testharness - [WebCryptoAPI: deriveBits() and deriveKey() Using PBKDF2] - expected: FAIL - diff --git a/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/test_pbkdf2_long_long.https.html.ini b/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/test_pbkdf2_long_long.https.html.ini deleted file mode 100644 index 089db6e3e8e..00000000000 --- a/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/test_pbkdf2_long_long.https.html.ini +++ /dev/null @@ -1,5 +0,0 @@ -[test_pbkdf2_long_long.https.html] - type: testharness - [WebCryptoAPI: deriveBits() and deriveKey() Using PBKDF2] - expected: FAIL - diff --git a/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/test_pbkdf2_long_short.https.html.ini b/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/test_pbkdf2_long_short.https.html.ini deleted file mode 100644 index 658b19903f2..00000000000 --- a/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/test_pbkdf2_long_short.https.html.ini +++ /dev/null @@ -1,5 +0,0 @@ -[test_pbkdf2_long_short.https.html] - type: testharness - [WebCryptoAPI: deriveBits() and deriveKey() Using PBKDF2] - expected: FAIL - diff --git a/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/test_pbkdf2_short_empty.https.html.ini b/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/test_pbkdf2_short_empty.https.html.ini deleted file mode 100644 index b901dc58e63..00000000000 --- a/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/test_pbkdf2_short_empty.https.html.ini +++ /dev/null @@ -1,5 +0,0 @@ -[test_pbkdf2_short_empty.https.html] - type: testharness - [WebCryptoAPI: deriveBits() and deriveKey() Using PBKDF2] - expected: FAIL - diff --git a/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/test_pbkdf2_short_long.https.html.ini b/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/test_pbkdf2_short_long.https.html.ini deleted file mode 100644 index 81d09429a3e..00000000000 --- a/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/test_pbkdf2_short_long.https.html.ini +++ /dev/null @@ -1,5 +0,0 @@ -[test_pbkdf2_short_long.https.html] - type: testharness - [WebCryptoAPI: deriveBits() and deriveKey() Using PBKDF2] - expected: FAIL - diff --git a/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/test_pbkdf2_short_short.https.html.ini b/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/test_pbkdf2_short_short.https.html.ini deleted file mode 100644 index baaaab511fb..00000000000 --- a/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/test_pbkdf2_short_short.https.html.ini +++ /dev/null @@ -1,5 +0,0 @@ -[test_pbkdf2_short_short.https.html] - type: testharness - [WebCryptoAPI: deriveBits() and deriveKey() Using PBKDF2] - expected: FAIL - diff --git a/tests/wpt/metadata/WebCryptoAPI/encrypt_decrypt/aes_cbc.https.worker.js.ini b/tests/wpt/metadata/WebCryptoAPI/encrypt_decrypt/aes_cbc.https.worker.js.ini index 664ebee2fcd..0ca37973f27 100644 --- a/tests/wpt/metadata/WebCryptoAPI/encrypt_decrypt/aes_cbc.https.worker.js.ini +++ b/tests/wpt/metadata/WebCryptoAPI/encrypt_decrypt/aes_cbc.https.worker.js.ini @@ -2,3 +2,6 @@ [Untitled] expected: FAIL + [aes_cbc] + expected: FAIL + diff --git a/tests/wpt/metadata/WebCryptoAPI/encrypt_decrypt/aes_ctr.https.worker.js.ini b/tests/wpt/metadata/WebCryptoAPI/encrypt_decrypt/aes_ctr.https.worker.js.ini index 7a771aa25b3..090e9e6de76 100644 --- a/tests/wpt/metadata/WebCryptoAPI/encrypt_decrypt/aes_ctr.https.worker.js.ini +++ b/tests/wpt/metadata/WebCryptoAPI/encrypt_decrypt/aes_ctr.https.worker.js.ini @@ -2,3 +2,6 @@ [Untitled] expected: FAIL + [aes_ctr] + expected: FAIL + diff --git a/tests/wpt/metadata/WebCryptoAPI/encrypt_decrypt/aes_gcm.https.worker.js.ini b/tests/wpt/metadata/WebCryptoAPI/encrypt_decrypt/aes_gcm.https.worker.js.ini index c379308d01f..0d86ee96b49 100644 --- a/tests/wpt/metadata/WebCryptoAPI/encrypt_decrypt/aes_gcm.https.worker.js.ini +++ b/tests/wpt/metadata/WebCryptoAPI/encrypt_decrypt/aes_gcm.https.worker.js.ini @@ -2,3 +2,6 @@ [Untitled] expected: FAIL + [aes_gcm] + expected: FAIL + diff --git a/tests/wpt/metadata/WebCryptoAPI/encrypt_decrypt/rsa.https.worker.js.ini b/tests/wpt/metadata/WebCryptoAPI/encrypt_decrypt/rsa.https.worker.js.ini index 3ffc1d7c54f..953d7d5a25a 100644 --- a/tests/wpt/metadata/WebCryptoAPI/encrypt_decrypt/rsa.https.worker.js.ini +++ b/tests/wpt/metadata/WebCryptoAPI/encrypt_decrypt/rsa.https.worker.js.ini @@ -2,3 +2,6 @@ [Untitled] expected: FAIL + [rsa] + expected: FAIL + diff --git a/tests/wpt/metadata/WebCryptoAPI/generateKey/failures_AES-CBC.https.any.js.ini b/tests/wpt/metadata/WebCryptoAPI/generateKey/failures_AES-CBC.https.any.js.ini index 747bb9007a1..508d737660c 100644 --- a/tests/wpt/metadata/WebCryptoAPI/generateKey/failures_AES-CBC.https.any.js.ini +++ b/tests/wpt/metadata/WebCryptoAPI/generateKey/failures_AES-CBC.https.any.js.ini @@ -2,8 +2,14 @@ [Untitled] expected: FAIL + [WebCryptoAPI: generateKey() for Failures] + expected: FAIL + [failures_AES-CBC.https.any.html] [Untitled] expected: FAIL + [WebCryptoAPI: generateKey() for Failures] + expected: FAIL + diff --git a/tests/wpt/metadata/WebCryptoAPI/generateKey/failures_AES-CTR.https.any.js.ini b/tests/wpt/metadata/WebCryptoAPI/generateKey/failures_AES-CTR.https.any.js.ini index 01bfb625629..b2741c0aa31 100644 --- a/tests/wpt/metadata/WebCryptoAPI/generateKey/failures_AES-CTR.https.any.js.ini +++ b/tests/wpt/metadata/WebCryptoAPI/generateKey/failures_AES-CTR.https.any.js.ini @@ -2,8 +2,14 @@ [Untitled] expected: FAIL + [WebCryptoAPI: generateKey() for Failures] + expected: FAIL + [failures_AES-CTR.https.any.worker.html] [Untitled] expected: FAIL + [WebCryptoAPI: generateKey() for Failures] + expected: FAIL + diff --git a/tests/wpt/metadata/WebCryptoAPI/generateKey/failures_AES-GCM.https.any.js.ini b/tests/wpt/metadata/WebCryptoAPI/generateKey/failures_AES-GCM.https.any.js.ini index 724fcb62a47..6332c7f58db 100644 --- a/tests/wpt/metadata/WebCryptoAPI/generateKey/failures_AES-GCM.https.any.js.ini +++ b/tests/wpt/metadata/WebCryptoAPI/generateKey/failures_AES-GCM.https.any.js.ini @@ -2,8 +2,14 @@ [Untitled] expected: FAIL + [WebCryptoAPI: generateKey() for Failures] + expected: FAIL + [failures_AES-GCM.https.any.html] [Untitled] expected: FAIL + [WebCryptoAPI: generateKey() for Failures] + expected: FAIL + diff --git a/tests/wpt/metadata/WebCryptoAPI/generateKey/failures_AES-KW.https.any.js.ini b/tests/wpt/metadata/WebCryptoAPI/generateKey/failures_AES-KW.https.any.js.ini index ff49a47c28c..aed97dc8b02 100644 --- a/tests/wpt/metadata/WebCryptoAPI/generateKey/failures_AES-KW.https.any.js.ini +++ b/tests/wpt/metadata/WebCryptoAPI/generateKey/failures_AES-KW.https.any.js.ini @@ -2,8 +2,14 @@ [Untitled] expected: FAIL + [WebCryptoAPI: generateKey() for Failures] + expected: FAIL + [failures_AES-KW.https.any.worker.html] [Untitled] expected: FAIL + [WebCryptoAPI: generateKey() for Failures] + expected: FAIL + diff --git a/tests/wpt/metadata/WebCryptoAPI/generateKey/failures_ECDH.https.any.js.ini b/tests/wpt/metadata/WebCryptoAPI/generateKey/failures_ECDH.https.any.js.ini index d68b8feea7c..0d6ad10da7e 100644 --- a/tests/wpt/metadata/WebCryptoAPI/generateKey/failures_ECDH.https.any.js.ini +++ b/tests/wpt/metadata/WebCryptoAPI/generateKey/failures_ECDH.https.any.js.ini @@ -2,8 +2,14 @@ [Untitled] expected: FAIL + [WebCryptoAPI: generateKey() for Failures] + expected: FAIL + [failures_ECDH.https.any.html] [Untitled] expected: FAIL + [WebCryptoAPI: generateKey() for Failures] + expected: FAIL + diff --git a/tests/wpt/metadata/WebCryptoAPI/generateKey/failures_ECDSA.https.any.js.ini b/tests/wpt/metadata/WebCryptoAPI/generateKey/failures_ECDSA.https.any.js.ini index bcd83ba3f05..da5d59aa3f3 100644 --- a/tests/wpt/metadata/WebCryptoAPI/generateKey/failures_ECDSA.https.any.js.ini +++ b/tests/wpt/metadata/WebCryptoAPI/generateKey/failures_ECDSA.https.any.js.ini @@ -2,8 +2,14 @@ [Untitled] expected: FAIL + [WebCryptoAPI: generateKey() for Failures] + expected: FAIL + [failures_ECDSA.https.any.worker.html] [Untitled] expected: FAIL + [WebCryptoAPI: generateKey() for Failures] + expected: FAIL + diff --git a/tests/wpt/metadata/WebCryptoAPI/generateKey/failures_HMAC.https.any.js.ini b/tests/wpt/metadata/WebCryptoAPI/generateKey/failures_HMAC.https.any.js.ini index 6c6b095c84a..efe0d31b033 100644 --- a/tests/wpt/metadata/WebCryptoAPI/generateKey/failures_HMAC.https.any.js.ini +++ b/tests/wpt/metadata/WebCryptoAPI/generateKey/failures_HMAC.https.any.js.ini @@ -2,8 +2,14 @@ [Untitled] expected: FAIL + [WebCryptoAPI: generateKey() for Failures] + expected: FAIL + [failures_HMAC.https.any.worker.html] [Untitled] expected: FAIL + [WebCryptoAPI: generateKey() for Failures] + expected: FAIL + diff --git a/tests/wpt/metadata/WebCryptoAPI/generateKey/failures_RSA-OAEP.https.any.js.ini b/tests/wpt/metadata/WebCryptoAPI/generateKey/failures_RSA-OAEP.https.any.js.ini index 46d87f2903d..8c954b5cca5 100644 --- a/tests/wpt/metadata/WebCryptoAPI/generateKey/failures_RSA-OAEP.https.any.js.ini +++ b/tests/wpt/metadata/WebCryptoAPI/generateKey/failures_RSA-OAEP.https.any.js.ini @@ -2,8 +2,14 @@ [Untitled] expected: FAIL + [WebCryptoAPI: generateKey() for Failures] + expected: FAIL + [failures_RSA-OAEP.https.any.worker.html] [Untitled] expected: FAIL + [WebCryptoAPI: generateKey() for Failures] + expected: FAIL + diff --git a/tests/wpt/metadata/WebCryptoAPI/generateKey/failures_RSA-PSS.https.any.js.ini b/tests/wpt/metadata/WebCryptoAPI/generateKey/failures_RSA-PSS.https.any.js.ini index f10928c6199..56008b662b9 100644 --- a/tests/wpt/metadata/WebCryptoAPI/generateKey/failures_RSA-PSS.https.any.js.ini +++ b/tests/wpt/metadata/WebCryptoAPI/generateKey/failures_RSA-PSS.https.any.js.ini @@ -2,8 +2,14 @@ [Untitled] expected: FAIL + [WebCryptoAPI: generateKey() for Failures] + expected: FAIL + [failures_RSA-PSS.https.any.worker.html] [Untitled] expected: FAIL + [WebCryptoAPI: generateKey() for Failures] + expected: FAIL + diff --git a/tests/wpt/metadata/WebCryptoAPI/generateKey/failures_RSASSA-PKCS1-v1_5.https.any.js.ini b/tests/wpt/metadata/WebCryptoAPI/generateKey/failures_RSASSA-PKCS1-v1_5.https.any.js.ini index 8a3ec2222d1..d6daa8d5cd6 100644 --- a/tests/wpt/metadata/WebCryptoAPI/generateKey/failures_RSASSA-PKCS1-v1_5.https.any.js.ini +++ b/tests/wpt/metadata/WebCryptoAPI/generateKey/failures_RSASSA-PKCS1-v1_5.https.any.js.ini @@ -2,8 +2,14 @@ [Untitled] expected: FAIL + [WebCryptoAPI: generateKey() for Failures] + expected: FAIL + [failures_RSASSA-PKCS1-v1_5.https.any.worker.html] [Untitled] expected: FAIL + [WebCryptoAPI: generateKey() for Failures] + expected: FAIL + diff --git a/tests/wpt/metadata/WebCryptoAPI/generateKey/successes_AES-CBC.https.any.js.ini b/tests/wpt/metadata/WebCryptoAPI/generateKey/successes_AES-CBC.https.any.js.ini index 35c0c6b6cf1..f4d5ec100fa 100644 --- a/tests/wpt/metadata/WebCryptoAPI/generateKey/successes_AES-CBC.https.any.js.ini +++ b/tests/wpt/metadata/WebCryptoAPI/generateKey/successes_AES-CBC.https.any.js.ini @@ -2,8 +2,14 @@ [Untitled] expected: FAIL + [WebCryptoAPI: generateKey() Successful Calls] + expected: FAIL + [successes_AES-CBC.https.any.worker.html] [Untitled] expected: FAIL + [WebCryptoAPI: generateKey() Successful Calls] + expected: FAIL + diff --git a/tests/wpt/metadata/WebCryptoAPI/generateKey/successes_AES-CTR.https.any.js.ini b/tests/wpt/metadata/WebCryptoAPI/generateKey/successes_AES-CTR.https.any.js.ini index a33629bd16c..ab30f20ed2a 100644 --- a/tests/wpt/metadata/WebCryptoAPI/generateKey/successes_AES-CTR.https.any.js.ini +++ b/tests/wpt/metadata/WebCryptoAPI/generateKey/successes_AES-CTR.https.any.js.ini @@ -2,8 +2,14 @@ [Untitled] expected: FAIL + [WebCryptoAPI: generateKey() Successful Calls] + expected: FAIL + [successes_AES-CTR.https.any.html] [Untitled] expected: FAIL + [WebCryptoAPI: generateKey() Successful Calls] + expected: FAIL + diff --git a/tests/wpt/metadata/WebCryptoAPI/generateKey/successes_AES-GCM.https.any.js.ini b/tests/wpt/metadata/WebCryptoAPI/generateKey/successes_AES-GCM.https.any.js.ini index 469bc10db4a..8ad478fae27 100644 --- a/tests/wpt/metadata/WebCryptoAPI/generateKey/successes_AES-GCM.https.any.js.ini +++ b/tests/wpt/metadata/WebCryptoAPI/generateKey/successes_AES-GCM.https.any.js.ini @@ -2,8 +2,14 @@ [Untitled] expected: FAIL + [WebCryptoAPI: generateKey() Successful Calls] + expected: FAIL + [successes_AES-GCM.https.any.worker.html] [Untitled] expected: FAIL + [WebCryptoAPI: generateKey() Successful Calls] + expected: FAIL + diff --git a/tests/wpt/metadata/WebCryptoAPI/generateKey/successes_AES-KW.https.any.js.ini b/tests/wpt/metadata/WebCryptoAPI/generateKey/successes_AES-KW.https.any.js.ini index 6a25700c931..13a7bdf1646 100644 --- a/tests/wpt/metadata/WebCryptoAPI/generateKey/successes_AES-KW.https.any.js.ini +++ b/tests/wpt/metadata/WebCryptoAPI/generateKey/successes_AES-KW.https.any.js.ini @@ -2,8 +2,14 @@ [Untitled] expected: FAIL + [WebCryptoAPI: generateKey() Successful Calls] + expected: FAIL + [successes_AES-KW.https.any.worker.html] [Untitled] expected: FAIL + [WebCryptoAPI: generateKey() Successful Calls] + expected: FAIL + diff --git a/tests/wpt/metadata/WebCryptoAPI/generateKey/successes_ECDH.https.any.js.ini b/tests/wpt/metadata/WebCryptoAPI/generateKey/successes_ECDH.https.any.js.ini index 21f9b845fd8..a4270c582ca 100644 --- a/tests/wpt/metadata/WebCryptoAPI/generateKey/successes_ECDH.https.any.js.ini +++ b/tests/wpt/metadata/WebCryptoAPI/generateKey/successes_ECDH.https.any.js.ini @@ -2,8 +2,14 @@ [Untitled] expected: FAIL + [WebCryptoAPI: generateKey() Successful Calls] + expected: FAIL + [successes_ECDH.https.any.worker.html] [Untitled] expected: FAIL + [WebCryptoAPI: generateKey() Successful Calls] + expected: FAIL + diff --git a/tests/wpt/metadata/WebCryptoAPI/generateKey/successes_ECDSA.https.any.js.ini b/tests/wpt/metadata/WebCryptoAPI/generateKey/successes_ECDSA.https.any.js.ini index 0933802da49..cfb6b99531d 100644 --- a/tests/wpt/metadata/WebCryptoAPI/generateKey/successes_ECDSA.https.any.js.ini +++ b/tests/wpt/metadata/WebCryptoAPI/generateKey/successes_ECDSA.https.any.js.ini @@ -2,8 +2,14 @@ [Untitled] expected: FAIL + [WebCryptoAPI: generateKey() Successful Calls] + expected: FAIL + [successes_ECDSA.https.any.worker.html] [Untitled] expected: FAIL + [WebCryptoAPI: generateKey() Successful Calls] + expected: FAIL + diff --git a/tests/wpt/metadata/WebCryptoAPI/generateKey/successes_HMAC.https.any.js.ini b/tests/wpt/metadata/WebCryptoAPI/generateKey/successes_HMAC.https.any.js.ini index 3f64336de85..252866e2dc8 100644 --- a/tests/wpt/metadata/WebCryptoAPI/generateKey/successes_HMAC.https.any.js.ini +++ b/tests/wpt/metadata/WebCryptoAPI/generateKey/successes_HMAC.https.any.js.ini @@ -2,8 +2,14 @@ [Untitled] expected: FAIL + [WebCryptoAPI: generateKey() Successful Calls] + expected: FAIL + [successes_HMAC.https.any.html] [Untitled] expected: FAIL + [WebCryptoAPI: generateKey() Successful Calls] + expected: FAIL + diff --git a/tests/wpt/metadata/WebCryptoAPI/generateKey/successes_RSA-OAEP.https.any.js.ini b/tests/wpt/metadata/WebCryptoAPI/generateKey/successes_RSA-OAEP.https.any.js.ini index 5d4624aa2f5..72051178642 100644 --- a/tests/wpt/metadata/WebCryptoAPI/generateKey/successes_RSA-OAEP.https.any.js.ini +++ b/tests/wpt/metadata/WebCryptoAPI/generateKey/successes_RSA-OAEP.https.any.js.ini @@ -2,158 +2,254 @@ [Untitled] expected: FAIL + [WebCryptoAPI: generateKey() Successful Calls] + expected: FAIL + [successes_RSA-OAEP.https.any.html?131-140] [Untitled] expected: FAIL + [WebCryptoAPI: generateKey() Successful Calls] + expected: FAIL + [successes_RSA-OAEP.https.any.html?71-80] [Untitled] expected: FAIL + [WebCryptoAPI: generateKey() Successful Calls] + expected: FAIL + [successes_RSA-OAEP.https.any.html?101-110] [Untitled] expected: FAIL + [WebCryptoAPI: generateKey() Successful Calls] + expected: FAIL + [successes_RSA-OAEP.https.any.worker.html?111-120] [Untitled] expected: FAIL + [WebCryptoAPI: generateKey() Successful Calls] + expected: FAIL + [successes_RSA-OAEP.https.any.html?41-50] [Untitled] expected: FAIL + [WebCryptoAPI: generateKey() Successful Calls] + expected: FAIL + [successes_RSA-OAEP.https.any.worker.html?141-150] [Untitled] expected: FAIL + [WebCryptoAPI: generateKey() Successful Calls] + expected: FAIL + [successes_RSA-OAEP.https.any.html?121-130] [Untitled] expected: FAIL + [WebCryptoAPI: generateKey() Successful Calls] + expected: FAIL + [successes_RSA-OAEP.https.any.worker.html?151-last] [Untitled] expected: FAIL + [WebCryptoAPI: generateKey() Successful Calls] + expected: FAIL + [successes_RSA-OAEP.https.any.html?61-70] [Untitled] expected: FAIL + [WebCryptoAPI: generateKey() Successful Calls] + expected: FAIL + [successes_RSA-OAEP.https.any.worker.html?51-60] [Untitled] expected: FAIL + [WebCryptoAPI: generateKey() Successful Calls] + expected: FAIL + [successes_RSA-OAEP.https.any.html?141-150] [Untitled] expected: FAIL + [WebCryptoAPI: generateKey() Successful Calls] + expected: FAIL + [successes_RSA-OAEP.https.any.worker.html?31-40] [Untitled] expected: FAIL + [WebCryptoAPI: generateKey() Successful Calls] + expected: FAIL + [successes_RSA-OAEP.https.any.worker.html?21-30] [Untitled] expected: FAIL + [WebCryptoAPI: generateKey() Successful Calls] + expected: FAIL + [successes_RSA-OAEP.https.any.html?151-last] [Untitled] expected: FAIL + [WebCryptoAPI: generateKey() Successful Calls] + expected: FAIL + [successes_RSA-OAEP.https.any.worker.html?61-70] [Untitled] expected: FAIL + [WebCryptoAPI: generateKey() Successful Calls] + expected: FAIL + [successes_RSA-OAEP.https.any.worker.html?81-90] [Untitled] expected: FAIL + [WebCryptoAPI: generateKey() Successful Calls] + expected: FAIL + [successes_RSA-OAEP.https.any.html?111-120] [Untitled] expected: FAIL + [WebCryptoAPI: generateKey() Successful Calls] + expected: FAIL + [successes_RSA-OAEP.https.any.html?81-90] [Untitled] expected: FAIL + [WebCryptoAPI: generateKey() Successful Calls] + expected: FAIL + [successes_RSA-OAEP.https.any.worker.html?71-80] [Untitled] expected: FAIL + [WebCryptoAPI: generateKey() Successful Calls] + expected: FAIL + [successes_RSA-OAEP.https.any.html?21-30] [Untitled] expected: FAIL + [WebCryptoAPI: generateKey() Successful Calls] + expected: FAIL + [successes_RSA-OAEP.https.any.worker.html?101-110] [Untitled] expected: FAIL + [WebCryptoAPI: generateKey() Successful Calls] + expected: FAIL + [successes_RSA-OAEP.https.any.html?51-60] [Untitled] expected: FAIL + [WebCryptoAPI: generateKey() Successful Calls] + expected: FAIL + [successes_RSA-OAEP.https.any.html?91-100] [Untitled] expected: FAIL + [WebCryptoAPI: generateKey() Successful Calls] + expected: FAIL + [successes_RSA-OAEP.https.any.worker.html?41-50] [Untitled] expected: FAIL + [WebCryptoAPI: generateKey() Successful Calls] + expected: FAIL + [successes_RSA-OAEP.https.any.worker.html?1-10] [Untitled] expected: FAIL + [WebCryptoAPI: generateKey() Successful Calls] + expected: FAIL + [successes_RSA-OAEP.https.any.html?11-20] [Untitled] expected: FAIL + [WebCryptoAPI: generateKey() Successful Calls] + expected: FAIL + [successes_RSA-OAEP.https.any.html?31-40] [Untitled] expected: FAIL + [WebCryptoAPI: generateKey() Successful Calls] + expected: FAIL + [successes_RSA-OAEP.https.any.worker.html?91-100] [Untitled] expected: FAIL + [WebCryptoAPI: generateKey() Successful Calls] + expected: FAIL + [successes_RSA-OAEP.https.any.worker.html?131-140] [Untitled] expected: FAIL + [WebCryptoAPI: generateKey() Successful Calls] + expected: FAIL + [successes_RSA-OAEP.https.any.worker.html?11-20] [Untitled] expected: FAIL + [WebCryptoAPI: generateKey() Successful Calls] + expected: FAIL + [successes_RSA-OAEP.https.any.worker.html?121-130] [Untitled] expected: FAIL + [WebCryptoAPI: generateKey() Successful Calls] + expected: FAIL + diff --git a/tests/wpt/metadata/WebCryptoAPI/generateKey/successes_RSA-PSS.https.any.js.ini b/tests/wpt/metadata/WebCryptoAPI/generateKey/successes_RSA-PSS.https.any.js.ini index 5c69dd5ee7f..1f4fd74a8db 100644 --- a/tests/wpt/metadata/WebCryptoAPI/generateKey/successes_RSA-PSS.https.any.js.ini +++ b/tests/wpt/metadata/WebCryptoAPI/generateKey/successes_RSA-PSS.https.any.js.ini @@ -2,38 +2,62 @@ [Untitled] expected: FAIL + [WebCryptoAPI: generateKey() Successful Calls] + expected: FAIL + [successes_RSA-PSS.https.any.worker.html?11-20] [Untitled] expected: FAIL + [WebCryptoAPI: generateKey() Successful Calls] + expected: FAIL + [successes_RSA-PSS.https.any.html?31-last] [Untitled] expected: FAIL + [WebCryptoAPI: generateKey() Successful Calls] + expected: FAIL + [successes_RSA-PSS.https.any.html?1-10] [Untitled] expected: FAIL + [WebCryptoAPI: generateKey() Successful Calls] + expected: FAIL + [successes_RSA-PSS.https.any.worker.html?1-10] [Untitled] expected: FAIL + [WebCryptoAPI: generateKey() Successful Calls] + expected: FAIL + [successes_RSA-PSS.https.any.html?21-30] [Untitled] expected: FAIL + [WebCryptoAPI: generateKey() Successful Calls] + expected: FAIL + [successes_RSA-PSS.https.any.worker.html?31-last] [Untitled] expected: FAIL + [WebCryptoAPI: generateKey() Successful Calls] + expected: FAIL + [successes_RSA-PSS.https.any.worker.html?21-30] [Untitled] expected: FAIL + [WebCryptoAPI: generateKey() Successful Calls] + expected: FAIL + diff --git a/tests/wpt/metadata/WebCryptoAPI/generateKey/successes_RSASSA-PKCS1-v1_5.https.any.js.ini b/tests/wpt/metadata/WebCryptoAPI/generateKey/successes_RSASSA-PKCS1-v1_5.https.any.js.ini index 6bbfc72c96e..32bd359d068 100644 --- a/tests/wpt/metadata/WebCryptoAPI/generateKey/successes_RSASSA-PKCS1-v1_5.https.any.js.ini +++ b/tests/wpt/metadata/WebCryptoAPI/generateKey/successes_RSASSA-PKCS1-v1_5.https.any.js.ini @@ -2,38 +2,62 @@ [Untitled] expected: FAIL + [WebCryptoAPI: generateKey() Successful Calls] + expected: FAIL + [successes_RSASSA-PKCS1-v1_5.https.any.html?31-last] [Untitled] expected: FAIL + [WebCryptoAPI: generateKey() Successful Calls] + expected: FAIL + [successes_RSASSA-PKCS1-v1_5.https.any.worker.html?11-20] [Untitled] expected: FAIL + [WebCryptoAPI: generateKey() Successful Calls] + expected: FAIL + [successes_RSASSA-PKCS1-v1_5.https.any.html?21-30] [Untitled] expected: FAIL + [WebCryptoAPI: generateKey() Successful Calls] + expected: FAIL + [successes_RSASSA-PKCS1-v1_5.https.any.worker.html?1-10] [Untitled] expected: FAIL + [WebCryptoAPI: generateKey() Successful Calls] + expected: FAIL + [successes_RSASSA-PKCS1-v1_5.https.any.worker.html?31-last] [Untitled] expected: FAIL + [WebCryptoAPI: generateKey() Successful Calls] + expected: FAIL + [successes_RSASSA-PKCS1-v1_5.https.any.html?11-20] [Untitled] expected: FAIL + [WebCryptoAPI: generateKey() Successful Calls] + expected: FAIL + [successes_RSASSA-PKCS1-v1_5.https.any.worker.html?21-30] [Untitled] expected: FAIL + [WebCryptoAPI: generateKey() Successful Calls] + expected: FAIL + diff --git a/tests/wpt/metadata/WebCryptoAPI/idlharness.https.worker.js.ini b/tests/wpt/metadata/WebCryptoAPI/idlharness.https.worker.js.ini index ccae4faf3b7..546281f1ad9 100644 --- a/tests/wpt/metadata/WebCryptoAPI/idlharness.https.worker.js.ini +++ b/tests/wpt/metadata/WebCryptoAPI/idlharness.https.worker.js.ini @@ -173,3 +173,6 @@ [Untitled] expected: FAIL + [idlharness] + expected: FAIL + diff --git a/tests/wpt/metadata/WebCryptoAPI/sign_verify/ecdsa.https.worker.js.ini b/tests/wpt/metadata/WebCryptoAPI/sign_verify/ecdsa.https.worker.js.ini index 13165c83f73..e7adef887fa 100644 --- a/tests/wpt/metadata/WebCryptoAPI/sign_verify/ecdsa.https.worker.js.ini +++ b/tests/wpt/metadata/WebCryptoAPI/sign_verify/ecdsa.https.worker.js.ini @@ -2,3 +2,6 @@ [Untitled] expected: FAIL + [ecdsa] + expected: FAIL + diff --git a/tests/wpt/metadata/WebCryptoAPI/sign_verify/hmac.https.worker.js.ini b/tests/wpt/metadata/WebCryptoAPI/sign_verify/hmac.https.worker.js.ini index 73a0f727de1..c7c98e1736f 100644 --- a/tests/wpt/metadata/WebCryptoAPI/sign_verify/hmac.https.worker.js.ini +++ b/tests/wpt/metadata/WebCryptoAPI/sign_verify/hmac.https.worker.js.ini @@ -2,3 +2,6 @@ [Untitled] expected: FAIL + [hmac] + expected: FAIL + diff --git a/tests/wpt/metadata/WebCryptoAPI/sign_verify/rsa_pkcs.https.worker.js.ini b/tests/wpt/metadata/WebCryptoAPI/sign_verify/rsa_pkcs.https.worker.js.ini index 0e3c8e7e9fc..e8892f42aa3 100644 --- a/tests/wpt/metadata/WebCryptoAPI/sign_verify/rsa_pkcs.https.worker.js.ini +++ b/tests/wpt/metadata/WebCryptoAPI/sign_verify/rsa_pkcs.https.worker.js.ini @@ -2,3 +2,6 @@ [Untitled] expected: FAIL + [rsa_pkcs] + expected: FAIL + diff --git a/tests/wpt/metadata/WebCryptoAPI/sign_verify/rsa_pss.https.worker.js.ini b/tests/wpt/metadata/WebCryptoAPI/sign_verify/rsa_pss.https.worker.js.ini index 319d9233d87..f115447809e 100644 --- a/tests/wpt/metadata/WebCryptoAPI/sign_verify/rsa_pss.https.worker.js.ini +++ b/tests/wpt/metadata/WebCryptoAPI/sign_verify/rsa_pss.https.worker.js.ini @@ -2,3 +2,6 @@ [Untitled] expected: FAIL + [rsa_pss] + expected: FAIL + diff --git a/tests/wpt/metadata/WebCryptoAPI/wrapKey_unwrapKey/wrapKey_unwrapKey.https.worker.js.ini b/tests/wpt/metadata/WebCryptoAPI/wrapKey_unwrapKey/wrapKey_unwrapKey.https.worker.js.ini index be805a3f24e..2ae77964437 100644 --- a/tests/wpt/metadata/WebCryptoAPI/wrapKey_unwrapKey/wrapKey_unwrapKey.https.worker.js.ini +++ b/tests/wpt/metadata/WebCryptoAPI/wrapKey_unwrapKey/wrapKey_unwrapKey.https.worker.js.ini @@ -2,3 +2,6 @@ [Untitled] expected: FAIL + [wrapKey_unwrapKey] + expected: FAIL + diff --git a/tests/wpt/metadata/WebIDL/ecmascript-binding/no-regexp-special-casing.any.js.ini b/tests/wpt/metadata/WebIDL/ecmascript-binding/no-regexp-special-casing.any.js.ini index e44c35b2e8a..684503e7d28 100644 --- a/tests/wpt/metadata/WebIDL/ecmascript-binding/no-regexp-special-casing.any.js.ini +++ b/tests/wpt/metadata/WebIDL/ecmascript-binding/no-regexp-special-casing.any.js.ini @@ -2,8 +2,14 @@ [Untitled] expected: FAIL + [no-regexp-special-casing] + expected: FAIL + [no-regexp-special-casing.any.html] [Untitled] expected: FAIL + [no-regexp-special-casing] + expected: FAIL + diff --git a/tests/wpt/metadata/css/compositing/parsing/background-blend-mode-valid.html.ini b/tests/wpt/metadata/css/compositing/parsing/background-blend-mode-valid.html.ini new file mode 100644 index 00000000000..fa4ab9b2374 --- /dev/null +++ b/tests/wpt/metadata/css/compositing/parsing/background-blend-mode-valid.html.ini @@ -0,0 +1,52 @@ +[background-blend-mode-valid.html] + [e.style['background-blend-mode'\] = "normal" should set the property value] + expected: FAIL + + [e.style['background-blend-mode'\] = "multiply" should set the property value] + expected: FAIL + + [e.style['background-blend-mode'\] = "screen" should set the property value] + expected: FAIL + + [e.style['background-blend-mode'\] = "overlay" should set the property value] + expected: FAIL + + [e.style['background-blend-mode'\] = "darken" should set the property value] + expected: FAIL + + [e.style['background-blend-mode'\] = "lighten" should set the property value] + expected: FAIL + + [e.style['background-blend-mode'\] = "color-dodge" should set the property value] + expected: FAIL + + [e.style['background-blend-mode'\] = "color-burn" should set the property value] + expected: FAIL + + [e.style['background-blend-mode'\] = "hard-light" should set the property value] + expected: FAIL + + [e.style['background-blend-mode'\] = "soft-light" should set the property value] + expected: FAIL + + [e.style['background-blend-mode'\] = "difference" should set the property value] + expected: FAIL + + [e.style['background-blend-mode'\] = "exclusion" should set the property value] + expected: FAIL + + [e.style['background-blend-mode'\] = "hue" should set the property value] + expected: FAIL + + [e.style['background-blend-mode'\] = "saturation" should set the property value] + expected: FAIL + + [e.style['background-blend-mode'\] = "color" should set the property value] + expected: FAIL + + [e.style['background-blend-mode'\] = "luminosity" should set the property value] + expected: FAIL + + [e.style['background-blend-mode'\] = "normal, luminosity" should set the property value] + expected: FAIL + diff --git a/tests/wpt/metadata/css/compositing/parsing/isolation-valid.html.ini b/tests/wpt/metadata/css/compositing/parsing/isolation-valid.html.ini new file mode 100644 index 00000000000..f688b48e650 --- /dev/null +++ b/tests/wpt/metadata/css/compositing/parsing/isolation-valid.html.ini @@ -0,0 +1,7 @@ +[isolation-valid.html] + [e.style['isolation'\] = "auto" should set the property value] + expected: FAIL + + [e.style['isolation'\] = "isolate" should set the property value] + expected: FAIL + diff --git a/tests/wpt/metadata/css/css-animations/idlharness.html.ini b/tests/wpt/metadata/css/css-animations/idlharness.html.ini new file mode 100644 index 00000000000..910631968de --- /dev/null +++ b/tests/wpt/metadata/css/css-animations/idlharness.html.ini @@ -0,0 +1,4 @@ +[idlharness.html] + [css-animations IDL tests] + expected: FAIL + diff --git a/tests/wpt/metadata/css/css-conditional/idlharness.html.ini b/tests/wpt/metadata/css/css-conditional/idlharness.html.ini new file mode 100644 index 00000000000..9b55aaa25e6 --- /dev/null +++ b/tests/wpt/metadata/css/css-conditional/idlharness.html.ini @@ -0,0 +1,4 @@ +[idlharness.html] + [css-conditional IDL tests] + expected: FAIL + diff --git a/tests/wpt/metadata/css/css-transitions/idlharness.html.ini b/tests/wpt/metadata/css/css-transitions/idlharness.html.ini new file mode 100644 index 00000000000..2d93092630a --- /dev/null +++ b/tests/wpt/metadata/css/css-transitions/idlharness.html.ini @@ -0,0 +1,4 @@ +[idlharness.html] + [css-transitions IDL tests] + expected: FAIL + diff --git a/tests/wpt/metadata/css/css-values/calc-rounding-001.html.ini b/tests/wpt/metadata/css/css-values/calc-rounding-001.html.ini new file mode 100644 index 00000000000..3afe31a4eff --- /dev/null +++ b/tests/wpt/metadata/css/css-values/calc-rounding-001.html.ini @@ -0,0 +1,4 @@ +[calc-rounding-001.html] + [calc() doesn't accumulate much error that makes flex items overflow] + expected: FAIL + diff --git a/tests/wpt/metadata/css/cssom-view/elementFromPoint-mixed-font-sizes.html.ini b/tests/wpt/metadata/css/cssom-view/elementFromPoint-mixed-font-sizes.html.ini new file mode 100644 index 00000000000..07386cbb872 --- /dev/null +++ b/tests/wpt/metadata/css/cssom-view/elementFromPoint-mixed-font-sizes.html.ini @@ -0,0 +1,4 @@ +[elementFromPoint-mixed-font-sizes.html] + [document.elementFromPoint finds container SPAN in the empty region above a child SPAN with a smaller font size] + expected: FAIL + diff --git a/tests/wpt/metadata/css/cssom-view/elementsFromPoint-shadowroot.html.ini b/tests/wpt/metadata/css/cssom-view/elementsFromPoint-shadowroot.html.ini index 1b13b3b744d..1a43f8602aa 100644 --- a/tests/wpt/metadata/css/cssom-view/elementsFromPoint-shadowroot.html.ini +++ b/tests/wpt/metadata/css/cssom-view/elementsFromPoint-shadowroot.html.ini @@ -2,3 +2,6 @@ [Untitled] expected: FAIL + [elementsFromPoint-shadowroot] + expected: FAIL + diff --git a/tests/wpt/metadata/css/cssom-view/scrollIntoView-vertical-rl-writing-mode.html.ini b/tests/wpt/metadata/css/cssom-view/scrollIntoView-vertical-rl-writing-mode.html.ini new file mode 100644 index 00000000000..477a200ff86 --- /dev/null +++ b/tests/wpt/metadata/css/cssom-view/scrollIntoView-vertical-rl-writing-mode.html.ini @@ -0,0 +1,28 @@ +[scrollIntoView-vertical-rl-writing-mode.html] + [scrollIntoView({block: "start", inline: "start"})] + expected: FAIL + + [scrollIntoView({block: "start", inline: "center"})] + expected: FAIL + + [scrollIntoView({block: "start", inline: "end"})] + expected: FAIL + + [scrollIntoView({block: "center", inline: "start"})] + expected: FAIL + + [scrollIntoView({block: "center", inline: "center"})] + expected: FAIL + + [scrollIntoView({block: "center", inline: "end"})] + expected: FAIL + + [scrollIntoView({block: "end", inline: "start"})] + expected: FAIL + + [scrollIntoView({block: "end", inline: "center"})] + expected: FAIL + + [scrollIntoView({block: "end", inline: "end"})] + expected: FAIL + diff --git a/tests/wpt/metadata/css/cssom-view/window-interface.xht.ini b/tests/wpt/metadata/css/cssom-view/window-interface.xht.ini deleted file mode 100644 index 1f916c2d374..00000000000 --- a/tests/wpt/metadata/css/cssom-view/window-interface.xht.ini +++ /dev/null @@ -1,4 +0,0 @@ -[window-interface.xht] - [window_properties_readonly] - expected: FAIL - diff --git a/tests/wpt/metadata/css/cssom/getComputedStyle-display-none-001.html.ini b/tests/wpt/metadata/css/cssom/getComputedStyle-display-none-001.html.ini new file mode 100644 index 00000000000..66f3aeee8ae --- /dev/null +++ b/tests/wpt/metadata/css/cssom/getComputedStyle-display-none-001.html.ini @@ -0,0 +1,7 @@ +[getComputedStyle-display-none-001.html] + [getComputedStyle gets invalidated in display: none subtrees due to inherited changes to an ancestor] + expected: FAIL + + [getComputedStyle gets invalidated in display: none subtrees due to inherited changes to an ancestor shadow host] + expected: FAIL + diff --git a/tests/wpt/metadata/css/cssom/getComputedStyle-display-none-002.html.ini b/tests/wpt/metadata/css/cssom/getComputedStyle-display-none-002.html.ini new file mode 100644 index 00000000000..1a062cb51cd --- /dev/null +++ b/tests/wpt/metadata/css/cssom/getComputedStyle-display-none-002.html.ini @@ -0,0 +1,4 @@ +[getComputedStyle-display-none-002.html] + [getComputedStyle gets invalidated in display: none subtrees due to rule matching changes] + expected: FAIL + diff --git a/tests/wpt/metadata/css/cssom/getComputedStyle-pseudo.html.ini b/tests/wpt/metadata/css/cssom/getComputedStyle-pseudo.html.ini index 3fddcb48ac1..88cefe8d6d7 100644 --- a/tests/wpt/metadata/css/cssom/getComputedStyle-pseudo.html.ini +++ b/tests/wpt/metadata/css/cssom/getComputedStyle-pseudo.html.ini @@ -14,3 +14,6 @@ [Unknown pseudo-elements throw] expected: FAIL + [Dynamically change to display: contents on pseudo-elements] + expected: FAIL + diff --git a/tests/wpt/metadata/css/filter-effects/interfaces.any.js.ini b/tests/wpt/metadata/css/filter-effects/interfaces.any.js.ini index f845a40cc21..b3bb4c13f86 100644 --- a/tests/wpt/metadata/css/filter-effects/interfaces.any.js.ini +++ b/tests/wpt/metadata/css/filter-effects/interfaces.any.js.ini @@ -1,10 +1,15 @@ [interfaces.any.worker.html] - expected: ERROR [Untitled] expected: FAIL + [interfaces] + expected: FAIL + [interfaces.any.html] [Untitled] expected: FAIL + [interfaces] + expected: FAIL + diff --git a/tests/wpt/metadata/css/geometry/interfaces.worker.js.ini b/tests/wpt/metadata/css/geometry/interfaces.worker.js.ini index 036601f92c9..994ddcf717a 100644 --- a/tests/wpt/metadata/css/geometry/interfaces.worker.js.ini +++ b/tests/wpt/metadata/css/geometry/interfaces.worker.js.ini @@ -95,3 +95,6 @@ [Untitled] expected: FAIL + [interfaces] + expected: FAIL + diff --git a/tests/wpt/metadata/custom-elements/builtin-coverage.html.ini b/tests/wpt/metadata/custom-elements/builtin-coverage.html.ini index 3ce70c1cfcd..c7f988446e0 100644 --- a/tests/wpt/metadata/custom-elements/builtin-coverage.html.ini +++ b/tests/wpt/metadata/custom-elements/builtin-coverage.html.ini @@ -2,3 +2,6 @@ [Untitled] expected: FAIL + [builtin-coverage] + expected: FAIL + diff --git a/tests/wpt/metadata/custom-elements/pseudo-class-defined.html.ini b/tests/wpt/metadata/custom-elements/pseudo-class-defined.html.ini index 9d4234f4bff..5b454f6f731 100644 --- a/tests/wpt/metadata/custom-elements/pseudo-class-defined.html.ini +++ b/tests/wpt/metadata/custom-elements/pseudo-class-defined.html.ini @@ -2,3 +2,6 @@ [Untitled] expected: FAIL + [pseudo-class-defined] + expected: FAIL + diff --git a/tests/wpt/metadata/dom/events/Event-timestamp-safe-resolution.html.ini b/tests/wpt/metadata/dom/events/Event-timestamp-safe-resolution.html.ini index f2a67345d6c..343c7902a42 100644 --- a/tests/wpt/metadata/dom/events/Event-timestamp-safe-resolution.html.ini +++ b/tests/wpt/metadata/dom/events/Event-timestamp-safe-resolution.html.ini @@ -3,3 +3,6 @@ [Untitled] expected: FAIL + [Event-timestamp-safe-resolution] + expected: FAIL + diff --git a/tests/wpt/metadata/dom/events/relatedTarget.window.js.ini b/tests/wpt/metadata/dom/events/relatedTarget.window.js.ini index cbe3c35452c..23f0c5a1de7 100644 --- a/tests/wpt/metadata/dom/events/relatedTarget.window.js.ini +++ b/tests/wpt/metadata/dom/events/relatedTarget.window.js.ini @@ -2,3 +2,6 @@ [Untitled] expected: FAIL + [relatedTarget] + expected: FAIL + diff --git a/tests/wpt/metadata/dom/nodes/Element-getElementsByTagName-change-document-HTMLNess.html.ini b/tests/wpt/metadata/dom/nodes/Element-getElementsByTagName-change-document-HTMLNess.html.ini index 737a76f0227..dfbf9f90d66 100644 --- a/tests/wpt/metadata/dom/nodes/Element-getElementsByTagName-change-document-HTMLNess.html.ini +++ b/tests/wpt/metadata/dom/nodes/Element-getElementsByTagName-change-document-HTMLNess.html.ini @@ -3,3 +3,6 @@ [Untitled] expected: FAIL + [Element-getElementsByTagName-change-document-HTMLNess] + expected: FAIL + diff --git a/tests/wpt/metadata/domparsing/interfaces.any.js.ini b/tests/wpt/metadata/domparsing/interfaces.any.js.ini index 6ebfacc0662..a54a7182d01 100644 --- a/tests/wpt/metadata/domparsing/interfaces.any.js.ini +++ b/tests/wpt/metadata/domparsing/interfaces.any.js.ini @@ -2,6 +2,11 @@ [Untitled] expected: FAIL + [interfaces] + expected: FAIL + [interfaces.any.worker.html] - expected: ERROR + [interfaces] + expected: FAIL + diff --git a/tests/wpt/metadata/encoding/idlharness.any.js.ini b/tests/wpt/metadata/encoding/idlharness.any.js.ini index 910710d7b6b..e08aea81559 100644 --- a/tests/wpt/metadata/encoding/idlharness.any.js.ini +++ b/tests/wpt/metadata/encoding/idlharness.any.js.ini @@ -2,19 +2,30 @@ [Untitled] expected: FAIL + [idlharness] + expected: FAIL + [idlharness.https.any.serviceworker.html] [Untitled] expected: FAIL + [idlharness] + expected: FAIL + [idlharness.any.html] [Untitled] expected: FAIL + [idlharness] + expected: FAIL + [idlharness.any.worker.html] - expected: ERROR [Untitled] expected: FAIL + [idlharness] + expected: FAIL + diff --git a/tests/wpt/metadata/fetch/api/abort/general.any.js.ini b/tests/wpt/metadata/fetch/api/abort/general.any.js.ini index 569f51ee717..4875e00b4cc 100644 --- a/tests/wpt/metadata/fetch/api/abort/general.any.js.ini +++ b/tests/wpt/metadata/fetch/api/abort/general.any.js.ini @@ -3,19 +3,31 @@ [Untitled] expected: FAIL + [general] + expected: FAIL + [general.any.html] type: testharness [Untitled] expected: FAIL + [general] + expected: FAIL + [general.https.any.serviceworker.html] [Untitled] expected: FAIL + [general] + expected: FAIL + [general.any.sharedworker.html] [Untitled] expected: FAIL + [general] + expected: FAIL + diff --git a/tests/wpt/metadata/fetch/api/basic/integrity.sub.any.js.ini b/tests/wpt/metadata/fetch/api/basic/integrity.sub.any.js.ini index 595efba71cd..239e0a52a13 100644 --- a/tests/wpt/metadata/fetch/api/basic/integrity.sub.any.js.ini +++ b/tests/wpt/metadata/fetch/api/basic/integrity.sub.any.js.ini @@ -2,6 +2,9 @@ [Untitled] expected: FAIL + [integrity] + expected: FAIL + [integrity.sub.any.worker.html] [Invalid integrity] diff --git a/tests/wpt/metadata/fetch/api/cors/cors-cookies-redirect.any.js.ini b/tests/wpt/metadata/fetch/api/cors/cors-cookies-redirect.any.js.ini index a2543058306..e741b7a8478 100644 --- a/tests/wpt/metadata/fetch/api/cors/cors-cookies-redirect.any.js.ini +++ b/tests/wpt/metadata/fetch/api/cors/cors-cookies-redirect.any.js.ini @@ -2,8 +2,14 @@ [Untitled] expected: FAIL + [cors-cookies-redirect] + expected: FAIL + [cors-cookies-redirect.any.html] [Untitled] expected: FAIL + [cors-cookies-redirect] + expected: FAIL + diff --git a/tests/wpt/metadata/fetch/api/cors/cors-preflight-cache.any.js.ini b/tests/wpt/metadata/fetch/api/cors/cors-preflight-cache.any.js.ini index b258f6fc49d..17cbae9b2f8 100644 --- a/tests/wpt/metadata/fetch/api/cors/cors-preflight-cache.any.js.ini +++ b/tests/wpt/metadata/fetch/api/cors/cors-preflight-cache.any.js.ini @@ -3,9 +3,15 @@ [Untitled] expected: FAIL + [cors-preflight-cache] + expected: FAIL + [cors-preflight-cache.any.worker.html] type: testharness [Untitled] expected: FAIL + [cors-preflight-cache] + expected: FAIL + diff --git a/tests/wpt/metadata/fetch/api/idl.any.js.ini b/tests/wpt/metadata/fetch/api/idl.any.js.ini index de5922b3d31..f1055eceb2c 100644 --- a/tests/wpt/metadata/fetch/api/idl.any.js.ini +++ b/tests/wpt/metadata/fetch/api/idl.any.js.ini @@ -1,20 +1,31 @@ [idl.any.worker.html] - expected: ERROR [Untitled] expected: FAIL + [idl] + expected: FAIL + [idl.any.html] [Untitled] expected: FAIL + [idl] + expected: FAIL + [idl.any.sharedworker.html] [Untitled] expected: FAIL + [idl] + expected: FAIL + [idl.https.any.serviceworker.html] [Untitled] expected: FAIL + [idl] + expected: FAIL + diff --git a/tests/wpt/metadata/fetch/api/request/request-reset-attributes.https.html.ini b/tests/wpt/metadata/fetch/api/request/request-reset-attributes.https.html.ini index 9530f90dd12..12ac0ea794f 100644 --- a/tests/wpt/metadata/fetch/api/request/request-reset-attributes.https.html.ini +++ b/tests/wpt/metadata/fetch/api/request/request-reset-attributes.https.html.ini @@ -2,3 +2,6 @@ [Untitled] expected: FAIL + [request-reset-attributes] + expected: FAIL + diff --git a/tests/wpt/metadata/fetch/api/response/response-stream-with-broken-then.any.js.ini b/tests/wpt/metadata/fetch/api/response/response-stream-with-broken-then.any.js.ini index 843451220c4..f2c6fa889ca 100644 --- a/tests/wpt/metadata/fetch/api/response/response-stream-with-broken-then.any.js.ini +++ b/tests/wpt/metadata/fetch/api/response/response-stream-with-broken-then.any.js.ini @@ -2,8 +2,14 @@ [Untitled] expected: FAIL + [response-stream-with-broken-then] + expected: FAIL + [response-stream-with-broken-then.any.worker.html] [Untitled] expected: FAIL + [response-stream-with-broken-then] + expected: FAIL + diff --git a/tests/wpt/metadata/fetch/corb/preload-image-png-mislabeled-as-html-nosniff.tentative.sub.html.ini b/tests/wpt/metadata/fetch/corb/preload-image-png-mislabeled-as-html-nosniff.tentative.sub.html.ini index cc589928c91..f9b590f5b15 100644 --- a/tests/wpt/metadata/fetch/corb/preload-image-png-mislabeled-as-html-nosniff.tentative.sub.html.ini +++ b/tests/wpt/metadata/fetch/corb/preload-image-png-mislabeled-as-html-nosniff.tentative.sub.html.ini @@ -3,3 +3,6 @@ [Untitled] expected: TIMEOUT + [preload-image-png-mislabeled-as-html-nosniff] + expected: TIMEOUT + diff --git a/tests/wpt/metadata/fetch/corb/script-html-via-cross-origin-blob-url.sub.html.ini b/tests/wpt/metadata/fetch/corb/script-html-via-cross-origin-blob-url.sub.html.ini index dca245f4146..9a69539e573 100644 --- a/tests/wpt/metadata/fetch/corb/script-html-via-cross-origin-blob-url.sub.html.ini +++ b/tests/wpt/metadata/fetch/corb/script-html-via-cross-origin-blob-url.sub.html.ini @@ -2,3 +2,6 @@ [Untitled] expected: FAIL + [script-html-via-cross-origin-blob-url] + expected: FAIL + diff --git a/tests/wpt/metadata/fetch/corb/script-js-mislabeled-as-html-nosniff.sub.html.ini b/tests/wpt/metadata/fetch/corb/script-js-mislabeled-as-html-nosniff.sub.html.ini index a6ea8a4802c..f8b908436a7 100644 --- a/tests/wpt/metadata/fetch/corb/script-js-mislabeled-as-html-nosniff.sub.html.ini +++ b/tests/wpt/metadata/fetch/corb/script-js-mislabeled-as-html-nosniff.sub.html.ini @@ -2,3 +2,6 @@ [Untitled] expected: FAIL + [script-js-mislabeled-as-html-nosniff] + expected: FAIL + diff --git a/tests/wpt/metadata/fetch/cors-rfc1918/idlharness.tentative.any.js.ini b/tests/wpt/metadata/fetch/cors-rfc1918/idlharness.tentative.any.js.ini new file mode 100644 index 00000000000..8d1dc992f8f --- /dev/null +++ b/tests/wpt/metadata/fetch/cors-rfc1918/idlharness.tentative.any.js.ini @@ -0,0 +1,9 @@ +[idlharness.tentative.any.html] + [idlharness] + expected: FAIL + + +[idlharness.tentative.any.worker.html] + [idlharness] + 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 5577b7596a8..293bf2f9f27 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 @@ -2,3 +2,6 @@ [Untitled] expected: FAIL + [fetch-in-iframe] + expected: FAIL + diff --git a/tests/wpt/metadata/fetch/cross-origin-resource-policy/fetch.html.ini b/tests/wpt/metadata/fetch/cross-origin-resource-policy/fetch.html.ini index cb5045f9fbb..74b60b89b01 100644 --- a/tests/wpt/metadata/fetch/cross-origin-resource-policy/fetch.html.ini +++ b/tests/wpt/metadata/fetch/cross-origin-resource-policy/fetch.html.ini @@ -2,3 +2,6 @@ [Untitled] expected: FAIL + [fetch] + expected: FAIL + diff --git a/tests/wpt/metadata/fetch/cross-origin-resource-policy/iframe-loads.html.ini b/tests/wpt/metadata/fetch/cross-origin-resource-policy/iframe-loads.html.ini index 06cf11618ea..df9e6ef13e0 100644 --- a/tests/wpt/metadata/fetch/cross-origin-resource-policy/iframe-loads.html.ini +++ b/tests/wpt/metadata/fetch/cross-origin-resource-policy/iframe-loads.html.ini @@ -2,3 +2,6 @@ [Untitled] expected: FAIL + [iframe-loads] + expected: FAIL + diff --git a/tests/wpt/metadata/fetch/origin/no-cors.any.js.ini b/tests/wpt/metadata/fetch/origin/no-cors.any.js.ini index 8864c53a958..d4f7c1a7074 100644 --- a/tests/wpt/metadata/fetch/origin/no-cors.any.js.ini +++ b/tests/wpt/metadata/fetch/origin/no-cors.any.js.ini @@ -2,8 +2,14 @@ [Untitled] expected: FAIL + [no-cors] + expected: FAIL + [no-cors.any.html] [Untitled] expected: FAIL + [no-cors] + expected: FAIL + diff --git a/tests/wpt/metadata/fetch/range/general.any.js.ini b/tests/wpt/metadata/fetch/range/general.any.js.ini index 33621f485f3..ea7926a5d8e 100644 --- a/tests/wpt/metadata/fetch/range/general.any.js.ini +++ b/tests/wpt/metadata/fetch/range/general.any.js.ini @@ -2,8 +2,14 @@ [Untitled] expected: FAIL + [general] + expected: FAIL + [general.any.html] [Untitled] expected: FAIL + [general] + expected: FAIL + diff --git a/tests/wpt/metadata/fetch/range/general.window.js.ini b/tests/wpt/metadata/fetch/range/general.window.js.ini index fded4bc04d5..9deb0a1c987 100644 --- a/tests/wpt/metadata/fetch/range/general.window.js.ini +++ b/tests/wpt/metadata/fetch/range/general.window.js.ini @@ -2,3 +2,6 @@ [Untitled] expected: FAIL + [general] + expected: FAIL + diff --git a/tests/wpt/metadata/fetch/range/sw.https.window.js.ini b/tests/wpt/metadata/fetch/range/sw.https.window.js.ini index a0e2131bd02..30fa86c39ad 100644 --- a/tests/wpt/metadata/fetch/range/sw.https.window.js.ini +++ b/tests/wpt/metadata/fetch/range/sw.https.window.js.ini @@ -2,3 +2,6 @@ [Untitled] expected: FAIL + [sw] + expected: FAIL + diff --git a/tests/wpt/metadata/fetch/security/redirect-to-url-with-credentials.https.html.ini b/tests/wpt/metadata/fetch/security/redirect-to-url-with-credentials.https.html.ini index f903b9d7fa3..5615a38bca0 100644 --- a/tests/wpt/metadata/fetch/security/redirect-to-url-with-credentials.https.html.ini +++ b/tests/wpt/metadata/fetch/security/redirect-to-url-with-credentials.https.html.ini @@ -2,3 +2,6 @@ [Untitled] expected: FAIL + [redirect-to-url-with-credentials] + expected: FAIL + diff --git a/tests/wpt/metadata/hr-time/performance-tojson.html.ini b/tests/wpt/metadata/hr-time/performance-tojson.html.ini index f04c6c49fa6..6e73eb2caca 100644 --- a/tests/wpt/metadata/hr-time/performance-tojson.html.ini +++ b/tests/wpt/metadata/hr-time/performance-tojson.html.ini @@ -2,3 +2,6 @@ [Untitled] expected: FAIL + [performance-tojson] + expected: FAIL + diff --git a/tests/wpt/metadata/html/dom/interfaces.worker.js.ini b/tests/wpt/metadata/html/dom/interfaces.worker.js.ini index 74606a21dbf..82b91b25b7f 100644 --- a/tests/wpt/metadata/html/dom/interfaces.worker.js.ini +++ b/tests/wpt/metadata/html/dom/interfaces.worker.js.ini @@ -258,3 +258,6 @@ [Untitled] expected: FAIL + [interfaces] + expected: FAIL + diff --git a/tests/wpt/metadata/html/infrastructure/common-dom-interfaces/collections/domstringlist-interface.worker.js.ini b/tests/wpt/metadata/html/infrastructure/common-dom-interfaces/collections/domstringlist-interface.worker.js.ini index 0ed4f5d4caa..909a2ce920a 100644 --- a/tests/wpt/metadata/html/infrastructure/common-dom-interfaces/collections/domstringlist-interface.worker.js.ini +++ b/tests/wpt/metadata/html/infrastructure/common-dom-interfaces/collections/domstringlist-interface.worker.js.ini @@ -30,3 +30,6 @@ [Untitled] expected: FAIL + [domstringlist-interface] + expected: FAIL + diff --git a/tests/wpt/metadata/html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/serialization-via-idb.any.js.ini b/tests/wpt/metadata/html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/serialization-via-idb.any.js.ini index 65ffac4f541..2c8fe36cd7b 100644 --- a/tests/wpt/metadata/html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/serialization-via-idb.any.js.ini +++ b/tests/wpt/metadata/html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/serialization-via-idb.any.js.ini @@ -1,6 +1,11 @@ [serialization-via-idb.any.worker.html] type: testharness - expected: ERROR + [SharedArrayBuffer cloning via IndexedDB: basic case] + expected: FAIL + + [SharedArrayBuffer cloning via the IndexedDB: is interleaved correctly] + expected: FAIL + [serialization-via-idb.any.html] type: testharness diff --git a/tests/wpt/metadata/html/infrastructure/safe-passing-of-structured-data/transfer-errors.window.js.ini b/tests/wpt/metadata/html/infrastructure/safe-passing-of-structured-data/transfer-errors.window.js.ini index 11486f7a9ab..39d940212bd 100644 --- a/tests/wpt/metadata/html/infrastructure/safe-passing-of-structured-data/transfer-errors.window.js.ini +++ b/tests/wpt/metadata/html/infrastructure/safe-passing-of-structured-data/transfer-errors.window.js.ini @@ -2,3 +2,6 @@ [Untitled] expected: FAIL + [transfer-errors] + expected: FAIL + diff --git a/tests/wpt/metadata/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/parsing.html.ini b/tests/wpt/metadata/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/parsing.html.ini index 42df03935bb..71cbf369791 100644 --- a/tests/wpt/metadata/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/parsing.html.ini +++ b/tests/wpt/metadata/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/parsing.html.ini @@ -1,3 +1,298 @@ [parsing.html] type: testharness disabled: https://github.com/servo/servo/issues/8749 + +[parsing.html?61-70] + expected: TIMEOUT + [Refresh header: "1; url='foo'bar"] + expected: TIMEOUT + + [<meta>: "1; url=\\"foo'bar"] + expected: TIMEOUT + + [Refresh header: "1; url=\\"foo'bar"] + expected: TIMEOUT + + [<meta>: "1; url foo"] + expected: TIMEOUT + + [Refresh header: "1; url foo"] + expected: TIMEOUT + + [<meta>: "1; urlfoo"] + expected: TIMEOUT + + [Refresh header: "1; urlfoo"] + expected: TIMEOUT + + [<meta>: "1; urfoo"] + expected: TIMEOUT + + [Refresh header: "1; urfoo"] + expected: TIMEOUT + + [<meta>: "1; ufoo"] + expected: TIMEOUT + + +[parsing.html?121-130] + expected: TIMEOUT + [Refresh header: "0.9; url=foo"] + expected: TIMEOUT + + [<meta>: "0...9; url=foo"] + expected: TIMEOUT + + [Refresh header: "0...9; url=foo"] + expected: TIMEOUT + + [<meta>: "0...; url=foo"] + expected: TIMEOUT + + [Refresh header: "0...; url=foo"] + expected: TIMEOUT + + +[parsing.html?71-80] + expected: TIMEOUT + [Refresh header: "1; ufoo"] + expected: TIMEOUT + + [<meta>: "1; \\"foo\\"bar"] + expected: TIMEOUT + + [Refresh header: "1; \\"foo\\"bar"] + expected: TIMEOUT + + +[parsing.html?21-30] + expected: TIMEOUT + [Refresh header: "1 url=foo"] + expected: TIMEOUT + + [<meta>: "1;\\turl=foo"] + expected: TIMEOUT + + [Refresh header: "1;\\turl=foo"] + expected: TIMEOUT + + [<meta>: "1,\\turl=foo"] + expected: TIMEOUT + + [Refresh header: "1,\\turl=foo"] + expected: TIMEOUT + + [<meta>: "1\\turl=foo"] + expected: TIMEOUT + + [Refresh header: "1\\turl=foo"] + expected: TIMEOUT + + [<meta>: "1;\\rurl=foo"] + expected: TIMEOUT + + [<meta>: "1,\\rurl=foo"] + expected: TIMEOUT + + [<meta>: "1\\rurl=foo"] + expected: TIMEOUT + + +[parsing.html?81-90] + +[parsing.html?91-100] + expected: TIMEOUT + [<meta>: "0; url=foo"] + expected: TIMEOUT + + [Refresh header: "0; url=foo"] + expected: TIMEOUT + + +[parsing.html?101-110] + expected: TIMEOUT + [<meta>: "0; foo"] + expected: TIMEOUT + + [Refresh header: "0; foo"] + expected: TIMEOUT + + +[parsing.html?111-120] + expected: TIMEOUT + [<meta>: "0"] + expected: TIMEOUT + + [Refresh header: "0"] + expected: TIMEOUT + + [<meta>: "1.9; url=foo"] + expected: TIMEOUT + + [Refresh header: "1.9; url=foo"] + expected: TIMEOUT + + [<meta>: "1.9..5.; url=foo"] + expected: TIMEOUT + + [Refresh header: "1.9..5.; url=foo"] + expected: TIMEOUT + + [<meta>: ".9; url=foo"] + expected: TIMEOUT + + [Refresh header: ".9; url=foo"] + expected: TIMEOUT + + [<meta>: "0.9; url=foo"] + expected: TIMEOUT + + +[parsing.html?51-60] + expected: TIMEOUT + [<meta>: " 1 , foo"] + expected: TIMEOUT + + [Refresh header: " 1 , foo"] + expected: TIMEOUT + + [<meta>: " 1 url = foo"] + expected: TIMEOUT + + [Refresh header: " 1 url = foo"] + expected: TIMEOUT + + [<meta>: "1; url=foo "] + expected: TIMEOUT + + [Refresh header: "1; url=foo "] + expected: TIMEOUT + + [<meta>: "1; url=f\\to\\no"] + expected: TIMEOUT + + [<meta>: "1; url=\\"foo\\"bar"] + expected: TIMEOUT + + [Refresh header: "1; url=\\"foo\\"bar"] + expected: TIMEOUT + + [<meta>: "1; url='foo'bar"] + expected: TIMEOUT + + +[parsing.html?41-50] + expected: TIMEOUT + [<meta>: "1 x;url=foo"] + expected: TIMEOUT + + [Refresh header: "1 x;url=foo"] + expected: TIMEOUT + + [<meta>: "1;;url=foo"] + expected: TIMEOUT + + [Refresh header: "1;;url=foo"] + expected: TIMEOUT + + [<meta>: " 1 ; url = foo"] + expected: TIMEOUT + + [Refresh header: " 1 ; url = foo"] + expected: TIMEOUT + + [<meta>: " 1 , url = foo"] + expected: TIMEOUT + + [Refresh header: " 1 , url = foo"] + expected: TIMEOUT + + [<meta>: " 1 ; foo"] + expected: TIMEOUT + + [Refresh header: " 1 ; foo"] + expected: TIMEOUT + + +[parsing.html?11-20] + expected: TIMEOUT + [<meta>: "1\\f"] + expected: TIMEOUT + + [<meta>: "1;"] + expected: TIMEOUT + + [Refresh header: "1;"] + expected: TIMEOUT + + [<meta>: "1,"] + expected: TIMEOUT + + [Refresh header: "1,"] + expected: TIMEOUT + + [<meta>: "1; url=foo"] + expected: TIMEOUT + + [Refresh header: "1; url=foo"] + expected: TIMEOUT + + [<meta>: "1, url=foo"] + expected: TIMEOUT + + [Refresh header: "1, url=foo"] + expected: TIMEOUT + + [<meta>: "1 url=foo"] + expected: TIMEOUT + + +[parsing.html?131-last] + +[parsing.html?1-10] + expected: TIMEOUT + [<meta>: "1"] + expected: TIMEOUT + + [Refresh header: "1"] + expected: TIMEOUT + + [<meta>: "1 "] + expected: TIMEOUT + + [Refresh header: "1 "] + expected: TIMEOUT + + [<meta>: "1\\t"] + expected: TIMEOUT + + [Refresh header: "1\\t"] + expected: TIMEOUT + + [<meta>: "1\\r"] + expected: TIMEOUT + + [<meta>: "1\\n"] + expected: TIMEOUT + + +[parsing.html?31-40] + expected: TIMEOUT + [<meta>: "1;\\nurl=foo"] + expected: TIMEOUT + + [<meta>: "1,\\nurl=foo"] + expected: TIMEOUT + + [<meta>: "1\\nurl=foo"] + expected: TIMEOUT + + [<meta>: "1;\\furl=foo"] + expected: TIMEOUT + + [<meta>: "1,\\furl=foo"] + expected: TIMEOUT + + [<meta>: "1\\furl=foo"] + expected: TIMEOUT + diff --git a/tests/wpt/metadata/html/semantics/embedded-content/image-maps/image-map-processing-model/hash-name-reference.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/image-maps/image-map-processing-model/hash-name-reference.html.ini index 7ee185ca6fc..d0913a41225 100644 --- a/tests/wpt/metadata/html/semantics/embedded-content/image-maps/image-map-processing-model/hash-name-reference.html.ini +++ b/tests/wpt/metadata/html/semantics/embedded-content/image-maps/image-map-processing-model/hash-name-reference.html.ini @@ -202,33 +202,33 @@ [XHTML img usemap="#different-CASE-id"] expected: FAIL - [HTML (quirks) IMG usemap="no-hash-name"] + [HTML (standards) IMG usemap="no-hash-name"] expected: FAIL - [HTML (quirks) IMG usemap="no-hash-id"] + [HTML (standards) IMG usemap="no-hash-id"] expected: FAIL - [HTML (quirks) IMG usemap="hash-last#"] + [HTML (standards) IMG usemap="hash-last#"] expected: FAIL - [HTML (quirks) IMG usemap=""] + [HTML (standards) IMG usemap=""] expected: FAIL - [HTML (quirks) IMG usemap="#"] + [HTML (standards) IMG usemap="#"] expected: FAIL - [HTML (quirks) IMG usemap="#percent-escape-name-%41"] + [HTML (standards) IMG usemap="#percent-escape-name-%41"] expected: FAIL - [HTML (quirks) IMG usemap="#percent-escape-id-%41"] + [HTML (standards) IMG usemap="#percent-escape-id-%41"] expected: FAIL - [HTML (quirks) IMG usemap="#no-such-map"] + [HTML (standards) IMG usemap="#no-such-map"] expected: FAIL - [HTML (quirks) IMG usemap="#different-CASE-name"] + [HTML (standards) IMG usemap="#different-CASE-name"] expected: FAIL - [HTML (quirks) IMG usemap="#different-CASE-id"] + [HTML (standards) IMG usemap="#different-CASE-id"] expected: FAIL diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe-allow.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe-allow.html.ini new file mode 100644 index 00000000000..45fa2c86358 --- /dev/null +++ b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe-allow.html.ini @@ -0,0 +1,4 @@ +[iframe-allow.html] + [iframe-cross-origin-allow] + expected: FAIL + diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe-allowfullscreen.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe-allowfullscreen.html.ini index 7d040c9c4c0..9255ca1a32a 100644 --- a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe-allowfullscreen.html.ini +++ b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe-allowfullscreen.html.ini @@ -9,3 +9,12 @@ [iframe-sandbox-allowfullscreen-dialog] expected: FAIL + [iframe-same-origin-allowfullscreen] + expected: FAIL + + [iframe-cross-origin-allowfullscreen] + expected: FAIL + + [iframe-noload-noallowfullscreen] + expected: FAIL + diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-display-none.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-display-none.html.ini new file mode 100644 index 00000000000..064bea5a826 --- /dev/null +++ b/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-display-none.html.ini @@ -0,0 +1,514 @@ +[parse-a-sizes-attribute-display-none.html] + [<img srcset="/images/green-1x1.png?a2 300w, /images/green-16x16.png?a2 301w"> ref sizes="100vw" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?b2 450w, /images/green-16x16.png?b2 451w"> ref sizes="100vw" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?c2 600w, /images/green-16x16.png?c2 601w"> ref sizes="100vw" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?d2 900w, /images/green-16x16.png?d2 901w"> ref sizes="100vw" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e2 50w, /images/green-16x16.png?e2 51w" sizes="0"> ref sizes="1px" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e3 50w, /images/green-16x16.png?e3 51w" sizes="-0"> ref sizes="1px" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e4 50w, /images/green-16x16.png?e4 51w" sizes="+0"> ref sizes="1px" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e5 50w, /images/green-16x16.png?e5 51w" sizes="+1px"> ref sizes="1px" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e6 50w, /images/green-16x16.png?e6 51w" sizes=".1px"> ref sizes="1px" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e7 50w, /images/green-16x16.png?e7 51w" sizes="0.1em"> ref sizes="1px" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e8 50w, /images/green-16x16.png?e8 51w" sizes="0.1ex"> ref sizes="1px" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e9 50w, /images/green-16x16.png?e9 51w" sizes="0.1ch"> ref sizes="1px" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e10 50w, /images/green-16x16.png?e10 51w" sizes="0.1rem"> ref sizes="1px" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e11 50w, /images/green-16x16.png?e11 51w" sizes="0.1vw"> ref sizes="1px" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e12 50w, /images/green-16x16.png?e12 51w" sizes="0.1vh"> ref sizes="1px" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e13 50w, /images/green-16x16.png?e13 51w" sizes="0.1vmin"> ref sizes="1px" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e14 50w, /images/green-16x16.png?e14 51w" sizes="0.1vmax"> ref sizes="1px" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e15 50w, /images/green-16x16.png?e15 51w" sizes="0.1cm"> ref sizes="1px" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e16 50w, /images/green-16x16.png?e16 51w" sizes="1mm"> ref sizes="1px" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e17 50w, /images/green-16x16.png?e17 51w" sizes="1q"> ref sizes="1px" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e18 50w, /images/green-16x16.png?e18 51w" sizes="0.01in"> ref sizes="1px" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e19 50w, /images/green-16x16.png?e19 51w" sizes="0.1pc"> ref sizes="1px" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e20 50w, /images/green-16x16.png?e20 51w" sizes="0.1pt"> ref sizes="1px" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e21 50w, /images/green-16x16.png?e21 51w" sizes="/* */1px/* */"> ref sizes="1px" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e22 50w, /images/green-16x16.png?e22 51w" sizes=" /**/ /**/ 1px /**/ /**/ "> ref sizes="1px" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e23 50w, /images/green-16x16.png?e23 51w" sizes="(),1px"> ref sizes="1px" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e24 50w, /images/green-16x16.png?e24 51w" sizes="x(),1px"> ref sizes="1px" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e25 50w, /images/green-16x16.png?e25 51w" sizes="{},1px"> ref sizes="1px" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e26 50w, /images/green-16x16.png?e26 51w" sizes="[\],1px"> ref sizes="1px" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e27 50w, /images/green-16x16.png?e27 51w" sizes="1px,("> ref sizes="1px" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e28 50w, /images/green-16x16.png?e28 51w" sizes="1px,x("> ref sizes="1px" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e29 50w, /images/green-16x16.png?e29 51w" sizes="1px,{"> ref sizes="1px" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e30 50w, /images/green-16x16.png?e30 51w" sizes="1px,["> ref sizes="1px" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e31 50w, /images/green-16x16.png?e31 51w" sizes="\\(,1px"> ref sizes="1px" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e32 50w, /images/green-16x16.png?e32 51w" sizes="x\\(,1px"> ref sizes="1px" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e33 50w, /images/green-16x16.png?e33 51w" sizes="\\{,1px"> ref sizes="1px" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e34 50w, /images/green-16x16.png?e34 51w" sizes="\\[,1px"> ref sizes="1px" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e35 50w, /images/green-16x16.png?e35 51w" sizes="1\\p\\x"> ref sizes="1px" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e36 50w, /images/green-16x16.png?e36 51w" sizes="calc(1px)"> ref sizes="1px" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e36a 50w, /images/green-16x16.png?e36a 51w" sizes="min(1px, 100px)"> ref sizes="1px" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e36b 50w, /images/green-16x16.png?e36b 51w" sizes="min(-100px, 1px)"> ref sizes="1px" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e37 50w, /images/green-16x16.png?e37 51w" sizes="(min-width:0) calc(1px)"> ref sizes="1px" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e37a 50w, /images/green-16x16.png?e37a 51w" sizes="(min-width:0) min(1px, 100px)"> ref sizes="1px" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e37b 50w, /images/green-16x16.png?e37b 51w" sizes="(min-width:0) max(-100px, 1px)"> ref sizes="1px" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e38 50w, /images/green-16x16.png?e38 51w" sizes="(min-width:calc(0)) 1px"> ref sizes="1px" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e38a 50w, /images/green-16x16.png?e38a 51w" sizes="(min-width:min(0, 200vw)) 1px"> ref sizes="1px" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e38b 50w, /images/green-16x16.png?e38b 51w" sizes="(min-width:max(-200vw, 0)) 1px"> ref sizes="1px" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e39 50w, /images/green-16x16.png?e39 51w" sizes="(min-width:0) 1px, 100vw"> ref sizes="1px" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e40 50w, /images/green-16x16.png?e40 51w" sizes="(min-width:0) 1px, (min-width:0) 100vw, 100vw"> ref sizes="1px" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e41 50w, /images/green-16x16.png?e41 51w" sizes="(min-width:0) 1px"> ref sizes="1px" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e42 50w, /images/green-16x16.png?e42 51w" sizes="not (min-width:0) 100vw, 1px"> ref sizes="1px" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e43 50w, /images/green-16x16.png?e43 51w" sizes="(min-width:unknown-mf-value) 100vw, 1px"> ref sizes="1px" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e44 50w, /images/green-16x16.png?e44 51w" sizes="not (min-width:unknown-mf-value) 100vw, 1px"> ref sizes="1px" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e45 50w, /images/green-16x16.png?e45 51w" sizes="(min-width:-1px) 100vw, 1px"> ref sizes="1px" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e46 50w, /images/green-16x16.png?e46 51w" sizes="not (min-width:-1px) 100vw, 1px"> ref sizes="1px" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e47 50w, /images/green-16x16.png?e47 51w" sizes="(unknown-mf-name) 100vw, 1px"> ref sizes="1px" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e48 50w, /images/green-16x16.png?e48 51w" sizes="not (unknown-mf-name) 100vw, 1px"> ref sizes="1px" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e49 50w, /images/green-16x16.png?e49 51w" sizes="(unknown "general-enclosed") 100vw, 1px"> ref sizes="1px" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e50 50w, /images/green-16x16.png?e50 51w" sizes="not (unknown "general-enclosed") 100vw, 1px"> ref sizes="1px" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e51 50w, /images/green-16x16.png?e51 51w" sizes="unknown-general-enclosed(foo) 100vw, 1px"> ref sizes="1px" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e52 50w, /images/green-16x16.png?e52 51w" sizes="not unknown-general-enclosed(foo) 100vw, 1px"> ref sizes="1px" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e53 50w, /images/green-16x16.png?e53 51w" sizes="print 100vw, 1px"> ref sizes="1px" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e54 50w, /images/green-16x16.png?e54 51w" sizes="not print 100vw, 1px"> ref sizes="1px" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e55 50w, /images/green-16x16.png?e55 51w" sizes="unknown-media-type 100vw, 1px"> ref sizes="1px" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e56 50w, /images/green-16x16.png?e56 51w" sizes="not unknown-media-type 100vw, 1px"> ref sizes="1px" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e57 50w, /images/green-16x16.png?e57 51w" sizes="(min-width:0) or (min-width:0) 1px"> ref sizes="1px" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e58 50w, /images/green-16x16.png?e58 51w" sizes="(min-width:0) or (unknown-mf-name) 1px"> ref sizes="1px" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e59 50w, /images/green-16x16.png?e59 51w" sizes="(min-width:0) or (min-width:unknown-mf-value) 1px"> ref sizes="1px" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e60 50w, /images/green-16x16.png?e60 51w" sizes="(min-width:0) or (min-width:-1px) 1px"> ref sizes="1px" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e61 50w, /images/green-16x16.png?e61 51w" sizes="(min-width:0) or (unknown "general-enclosed") 1px"> ref sizes="1px" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e62 50w, /images/green-16x16.png?e62 51w" sizes="(min-width:0) or unknown-general-enclosed(foo) 1px"> ref sizes="1px" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e63 50w, /images/green-16x16.png?e63 51w" sizes="(min-width:0) or (!) 100vw, 1px"> ref sizes="1px" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e64 50w, /images/green-16x16.png?e64 51w" sizes="(min-width:0) or unknown-media-type 100vw, 1px"> ref sizes="1px" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e65 50w, /images/green-16x16.png?e65 51w" sizes="(123) 100vw, 1px"> ref sizes="1px" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e66 50w, /images/green-16x16.png?e66 51w" sizes="not (123) 100vw, 1px"> ref sizes="1px" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e67 50w, /images/green-16x16.png?e67 51w" sizes="(!) 100vw, 1px"> ref sizes="1px" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e68 50w, /images/green-16x16.png?e68 51w" sizes="not (!) 100vw, 1px"> ref sizes="1px" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e69 50w, /images/green-16x16.png?e69 51w" sizes="! 100vw, 1px"> ref sizes="1px" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e70 50w, /images/green-16x16.png?e70 51w" sizes="not ! 100vw, 1px"> ref sizes="1px" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e71 50w, /images/green-16x16.png?e71 51w" sizes="(\]) 100vw, 1px"> ref sizes="1px" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e72 50w, /images/green-16x16.png?e72 51w" sizes="not (\]) 100vw, 1px"> ref sizes="1px" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e73 50w, /images/green-16x16.png?e73 51w" sizes="\] 100vw, 1px"> ref sizes="1px" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e74 50w, /images/green-16x16.png?e74 51w" sizes="not \] 100vw, 1px"> ref sizes="1px" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e75 50w, /images/green-16x16.png?e75 51w" sizes="(}) 100vw, 1px"> ref sizes="1px" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e76 50w, /images/green-16x16.png?e76 51w" sizes="not (}) 100vw, 1px"> ref sizes="1px" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e77 50w, /images/green-16x16.png?e77 51w" sizes="} 100vw, 1px"> ref sizes="1px" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e78 50w, /images/green-16x16.png?e78 51w" sizes="not } 100vw, 1px"> ref sizes="1px" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e79 50w, /images/green-16x16.png?e79 51w" sizes=") 100vw, 1px"> ref sizes="1px" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e80 50w, /images/green-16x16.png?e80 51w" sizes="not ) 100vw, 1px"> ref sizes="1px" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e81 50w, /images/green-16x16.png?e81 51w" sizes="(;) 100vw, 1px"> ref sizes="1px" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e82 50w, /images/green-16x16.png?e82 51w" sizes="not (;) 100vw, 1px"> ref sizes="1px" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e83 50w, /images/green-16x16.png?e83 51w" sizes="(.) 100vw, 1px"> ref sizes="1px" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e84 50w, /images/green-16x16.png?e84 51w" sizes="not (.) 100vw, 1px"> ref sizes="1px" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e85 50w, /images/green-16x16.png?e85 51w" sizes="; 100vw, 1px"> ref sizes="1px" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e86 50w, /images/green-16x16.png?e86 51w" sizes="not ; 100vw, 1px"> ref sizes="1px" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e87 50w, /images/green-16x16.png?e87 51w" sizes=", 1px"> ref sizes="1px" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e88 50w, /images/green-16x16.png?e88 51w" sizes="1px,"> ref sizes="1px" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e89 50w, /images/green-16x16.png?e89 51w" sizes="(min-width:0) 1px,"> ref sizes="1px" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e90 50w, /images/green-16x16.png?e90 51w" sizes="-0e-0px"> ref sizes="1px" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e91 50w, /images/green-16x16.png?e91 51w" sizes="+0.11e+01px"> ref sizes="1px" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e92 50w, /images/green-16x16.png?e92 51w" sizes="0.2e1px"> ref sizes="1px" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e93 50w, /images/green-16x16.png?e93 51w" sizes="0.3E1px"> ref sizes="1px" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e94 50w, /images/green-16x16.png?e94 51w" sizes=".4E1px"> ref sizes="1px" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e95 50w, /images/green-16x16.png?e95 51w" sizes="all 100vw, 1px"> ref sizes="1px" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e96 50w, /images/green-16x16.png?e96 51w" sizes="all and (min-width:0) 100vw, 1px"> ref sizes="1px" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e97 50w, /images/green-16x16.png?e97 51w" sizes="min-width:0 100vw, 1px"> ref sizes="1px" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e98 50w, /images/green-16x16.png?e98 51w" sizes="1px, 100vw"> ref sizes="1px" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e99 50w, /images/green-16x16.png?e99 51w" sizes="1px, (min-width:0) 100vw"> ref sizes="1px" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e100 50w, /images/green-16x16.png?e100 51w" sizes="1px, foo bar"> ref sizes="1px" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e101 50w, /images/green-16x16.png?e101 51w" sizes="(min-width:0) 1px, foo bar"> ref sizes="1px" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e102 50w, /images/green-16x16.png?e102 51w" sizes="("grammar does not match") 100vw, 1px"> ref sizes="1px" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e103 50w, /images/green-16x16.png?e103 51w" sizes="not ("grammar does not match") 100vw, 1px"> ref sizes="1px" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e104 50w, /images/green-16x16.png?e104 51w" sizes="(unknown-general-enclosed !) 100vw, 1px"> ref sizes="1px" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e105 50w, /images/green-16x16.png?e105 51w" sizes="not (unknown-general-enclosed !) 100vw, 1px"> ref sizes="1px" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e106 50w, /images/green-16x16.png?e106 51w" sizes="(min-width:0) or (unknown-general-enclosed !) 1px"> ref sizes="1px" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e107 50w, /images/green-16x16.png?e107 51w" sizes="not ((min-width:0) or (unknown "general-enclosed")) 100vw, 1px"> ref sizes="1px" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e108 50w, /images/green-16x16.png?e108 51w" sizes="(max-width:0) or (unknown-general-enclosed !) 100vw, 1px"> ref sizes="1px" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e109 50w, /images/green-16x16.png?e109 51w" sizes="not ((max-width:0) or (unknown "general-enclosed")) 100vw, 1px"> ref sizes="1px" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f48 50w, /images/green-16x16.png?f48 51w" sizes="calc(1px"> ref sizes="1px" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f48a 50w, /images/green-16x16.png?f48a 51w" sizes="min(1px, 200vw"> ref sizes="1px" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f48b 50w, /images/green-16x16.png?f48b 51w" sizes="max(-200vw, 1px"> ref sizes="1px" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f49 50w, /images/green-16x16.png?f49 51w" sizes="(min-width:0) calc(1px"> ref sizes="1px" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f49a 50w, /images/green-16x16.png?f49a 51w" sizes="(min-width:0) min(1px, 200vw"> ref sizes="1px" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f49b 50w, /images/green-16x16.png?f49b 51w" sizes="(min-width:0) max(-200vw, 1px"> ref sizes="1px" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f2 50w, /images/green-16x16.png?f2 51w" sizes=""> ref sizes="100vw" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f3 50w, /images/green-16x16.png?f3 51w" sizes=","> ref sizes="100vw" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f4 50w, /images/green-16x16.png?f4 51w" sizes="-1px"> ref sizes="100vw" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f5 50w, /images/green-16x16.png?f5 51w" sizes="1"> ref sizes="100vw" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f6 50w, /images/green-16x16.png?f6 51w" sizes="0.1%"> ref sizes="100vw" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f7 50w, /images/green-16x16.png?f7 51w" sizes="0.1deg"> ref sizes="100vw" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f8 50w, /images/green-16x16.png?f8 51w" sizes="0.1grad"> ref sizes="100vw" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f9 50w, /images/green-16x16.png?f9 51w" sizes="0.1rad"> ref sizes="100vw" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f10 50w, /images/green-16x16.png?f10 51w" sizes="0.1turn"> ref sizes="100vw" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f11 50w, /images/green-16x16.png?f11 51w" sizes="0.1s"> ref sizes="100vw" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f12 50w, /images/green-16x16.png?f12 51w" sizes="0.1ms"> ref sizes="100vw" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f13 50w, /images/green-16x16.png?f13 51w" sizes="0.1Hz"> ref sizes="100vw" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f14 50w, /images/green-16x16.png?f14 51w" sizes="0.1kHz"> ref sizes="100vw" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f15 50w, /images/green-16x16.png?f15 51w" sizes="0.1dpi"> ref sizes="100vw" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f16 50w, /images/green-16x16.png?f16 51w" sizes="0.1dpcm"> ref sizes="100vw" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f17 50w, /images/green-16x16.png?f17 51w" sizes="0.1dppx"> ref sizes="100vw" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f17a 50w, /images/green-16x16.png?f17a 51w" sizes="0.1x"> ref sizes="100vw" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f18 50w, /images/green-16x16.png?f18 51w" data-foo="1px" sizes="attr(data-foo, length, 1px)"> ref sizes="100vw" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f19 50w, /images/green-16x16.png?f19 51w" data-foo="1" sizes="attr(data-foo, px, 1px)"> ref sizes="100vw" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f20 50w, /images/green-16x16.png?f20 51w" sizes="toggle(1px)"> ref sizes="100vw" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f21 50w, /images/green-16x16.png?f21 51w" sizes="inherit"> ref sizes="100vw" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f22 50w, /images/green-16x16.png?f22 51w" sizes="auto"> ref sizes="100vw" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f23 50w, /images/green-16x16.png?f23 51w" sizes="initial"> ref sizes="100vw" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f24 50w, /images/green-16x16.png?f24 51w" sizes="unset"> ref sizes="100vw" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f25 50w, /images/green-16x16.png?f25 51w" sizes="default"> ref sizes="100vw" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f26 50w, /images/green-16x16.png?f26 51w" sizes="1/* */px"> ref sizes="100vw" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f27 50w, /images/green-16x16.png?f27 51w" sizes="1p/* */x"> ref sizes="100vw" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f28 50w, /images/green-16x16.png?f28 51w" sizes="-/**/0"> ref sizes="100vw" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f29 50w, /images/green-16x16.png?f29 51w" sizes="((),1px"> ref sizes="100vw" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f30 50w, /images/green-16x16.png?f30 51w" sizes="x(x(),1px"> ref sizes="100vw" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f31 50w, /images/green-16x16.png?f31 51w" sizes="{{},1px"> ref sizes="100vw" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f32 50w, /images/green-16x16.png?f32 51w" sizes="[[\],1px"> ref sizes="100vw" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f33 50w, /images/green-16x16.png?f33 51w" sizes="1px !important"> ref sizes="100vw" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f34 50w, /images/green-16x16.png?f34 51w" sizes="\\1px"> ref sizes="100vw" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f35 50w, /images/green-16x16.png?f35 51w" sizes="all 1px"> ref sizes="100vw" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f36 50w, /images/green-16x16.png?f36 51w" sizes="all and (min-width:0) 1px"> ref sizes="100vw" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f37 50w, /images/green-16x16.png?f37 51w" sizes="min-width:0 1px"> ref sizes="100vw" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f38 50w, /images/green-16x16.png?f38 51w" sizes="100vw, 1px"> ref sizes="100vw" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f39 50w, /images/green-16x16.png?f39 51w" sizes="100vw, (min-width:0) 1px"> ref sizes="100vw" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f40 50w, /images/green-16x16.png?f40 51w" sizes="foo bar"> ref sizes="100vw" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f41 50w, /images/green-16x16.png?f41 51w" sizes="foo-bar"> ref sizes="100vw" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f42 50w, /images/green-16x16.png?f42 51w" sizes="(min-width:0) 1px foo bar"> ref sizes="100vw" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f43 50w, /images/green-16x16.png?f43 51w" sizes="(min-width:0) 0.1%"> ref sizes="100vw" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f44 50w, /images/green-16x16.png?f44 51w" sizes="(min-width:0) 1"> ref sizes="100vw" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f45 50w, /images/green-16x16.png?f45 51w" sizes="-1e0px"> ref sizes="100vw" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f46 50w, /images/green-16x16.png?f46 51w" sizes="1e1.5px"> ref sizes="100vw" (display:none)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f47 50w, /images/green-16x16.png?f47 51w" style="--foo: 1px" sizes="var(--foo)"> ref sizes="100vw" (display:none)] + expected: FAIL + diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-quirks-mode.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-quirks-mode.html.ini new file mode 100644 index 00000000000..1283d4eaf81 --- /dev/null +++ b/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-quirks-mode.html.ini @@ -0,0 +1,514 @@ +[parse-a-sizes-attribute-quirks-mode.html] + [<img srcset="/images/green-1x1.png?a2 300w, /images/green-16x16.png?a2 301w"> ref sizes="100vw" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?b2 450w, /images/green-16x16.png?b2 451w"> ref sizes="100vw" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?c2 600w, /images/green-16x16.png?c2 601w"> ref sizes="100vw" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?d2 900w, /images/green-16x16.png?d2 901w"> ref sizes="100vw" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e2 50w, /images/green-16x16.png?e2 51w" sizes="0"> ref sizes="1px" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e3 50w, /images/green-16x16.png?e3 51w" sizes="-0"> ref sizes="1px" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e4 50w, /images/green-16x16.png?e4 51w" sizes="+0"> ref sizes="1px" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e5 50w, /images/green-16x16.png?e5 51w" sizes="+1px"> ref sizes="1px" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e6 50w, /images/green-16x16.png?e6 51w" sizes=".1px"> ref sizes="1px" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e7 50w, /images/green-16x16.png?e7 51w" sizes="0.1em"> ref sizes="1px" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e8 50w, /images/green-16x16.png?e8 51w" sizes="0.1ex"> ref sizes="1px" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e9 50w, /images/green-16x16.png?e9 51w" sizes="0.1ch"> ref sizes="1px" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e10 50w, /images/green-16x16.png?e10 51w" sizes="0.1rem"> ref sizes="1px" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e11 50w, /images/green-16x16.png?e11 51w" sizes="0.1vw"> ref sizes="1px" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e12 50w, /images/green-16x16.png?e12 51w" sizes="0.1vh"> ref sizes="1px" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e13 50w, /images/green-16x16.png?e13 51w" sizes="0.1vmin"> ref sizes="1px" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e14 50w, /images/green-16x16.png?e14 51w" sizes="0.1vmax"> ref sizes="1px" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e15 50w, /images/green-16x16.png?e15 51w" sizes="0.1cm"> ref sizes="1px" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e16 50w, /images/green-16x16.png?e16 51w" sizes="1mm"> ref sizes="1px" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e17 50w, /images/green-16x16.png?e17 51w" sizes="1q"> ref sizes="1px" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e18 50w, /images/green-16x16.png?e18 51w" sizes="0.01in"> ref sizes="1px" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e19 50w, /images/green-16x16.png?e19 51w" sizes="0.1pc"> ref sizes="1px" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e20 50w, /images/green-16x16.png?e20 51w" sizes="0.1pt"> ref sizes="1px" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e21 50w, /images/green-16x16.png?e21 51w" sizes="/* */1px/* */"> ref sizes="1px" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e22 50w, /images/green-16x16.png?e22 51w" sizes=" /**/ /**/ 1px /**/ /**/ "> ref sizes="1px" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e23 50w, /images/green-16x16.png?e23 51w" sizes="(),1px"> ref sizes="1px" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e24 50w, /images/green-16x16.png?e24 51w" sizes="x(),1px"> ref sizes="1px" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e25 50w, /images/green-16x16.png?e25 51w" sizes="{},1px"> ref sizes="1px" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e26 50w, /images/green-16x16.png?e26 51w" sizes="[\],1px"> ref sizes="1px" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e27 50w, /images/green-16x16.png?e27 51w" sizes="1px,("> ref sizes="1px" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e28 50w, /images/green-16x16.png?e28 51w" sizes="1px,x("> ref sizes="1px" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e29 50w, /images/green-16x16.png?e29 51w" sizes="1px,{"> ref sizes="1px" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e30 50w, /images/green-16x16.png?e30 51w" sizes="1px,["> ref sizes="1px" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e31 50w, /images/green-16x16.png?e31 51w" sizes="\\(,1px"> ref sizes="1px" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e32 50w, /images/green-16x16.png?e32 51w" sizes="x\\(,1px"> ref sizes="1px" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e33 50w, /images/green-16x16.png?e33 51w" sizes="\\{,1px"> ref sizes="1px" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e34 50w, /images/green-16x16.png?e34 51w" sizes="\\[,1px"> ref sizes="1px" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e35 50w, /images/green-16x16.png?e35 51w" sizes="1\\p\\x"> ref sizes="1px" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e36 50w, /images/green-16x16.png?e36 51w" sizes="calc(1px)"> ref sizes="1px" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e36a 50w, /images/green-16x16.png?e36a 51w" sizes="min(1px, 100px)"> ref sizes="1px" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e36b 50w, /images/green-16x16.png?e36b 51w" sizes="min(-100px, 1px)"> ref sizes="1px" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e37 50w, /images/green-16x16.png?e37 51w" sizes="(min-width:0) calc(1px)"> ref sizes="1px" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e37a 50w, /images/green-16x16.png?e37a 51w" sizes="(min-width:0) min(1px, 100px)"> ref sizes="1px" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e37b 50w, /images/green-16x16.png?e37b 51w" sizes="(min-width:0) max(-100px, 1px)"> ref sizes="1px" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e38 50w, /images/green-16x16.png?e38 51w" sizes="(min-width:calc(0)) 1px"> ref sizes="1px" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e38a 50w, /images/green-16x16.png?e38a 51w" sizes="(min-width:min(0, 200vw)) 1px"> ref sizes="1px" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e38b 50w, /images/green-16x16.png?e38b 51w" sizes="(min-width:max(-200vw, 0)) 1px"> ref sizes="1px" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e39 50w, /images/green-16x16.png?e39 51w" sizes="(min-width:0) 1px, 100vw"> ref sizes="1px" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e40 50w, /images/green-16x16.png?e40 51w" sizes="(min-width:0) 1px, (min-width:0) 100vw, 100vw"> ref sizes="1px" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e41 50w, /images/green-16x16.png?e41 51w" sizes="(min-width:0) 1px"> ref sizes="1px" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e42 50w, /images/green-16x16.png?e42 51w" sizes="not (min-width:0) 100vw, 1px"> ref sizes="1px" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e43 50w, /images/green-16x16.png?e43 51w" sizes="(min-width:unknown-mf-value) 100vw, 1px"> ref sizes="1px" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e44 50w, /images/green-16x16.png?e44 51w" sizes="not (min-width:unknown-mf-value) 100vw, 1px"> ref sizes="1px" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e45 50w, /images/green-16x16.png?e45 51w" sizes="(min-width:-1px) 100vw, 1px"> ref sizes="1px" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e46 50w, /images/green-16x16.png?e46 51w" sizes="not (min-width:-1px) 100vw, 1px"> ref sizes="1px" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e47 50w, /images/green-16x16.png?e47 51w" sizes="(unknown-mf-name) 100vw, 1px"> ref sizes="1px" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e48 50w, /images/green-16x16.png?e48 51w" sizes="not (unknown-mf-name) 100vw, 1px"> ref sizes="1px" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e49 50w, /images/green-16x16.png?e49 51w" sizes="(unknown "general-enclosed") 100vw, 1px"> ref sizes="1px" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e50 50w, /images/green-16x16.png?e50 51w" sizes="not (unknown "general-enclosed") 100vw, 1px"> ref sizes="1px" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e51 50w, /images/green-16x16.png?e51 51w" sizes="unknown-general-enclosed(foo) 100vw, 1px"> ref sizes="1px" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e52 50w, /images/green-16x16.png?e52 51w" sizes="not unknown-general-enclosed(foo) 100vw, 1px"> ref sizes="1px" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e53 50w, /images/green-16x16.png?e53 51w" sizes="print 100vw, 1px"> ref sizes="1px" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e54 50w, /images/green-16x16.png?e54 51w" sizes="not print 100vw, 1px"> ref sizes="1px" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e55 50w, /images/green-16x16.png?e55 51w" sizes="unknown-media-type 100vw, 1px"> ref sizes="1px" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e56 50w, /images/green-16x16.png?e56 51w" sizes="not unknown-media-type 100vw, 1px"> ref sizes="1px" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e57 50w, /images/green-16x16.png?e57 51w" sizes="(min-width:0) or (min-width:0) 1px"> ref sizes="1px" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e58 50w, /images/green-16x16.png?e58 51w" sizes="(min-width:0) or (unknown-mf-name) 1px"> ref sizes="1px" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e59 50w, /images/green-16x16.png?e59 51w" sizes="(min-width:0) or (min-width:unknown-mf-value) 1px"> ref sizes="1px" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e60 50w, /images/green-16x16.png?e60 51w" sizes="(min-width:0) or (min-width:-1px) 1px"> ref sizes="1px" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e61 50w, /images/green-16x16.png?e61 51w" sizes="(min-width:0) or (unknown "general-enclosed") 1px"> ref sizes="1px" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e62 50w, /images/green-16x16.png?e62 51w" sizes="(min-width:0) or unknown-general-enclosed(foo) 1px"> ref sizes="1px" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e63 50w, /images/green-16x16.png?e63 51w" sizes="(min-width:0) or (!) 100vw, 1px"> ref sizes="1px" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e64 50w, /images/green-16x16.png?e64 51w" sizes="(min-width:0) or unknown-media-type 100vw, 1px"> ref sizes="1px" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e65 50w, /images/green-16x16.png?e65 51w" sizes="(123) 100vw, 1px"> ref sizes="1px" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e66 50w, /images/green-16x16.png?e66 51w" sizes="not (123) 100vw, 1px"> ref sizes="1px" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e67 50w, /images/green-16x16.png?e67 51w" sizes="(!) 100vw, 1px"> ref sizes="1px" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e68 50w, /images/green-16x16.png?e68 51w" sizes="not (!) 100vw, 1px"> ref sizes="1px" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e69 50w, /images/green-16x16.png?e69 51w" sizes="! 100vw, 1px"> ref sizes="1px" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e70 50w, /images/green-16x16.png?e70 51w" sizes="not ! 100vw, 1px"> ref sizes="1px" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e71 50w, /images/green-16x16.png?e71 51w" sizes="(\]) 100vw, 1px"> ref sizes="1px" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e72 50w, /images/green-16x16.png?e72 51w" sizes="not (\]) 100vw, 1px"> ref sizes="1px" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e73 50w, /images/green-16x16.png?e73 51w" sizes="\] 100vw, 1px"> ref sizes="1px" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e74 50w, /images/green-16x16.png?e74 51w" sizes="not \] 100vw, 1px"> ref sizes="1px" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e75 50w, /images/green-16x16.png?e75 51w" sizes="(}) 100vw, 1px"> ref sizes="1px" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e76 50w, /images/green-16x16.png?e76 51w" sizes="not (}) 100vw, 1px"> ref sizes="1px" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e77 50w, /images/green-16x16.png?e77 51w" sizes="} 100vw, 1px"> ref sizes="1px" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e78 50w, /images/green-16x16.png?e78 51w" sizes="not } 100vw, 1px"> ref sizes="1px" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e79 50w, /images/green-16x16.png?e79 51w" sizes=") 100vw, 1px"> ref sizes="1px" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e80 50w, /images/green-16x16.png?e80 51w" sizes="not ) 100vw, 1px"> ref sizes="1px" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e81 50w, /images/green-16x16.png?e81 51w" sizes="(;) 100vw, 1px"> ref sizes="1px" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e82 50w, /images/green-16x16.png?e82 51w" sizes="not (;) 100vw, 1px"> ref sizes="1px" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e83 50w, /images/green-16x16.png?e83 51w" sizes="(.) 100vw, 1px"> ref sizes="1px" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e84 50w, /images/green-16x16.png?e84 51w" sizes="not (.) 100vw, 1px"> ref sizes="1px" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e85 50w, /images/green-16x16.png?e85 51w" sizes="; 100vw, 1px"> ref sizes="1px" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e86 50w, /images/green-16x16.png?e86 51w" sizes="not ; 100vw, 1px"> ref sizes="1px" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e87 50w, /images/green-16x16.png?e87 51w" sizes=", 1px"> ref sizes="1px" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e88 50w, /images/green-16x16.png?e88 51w" sizes="1px,"> ref sizes="1px" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e89 50w, /images/green-16x16.png?e89 51w" sizes="(min-width:0) 1px,"> ref sizes="1px" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e90 50w, /images/green-16x16.png?e90 51w" sizes="-0e-0px"> ref sizes="1px" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e91 50w, /images/green-16x16.png?e91 51w" sizes="+0.11e+01px"> ref sizes="1px" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e92 50w, /images/green-16x16.png?e92 51w" sizes="0.2e1px"> ref sizes="1px" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e93 50w, /images/green-16x16.png?e93 51w" sizes="0.3E1px"> ref sizes="1px" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e94 50w, /images/green-16x16.png?e94 51w" sizes=".4E1px"> ref sizes="1px" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e95 50w, /images/green-16x16.png?e95 51w" sizes="all 100vw, 1px"> ref sizes="1px" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e96 50w, /images/green-16x16.png?e96 51w" sizes="all and (min-width:0) 100vw, 1px"> ref sizes="1px" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e97 50w, /images/green-16x16.png?e97 51w" sizes="min-width:0 100vw, 1px"> ref sizes="1px" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e98 50w, /images/green-16x16.png?e98 51w" sizes="1px, 100vw"> ref sizes="1px" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e99 50w, /images/green-16x16.png?e99 51w" sizes="1px, (min-width:0) 100vw"> ref sizes="1px" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e100 50w, /images/green-16x16.png?e100 51w" sizes="1px, foo bar"> ref sizes="1px" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e101 50w, /images/green-16x16.png?e101 51w" sizes="(min-width:0) 1px, foo bar"> ref sizes="1px" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e102 50w, /images/green-16x16.png?e102 51w" sizes="("grammar does not match") 100vw, 1px"> ref sizes="1px" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e103 50w, /images/green-16x16.png?e103 51w" sizes="not ("grammar does not match") 100vw, 1px"> ref sizes="1px" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e104 50w, /images/green-16x16.png?e104 51w" sizes="(unknown-general-enclosed !) 100vw, 1px"> ref sizes="1px" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e105 50w, /images/green-16x16.png?e105 51w" sizes="not (unknown-general-enclosed !) 100vw, 1px"> ref sizes="1px" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e106 50w, /images/green-16x16.png?e106 51w" sizes="(min-width:0) or (unknown-general-enclosed !) 1px"> ref sizes="1px" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e107 50w, /images/green-16x16.png?e107 51w" sizes="not ((min-width:0) or (unknown "general-enclosed")) 100vw, 1px"> ref sizes="1px" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e108 50w, /images/green-16x16.png?e108 51w" sizes="(max-width:0) or (unknown-general-enclosed !) 100vw, 1px"> ref sizes="1px" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e109 50w, /images/green-16x16.png?e109 51w" sizes="not ((max-width:0) or (unknown "general-enclosed")) 100vw, 1px"> ref sizes="1px" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f48 50w, /images/green-16x16.png?f48 51w" sizes="calc(1px"> ref sizes="1px" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f48a 50w, /images/green-16x16.png?f48a 51w" sizes="min(1px, 200vw"> ref sizes="1px" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f48b 50w, /images/green-16x16.png?f48b 51w" sizes="max(-200vw, 1px"> ref sizes="1px" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f49 50w, /images/green-16x16.png?f49 51w" sizes="(min-width:0) calc(1px"> ref sizes="1px" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f49a 50w, /images/green-16x16.png?f49a 51w" sizes="(min-width:0) min(1px, 200vw"> ref sizes="1px" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f49b 50w, /images/green-16x16.png?f49b 51w" sizes="(min-width:0) max(-200vw, 1px"> ref sizes="1px" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f2 50w, /images/green-16x16.png?f2 51w" sizes=""> ref sizes="100vw" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f3 50w, /images/green-16x16.png?f3 51w" sizes=","> ref sizes="100vw" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f4 50w, /images/green-16x16.png?f4 51w" sizes="-1px"> ref sizes="100vw" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f5 50w, /images/green-16x16.png?f5 51w" sizes="1"> ref sizes="100vw" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f6 50w, /images/green-16x16.png?f6 51w" sizes="0.1%"> ref sizes="100vw" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f7 50w, /images/green-16x16.png?f7 51w" sizes="0.1deg"> ref sizes="100vw" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f8 50w, /images/green-16x16.png?f8 51w" sizes="0.1grad"> ref sizes="100vw" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f9 50w, /images/green-16x16.png?f9 51w" sizes="0.1rad"> ref sizes="100vw" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f10 50w, /images/green-16x16.png?f10 51w" sizes="0.1turn"> ref sizes="100vw" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f11 50w, /images/green-16x16.png?f11 51w" sizes="0.1s"> ref sizes="100vw" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f12 50w, /images/green-16x16.png?f12 51w" sizes="0.1ms"> ref sizes="100vw" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f13 50w, /images/green-16x16.png?f13 51w" sizes="0.1Hz"> ref sizes="100vw" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f14 50w, /images/green-16x16.png?f14 51w" sizes="0.1kHz"> ref sizes="100vw" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f15 50w, /images/green-16x16.png?f15 51w" sizes="0.1dpi"> ref sizes="100vw" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f16 50w, /images/green-16x16.png?f16 51w" sizes="0.1dpcm"> ref sizes="100vw" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f17 50w, /images/green-16x16.png?f17 51w" sizes="0.1dppx"> ref sizes="100vw" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f17a 50w, /images/green-16x16.png?f17a 51w" sizes="0.1x"> ref sizes="100vw" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f18 50w, /images/green-16x16.png?f18 51w" data-foo="1px" sizes="attr(data-foo, length, 1px)"> ref sizes="100vw" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f19 50w, /images/green-16x16.png?f19 51w" data-foo="1" sizes="attr(data-foo, px, 1px)"> ref sizes="100vw" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f20 50w, /images/green-16x16.png?f20 51w" sizes="toggle(1px)"> ref sizes="100vw" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f21 50w, /images/green-16x16.png?f21 51w" sizes="inherit"> ref sizes="100vw" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f22 50w, /images/green-16x16.png?f22 51w" sizes="auto"> ref sizes="100vw" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f23 50w, /images/green-16x16.png?f23 51w" sizes="initial"> ref sizes="100vw" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f24 50w, /images/green-16x16.png?f24 51w" sizes="unset"> ref sizes="100vw" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f25 50w, /images/green-16x16.png?f25 51w" sizes="default"> ref sizes="100vw" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f26 50w, /images/green-16x16.png?f26 51w" sizes="1/* */px"> ref sizes="100vw" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f27 50w, /images/green-16x16.png?f27 51w" sizes="1p/* */x"> ref sizes="100vw" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f28 50w, /images/green-16x16.png?f28 51w" sizes="-/**/0"> ref sizes="100vw" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f29 50w, /images/green-16x16.png?f29 51w" sizes="((),1px"> ref sizes="100vw" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f30 50w, /images/green-16x16.png?f30 51w" sizes="x(x(),1px"> ref sizes="100vw" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f31 50w, /images/green-16x16.png?f31 51w" sizes="{{},1px"> ref sizes="100vw" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f32 50w, /images/green-16x16.png?f32 51w" sizes="[[\],1px"> ref sizes="100vw" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f33 50w, /images/green-16x16.png?f33 51w" sizes="1px !important"> ref sizes="100vw" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f34 50w, /images/green-16x16.png?f34 51w" sizes="\\1px"> ref sizes="100vw" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f35 50w, /images/green-16x16.png?f35 51w" sizes="all 1px"> ref sizes="100vw" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f36 50w, /images/green-16x16.png?f36 51w" sizes="all and (min-width:0) 1px"> ref sizes="100vw" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f37 50w, /images/green-16x16.png?f37 51w" sizes="min-width:0 1px"> ref sizes="100vw" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f38 50w, /images/green-16x16.png?f38 51w" sizes="100vw, 1px"> ref sizes="100vw" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f39 50w, /images/green-16x16.png?f39 51w" sizes="100vw, (min-width:0) 1px"> ref sizes="100vw" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f40 50w, /images/green-16x16.png?f40 51w" sizes="foo bar"> ref sizes="100vw" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f41 50w, /images/green-16x16.png?f41 51w" sizes="foo-bar"> ref sizes="100vw" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f42 50w, /images/green-16x16.png?f42 51w" sizes="(min-width:0) 1px foo bar"> ref sizes="100vw" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f43 50w, /images/green-16x16.png?f43 51w" sizes="(min-width:0) 0.1%"> ref sizes="100vw" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f44 50w, /images/green-16x16.png?f44 51w" sizes="(min-width:0) 1"> ref sizes="100vw" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f45 50w, /images/green-16x16.png?f45 51w" sizes="-1e0px"> ref sizes="100vw" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f46 50w, /images/green-16x16.png?f46 51w" sizes="1e1.5px"> ref sizes="100vw" (quirks mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f47 50w, /images/green-16x16.png?f47 51w" style="--foo: 1px" sizes="var(--foo)"> ref sizes="100vw" (quirks mode)] + expected: FAIL + diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-standards-mode.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-standards-mode.html.ini new file mode 100644 index 00000000000..33bf702e074 --- /dev/null +++ b/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-standards-mode.html.ini @@ -0,0 +1,514 @@ +[parse-a-sizes-attribute-standards-mode.html] + [<img srcset="/images/green-1x1.png?a2 300w, /images/green-16x16.png?a2 301w"> ref sizes="100vw" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?b2 450w, /images/green-16x16.png?b2 451w"> ref sizes="100vw" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?c2 600w, /images/green-16x16.png?c2 601w"> ref sizes="100vw" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?d2 900w, /images/green-16x16.png?d2 901w"> ref sizes="100vw" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e2 50w, /images/green-16x16.png?e2 51w" sizes="0"> ref sizes="1px" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e3 50w, /images/green-16x16.png?e3 51w" sizes="-0"> ref sizes="1px" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e4 50w, /images/green-16x16.png?e4 51w" sizes="+0"> ref sizes="1px" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e5 50w, /images/green-16x16.png?e5 51w" sizes="+1px"> ref sizes="1px" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e6 50w, /images/green-16x16.png?e6 51w" sizes=".1px"> ref sizes="1px" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e7 50w, /images/green-16x16.png?e7 51w" sizes="0.1em"> ref sizes="1px" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e8 50w, /images/green-16x16.png?e8 51w" sizes="0.1ex"> ref sizes="1px" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e9 50w, /images/green-16x16.png?e9 51w" sizes="0.1ch"> ref sizes="1px" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e10 50w, /images/green-16x16.png?e10 51w" sizes="0.1rem"> ref sizes="1px" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e11 50w, /images/green-16x16.png?e11 51w" sizes="0.1vw"> ref sizes="1px" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e12 50w, /images/green-16x16.png?e12 51w" sizes="0.1vh"> ref sizes="1px" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e13 50w, /images/green-16x16.png?e13 51w" sizes="0.1vmin"> ref sizes="1px" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e14 50w, /images/green-16x16.png?e14 51w" sizes="0.1vmax"> ref sizes="1px" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e15 50w, /images/green-16x16.png?e15 51w" sizes="0.1cm"> ref sizes="1px" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e16 50w, /images/green-16x16.png?e16 51w" sizes="1mm"> ref sizes="1px" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e17 50w, /images/green-16x16.png?e17 51w" sizes="1q"> ref sizes="1px" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e18 50w, /images/green-16x16.png?e18 51w" sizes="0.01in"> ref sizes="1px" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e19 50w, /images/green-16x16.png?e19 51w" sizes="0.1pc"> ref sizes="1px" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e20 50w, /images/green-16x16.png?e20 51w" sizes="0.1pt"> ref sizes="1px" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e21 50w, /images/green-16x16.png?e21 51w" sizes="/* */1px/* */"> ref sizes="1px" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e22 50w, /images/green-16x16.png?e22 51w" sizes=" /**/ /**/ 1px /**/ /**/ "> ref sizes="1px" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e23 50w, /images/green-16x16.png?e23 51w" sizes="(),1px"> ref sizes="1px" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e24 50w, /images/green-16x16.png?e24 51w" sizes="x(),1px"> ref sizes="1px" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e25 50w, /images/green-16x16.png?e25 51w" sizes="{},1px"> ref sizes="1px" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e26 50w, /images/green-16x16.png?e26 51w" sizes="[\],1px"> ref sizes="1px" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e27 50w, /images/green-16x16.png?e27 51w" sizes="1px,("> ref sizes="1px" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e28 50w, /images/green-16x16.png?e28 51w" sizes="1px,x("> ref sizes="1px" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e29 50w, /images/green-16x16.png?e29 51w" sizes="1px,{"> ref sizes="1px" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e30 50w, /images/green-16x16.png?e30 51w" sizes="1px,["> ref sizes="1px" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e31 50w, /images/green-16x16.png?e31 51w" sizes="\\(,1px"> ref sizes="1px" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e32 50w, /images/green-16x16.png?e32 51w" sizes="x\\(,1px"> ref sizes="1px" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e33 50w, /images/green-16x16.png?e33 51w" sizes="\\{,1px"> ref sizes="1px" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e34 50w, /images/green-16x16.png?e34 51w" sizes="\\[,1px"> ref sizes="1px" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e35 50w, /images/green-16x16.png?e35 51w" sizes="1\\p\\x"> ref sizes="1px" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e36 50w, /images/green-16x16.png?e36 51w" sizes="calc(1px)"> ref sizes="1px" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e36a 50w, /images/green-16x16.png?e36a 51w" sizes="min(1px, 100px)"> ref sizes="1px" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e36b 50w, /images/green-16x16.png?e36b 51w" sizes="min(-100px, 1px)"> ref sizes="1px" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e37 50w, /images/green-16x16.png?e37 51w" sizes="(min-width:0) calc(1px)"> ref sizes="1px" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e37a 50w, /images/green-16x16.png?e37a 51w" sizes="(min-width:0) min(1px, 100px)"> ref sizes="1px" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e37b 50w, /images/green-16x16.png?e37b 51w" sizes="(min-width:0) max(-100px, 1px)"> ref sizes="1px" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e38 50w, /images/green-16x16.png?e38 51w" sizes="(min-width:calc(0)) 1px"> ref sizes="1px" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e38a 50w, /images/green-16x16.png?e38a 51w" sizes="(min-width:min(0, 200vw)) 1px"> ref sizes="1px" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e38b 50w, /images/green-16x16.png?e38b 51w" sizes="(min-width:max(-200vw, 0)) 1px"> ref sizes="1px" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e39 50w, /images/green-16x16.png?e39 51w" sizes="(min-width:0) 1px, 100vw"> ref sizes="1px" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e40 50w, /images/green-16x16.png?e40 51w" sizes="(min-width:0) 1px, (min-width:0) 100vw, 100vw"> ref sizes="1px" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e41 50w, /images/green-16x16.png?e41 51w" sizes="(min-width:0) 1px"> ref sizes="1px" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e42 50w, /images/green-16x16.png?e42 51w" sizes="not (min-width:0) 100vw, 1px"> ref sizes="1px" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e43 50w, /images/green-16x16.png?e43 51w" sizes="(min-width:unknown-mf-value) 100vw, 1px"> ref sizes="1px" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e44 50w, /images/green-16x16.png?e44 51w" sizes="not (min-width:unknown-mf-value) 100vw, 1px"> ref sizes="1px" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e45 50w, /images/green-16x16.png?e45 51w" sizes="(min-width:-1px) 100vw, 1px"> ref sizes="1px" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e46 50w, /images/green-16x16.png?e46 51w" sizes="not (min-width:-1px) 100vw, 1px"> ref sizes="1px" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e47 50w, /images/green-16x16.png?e47 51w" sizes="(unknown-mf-name) 100vw, 1px"> ref sizes="1px" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e48 50w, /images/green-16x16.png?e48 51w" sizes="not (unknown-mf-name) 100vw, 1px"> ref sizes="1px" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e49 50w, /images/green-16x16.png?e49 51w" sizes="(unknown "general-enclosed") 100vw, 1px"> ref sizes="1px" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e50 50w, /images/green-16x16.png?e50 51w" sizes="not (unknown "general-enclosed") 100vw, 1px"> ref sizes="1px" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e51 50w, /images/green-16x16.png?e51 51w" sizes="unknown-general-enclosed(foo) 100vw, 1px"> ref sizes="1px" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e52 50w, /images/green-16x16.png?e52 51w" sizes="not unknown-general-enclosed(foo) 100vw, 1px"> ref sizes="1px" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e53 50w, /images/green-16x16.png?e53 51w" sizes="print 100vw, 1px"> ref sizes="1px" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e54 50w, /images/green-16x16.png?e54 51w" sizes="not print 100vw, 1px"> ref sizes="1px" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e55 50w, /images/green-16x16.png?e55 51w" sizes="unknown-media-type 100vw, 1px"> ref sizes="1px" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e56 50w, /images/green-16x16.png?e56 51w" sizes="not unknown-media-type 100vw, 1px"> ref sizes="1px" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e57 50w, /images/green-16x16.png?e57 51w" sizes="(min-width:0) or (min-width:0) 1px"> ref sizes="1px" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e58 50w, /images/green-16x16.png?e58 51w" sizes="(min-width:0) or (unknown-mf-name) 1px"> ref sizes="1px" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e59 50w, /images/green-16x16.png?e59 51w" sizes="(min-width:0) or (min-width:unknown-mf-value) 1px"> ref sizes="1px" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e60 50w, /images/green-16x16.png?e60 51w" sizes="(min-width:0) or (min-width:-1px) 1px"> ref sizes="1px" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e61 50w, /images/green-16x16.png?e61 51w" sizes="(min-width:0) or (unknown "general-enclosed") 1px"> ref sizes="1px" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e62 50w, /images/green-16x16.png?e62 51w" sizes="(min-width:0) or unknown-general-enclosed(foo) 1px"> ref sizes="1px" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e63 50w, /images/green-16x16.png?e63 51w" sizes="(min-width:0) or (!) 100vw, 1px"> ref sizes="1px" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e64 50w, /images/green-16x16.png?e64 51w" sizes="(min-width:0) or unknown-media-type 100vw, 1px"> ref sizes="1px" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e65 50w, /images/green-16x16.png?e65 51w" sizes="(123) 100vw, 1px"> ref sizes="1px" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e66 50w, /images/green-16x16.png?e66 51w" sizes="not (123) 100vw, 1px"> ref sizes="1px" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e67 50w, /images/green-16x16.png?e67 51w" sizes="(!) 100vw, 1px"> ref sizes="1px" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e68 50w, /images/green-16x16.png?e68 51w" sizes="not (!) 100vw, 1px"> ref sizes="1px" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e69 50w, /images/green-16x16.png?e69 51w" sizes="! 100vw, 1px"> ref sizes="1px" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e70 50w, /images/green-16x16.png?e70 51w" sizes="not ! 100vw, 1px"> ref sizes="1px" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e71 50w, /images/green-16x16.png?e71 51w" sizes="(\]) 100vw, 1px"> ref sizes="1px" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e72 50w, /images/green-16x16.png?e72 51w" sizes="not (\]) 100vw, 1px"> ref sizes="1px" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e73 50w, /images/green-16x16.png?e73 51w" sizes="\] 100vw, 1px"> ref sizes="1px" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e74 50w, /images/green-16x16.png?e74 51w" sizes="not \] 100vw, 1px"> ref sizes="1px" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e75 50w, /images/green-16x16.png?e75 51w" sizes="(}) 100vw, 1px"> ref sizes="1px" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e76 50w, /images/green-16x16.png?e76 51w" sizes="not (}) 100vw, 1px"> ref sizes="1px" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e77 50w, /images/green-16x16.png?e77 51w" sizes="} 100vw, 1px"> ref sizes="1px" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e78 50w, /images/green-16x16.png?e78 51w" sizes="not } 100vw, 1px"> ref sizes="1px" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e79 50w, /images/green-16x16.png?e79 51w" sizes=") 100vw, 1px"> ref sizes="1px" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e80 50w, /images/green-16x16.png?e80 51w" sizes="not ) 100vw, 1px"> ref sizes="1px" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e81 50w, /images/green-16x16.png?e81 51w" sizes="(;) 100vw, 1px"> ref sizes="1px" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e82 50w, /images/green-16x16.png?e82 51w" sizes="not (;) 100vw, 1px"> ref sizes="1px" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e83 50w, /images/green-16x16.png?e83 51w" sizes="(.) 100vw, 1px"> ref sizes="1px" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e84 50w, /images/green-16x16.png?e84 51w" sizes="not (.) 100vw, 1px"> ref sizes="1px" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e85 50w, /images/green-16x16.png?e85 51w" sizes="; 100vw, 1px"> ref sizes="1px" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e86 50w, /images/green-16x16.png?e86 51w" sizes="not ; 100vw, 1px"> ref sizes="1px" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e87 50w, /images/green-16x16.png?e87 51w" sizes=", 1px"> ref sizes="1px" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e88 50w, /images/green-16x16.png?e88 51w" sizes="1px,"> ref sizes="1px" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e89 50w, /images/green-16x16.png?e89 51w" sizes="(min-width:0) 1px,"> ref sizes="1px" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e90 50w, /images/green-16x16.png?e90 51w" sizes="-0e-0px"> ref sizes="1px" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e91 50w, /images/green-16x16.png?e91 51w" sizes="+0.11e+01px"> ref sizes="1px" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e92 50w, /images/green-16x16.png?e92 51w" sizes="0.2e1px"> ref sizes="1px" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e93 50w, /images/green-16x16.png?e93 51w" sizes="0.3E1px"> ref sizes="1px" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e94 50w, /images/green-16x16.png?e94 51w" sizes=".4E1px"> ref sizes="1px" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e95 50w, /images/green-16x16.png?e95 51w" sizes="all 100vw, 1px"> ref sizes="1px" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e96 50w, /images/green-16x16.png?e96 51w" sizes="all and (min-width:0) 100vw, 1px"> ref sizes="1px" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e97 50w, /images/green-16x16.png?e97 51w" sizes="min-width:0 100vw, 1px"> ref sizes="1px" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e98 50w, /images/green-16x16.png?e98 51w" sizes="1px, 100vw"> ref sizes="1px" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e99 50w, /images/green-16x16.png?e99 51w" sizes="1px, (min-width:0) 100vw"> ref sizes="1px" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e100 50w, /images/green-16x16.png?e100 51w" sizes="1px, foo bar"> ref sizes="1px" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e101 50w, /images/green-16x16.png?e101 51w" sizes="(min-width:0) 1px, foo bar"> ref sizes="1px" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e102 50w, /images/green-16x16.png?e102 51w" sizes="("grammar does not match") 100vw, 1px"> ref sizes="1px" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e103 50w, /images/green-16x16.png?e103 51w" sizes="not ("grammar does not match") 100vw, 1px"> ref sizes="1px" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e104 50w, /images/green-16x16.png?e104 51w" sizes="(unknown-general-enclosed !) 100vw, 1px"> ref sizes="1px" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e105 50w, /images/green-16x16.png?e105 51w" sizes="not (unknown-general-enclosed !) 100vw, 1px"> ref sizes="1px" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e106 50w, /images/green-16x16.png?e106 51w" sizes="(min-width:0) or (unknown-general-enclosed !) 1px"> ref sizes="1px" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e107 50w, /images/green-16x16.png?e107 51w" sizes="not ((min-width:0) or (unknown "general-enclosed")) 100vw, 1px"> ref sizes="1px" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e108 50w, /images/green-16x16.png?e108 51w" sizes="(max-width:0) or (unknown-general-enclosed !) 100vw, 1px"> ref sizes="1px" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e109 50w, /images/green-16x16.png?e109 51w" sizes="not ((max-width:0) or (unknown "general-enclosed")) 100vw, 1px"> ref sizes="1px" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f48 50w, /images/green-16x16.png?f48 51w" sizes="calc(1px"> ref sizes="1px" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f48a 50w, /images/green-16x16.png?f48a 51w" sizes="min(1px, 200vw"> ref sizes="1px" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f48b 50w, /images/green-16x16.png?f48b 51w" sizes="max(-200vw, 1px"> ref sizes="1px" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f49 50w, /images/green-16x16.png?f49 51w" sizes="(min-width:0) calc(1px"> ref sizes="1px" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f49a 50w, /images/green-16x16.png?f49a 51w" sizes="(min-width:0) min(1px, 200vw"> ref sizes="1px" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f49b 50w, /images/green-16x16.png?f49b 51w" sizes="(min-width:0) max(-200vw, 1px"> ref sizes="1px" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f2 50w, /images/green-16x16.png?f2 51w" sizes=""> ref sizes="100vw" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f3 50w, /images/green-16x16.png?f3 51w" sizes=","> ref sizes="100vw" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f4 50w, /images/green-16x16.png?f4 51w" sizes="-1px"> ref sizes="100vw" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f5 50w, /images/green-16x16.png?f5 51w" sizes="1"> ref sizes="100vw" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f6 50w, /images/green-16x16.png?f6 51w" sizes="0.1%"> ref sizes="100vw" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f7 50w, /images/green-16x16.png?f7 51w" sizes="0.1deg"> ref sizes="100vw" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f8 50w, /images/green-16x16.png?f8 51w" sizes="0.1grad"> ref sizes="100vw" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f9 50w, /images/green-16x16.png?f9 51w" sizes="0.1rad"> ref sizes="100vw" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f10 50w, /images/green-16x16.png?f10 51w" sizes="0.1turn"> ref sizes="100vw" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f11 50w, /images/green-16x16.png?f11 51w" sizes="0.1s"> ref sizes="100vw" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f12 50w, /images/green-16x16.png?f12 51w" sizes="0.1ms"> ref sizes="100vw" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f13 50w, /images/green-16x16.png?f13 51w" sizes="0.1Hz"> ref sizes="100vw" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f14 50w, /images/green-16x16.png?f14 51w" sizes="0.1kHz"> ref sizes="100vw" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f15 50w, /images/green-16x16.png?f15 51w" sizes="0.1dpi"> ref sizes="100vw" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f16 50w, /images/green-16x16.png?f16 51w" sizes="0.1dpcm"> ref sizes="100vw" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f17 50w, /images/green-16x16.png?f17 51w" sizes="0.1dppx"> ref sizes="100vw" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f17a 50w, /images/green-16x16.png?f17a 51w" sizes="0.1x"> ref sizes="100vw" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f18 50w, /images/green-16x16.png?f18 51w" data-foo="1px" sizes="attr(data-foo, length, 1px)"> ref sizes="100vw" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f19 50w, /images/green-16x16.png?f19 51w" data-foo="1" sizes="attr(data-foo, px, 1px)"> ref sizes="100vw" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f20 50w, /images/green-16x16.png?f20 51w" sizes="toggle(1px)"> ref sizes="100vw" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f21 50w, /images/green-16x16.png?f21 51w" sizes="inherit"> ref sizes="100vw" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f22 50w, /images/green-16x16.png?f22 51w" sizes="auto"> ref sizes="100vw" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f23 50w, /images/green-16x16.png?f23 51w" sizes="initial"> ref sizes="100vw" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f24 50w, /images/green-16x16.png?f24 51w" sizes="unset"> ref sizes="100vw" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f25 50w, /images/green-16x16.png?f25 51w" sizes="default"> ref sizes="100vw" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f26 50w, /images/green-16x16.png?f26 51w" sizes="1/* */px"> ref sizes="100vw" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f27 50w, /images/green-16x16.png?f27 51w" sizes="1p/* */x"> ref sizes="100vw" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f28 50w, /images/green-16x16.png?f28 51w" sizes="-/**/0"> ref sizes="100vw" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f29 50w, /images/green-16x16.png?f29 51w" sizes="((),1px"> ref sizes="100vw" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f30 50w, /images/green-16x16.png?f30 51w" sizes="x(x(),1px"> ref sizes="100vw" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f31 50w, /images/green-16x16.png?f31 51w" sizes="{{},1px"> ref sizes="100vw" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f32 50w, /images/green-16x16.png?f32 51w" sizes="[[\],1px"> ref sizes="100vw" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f33 50w, /images/green-16x16.png?f33 51w" sizes="1px !important"> ref sizes="100vw" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f34 50w, /images/green-16x16.png?f34 51w" sizes="\\1px"> ref sizes="100vw" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f35 50w, /images/green-16x16.png?f35 51w" sizes="all 1px"> ref sizes="100vw" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f36 50w, /images/green-16x16.png?f36 51w" sizes="all and (min-width:0) 1px"> ref sizes="100vw" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f37 50w, /images/green-16x16.png?f37 51w" sizes="min-width:0 1px"> ref sizes="100vw" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f38 50w, /images/green-16x16.png?f38 51w" sizes="100vw, 1px"> ref sizes="100vw" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f39 50w, /images/green-16x16.png?f39 51w" sizes="100vw, (min-width:0) 1px"> ref sizes="100vw" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f40 50w, /images/green-16x16.png?f40 51w" sizes="foo bar"> ref sizes="100vw" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f41 50w, /images/green-16x16.png?f41 51w" sizes="foo-bar"> ref sizes="100vw" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f42 50w, /images/green-16x16.png?f42 51w" sizes="(min-width:0) 1px foo bar"> ref sizes="100vw" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f43 50w, /images/green-16x16.png?f43 51w" sizes="(min-width:0) 0.1%"> ref sizes="100vw" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f44 50w, /images/green-16x16.png?f44 51w" sizes="(min-width:0) 1"> ref sizes="100vw" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f45 50w, /images/green-16x16.png?f45 51w" sizes="-1e0px"> ref sizes="100vw" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f46 50w, /images/green-16x16.png?f46 51w" sizes="1e1.5px"> ref sizes="100vw" (standards mode)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f47 50w, /images/green-16x16.png?f47 51w" style="--foo: 1px" sizes="var(--foo)"> ref sizes="100vw" (standards mode)] + expected: FAIL + diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-width-1000px.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-width-1000px.html.ini new file mode 100644 index 00000000000..f58c2967aed --- /dev/null +++ b/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-width-1000px.html.ini @@ -0,0 +1,514 @@ +[parse-a-sizes-attribute-width-1000px.html] + [<img srcset="/images/green-1x1.png?a2 300w, /images/green-16x16.png?a2 301w"> ref sizes="100vw" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?b2 450w, /images/green-16x16.png?b2 451w"> ref sizes="100vw" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?c2 600w, /images/green-16x16.png?c2 601w"> ref sizes="100vw" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?d2 900w, /images/green-16x16.png?d2 901w"> ref sizes="100vw" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e2 50w, /images/green-16x16.png?e2 51w" sizes="0"> ref sizes="1px" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e3 50w, /images/green-16x16.png?e3 51w" sizes="-0"> ref sizes="1px" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e4 50w, /images/green-16x16.png?e4 51w" sizes="+0"> ref sizes="1px" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e5 50w, /images/green-16x16.png?e5 51w" sizes="+1px"> ref sizes="1px" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e6 50w, /images/green-16x16.png?e6 51w" sizes=".1px"> ref sizes="1px" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e7 50w, /images/green-16x16.png?e7 51w" sizes="0.1em"> ref sizes="1px" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e8 50w, /images/green-16x16.png?e8 51w" sizes="0.1ex"> ref sizes="1px" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e9 50w, /images/green-16x16.png?e9 51w" sizes="0.1ch"> ref sizes="1px" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e10 50w, /images/green-16x16.png?e10 51w" sizes="0.1rem"> ref sizes="1px" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e11 50w, /images/green-16x16.png?e11 51w" sizes="0.1vw"> ref sizes="1px" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e12 50w, /images/green-16x16.png?e12 51w" sizes="0.1vh"> ref sizes="1px" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e13 50w, /images/green-16x16.png?e13 51w" sizes="0.1vmin"> ref sizes="1px" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e14 50w, /images/green-16x16.png?e14 51w" sizes="0.1vmax"> ref sizes="1px" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e15 50w, /images/green-16x16.png?e15 51w" sizes="0.1cm"> ref sizes="1px" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e16 50w, /images/green-16x16.png?e16 51w" sizes="1mm"> ref sizes="1px" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e17 50w, /images/green-16x16.png?e17 51w" sizes="1q"> ref sizes="1px" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e18 50w, /images/green-16x16.png?e18 51w" sizes="0.01in"> ref sizes="1px" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e19 50w, /images/green-16x16.png?e19 51w" sizes="0.1pc"> ref sizes="1px" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e20 50w, /images/green-16x16.png?e20 51w" sizes="0.1pt"> ref sizes="1px" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e21 50w, /images/green-16x16.png?e21 51w" sizes="/* */1px/* */"> ref sizes="1px" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e22 50w, /images/green-16x16.png?e22 51w" sizes=" /**/ /**/ 1px /**/ /**/ "> ref sizes="1px" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e23 50w, /images/green-16x16.png?e23 51w" sizes="(),1px"> ref sizes="1px" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e24 50w, /images/green-16x16.png?e24 51w" sizes="x(),1px"> ref sizes="1px" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e25 50w, /images/green-16x16.png?e25 51w" sizes="{},1px"> ref sizes="1px" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e26 50w, /images/green-16x16.png?e26 51w" sizes="[\],1px"> ref sizes="1px" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e27 50w, /images/green-16x16.png?e27 51w" sizes="1px,("> ref sizes="1px" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e28 50w, /images/green-16x16.png?e28 51w" sizes="1px,x("> ref sizes="1px" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e29 50w, /images/green-16x16.png?e29 51w" sizes="1px,{"> ref sizes="1px" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e30 50w, /images/green-16x16.png?e30 51w" sizes="1px,["> ref sizes="1px" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e31 50w, /images/green-16x16.png?e31 51w" sizes="\\(,1px"> ref sizes="1px" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e32 50w, /images/green-16x16.png?e32 51w" sizes="x\\(,1px"> ref sizes="1px" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e33 50w, /images/green-16x16.png?e33 51w" sizes="\\{,1px"> ref sizes="1px" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e34 50w, /images/green-16x16.png?e34 51w" sizes="\\[,1px"> ref sizes="1px" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e35 50w, /images/green-16x16.png?e35 51w" sizes="1\\p\\x"> ref sizes="1px" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e36 50w, /images/green-16x16.png?e36 51w" sizes="calc(1px)"> ref sizes="1px" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e36a 50w, /images/green-16x16.png?e36a 51w" sizes="min(1px, 100px)"> ref sizes="1px" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e36b 50w, /images/green-16x16.png?e36b 51w" sizes="min(-100px, 1px)"> ref sizes="1px" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e37 50w, /images/green-16x16.png?e37 51w" sizes="(min-width:0) calc(1px)"> ref sizes="1px" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e37a 50w, /images/green-16x16.png?e37a 51w" sizes="(min-width:0) min(1px, 100px)"> ref sizes="1px" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e37b 50w, /images/green-16x16.png?e37b 51w" sizes="(min-width:0) max(-100px, 1px)"> ref sizes="1px" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e38 50w, /images/green-16x16.png?e38 51w" sizes="(min-width:calc(0)) 1px"> ref sizes="1px" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e38a 50w, /images/green-16x16.png?e38a 51w" sizes="(min-width:min(0, 200vw)) 1px"> ref sizes="1px" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e38b 50w, /images/green-16x16.png?e38b 51w" sizes="(min-width:max(-200vw, 0)) 1px"> ref sizes="1px" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e39 50w, /images/green-16x16.png?e39 51w" sizes="(min-width:0) 1px, 100vw"> ref sizes="1px" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e40 50w, /images/green-16x16.png?e40 51w" sizes="(min-width:0) 1px, (min-width:0) 100vw, 100vw"> ref sizes="1px" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e41 50w, /images/green-16x16.png?e41 51w" sizes="(min-width:0) 1px"> ref sizes="1px" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e42 50w, /images/green-16x16.png?e42 51w" sizes="not (min-width:0) 100vw, 1px"> ref sizes="1px" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e43 50w, /images/green-16x16.png?e43 51w" sizes="(min-width:unknown-mf-value) 100vw, 1px"> ref sizes="1px" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e44 50w, /images/green-16x16.png?e44 51w" sizes="not (min-width:unknown-mf-value) 100vw, 1px"> ref sizes="1px" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e45 50w, /images/green-16x16.png?e45 51w" sizes="(min-width:-1px) 100vw, 1px"> ref sizes="1px" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e46 50w, /images/green-16x16.png?e46 51w" sizes="not (min-width:-1px) 100vw, 1px"> ref sizes="1px" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e47 50w, /images/green-16x16.png?e47 51w" sizes="(unknown-mf-name) 100vw, 1px"> ref sizes="1px" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e48 50w, /images/green-16x16.png?e48 51w" sizes="not (unknown-mf-name) 100vw, 1px"> ref sizes="1px" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e49 50w, /images/green-16x16.png?e49 51w" sizes="(unknown "general-enclosed") 100vw, 1px"> ref sizes="1px" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e50 50w, /images/green-16x16.png?e50 51w" sizes="not (unknown "general-enclosed") 100vw, 1px"> ref sizes="1px" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e51 50w, /images/green-16x16.png?e51 51w" sizes="unknown-general-enclosed(foo) 100vw, 1px"> ref sizes="1px" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e52 50w, /images/green-16x16.png?e52 51w" sizes="not unknown-general-enclosed(foo) 100vw, 1px"> ref sizes="1px" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e53 50w, /images/green-16x16.png?e53 51w" sizes="print 100vw, 1px"> ref sizes="1px" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e54 50w, /images/green-16x16.png?e54 51w" sizes="not print 100vw, 1px"> ref sizes="1px" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e55 50w, /images/green-16x16.png?e55 51w" sizes="unknown-media-type 100vw, 1px"> ref sizes="1px" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e56 50w, /images/green-16x16.png?e56 51w" sizes="not unknown-media-type 100vw, 1px"> ref sizes="1px" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e57 50w, /images/green-16x16.png?e57 51w" sizes="(min-width:0) or (min-width:0) 1px"> ref sizes="1px" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e58 50w, /images/green-16x16.png?e58 51w" sizes="(min-width:0) or (unknown-mf-name) 1px"> ref sizes="1px" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e59 50w, /images/green-16x16.png?e59 51w" sizes="(min-width:0) or (min-width:unknown-mf-value) 1px"> ref sizes="1px" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e60 50w, /images/green-16x16.png?e60 51w" sizes="(min-width:0) or (min-width:-1px) 1px"> ref sizes="1px" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e61 50w, /images/green-16x16.png?e61 51w" sizes="(min-width:0) or (unknown "general-enclosed") 1px"> ref sizes="1px" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e62 50w, /images/green-16x16.png?e62 51w" sizes="(min-width:0) or unknown-general-enclosed(foo) 1px"> ref sizes="1px" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e63 50w, /images/green-16x16.png?e63 51w" sizes="(min-width:0) or (!) 100vw, 1px"> ref sizes="1px" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e64 50w, /images/green-16x16.png?e64 51w" sizes="(min-width:0) or unknown-media-type 100vw, 1px"> ref sizes="1px" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e65 50w, /images/green-16x16.png?e65 51w" sizes="(123) 100vw, 1px"> ref sizes="1px" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e66 50w, /images/green-16x16.png?e66 51w" sizes="not (123) 100vw, 1px"> ref sizes="1px" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e67 50w, /images/green-16x16.png?e67 51w" sizes="(!) 100vw, 1px"> ref sizes="1px" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e68 50w, /images/green-16x16.png?e68 51w" sizes="not (!) 100vw, 1px"> ref sizes="1px" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e69 50w, /images/green-16x16.png?e69 51w" sizes="! 100vw, 1px"> ref sizes="1px" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e70 50w, /images/green-16x16.png?e70 51w" sizes="not ! 100vw, 1px"> ref sizes="1px" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e71 50w, /images/green-16x16.png?e71 51w" sizes="(\]) 100vw, 1px"> ref sizes="1px" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e72 50w, /images/green-16x16.png?e72 51w" sizes="not (\]) 100vw, 1px"> ref sizes="1px" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e73 50w, /images/green-16x16.png?e73 51w" sizes="\] 100vw, 1px"> ref sizes="1px" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e74 50w, /images/green-16x16.png?e74 51w" sizes="not \] 100vw, 1px"> ref sizes="1px" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e75 50w, /images/green-16x16.png?e75 51w" sizes="(}) 100vw, 1px"> ref sizes="1px" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e76 50w, /images/green-16x16.png?e76 51w" sizes="not (}) 100vw, 1px"> ref sizes="1px" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e77 50w, /images/green-16x16.png?e77 51w" sizes="} 100vw, 1px"> ref sizes="1px" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e78 50w, /images/green-16x16.png?e78 51w" sizes="not } 100vw, 1px"> ref sizes="1px" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e79 50w, /images/green-16x16.png?e79 51w" sizes=") 100vw, 1px"> ref sizes="1px" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e80 50w, /images/green-16x16.png?e80 51w" sizes="not ) 100vw, 1px"> ref sizes="1px" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e81 50w, /images/green-16x16.png?e81 51w" sizes="(;) 100vw, 1px"> ref sizes="1px" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e82 50w, /images/green-16x16.png?e82 51w" sizes="not (;) 100vw, 1px"> ref sizes="1px" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e83 50w, /images/green-16x16.png?e83 51w" sizes="(.) 100vw, 1px"> ref sizes="1px" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e84 50w, /images/green-16x16.png?e84 51w" sizes="not (.) 100vw, 1px"> ref sizes="1px" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e85 50w, /images/green-16x16.png?e85 51w" sizes="; 100vw, 1px"> ref sizes="1px" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e86 50w, /images/green-16x16.png?e86 51w" sizes="not ; 100vw, 1px"> ref sizes="1px" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e87 50w, /images/green-16x16.png?e87 51w" sizes=", 1px"> ref sizes="1px" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e88 50w, /images/green-16x16.png?e88 51w" sizes="1px,"> ref sizes="1px" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e89 50w, /images/green-16x16.png?e89 51w" sizes="(min-width:0) 1px,"> ref sizes="1px" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e90 50w, /images/green-16x16.png?e90 51w" sizes="-0e-0px"> ref sizes="1px" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e91 50w, /images/green-16x16.png?e91 51w" sizes="+0.11e+01px"> ref sizes="1px" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e92 50w, /images/green-16x16.png?e92 51w" sizes="0.2e1px"> ref sizes="1px" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e93 50w, /images/green-16x16.png?e93 51w" sizes="0.3E1px"> ref sizes="1px" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e94 50w, /images/green-16x16.png?e94 51w" sizes=".4E1px"> ref sizes="1px" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e95 50w, /images/green-16x16.png?e95 51w" sizes="all 100vw, 1px"> ref sizes="1px" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e96 50w, /images/green-16x16.png?e96 51w" sizes="all and (min-width:0) 100vw, 1px"> ref sizes="1px" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e97 50w, /images/green-16x16.png?e97 51w" sizes="min-width:0 100vw, 1px"> ref sizes="1px" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e98 50w, /images/green-16x16.png?e98 51w" sizes="1px, 100vw"> ref sizes="1px" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e99 50w, /images/green-16x16.png?e99 51w" sizes="1px, (min-width:0) 100vw"> ref sizes="1px" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e100 50w, /images/green-16x16.png?e100 51w" sizes="1px, foo bar"> ref sizes="1px" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e101 50w, /images/green-16x16.png?e101 51w" sizes="(min-width:0) 1px, foo bar"> ref sizes="1px" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e102 50w, /images/green-16x16.png?e102 51w" sizes="("grammar does not match") 100vw, 1px"> ref sizes="1px" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e103 50w, /images/green-16x16.png?e103 51w" sizes="not ("grammar does not match") 100vw, 1px"> ref sizes="1px" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e104 50w, /images/green-16x16.png?e104 51w" sizes="(unknown-general-enclosed !) 100vw, 1px"> ref sizes="1px" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e105 50w, /images/green-16x16.png?e105 51w" sizes="not (unknown-general-enclosed !) 100vw, 1px"> ref sizes="1px" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e106 50w, /images/green-16x16.png?e106 51w" sizes="(min-width:0) or (unknown-general-enclosed !) 1px"> ref sizes="1px" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e107 50w, /images/green-16x16.png?e107 51w" sizes="not ((min-width:0) or (unknown "general-enclosed")) 100vw, 1px"> ref sizes="1px" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e108 50w, /images/green-16x16.png?e108 51w" sizes="(max-width:0) or (unknown-general-enclosed !) 100vw, 1px"> ref sizes="1px" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?e109 50w, /images/green-16x16.png?e109 51w" sizes="not ((max-width:0) or (unknown "general-enclosed")) 100vw, 1px"> ref sizes="1px" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f48 50w, /images/green-16x16.png?f48 51w" sizes="calc(1px"> ref sizes="1px" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f48a 50w, /images/green-16x16.png?f48a 51w" sizes="min(1px, 200vw"> ref sizes="1px" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f48b 50w, /images/green-16x16.png?f48b 51w" sizes="max(-200vw, 1px"> ref sizes="1px" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f49 50w, /images/green-16x16.png?f49 51w" sizes="(min-width:0) calc(1px"> ref sizes="1px" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f49a 50w, /images/green-16x16.png?f49a 51w" sizes="(min-width:0) min(1px, 200vw"> ref sizes="1px" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f49b 50w, /images/green-16x16.png?f49b 51w" sizes="(min-width:0) max(-200vw, 1px"> ref sizes="1px" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f2 50w, /images/green-16x16.png?f2 51w" sizes=""> ref sizes="100vw" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f3 50w, /images/green-16x16.png?f3 51w" sizes=","> ref sizes="100vw" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f4 50w, /images/green-16x16.png?f4 51w" sizes="-1px"> ref sizes="100vw" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f5 50w, /images/green-16x16.png?f5 51w" sizes="1"> ref sizes="100vw" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f6 50w, /images/green-16x16.png?f6 51w" sizes="0.1%"> ref sizes="100vw" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f7 50w, /images/green-16x16.png?f7 51w" sizes="0.1deg"> ref sizes="100vw" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f8 50w, /images/green-16x16.png?f8 51w" sizes="0.1grad"> ref sizes="100vw" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f9 50w, /images/green-16x16.png?f9 51w" sizes="0.1rad"> ref sizes="100vw" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f10 50w, /images/green-16x16.png?f10 51w" sizes="0.1turn"> ref sizes="100vw" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f11 50w, /images/green-16x16.png?f11 51w" sizes="0.1s"> ref sizes="100vw" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f12 50w, /images/green-16x16.png?f12 51w" sizes="0.1ms"> ref sizes="100vw" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f13 50w, /images/green-16x16.png?f13 51w" sizes="0.1Hz"> ref sizes="100vw" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f14 50w, /images/green-16x16.png?f14 51w" sizes="0.1kHz"> ref sizes="100vw" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f15 50w, /images/green-16x16.png?f15 51w" sizes="0.1dpi"> ref sizes="100vw" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f16 50w, /images/green-16x16.png?f16 51w" sizes="0.1dpcm"> ref sizes="100vw" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f17 50w, /images/green-16x16.png?f17 51w" sizes="0.1dppx"> ref sizes="100vw" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f17a 50w, /images/green-16x16.png?f17a 51w" sizes="0.1x"> ref sizes="100vw" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f18 50w, /images/green-16x16.png?f18 51w" data-foo="1px" sizes="attr(data-foo, length, 1px)"> ref sizes="100vw" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f19 50w, /images/green-16x16.png?f19 51w" data-foo="1" sizes="attr(data-foo, px, 1px)"> ref sizes="100vw" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f20 50w, /images/green-16x16.png?f20 51w" sizes="toggle(1px)"> ref sizes="100vw" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f21 50w, /images/green-16x16.png?f21 51w" sizes="inherit"> ref sizes="100vw" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f22 50w, /images/green-16x16.png?f22 51w" sizes="auto"> ref sizes="100vw" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f23 50w, /images/green-16x16.png?f23 51w" sizes="initial"> ref sizes="100vw" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f24 50w, /images/green-16x16.png?f24 51w" sizes="unset"> ref sizes="100vw" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f25 50w, /images/green-16x16.png?f25 51w" sizes="default"> ref sizes="100vw" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f26 50w, /images/green-16x16.png?f26 51w" sizes="1/* */px"> ref sizes="100vw" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f27 50w, /images/green-16x16.png?f27 51w" sizes="1p/* */x"> ref sizes="100vw" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f28 50w, /images/green-16x16.png?f28 51w" sizes="-/**/0"> ref sizes="100vw" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f29 50w, /images/green-16x16.png?f29 51w" sizes="((),1px"> ref sizes="100vw" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f30 50w, /images/green-16x16.png?f30 51w" sizes="x(x(),1px"> ref sizes="100vw" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f31 50w, /images/green-16x16.png?f31 51w" sizes="{{},1px"> ref sizes="100vw" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f32 50w, /images/green-16x16.png?f32 51w" sizes="[[\],1px"> ref sizes="100vw" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f33 50w, /images/green-16x16.png?f33 51w" sizes="1px !important"> ref sizes="100vw" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f34 50w, /images/green-16x16.png?f34 51w" sizes="\\1px"> ref sizes="100vw" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f35 50w, /images/green-16x16.png?f35 51w" sizes="all 1px"> ref sizes="100vw" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f36 50w, /images/green-16x16.png?f36 51w" sizes="all and (min-width:0) 1px"> ref sizes="100vw" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f37 50w, /images/green-16x16.png?f37 51w" sizes="min-width:0 1px"> ref sizes="100vw" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f38 50w, /images/green-16x16.png?f38 51w" sizes="100vw, 1px"> ref sizes="100vw" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f39 50w, /images/green-16x16.png?f39 51w" sizes="100vw, (min-width:0) 1px"> ref sizes="100vw" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f40 50w, /images/green-16x16.png?f40 51w" sizes="foo bar"> ref sizes="100vw" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f41 50w, /images/green-16x16.png?f41 51w" sizes="foo-bar"> ref sizes="100vw" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f42 50w, /images/green-16x16.png?f42 51w" sizes="(min-width:0) 1px foo bar"> ref sizes="100vw" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f43 50w, /images/green-16x16.png?f43 51w" sizes="(min-width:0) 0.1%"> ref sizes="100vw" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f44 50w, /images/green-16x16.png?f44 51w" sizes="(min-width:0) 1"> ref sizes="100vw" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f45 50w, /images/green-16x16.png?f45 51w" sizes="-1e0px"> ref sizes="100vw" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f46 50w, /images/green-16x16.png?f46 51w" sizes="1e1.5px"> ref sizes="100vw" (width:1000px)] + expected: FAIL + + [<img srcset="/images/green-1x1.png?f47 50w, /images/green-16x16.png?f47 51w" style="--foo: 1px" sizes="var(--foo)"> ref sizes="100vw" (width:1000px)] + expected: FAIL + diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute.html.ini deleted file mode 100644 index 4d3b88d9ec3..00000000000 --- a/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute.html.ini +++ /dev/null @@ -1,2054 +0,0 @@ -[parse-a-sizes-attribute.html] - type: testharness - [<img srcset="/images/green-1x1.png?a2 300w, /images/green-16x16.png?a2 301w"> ref sizes="100vw" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?b2 450w, /images/green-16x16.png?b2 451w"> ref sizes="100vw" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?c2 600w, /images/green-16x16.png?c2 601w"> ref sizes="100vw" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?d2 900w, /images/green-16x16.png?d2 901w"> ref sizes="100vw" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e2 50w, /images/green-16x16.png?e2 51w" sizes="0"> ref sizes="1px" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e3 50w, /images/green-16x16.png?e3 51w" sizes="-0"> ref sizes="1px" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e4 50w, /images/green-16x16.png?e4 51w" sizes="+0"> ref sizes="1px" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e5 50w, /images/green-16x16.png?e5 51w" sizes="+1px"> ref sizes="1px" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e6 50w, /images/green-16x16.png?e6 51w" sizes=".1px"> ref sizes="1px" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e7 50w, /images/green-16x16.png?e7 51w" sizes="0.1em"> ref sizes="1px" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e8 50w, /images/green-16x16.png?e8 51w" sizes="0.1ex"> ref sizes="1px" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e9 50w, /images/green-16x16.png?e9 51w" sizes="0.1ch"> ref sizes="1px" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e10 50w, /images/green-16x16.png?e10 51w" sizes="0.1rem"> ref sizes="1px" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e11 50w, /images/green-16x16.png?e11 51w" sizes="0.1vw"> ref sizes="1px" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e12 50w, /images/green-16x16.png?e12 51w" sizes="0.1vh"> ref sizes="1px" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e13 50w, /images/green-16x16.png?e13 51w" sizes="0.1vmin"> ref sizes="1px" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e14 50w, /images/green-16x16.png?e14 51w" sizes="0.1vmax"> ref sizes="1px" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e15 50w, /images/green-16x16.png?e15 51w" sizes="0.1cm"> ref sizes="1px" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e16 50w, /images/green-16x16.png?e16 51w" sizes="1mm"> ref sizes="1px" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e17 50w, /images/green-16x16.png?e17 51w" sizes="1q"> ref sizes="1px" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e18 50w, /images/green-16x16.png?e18 51w" sizes="0.01in"> ref sizes="1px" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e19 50w, /images/green-16x16.png?e19 51w" sizes="0.1pc"> ref sizes="1px" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e20 50w, /images/green-16x16.png?e20 51w" sizes="0.1pt"> ref sizes="1px" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e21 50w, /images/green-16x16.png?e21 51w" sizes="/* */1px/* */"> ref sizes="1px" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e22 50w, /images/green-16x16.png?e22 51w" sizes=" /**/ /**/ 1px /**/ /**/ "> ref sizes="1px" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e23 50w, /images/green-16x16.png?e23 51w" sizes="(),1px"> ref sizes="1px" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e24 50w, /images/green-16x16.png?e24 51w" sizes="x(),1px"> ref sizes="1px" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e25 50w, /images/green-16x16.png?e25 51w" sizes="{},1px"> ref sizes="1px" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e26 50w, /images/green-16x16.png?e26 51w" sizes="[\],1px"> ref sizes="1px" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e27 50w, /images/green-16x16.png?e27 51w" sizes="1px,("> ref sizes="1px" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e28 50w, /images/green-16x16.png?e28 51w" sizes="1px,x("> ref sizes="1px" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e29 50w, /images/green-16x16.png?e29 51w" sizes="1px,{"> ref sizes="1px" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e30 50w, /images/green-16x16.png?e30 51w" sizes="1px,["> ref sizes="1px" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e31 50w, /images/green-16x16.png?e31 51w" sizes="\\(,1px"> ref sizes="1px" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e32 50w, /images/green-16x16.png?e32 51w" sizes="x\\(,1px"> ref sizes="1px" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e33 50w, /images/green-16x16.png?e33 51w" sizes="\\{,1px"> ref sizes="1px" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e34 50w, /images/green-16x16.png?e34 51w" sizes="\\[,1px"> ref sizes="1px" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e35 50w, /images/green-16x16.png?e35 51w" sizes="1\\p\\x"> ref sizes="1px" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e36 50w, /images/green-16x16.png?e36 51w" sizes="calc(1px)"> ref sizes="1px" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e37 50w, /images/green-16x16.png?e37 51w" sizes="(min-width:0) calc(1px)"> ref sizes="1px" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e38 50w, /images/green-16x16.png?e38 51w" sizes="(min-width:calc(0)) 1px"> ref sizes="1px" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e39 50w, /images/green-16x16.png?e39 51w" sizes="(min-width:0) 1px, 100vw"> ref sizes="1px" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e40 50w, /images/green-16x16.png?e40 51w" sizes="(min-width:0) 1px, (min-width:0) 100vw, 100vw"> ref sizes="1px" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e41 50w, /images/green-16x16.png?e41 51w" sizes="(min-width:0) 1px"> ref sizes="1px" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e42 50w, /images/green-16x16.png?e42 51w" sizes="not (min-width:0) 100vw, 1px"> ref sizes="1px" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e43 50w, /images/green-16x16.png?e43 51w" sizes="(min-width:unknown-mf-value) 100vw, 1px"> ref sizes="1px" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e44 50w, /images/green-16x16.png?e44 51w" sizes="not (min-width:unknown-mf-value) 100vw, 1px"> ref sizes="1px" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e45 50w, /images/green-16x16.png?e45 51w" sizes="(min-width:-1px) 100vw, 1px"> ref sizes="1px" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e46 50w, /images/green-16x16.png?e46 51w" sizes="not (min-width:-1px) 100vw, 1px"> ref sizes="1px" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e47 50w, /images/green-16x16.png?e47 51w" sizes="(unknown-mf-name) 100vw, 1px"> ref sizes="1px" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e48 50w, /images/green-16x16.png?e48 51w" sizes="not (unknown-mf-name) 100vw, 1px"> ref sizes="1px" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e49 50w, /images/green-16x16.png?e49 51w" sizes="(unknown "general-enclosed") 100vw, 1px"> ref sizes="1px" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e50 50w, /images/green-16x16.png?e50 51w" sizes="not (unknown "general-enclosed") 100vw, 1px"> ref sizes="1px" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e51 50w, /images/green-16x16.png?e51 51w" sizes="unknown-general-enclosed(foo) 100vw, 1px"> ref sizes="1px" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e52 50w, /images/green-16x16.png?e52 51w" sizes="not unknown-general-enclosed(foo) 100vw, 1px"> ref sizes="1px" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e53 50w, /images/green-16x16.png?e53 51w" sizes="print 100vw, 1px"> ref sizes="1px" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e54 50w, /images/green-16x16.png?e54 51w" sizes="not print 100vw, 1px"> ref sizes="1px" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e55 50w, /images/green-16x16.png?e55 51w" sizes="unknown-media-type 100vw, 1px"> ref sizes="1px" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e56 50w, /images/green-16x16.png?e56 51w" sizes="not unknown-media-type 100vw, 1px"> ref sizes="1px" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e57 50w, /images/green-16x16.png?e57 51w" sizes="(min-width:0) or (min-width:0) 1px"> ref sizes="1px" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e58 50w, /images/green-16x16.png?e58 51w" sizes="(min-width:0) or (unknown-mf-name) 1px"> ref sizes="1px" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e59 50w, /images/green-16x16.png?e59 51w" sizes="(min-width:0) or (min-width:unknown-mf-value) 1px"> ref sizes="1px" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e60 50w, /images/green-16x16.png?e60 51w" sizes="(min-width:0) or (min-width:-1px) 1px"> ref sizes="1px" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e61 50w, /images/green-16x16.png?e61 51w" sizes="(min-width:0) or (unknown "general-enclosed") 1px"> ref sizes="1px" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e62 50w, /images/green-16x16.png?e62 51w" sizes="(min-width:0) or unknown-general-enclosed(foo) 1px"> ref sizes="1px" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e63 50w, /images/green-16x16.png?e63 51w" sizes="(min-width:0) or (!) 100vw, 1px"> ref sizes="1px" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e64 50w, /images/green-16x16.png?e64 51w" sizes="(min-width:0) or unknown-media-type 100vw, 1px"> ref sizes="1px" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e65 50w, /images/green-16x16.png?e65 51w" sizes="(123) 100vw, 1px"> ref sizes="1px" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e66 50w, /images/green-16x16.png?e66 51w" sizes="not (123) 100vw, 1px"> ref sizes="1px" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e67 50w, /images/green-16x16.png?e67 51w" sizes="(!) 100vw, 1px"> ref sizes="1px" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e68 50w, /images/green-16x16.png?e68 51w" sizes="not (!) 100vw, 1px"> ref sizes="1px" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e69 50w, /images/green-16x16.png?e69 51w" sizes="! 100vw, 1px"> ref sizes="1px" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e70 50w, /images/green-16x16.png?e70 51w" sizes="not ! 100vw, 1px"> ref sizes="1px" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e71 50w, /images/green-16x16.png?e71 51w" sizes="(\]) 100vw, 1px"> ref sizes="1px" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e72 50w, /images/green-16x16.png?e72 51w" sizes="not (\]) 100vw, 1px"> ref sizes="1px" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e73 50w, /images/green-16x16.png?e73 51w" sizes="\] 100vw, 1px"> ref sizes="1px" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e74 50w, /images/green-16x16.png?e74 51w" sizes="not \] 100vw, 1px"> ref sizes="1px" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e75 50w, /images/green-16x16.png?e75 51w" sizes="(}) 100vw, 1px"> ref sizes="1px" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e76 50w, /images/green-16x16.png?e76 51w" sizes="not (}) 100vw, 1px"> ref sizes="1px" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e77 50w, /images/green-16x16.png?e77 51w" sizes="} 100vw, 1px"> ref sizes="1px" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e78 50w, /images/green-16x16.png?e78 51w" sizes="not } 100vw, 1px"> ref sizes="1px" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e79 50w, /images/green-16x16.png?e79 51w" sizes=") 100vw, 1px"> ref sizes="1px" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e80 50w, /images/green-16x16.png?e80 51w" sizes="not ) 100vw, 1px"> ref sizes="1px" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e81 50w, /images/green-16x16.png?e81 51w" sizes="(;) 100vw, 1px"> ref sizes="1px" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e82 50w, /images/green-16x16.png?e82 51w" sizes="not (;) 100vw, 1px"> ref sizes="1px" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e83 50w, /images/green-16x16.png?e83 51w" sizes="(.) 100vw, 1px"> ref sizes="1px" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e84 50w, /images/green-16x16.png?e84 51w" sizes="not (.) 100vw, 1px"> ref sizes="1px" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e85 50w, /images/green-16x16.png?e85 51w" sizes="; 100vw, 1px"> ref sizes="1px" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e86 50w, /images/green-16x16.png?e86 51w" sizes="not ; 100vw, 1px"> ref sizes="1px" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e87 50w, /images/green-16x16.png?e87 51w" sizes=", 1px"> ref sizes="1px" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e88 50w, /images/green-16x16.png?e88 51w" sizes="1px,"> ref sizes="1px" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e89 50w, /images/green-16x16.png?e89 51w" sizes="(min-width:0) 1px,"> ref sizes="1px" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e90 50w, /images/green-16x16.png?e90 51w" sizes="-0e-0px"> ref sizes="1px" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e91 50w, /images/green-16x16.png?e91 51w" sizes="+0.11e+01px"> ref sizes="1px" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e92 50w, /images/green-16x16.png?e92 51w" sizes="0.2e1px"> ref sizes="1px" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e93 50w, /images/green-16x16.png?e93 51w" sizes="0.3E1px"> ref sizes="1px" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e94 50w, /images/green-16x16.png?e94 51w" sizes=".4E1px"> ref sizes="1px" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e95 50w, /images/green-16x16.png?e95 51w" sizes="all 100vw, 1px"> ref sizes="1px" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e96 50w, /images/green-16x16.png?e96 51w" sizes="all and (min-width:0) 100vw, 1px"> ref sizes="1px" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e97 50w, /images/green-16x16.png?e97 51w" sizes="min-width:0 100vw, 1px"> ref sizes="1px" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e98 50w, /images/green-16x16.png?e98 51w" sizes="1px, 100vw"> ref sizes="1px" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e99 50w, /images/green-16x16.png?e99 51w" sizes="1px, (min-width:0) 100vw"> ref sizes="1px" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e100 50w, /images/green-16x16.png?e100 51w" sizes="1px, foo bar"> ref sizes="1px" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e101 50w, /images/green-16x16.png?e101 51w" sizes="(min-width:0) 1px, foo bar"> ref sizes="1px" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e102 50w, /images/green-16x16.png?e102 51w" sizes="("grammar does not match") 100vw, 1px"> ref sizes="1px" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e103 50w, /images/green-16x16.png?e103 51w" sizes="not ("grammar does not match") 100vw, 1px"> ref sizes="1px" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e104 50w, /images/green-16x16.png?e104 51w" sizes="(unknown-general-enclosed !) 100vw, 1px"> ref sizes="1px" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e105 50w, /images/green-16x16.png?e105 51w" sizes="not (unknown-general-enclosed !) 100vw, 1px"> ref sizes="1px" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e106 50w, /images/green-16x16.png?e106 51w" sizes="(min-width:0) or (unknown-general-enclosed !) 1px"> ref sizes="1px" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e107 50w, /images/green-16x16.png?e107 51w" sizes="not ((min-width:0) or (unknown "general-enclosed")) 100vw, 1px"> ref sizes="1px" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e108 50w, /images/green-16x16.png?e108 51w" sizes="(max-width:0) or (unknown-general-enclosed !) 100vw, 1px"> ref sizes="1px" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e109 50w, /images/green-16x16.png?e109 51w" sizes="not ((max-width:0) or (unknown "general-enclosed")) 100vw, 1px"> ref sizes="1px" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f48 50w, /images/green-16x16.png?f48 51w" sizes="calc(1px"> ref sizes="1px" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f49 50w, /images/green-16x16.png?f49 51w" sizes="(min-width:0) calc(1px"> ref sizes="1px" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f2 50w, /images/green-16x16.png?f2 51w" sizes=""> ref sizes="100vw" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f3 50w, /images/green-16x16.png?f3 51w" sizes=","> ref sizes="100vw" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f4 50w, /images/green-16x16.png?f4 51w" sizes="-1px"> ref sizes="100vw" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f5 50w, /images/green-16x16.png?f5 51w" sizes="1"> ref sizes="100vw" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f6 50w, /images/green-16x16.png?f6 51w" sizes="0.1%"> ref sizes="100vw" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f7 50w, /images/green-16x16.png?f7 51w" sizes="0.1deg"> ref sizes="100vw" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f8 50w, /images/green-16x16.png?f8 51w" sizes="0.1grad"> ref sizes="100vw" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f9 50w, /images/green-16x16.png?f9 51w" sizes="0.1rad"> ref sizes="100vw" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f10 50w, /images/green-16x16.png?f10 51w" sizes="0.1turn"> ref sizes="100vw" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f11 50w, /images/green-16x16.png?f11 51w" sizes="0.1s"> ref sizes="100vw" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f12 50w, /images/green-16x16.png?f12 51w" sizes="0.1ms"> ref sizes="100vw" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f13 50w, /images/green-16x16.png?f13 51w" sizes="0.1Hz"> ref sizes="100vw" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f14 50w, /images/green-16x16.png?f14 51w" sizes="0.1kHz"> ref sizes="100vw" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f15 50w, /images/green-16x16.png?f15 51w" sizes="0.1dpi"> ref sizes="100vw" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f16 50w, /images/green-16x16.png?f16 51w" sizes="0.1dpcm"> ref sizes="100vw" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f17 50w, /images/green-16x16.png?f17 51w" sizes="0.1dppx"> ref sizes="100vw" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f18 50w, /images/green-16x16.png?f18 51w" data-foo="1px" sizes="attr(data-foo, length, 1px)"> ref sizes="100vw" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f19 50w, /images/green-16x16.png?f19 51w" data-foo="1" sizes="attr(data-foo, px, 1px)"> ref sizes="100vw" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f20 50w, /images/green-16x16.png?f20 51w" sizes="toggle(1px)"> ref sizes="100vw" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f21 50w, /images/green-16x16.png?f21 51w" sizes="inherit"> ref sizes="100vw" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f22 50w, /images/green-16x16.png?f22 51w" sizes="auto"> ref sizes="100vw" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f23 50w, /images/green-16x16.png?f23 51w" sizes="initial"> ref sizes="100vw" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f24 50w, /images/green-16x16.png?f24 51w" sizes="unset"> ref sizes="100vw" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f25 50w, /images/green-16x16.png?f25 51w" sizes="default"> ref sizes="100vw" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f26 50w, /images/green-16x16.png?f26 51w" sizes="1/* */px"> ref sizes="100vw" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f27 50w, /images/green-16x16.png?f27 51w" sizes="1p/* */x"> ref sizes="100vw" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f28 50w, /images/green-16x16.png?f28 51w" sizes="-/**/0"> ref sizes="100vw" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f29 50w, /images/green-16x16.png?f29 51w" sizes="((),1px"> ref sizes="100vw" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f30 50w, /images/green-16x16.png?f30 51w" sizes="x(x(),1px"> ref sizes="100vw" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f31 50w, /images/green-16x16.png?f31 51w" sizes="{{},1px"> ref sizes="100vw" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f32 50w, /images/green-16x16.png?f32 51w" sizes="[[\],1px"> ref sizes="100vw" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f33 50w, /images/green-16x16.png?f33 51w" sizes="1px !important"> ref sizes="100vw" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f34 50w, /images/green-16x16.png?f34 51w" sizes="\\1px"> ref sizes="100vw" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f35 50w, /images/green-16x16.png?f35 51w" sizes="all 1px"> ref sizes="100vw" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f36 50w, /images/green-16x16.png?f36 51w" sizes="all and (min-width:0) 1px"> ref sizes="100vw" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f37 50w, /images/green-16x16.png?f37 51w" sizes="min-width:0 1px"> ref sizes="100vw" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f38 50w, /images/green-16x16.png?f38 51w" sizes="100vw, 1px"> ref sizes="100vw" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f39 50w, /images/green-16x16.png?f39 51w" sizes="100vw, (min-width:0) 1px"> ref sizes="100vw" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f40 50w, /images/green-16x16.png?f40 51w" sizes="foo bar"> ref sizes="100vw" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f41 50w, /images/green-16x16.png?f41 51w" sizes="foo-bar"> ref sizes="100vw" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f42 50w, /images/green-16x16.png?f42 51w" sizes="(min-width:0) 1px foo bar"> ref sizes="100vw" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f43 50w, /images/green-16x16.png?f43 51w" sizes="(min-width:0) 0.1%"> ref sizes="100vw" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f44 50w, /images/green-16x16.png?f44 51w" sizes="(min-width:0) 1"> ref sizes="100vw" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f45 50w, /images/green-16x16.png?f45 51w" sizes="-1e0px"> ref sizes="100vw" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f46 50w, /images/green-16x16.png?f46 51w" sizes="1e1.5px"> ref sizes="100vw" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f47 50w, /images/green-16x16.png?f47 51w" style="--foo: 1px" sizes="var(--foo)"> ref sizes="100vw" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?a2 300w, /images/green-16x16.png?a2 301w"> ref sizes="100vw" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?b2 450w, /images/green-16x16.png?b2 451w"> ref sizes="100vw" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?c2 600w, /images/green-16x16.png?c2 601w"> ref sizes="100vw" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?d2 900w, /images/green-16x16.png?d2 901w"> ref sizes="100vw" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e2 50w, /images/green-16x16.png?e2 51w" sizes="0"> ref sizes="1px" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e3 50w, /images/green-16x16.png?e3 51w" sizes="-0"> ref sizes="1px" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e4 50w, /images/green-16x16.png?e4 51w" sizes="+0"> ref sizes="1px" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e5 50w, /images/green-16x16.png?e5 51w" sizes="+1px"> ref sizes="1px" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e6 50w, /images/green-16x16.png?e6 51w" sizes=".1px"> ref sizes="1px" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e7 50w, /images/green-16x16.png?e7 51w" sizes="0.1em"> ref sizes="1px" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e8 50w, /images/green-16x16.png?e8 51w" sizes="0.1ex"> ref sizes="1px" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e9 50w, /images/green-16x16.png?e9 51w" sizes="0.1ch"> ref sizes="1px" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e10 50w, /images/green-16x16.png?e10 51w" sizes="0.1rem"> ref sizes="1px" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e11 50w, /images/green-16x16.png?e11 51w" sizes="0.1vw"> ref sizes="1px" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e12 50w, /images/green-16x16.png?e12 51w" sizes="0.1vh"> ref sizes="1px" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e13 50w, /images/green-16x16.png?e13 51w" sizes="0.1vmin"> ref sizes="1px" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e14 50w, /images/green-16x16.png?e14 51w" sizes="0.1vmax"> ref sizes="1px" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e15 50w, /images/green-16x16.png?e15 51w" sizes="0.1cm"> ref sizes="1px" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e16 50w, /images/green-16x16.png?e16 51w" sizes="1mm"> ref sizes="1px" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e17 50w, /images/green-16x16.png?e17 51w" sizes="1q"> ref sizes="1px" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e18 50w, /images/green-16x16.png?e18 51w" sizes="0.01in"> ref sizes="1px" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e19 50w, /images/green-16x16.png?e19 51w" sizes="0.1pc"> ref sizes="1px" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e20 50w, /images/green-16x16.png?e20 51w" sizes="0.1pt"> ref sizes="1px" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e21 50w, /images/green-16x16.png?e21 51w" sizes="/* */1px/* */"> ref sizes="1px" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e22 50w, /images/green-16x16.png?e22 51w" sizes=" /**/ /**/ 1px /**/ /**/ "> ref sizes="1px" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e23 50w, /images/green-16x16.png?e23 51w" sizes="(),1px"> ref sizes="1px" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e24 50w, /images/green-16x16.png?e24 51w" sizes="x(),1px"> ref sizes="1px" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e25 50w, /images/green-16x16.png?e25 51w" sizes="{},1px"> ref sizes="1px" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e26 50w, /images/green-16x16.png?e26 51w" sizes="[\],1px"> ref sizes="1px" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e27 50w, /images/green-16x16.png?e27 51w" sizes="1px,("> ref sizes="1px" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e28 50w, /images/green-16x16.png?e28 51w" sizes="1px,x("> ref sizes="1px" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e29 50w, /images/green-16x16.png?e29 51w" sizes="1px,{"> ref sizes="1px" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e30 50w, /images/green-16x16.png?e30 51w" sizes="1px,["> ref sizes="1px" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e31 50w, /images/green-16x16.png?e31 51w" sizes="\\(,1px"> ref sizes="1px" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e32 50w, /images/green-16x16.png?e32 51w" sizes="x\\(,1px"> ref sizes="1px" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e33 50w, /images/green-16x16.png?e33 51w" sizes="\\{,1px"> ref sizes="1px" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e34 50w, /images/green-16x16.png?e34 51w" sizes="\\[,1px"> ref sizes="1px" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e35 50w, /images/green-16x16.png?e35 51w" sizes="1\\p\\x"> ref sizes="1px" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e36 50w, /images/green-16x16.png?e36 51w" sizes="calc(1px)"> ref sizes="1px" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e37 50w, /images/green-16x16.png?e37 51w" sizes="(min-width:0) calc(1px)"> ref sizes="1px" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e38 50w, /images/green-16x16.png?e38 51w" sizes="(min-width:calc(0)) 1px"> ref sizes="1px" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e39 50w, /images/green-16x16.png?e39 51w" sizes="(min-width:0) 1px, 100vw"> ref sizes="1px" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e40 50w, /images/green-16x16.png?e40 51w" sizes="(min-width:0) 1px, (min-width:0) 100vw, 100vw"> ref sizes="1px" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e41 50w, /images/green-16x16.png?e41 51w" sizes="(min-width:0) 1px"> ref sizes="1px" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e42 50w, /images/green-16x16.png?e42 51w" sizes="not (min-width:0) 100vw, 1px"> ref sizes="1px" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e43 50w, /images/green-16x16.png?e43 51w" sizes="(min-width:unknown-mf-value) 100vw, 1px"> ref sizes="1px" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e44 50w, /images/green-16x16.png?e44 51w" sizes="not (min-width:unknown-mf-value) 100vw, 1px"> ref sizes="1px" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e45 50w, /images/green-16x16.png?e45 51w" sizes="(min-width:-1px) 100vw, 1px"> ref sizes="1px" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e46 50w, /images/green-16x16.png?e46 51w" sizes="not (min-width:-1px) 100vw, 1px"> ref sizes="1px" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e47 50w, /images/green-16x16.png?e47 51w" sizes="(unknown-mf-name) 100vw, 1px"> ref sizes="1px" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e48 50w, /images/green-16x16.png?e48 51w" sizes="not (unknown-mf-name) 100vw, 1px"> ref sizes="1px" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e49 50w, /images/green-16x16.png?e49 51w" sizes="(unknown "general-enclosed") 100vw, 1px"> ref sizes="1px" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e50 50w, /images/green-16x16.png?e50 51w" sizes="not (unknown "general-enclosed") 100vw, 1px"> ref sizes="1px" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e51 50w, /images/green-16x16.png?e51 51w" sizes="unknown-general-enclosed(foo) 100vw, 1px"> ref sizes="1px" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e52 50w, /images/green-16x16.png?e52 51w" sizes="not unknown-general-enclosed(foo) 100vw, 1px"> ref sizes="1px" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e53 50w, /images/green-16x16.png?e53 51w" sizes="print 100vw, 1px"> ref sizes="1px" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e54 50w, /images/green-16x16.png?e54 51w" sizes="not print 100vw, 1px"> ref sizes="1px" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e55 50w, /images/green-16x16.png?e55 51w" sizes="unknown-media-type 100vw, 1px"> ref sizes="1px" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e56 50w, /images/green-16x16.png?e56 51w" sizes="not unknown-media-type 100vw, 1px"> ref sizes="1px" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e57 50w, /images/green-16x16.png?e57 51w" sizes="(min-width:0) or (min-width:0) 1px"> ref sizes="1px" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e58 50w, /images/green-16x16.png?e58 51w" sizes="(min-width:0) or (unknown-mf-name) 1px"> ref sizes="1px" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e59 50w, /images/green-16x16.png?e59 51w" sizes="(min-width:0) or (min-width:unknown-mf-value) 1px"> ref sizes="1px" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e60 50w, /images/green-16x16.png?e60 51w" sizes="(min-width:0) or (min-width:-1px) 1px"> ref sizes="1px" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e61 50w, /images/green-16x16.png?e61 51w" sizes="(min-width:0) or (unknown "general-enclosed") 1px"> ref sizes="1px" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e62 50w, /images/green-16x16.png?e62 51w" sizes="(min-width:0) or unknown-general-enclosed(foo) 1px"> ref sizes="1px" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e63 50w, /images/green-16x16.png?e63 51w" sizes="(min-width:0) or (!) 100vw, 1px"> ref sizes="1px" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e64 50w, /images/green-16x16.png?e64 51w" sizes="(min-width:0) or unknown-media-type 100vw, 1px"> ref sizes="1px" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e65 50w, /images/green-16x16.png?e65 51w" sizes="(123) 100vw, 1px"> ref sizes="1px" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e66 50w, /images/green-16x16.png?e66 51w" sizes="not (123) 100vw, 1px"> ref sizes="1px" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e67 50w, /images/green-16x16.png?e67 51w" sizes="(!) 100vw, 1px"> ref sizes="1px" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e68 50w, /images/green-16x16.png?e68 51w" sizes="not (!) 100vw, 1px"> ref sizes="1px" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e69 50w, /images/green-16x16.png?e69 51w" sizes="! 100vw, 1px"> ref sizes="1px" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e70 50w, /images/green-16x16.png?e70 51w" sizes="not ! 100vw, 1px"> ref sizes="1px" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e71 50w, /images/green-16x16.png?e71 51w" sizes="(\]) 100vw, 1px"> ref sizes="1px" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e72 50w, /images/green-16x16.png?e72 51w" sizes="not (\]) 100vw, 1px"> ref sizes="1px" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e73 50w, /images/green-16x16.png?e73 51w" sizes="\] 100vw, 1px"> ref sizes="1px" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e74 50w, /images/green-16x16.png?e74 51w" sizes="not \] 100vw, 1px"> ref sizes="1px" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e75 50w, /images/green-16x16.png?e75 51w" sizes="(}) 100vw, 1px"> ref sizes="1px" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e76 50w, /images/green-16x16.png?e76 51w" sizes="not (}) 100vw, 1px"> ref sizes="1px" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e77 50w, /images/green-16x16.png?e77 51w" sizes="} 100vw, 1px"> ref sizes="1px" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e78 50w, /images/green-16x16.png?e78 51w" sizes="not } 100vw, 1px"> ref sizes="1px" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e79 50w, /images/green-16x16.png?e79 51w" sizes=") 100vw, 1px"> ref sizes="1px" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e80 50w, /images/green-16x16.png?e80 51w" sizes="not ) 100vw, 1px"> ref sizes="1px" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e81 50w, /images/green-16x16.png?e81 51w" sizes="(;) 100vw, 1px"> ref sizes="1px" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e82 50w, /images/green-16x16.png?e82 51w" sizes="not (;) 100vw, 1px"> ref sizes="1px" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e83 50w, /images/green-16x16.png?e83 51w" sizes="(.) 100vw, 1px"> ref sizes="1px" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e84 50w, /images/green-16x16.png?e84 51w" sizes="not (.) 100vw, 1px"> ref sizes="1px" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e85 50w, /images/green-16x16.png?e85 51w" sizes="; 100vw, 1px"> ref sizes="1px" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e86 50w, /images/green-16x16.png?e86 51w" sizes="not ; 100vw, 1px"> ref sizes="1px" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e87 50w, /images/green-16x16.png?e87 51w" sizes=", 1px"> ref sizes="1px" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e88 50w, /images/green-16x16.png?e88 51w" sizes="1px,"> ref sizes="1px" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e89 50w, /images/green-16x16.png?e89 51w" sizes="(min-width:0) 1px,"> ref sizes="1px" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e90 50w, /images/green-16x16.png?e90 51w" sizes="-0e-0px"> ref sizes="1px" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e91 50w, /images/green-16x16.png?e91 51w" sizes="+0.11e+01px"> ref sizes="1px" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e92 50w, /images/green-16x16.png?e92 51w" sizes="0.2e1px"> ref sizes="1px" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e93 50w, /images/green-16x16.png?e93 51w" sizes="0.3E1px"> ref sizes="1px" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e94 50w, /images/green-16x16.png?e94 51w" sizes=".4E1px"> ref sizes="1px" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e95 50w, /images/green-16x16.png?e95 51w" sizes="all 100vw, 1px"> ref sizes="1px" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e96 50w, /images/green-16x16.png?e96 51w" sizes="all and (min-width:0) 100vw, 1px"> ref sizes="1px" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e97 50w, /images/green-16x16.png?e97 51w" sizes="min-width:0 100vw, 1px"> ref sizes="1px" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e98 50w, /images/green-16x16.png?e98 51w" sizes="1px, 100vw"> ref sizes="1px" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e99 50w, /images/green-16x16.png?e99 51w" sizes="1px, (min-width:0) 100vw"> ref sizes="1px" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e100 50w, /images/green-16x16.png?e100 51w" sizes="1px, foo bar"> ref sizes="1px" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e101 50w, /images/green-16x16.png?e101 51w" sizes="(min-width:0) 1px, foo bar"> ref sizes="1px" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e102 50w, /images/green-16x16.png?e102 51w" sizes="("grammar does not match") 100vw, 1px"> ref sizes="1px" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e103 50w, /images/green-16x16.png?e103 51w" sizes="not ("grammar does not match") 100vw, 1px"> ref sizes="1px" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e104 50w, /images/green-16x16.png?e104 51w" sizes="(unknown-general-enclosed !) 100vw, 1px"> ref sizes="1px" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e105 50w, /images/green-16x16.png?e105 51w" sizes="not (unknown-general-enclosed !) 100vw, 1px"> ref sizes="1px" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e106 50w, /images/green-16x16.png?e106 51w" sizes="(min-width:0) or (unknown-general-enclosed !) 1px"> ref sizes="1px" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e107 50w, /images/green-16x16.png?e107 51w" sizes="not ((min-width:0) or (unknown "general-enclosed")) 100vw, 1px"> ref sizes="1px" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e108 50w, /images/green-16x16.png?e108 51w" sizes="(max-width:0) or (unknown-general-enclosed !) 100vw, 1px"> ref sizes="1px" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e109 50w, /images/green-16x16.png?e109 51w" sizes="not ((max-width:0) or (unknown "general-enclosed")) 100vw, 1px"> ref sizes="1px" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f48 50w, /images/green-16x16.png?f48 51w" sizes="calc(1px"> ref sizes="1px" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f49 50w, /images/green-16x16.png?f49 51w" sizes="(min-width:0) calc(1px"> ref sizes="1px" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f2 50w, /images/green-16x16.png?f2 51w" sizes=""> ref sizes="100vw" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f3 50w, /images/green-16x16.png?f3 51w" sizes=","> ref sizes="100vw" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f4 50w, /images/green-16x16.png?f4 51w" sizes="-1px"> ref sizes="100vw" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f5 50w, /images/green-16x16.png?f5 51w" sizes="1"> ref sizes="100vw" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f6 50w, /images/green-16x16.png?f6 51w" sizes="0.1%"> ref sizes="100vw" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f7 50w, /images/green-16x16.png?f7 51w" sizes="0.1deg"> ref sizes="100vw" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f8 50w, /images/green-16x16.png?f8 51w" sizes="0.1grad"> ref sizes="100vw" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f9 50w, /images/green-16x16.png?f9 51w" sizes="0.1rad"> ref sizes="100vw" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f10 50w, /images/green-16x16.png?f10 51w" sizes="0.1turn"> ref sizes="100vw" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f11 50w, /images/green-16x16.png?f11 51w" sizes="0.1s"> ref sizes="100vw" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f12 50w, /images/green-16x16.png?f12 51w" sizes="0.1ms"> ref sizes="100vw" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f13 50w, /images/green-16x16.png?f13 51w" sizes="0.1Hz"> ref sizes="100vw" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f14 50w, /images/green-16x16.png?f14 51w" sizes="0.1kHz"> ref sizes="100vw" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f15 50w, /images/green-16x16.png?f15 51w" sizes="0.1dpi"> ref sizes="100vw" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f16 50w, /images/green-16x16.png?f16 51w" sizes="0.1dpcm"> ref sizes="100vw" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f17 50w, /images/green-16x16.png?f17 51w" sizes="0.1dppx"> ref sizes="100vw" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f18 50w, /images/green-16x16.png?f18 51w" data-foo="1px" sizes="attr(data-foo, length, 1px)"> ref sizes="100vw" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f19 50w, /images/green-16x16.png?f19 51w" data-foo="1" sizes="attr(data-foo, px, 1px)"> ref sizes="100vw" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f20 50w, /images/green-16x16.png?f20 51w" sizes="toggle(1px)"> ref sizes="100vw" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f21 50w, /images/green-16x16.png?f21 51w" sizes="inherit"> ref sizes="100vw" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f22 50w, /images/green-16x16.png?f22 51w" sizes="auto"> ref sizes="100vw" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f23 50w, /images/green-16x16.png?f23 51w" sizes="initial"> ref sizes="100vw" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f24 50w, /images/green-16x16.png?f24 51w" sizes="unset"> ref sizes="100vw" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f25 50w, /images/green-16x16.png?f25 51w" sizes="default"> ref sizes="100vw" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f26 50w, /images/green-16x16.png?f26 51w" sizes="1/* */px"> ref sizes="100vw" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f27 50w, /images/green-16x16.png?f27 51w" sizes="1p/* */x"> ref sizes="100vw" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f28 50w, /images/green-16x16.png?f28 51w" sizes="-/**/0"> ref sizes="100vw" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f29 50w, /images/green-16x16.png?f29 51w" sizes="((),1px"> ref sizes="100vw" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f30 50w, /images/green-16x16.png?f30 51w" sizes="x(x(),1px"> ref sizes="100vw" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f31 50w, /images/green-16x16.png?f31 51w" sizes="{{},1px"> ref sizes="100vw" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f32 50w, /images/green-16x16.png?f32 51w" sizes="[[\],1px"> ref sizes="100vw" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f33 50w, /images/green-16x16.png?f33 51w" sizes="1px !important"> ref sizes="100vw" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f34 50w, /images/green-16x16.png?f34 51w" sizes="\\1px"> ref sizes="100vw" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f35 50w, /images/green-16x16.png?f35 51w" sizes="all 1px"> ref sizes="100vw" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f36 50w, /images/green-16x16.png?f36 51w" sizes="all and (min-width:0) 1px"> ref sizes="100vw" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f37 50w, /images/green-16x16.png?f37 51w" sizes="min-width:0 1px"> ref sizes="100vw" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f38 50w, /images/green-16x16.png?f38 51w" sizes="100vw, 1px"> ref sizes="100vw" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f39 50w, /images/green-16x16.png?f39 51w" sizes="100vw, (min-width:0) 1px"> ref sizes="100vw" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f40 50w, /images/green-16x16.png?f40 51w" sizes="foo bar"> ref sizes="100vw" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f41 50w, /images/green-16x16.png?f41 51w" sizes="foo-bar"> ref sizes="100vw" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f42 50w, /images/green-16x16.png?f42 51w" sizes="(min-width:0) 1px foo bar"> ref sizes="100vw" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f43 50w, /images/green-16x16.png?f43 51w" sizes="(min-width:0) 0.1%"> ref sizes="100vw" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f44 50w, /images/green-16x16.png?f44 51w" sizes="(min-width:0) 1"> ref sizes="100vw" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f45 50w, /images/green-16x16.png?f45 51w" sizes="-1e0px"> ref sizes="100vw" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f46 50w, /images/green-16x16.png?f46 51w" sizes="1e1.5px"> ref sizes="100vw" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f47 50w, /images/green-16x16.png?f47 51w" style="--foo: 1px" sizes="var(--foo)"> ref sizes="100vw" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?a2 300w, /images/green-16x16.png?a2 301w"> ref sizes="100vw" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?b2 450w, /images/green-16x16.png?b2 451w"> ref sizes="100vw" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?c2 600w, /images/green-16x16.png?c2 601w"> ref sizes="100vw" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?d2 900w, /images/green-16x16.png?d2 901w"> ref sizes="100vw" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e2 50w, /images/green-16x16.png?e2 51w" sizes="0"> ref sizes="1px" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e3 50w, /images/green-16x16.png?e3 51w" sizes="-0"> ref sizes="1px" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e4 50w, /images/green-16x16.png?e4 51w" sizes="+0"> ref sizes="1px" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e5 50w, /images/green-16x16.png?e5 51w" sizes="+1px"> ref sizes="1px" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e6 50w, /images/green-16x16.png?e6 51w" sizes=".1px"> ref sizes="1px" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e7 50w, /images/green-16x16.png?e7 51w" sizes="0.1em"> ref sizes="1px" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e8 50w, /images/green-16x16.png?e8 51w" sizes="0.1ex"> ref sizes="1px" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e9 50w, /images/green-16x16.png?e9 51w" sizes="0.1ch"> ref sizes="1px" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e10 50w, /images/green-16x16.png?e10 51w" sizes="0.1rem"> ref sizes="1px" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e11 50w, /images/green-16x16.png?e11 51w" sizes="0.1vw"> ref sizes="1px" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e12 50w, /images/green-16x16.png?e12 51w" sizes="0.1vh"> ref sizes="1px" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e13 50w, /images/green-16x16.png?e13 51w" sizes="0.1vmin"> ref sizes="1px" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e14 50w, /images/green-16x16.png?e14 51w" sizes="0.1vmax"> ref sizes="1px" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e15 50w, /images/green-16x16.png?e15 51w" sizes="0.1cm"> ref sizes="1px" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e16 50w, /images/green-16x16.png?e16 51w" sizes="1mm"> ref sizes="1px" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e17 50w, /images/green-16x16.png?e17 51w" sizes="1q"> ref sizes="1px" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e18 50w, /images/green-16x16.png?e18 51w" sizes="0.01in"> ref sizes="1px" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e19 50w, /images/green-16x16.png?e19 51w" sizes="0.1pc"> ref sizes="1px" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e20 50w, /images/green-16x16.png?e20 51w" sizes="0.1pt"> ref sizes="1px" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e21 50w, /images/green-16x16.png?e21 51w" sizes="/* */1px/* */"> ref sizes="1px" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e22 50w, /images/green-16x16.png?e22 51w" sizes=" /**/ /**/ 1px /**/ /**/ "> ref sizes="1px" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e23 50w, /images/green-16x16.png?e23 51w" sizes="(),1px"> ref sizes="1px" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e24 50w, /images/green-16x16.png?e24 51w" sizes="x(),1px"> ref sizes="1px" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e25 50w, /images/green-16x16.png?e25 51w" sizes="{},1px"> ref sizes="1px" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e26 50w, /images/green-16x16.png?e26 51w" sizes="[\],1px"> ref sizes="1px" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e27 50w, /images/green-16x16.png?e27 51w" sizes="1px,("> ref sizes="1px" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e28 50w, /images/green-16x16.png?e28 51w" sizes="1px,x("> ref sizes="1px" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e29 50w, /images/green-16x16.png?e29 51w" sizes="1px,{"> ref sizes="1px" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e30 50w, /images/green-16x16.png?e30 51w" sizes="1px,["> ref sizes="1px" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e31 50w, /images/green-16x16.png?e31 51w" sizes="\\(,1px"> ref sizes="1px" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e32 50w, /images/green-16x16.png?e32 51w" sizes="x\\(,1px"> ref sizes="1px" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e33 50w, /images/green-16x16.png?e33 51w" sizes="\\{,1px"> ref sizes="1px" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e34 50w, /images/green-16x16.png?e34 51w" sizes="\\[,1px"> ref sizes="1px" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e35 50w, /images/green-16x16.png?e35 51w" sizes="1\\p\\x"> ref sizes="1px" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e36 50w, /images/green-16x16.png?e36 51w" sizes="calc(1px)"> ref sizes="1px" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e37 50w, /images/green-16x16.png?e37 51w" sizes="(min-width:0) calc(1px)"> ref sizes="1px" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e38 50w, /images/green-16x16.png?e38 51w" sizes="(min-width:calc(0)) 1px"> ref sizes="1px" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e39 50w, /images/green-16x16.png?e39 51w" sizes="(min-width:0) 1px, 100vw"> ref sizes="1px" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e40 50w, /images/green-16x16.png?e40 51w" sizes="(min-width:0) 1px, (min-width:0) 100vw, 100vw"> ref sizes="1px" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e41 50w, /images/green-16x16.png?e41 51w" sizes="(min-width:0) 1px"> ref sizes="1px" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e42 50w, /images/green-16x16.png?e42 51w" sizes="not (min-width:0) 100vw, 1px"> ref sizes="1px" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e43 50w, /images/green-16x16.png?e43 51w" sizes="(min-width:unknown-mf-value) 100vw, 1px"> ref sizes="1px" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e44 50w, /images/green-16x16.png?e44 51w" sizes="not (min-width:unknown-mf-value) 100vw, 1px"> ref sizes="1px" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e45 50w, /images/green-16x16.png?e45 51w" sizes="(min-width:-1px) 100vw, 1px"> ref sizes="1px" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e46 50w, /images/green-16x16.png?e46 51w" sizes="not (min-width:-1px) 100vw, 1px"> ref sizes="1px" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e47 50w, /images/green-16x16.png?e47 51w" sizes="(unknown-mf-name) 100vw, 1px"> ref sizes="1px" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e48 50w, /images/green-16x16.png?e48 51w" sizes="not (unknown-mf-name) 100vw, 1px"> ref sizes="1px" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e49 50w, /images/green-16x16.png?e49 51w" sizes="(unknown "general-enclosed") 100vw, 1px"> ref sizes="1px" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e50 50w, /images/green-16x16.png?e50 51w" sizes="not (unknown "general-enclosed") 100vw, 1px"> ref sizes="1px" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e51 50w, /images/green-16x16.png?e51 51w" sizes="unknown-general-enclosed(foo) 100vw, 1px"> ref sizes="1px" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e52 50w, /images/green-16x16.png?e52 51w" sizes="not unknown-general-enclosed(foo) 100vw, 1px"> ref sizes="1px" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e53 50w, /images/green-16x16.png?e53 51w" sizes="print 100vw, 1px"> ref sizes="1px" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e54 50w, /images/green-16x16.png?e54 51w" sizes="not print 100vw, 1px"> ref sizes="1px" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e55 50w, /images/green-16x16.png?e55 51w" sizes="unknown-media-type 100vw, 1px"> ref sizes="1px" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e56 50w, /images/green-16x16.png?e56 51w" sizes="not unknown-media-type 100vw, 1px"> ref sizes="1px" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e57 50w, /images/green-16x16.png?e57 51w" sizes="(min-width:0) or (min-width:0) 1px"> ref sizes="1px" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e58 50w, /images/green-16x16.png?e58 51w" sizes="(min-width:0) or (unknown-mf-name) 1px"> ref sizes="1px" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e59 50w, /images/green-16x16.png?e59 51w" sizes="(min-width:0) or (min-width:unknown-mf-value) 1px"> ref sizes="1px" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e60 50w, /images/green-16x16.png?e60 51w" sizes="(min-width:0) or (min-width:-1px) 1px"> ref sizes="1px" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e61 50w, /images/green-16x16.png?e61 51w" sizes="(min-width:0) or (unknown "general-enclosed") 1px"> ref sizes="1px" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e62 50w, /images/green-16x16.png?e62 51w" sizes="(min-width:0) or unknown-general-enclosed(foo) 1px"> ref sizes="1px" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e63 50w, /images/green-16x16.png?e63 51w" sizes="(min-width:0) or (!) 100vw, 1px"> ref sizes="1px" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e64 50w, /images/green-16x16.png?e64 51w" sizes="(min-width:0) or unknown-media-type 100vw, 1px"> ref sizes="1px" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e65 50w, /images/green-16x16.png?e65 51w" sizes="(123) 100vw, 1px"> ref sizes="1px" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e66 50w, /images/green-16x16.png?e66 51w" sizes="not (123) 100vw, 1px"> ref sizes="1px" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e67 50w, /images/green-16x16.png?e67 51w" sizes="(!) 100vw, 1px"> ref sizes="1px" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e68 50w, /images/green-16x16.png?e68 51w" sizes="not (!) 100vw, 1px"> ref sizes="1px" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e69 50w, /images/green-16x16.png?e69 51w" sizes="! 100vw, 1px"> ref sizes="1px" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e70 50w, /images/green-16x16.png?e70 51w" sizes="not ! 100vw, 1px"> ref sizes="1px" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e71 50w, /images/green-16x16.png?e71 51w" sizes="(\]) 100vw, 1px"> ref sizes="1px" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e72 50w, /images/green-16x16.png?e72 51w" sizes="not (\]) 100vw, 1px"> ref sizes="1px" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e73 50w, /images/green-16x16.png?e73 51w" sizes="\] 100vw, 1px"> ref sizes="1px" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e74 50w, /images/green-16x16.png?e74 51w" sizes="not \] 100vw, 1px"> ref sizes="1px" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e75 50w, /images/green-16x16.png?e75 51w" sizes="(}) 100vw, 1px"> ref sizes="1px" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e76 50w, /images/green-16x16.png?e76 51w" sizes="not (}) 100vw, 1px"> ref sizes="1px" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e77 50w, /images/green-16x16.png?e77 51w" sizes="} 100vw, 1px"> ref sizes="1px" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e78 50w, /images/green-16x16.png?e78 51w" sizes="not } 100vw, 1px"> ref sizes="1px" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e79 50w, /images/green-16x16.png?e79 51w" sizes=") 100vw, 1px"> ref sizes="1px" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e80 50w, /images/green-16x16.png?e80 51w" sizes="not ) 100vw, 1px"> ref sizes="1px" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e81 50w, /images/green-16x16.png?e81 51w" sizes="(;) 100vw, 1px"> ref sizes="1px" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e82 50w, /images/green-16x16.png?e82 51w" sizes="not (;) 100vw, 1px"> ref sizes="1px" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e83 50w, /images/green-16x16.png?e83 51w" sizes="(.) 100vw, 1px"> ref sizes="1px" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e84 50w, /images/green-16x16.png?e84 51w" sizes="not (.) 100vw, 1px"> ref sizes="1px" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e85 50w, /images/green-16x16.png?e85 51w" sizes="; 100vw, 1px"> ref sizes="1px" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e86 50w, /images/green-16x16.png?e86 51w" sizes="not ; 100vw, 1px"> ref sizes="1px" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e87 50w, /images/green-16x16.png?e87 51w" sizes=", 1px"> ref sizes="1px" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e88 50w, /images/green-16x16.png?e88 51w" sizes="1px,"> ref sizes="1px" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e89 50w, /images/green-16x16.png?e89 51w" sizes="(min-width:0) 1px,"> ref sizes="1px" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e90 50w, /images/green-16x16.png?e90 51w" sizes="-0e-0px"> ref sizes="1px" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e91 50w, /images/green-16x16.png?e91 51w" sizes="+0.11e+01px"> ref sizes="1px" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e92 50w, /images/green-16x16.png?e92 51w" sizes="0.2e1px"> ref sizes="1px" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e93 50w, /images/green-16x16.png?e93 51w" sizes="0.3E1px"> ref sizes="1px" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e94 50w, /images/green-16x16.png?e94 51w" sizes=".4E1px"> ref sizes="1px" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e95 50w, /images/green-16x16.png?e95 51w" sizes="all 100vw, 1px"> ref sizes="1px" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e96 50w, /images/green-16x16.png?e96 51w" sizes="all and (min-width:0) 100vw, 1px"> ref sizes="1px" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e97 50w, /images/green-16x16.png?e97 51w" sizes="min-width:0 100vw, 1px"> ref sizes="1px" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e98 50w, /images/green-16x16.png?e98 51w" sizes="1px, 100vw"> ref sizes="1px" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e99 50w, /images/green-16x16.png?e99 51w" sizes="1px, (min-width:0) 100vw"> ref sizes="1px" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e100 50w, /images/green-16x16.png?e100 51w" sizes="1px, foo bar"> ref sizes="1px" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e101 50w, /images/green-16x16.png?e101 51w" sizes="(min-width:0) 1px, foo bar"> ref sizes="1px" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e102 50w, /images/green-16x16.png?e102 51w" sizes="("grammar does not match") 100vw, 1px"> ref sizes="1px" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e103 50w, /images/green-16x16.png?e103 51w" sizes="not ("grammar does not match") 100vw, 1px"> ref sizes="1px" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e104 50w, /images/green-16x16.png?e104 51w" sizes="(unknown-general-enclosed !) 100vw, 1px"> ref sizes="1px" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e105 50w, /images/green-16x16.png?e105 51w" sizes="not (unknown-general-enclosed !) 100vw, 1px"> ref sizes="1px" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e106 50w, /images/green-16x16.png?e106 51w" sizes="(min-width:0) or (unknown-general-enclosed !) 1px"> ref sizes="1px" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e107 50w, /images/green-16x16.png?e107 51w" sizes="not ((min-width:0) or (unknown "general-enclosed")) 100vw, 1px"> ref sizes="1px" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e108 50w, /images/green-16x16.png?e108 51w" sizes="(max-width:0) or (unknown-general-enclosed !) 100vw, 1px"> ref sizes="1px" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e109 50w, /images/green-16x16.png?e109 51w" sizes="not ((max-width:0) or (unknown "general-enclosed")) 100vw, 1px"> ref sizes="1px" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f48 50w, /images/green-16x16.png?f48 51w" sizes="calc(1px"> ref sizes="1px" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f49 50w, /images/green-16x16.png?f49 51w" sizes="(min-width:0) calc(1px"> ref sizes="1px" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f2 50w, /images/green-16x16.png?f2 51w" sizes=""> ref sizes="100vw" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f3 50w, /images/green-16x16.png?f3 51w" sizes=","> ref sizes="100vw" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f4 50w, /images/green-16x16.png?f4 51w" sizes="-1px"> ref sizes="100vw" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f5 50w, /images/green-16x16.png?f5 51w" sizes="1"> ref sizes="100vw" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f6 50w, /images/green-16x16.png?f6 51w" sizes="0.1%"> ref sizes="100vw" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f7 50w, /images/green-16x16.png?f7 51w" sizes="0.1deg"> ref sizes="100vw" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f8 50w, /images/green-16x16.png?f8 51w" sizes="0.1grad"> ref sizes="100vw" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f9 50w, /images/green-16x16.png?f9 51w" sizes="0.1rad"> ref sizes="100vw" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f10 50w, /images/green-16x16.png?f10 51w" sizes="0.1turn"> ref sizes="100vw" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f11 50w, /images/green-16x16.png?f11 51w" sizes="0.1s"> ref sizes="100vw" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f12 50w, /images/green-16x16.png?f12 51w" sizes="0.1ms"> ref sizes="100vw" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f13 50w, /images/green-16x16.png?f13 51w" sizes="0.1Hz"> ref sizes="100vw" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f14 50w, /images/green-16x16.png?f14 51w" sizes="0.1kHz"> ref sizes="100vw" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f15 50w, /images/green-16x16.png?f15 51w" sizes="0.1dpi"> ref sizes="100vw" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f16 50w, /images/green-16x16.png?f16 51w" sizes="0.1dpcm"> ref sizes="100vw" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f17 50w, /images/green-16x16.png?f17 51w" sizes="0.1dppx"> ref sizes="100vw" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f18 50w, /images/green-16x16.png?f18 51w" data-foo="1px" sizes="attr(data-foo, length, 1px)"> ref sizes="100vw" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f19 50w, /images/green-16x16.png?f19 51w" data-foo="1" sizes="attr(data-foo, px, 1px)"> ref sizes="100vw" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f20 50w, /images/green-16x16.png?f20 51w" sizes="toggle(1px)"> ref sizes="100vw" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f21 50w, /images/green-16x16.png?f21 51w" sizes="inherit"> ref sizes="100vw" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f22 50w, /images/green-16x16.png?f22 51w" sizes="auto"> ref sizes="100vw" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f23 50w, /images/green-16x16.png?f23 51w" sizes="initial"> ref sizes="100vw" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f24 50w, /images/green-16x16.png?f24 51w" sizes="unset"> ref sizes="100vw" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f25 50w, /images/green-16x16.png?f25 51w" sizes="default"> ref sizes="100vw" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f26 50w, /images/green-16x16.png?f26 51w" sizes="1/* */px"> ref sizes="100vw" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f27 50w, /images/green-16x16.png?f27 51w" sizes="1p/* */x"> ref sizes="100vw" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f28 50w, /images/green-16x16.png?f28 51w" sizes="-/**/0"> ref sizes="100vw" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f29 50w, /images/green-16x16.png?f29 51w" sizes="((),1px"> ref sizes="100vw" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f30 50w, /images/green-16x16.png?f30 51w" sizes="x(x(),1px"> ref sizes="100vw" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f31 50w, /images/green-16x16.png?f31 51w" sizes="{{},1px"> ref sizes="100vw" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f32 50w, /images/green-16x16.png?f32 51w" sizes="[[\],1px"> ref sizes="100vw" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f33 50w, /images/green-16x16.png?f33 51w" sizes="1px !important"> ref sizes="100vw" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f34 50w, /images/green-16x16.png?f34 51w" sizes="\\1px"> ref sizes="100vw" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f35 50w, /images/green-16x16.png?f35 51w" sizes="all 1px"> ref sizes="100vw" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f36 50w, /images/green-16x16.png?f36 51w" sizes="all and (min-width:0) 1px"> ref sizes="100vw" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f37 50w, /images/green-16x16.png?f37 51w" sizes="min-width:0 1px"> ref sizes="100vw" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f38 50w, /images/green-16x16.png?f38 51w" sizes="100vw, 1px"> ref sizes="100vw" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f39 50w, /images/green-16x16.png?f39 51w" sizes="100vw, (min-width:0) 1px"> ref sizes="100vw" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f40 50w, /images/green-16x16.png?f40 51w" sizes="foo bar"> ref sizes="100vw" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f41 50w, /images/green-16x16.png?f41 51w" sizes="foo-bar"> ref sizes="100vw" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f42 50w, /images/green-16x16.png?f42 51w" sizes="(min-width:0) 1px foo bar"> ref sizes="100vw" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f43 50w, /images/green-16x16.png?f43 51w" sizes="(min-width:0) 0.1%"> ref sizes="100vw" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f44 50w, /images/green-16x16.png?f44 51w" sizes="(min-width:0) 1"> ref sizes="100vw" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f45 50w, /images/green-16x16.png?f45 51w" sizes="-1e0px"> ref sizes="100vw" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f46 50w, /images/green-16x16.png?f46 51w" sizes="1e1.5px"> ref sizes="100vw" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f47 50w, /images/green-16x16.png?f47 51w" style="--foo: 1px" sizes="var(--foo)"> ref sizes="100vw" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?a2 300w, /images/green-16x16.png?a2 301w"> ref sizes="100vw" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?b2 450w, /images/green-16x16.png?b2 451w"> ref sizes="100vw" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?c2 600w, /images/green-16x16.png?c2 601w"> ref sizes="100vw" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?d2 900w, /images/green-16x16.png?d2 901w"> ref sizes="100vw" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e2 50w, /images/green-16x16.png?e2 51w" sizes="0"> ref sizes="1px" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e3 50w, /images/green-16x16.png?e3 51w" sizes="-0"> ref sizes="1px" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e4 50w, /images/green-16x16.png?e4 51w" sizes="+0"> ref sizes="1px" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e5 50w, /images/green-16x16.png?e5 51w" sizes="+1px"> ref sizes="1px" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e6 50w, /images/green-16x16.png?e6 51w" sizes=".1px"> ref sizes="1px" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e7 50w, /images/green-16x16.png?e7 51w" sizes="0.1em"> ref sizes="1px" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e8 50w, /images/green-16x16.png?e8 51w" sizes="0.1ex"> ref sizes="1px" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e9 50w, /images/green-16x16.png?e9 51w" sizes="0.1ch"> ref sizes="1px" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e10 50w, /images/green-16x16.png?e10 51w" sizes="0.1rem"> ref sizes="1px" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e11 50w, /images/green-16x16.png?e11 51w" sizes="0.1vw"> ref sizes="1px" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e12 50w, /images/green-16x16.png?e12 51w" sizes="0.1vh"> ref sizes="1px" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e13 50w, /images/green-16x16.png?e13 51w" sizes="0.1vmin"> ref sizes="1px" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e14 50w, /images/green-16x16.png?e14 51w" sizes="0.1vmax"> ref sizes="1px" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e15 50w, /images/green-16x16.png?e15 51w" sizes="0.1cm"> ref sizes="1px" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e16 50w, /images/green-16x16.png?e16 51w" sizes="1mm"> ref sizes="1px" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e17 50w, /images/green-16x16.png?e17 51w" sizes="1q"> ref sizes="1px" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e18 50w, /images/green-16x16.png?e18 51w" sizes="0.01in"> ref sizes="1px" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e19 50w, /images/green-16x16.png?e19 51w" sizes="0.1pc"> ref sizes="1px" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e20 50w, /images/green-16x16.png?e20 51w" sizes="0.1pt"> ref sizes="1px" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e21 50w, /images/green-16x16.png?e21 51w" sizes="/* */1px/* */"> ref sizes="1px" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e22 50w, /images/green-16x16.png?e22 51w" sizes=" /**/ /**/ 1px /**/ /**/ "> ref sizes="1px" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e23 50w, /images/green-16x16.png?e23 51w" sizes="(),1px"> ref sizes="1px" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e24 50w, /images/green-16x16.png?e24 51w" sizes="x(),1px"> ref sizes="1px" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e25 50w, /images/green-16x16.png?e25 51w" sizes="{},1px"> ref sizes="1px" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e26 50w, /images/green-16x16.png?e26 51w" sizes="[\],1px"> ref sizes="1px" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e27 50w, /images/green-16x16.png?e27 51w" sizes="1px,("> ref sizes="1px" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e28 50w, /images/green-16x16.png?e28 51w" sizes="1px,x("> ref sizes="1px" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e29 50w, /images/green-16x16.png?e29 51w" sizes="1px,{"> ref sizes="1px" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e30 50w, /images/green-16x16.png?e30 51w" sizes="1px,["> ref sizes="1px" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e31 50w, /images/green-16x16.png?e31 51w" sizes="\\(,1px"> ref sizes="1px" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e32 50w, /images/green-16x16.png?e32 51w" sizes="x\\(,1px"> ref sizes="1px" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e33 50w, /images/green-16x16.png?e33 51w" sizes="\\{,1px"> ref sizes="1px" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e34 50w, /images/green-16x16.png?e34 51w" sizes="\\[,1px"> ref sizes="1px" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e35 50w, /images/green-16x16.png?e35 51w" sizes="1\\p\\x"> ref sizes="1px" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e36 50w, /images/green-16x16.png?e36 51w" sizes="calc(1px)"> ref sizes="1px" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e37 50w, /images/green-16x16.png?e37 51w" sizes="(min-width:0) calc(1px)"> ref sizes="1px" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e38 50w, /images/green-16x16.png?e38 51w" sizes="(min-width:calc(0)) 1px"> ref sizes="1px" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e39 50w, /images/green-16x16.png?e39 51w" sizes="(min-width:0) 1px, 100vw"> ref sizes="1px" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e40 50w, /images/green-16x16.png?e40 51w" sizes="(min-width:0) 1px, (min-width:0) 100vw, 100vw"> ref sizes="1px" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e41 50w, /images/green-16x16.png?e41 51w" sizes="(min-width:0) 1px"> ref sizes="1px" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e42 50w, /images/green-16x16.png?e42 51w" sizes="not (min-width:0) 100vw, 1px"> ref sizes="1px" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e43 50w, /images/green-16x16.png?e43 51w" sizes="(min-width:unknown-mf-value) 100vw, 1px"> ref sizes="1px" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e44 50w, /images/green-16x16.png?e44 51w" sizes="not (min-width:unknown-mf-value) 100vw, 1px"> ref sizes="1px" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e45 50w, /images/green-16x16.png?e45 51w" sizes="(min-width:-1px) 100vw, 1px"> ref sizes="1px" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e46 50w, /images/green-16x16.png?e46 51w" sizes="not (min-width:-1px) 100vw, 1px"> ref sizes="1px" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e47 50w, /images/green-16x16.png?e47 51w" sizes="(unknown-mf-name) 100vw, 1px"> ref sizes="1px" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e48 50w, /images/green-16x16.png?e48 51w" sizes="not (unknown-mf-name) 100vw, 1px"> ref sizes="1px" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e49 50w, /images/green-16x16.png?e49 51w" sizes="(unknown "general-enclosed") 100vw, 1px"> ref sizes="1px" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e50 50w, /images/green-16x16.png?e50 51w" sizes="not (unknown "general-enclosed") 100vw, 1px"> ref sizes="1px" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e51 50w, /images/green-16x16.png?e51 51w" sizes="unknown-general-enclosed(foo) 100vw, 1px"> ref sizes="1px" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e52 50w, /images/green-16x16.png?e52 51w" sizes="not unknown-general-enclosed(foo) 100vw, 1px"> ref sizes="1px" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e53 50w, /images/green-16x16.png?e53 51w" sizes="print 100vw, 1px"> ref sizes="1px" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e54 50w, /images/green-16x16.png?e54 51w" sizes="not print 100vw, 1px"> ref sizes="1px" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e55 50w, /images/green-16x16.png?e55 51w" sizes="unknown-media-type 100vw, 1px"> ref sizes="1px" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e56 50w, /images/green-16x16.png?e56 51w" sizes="not unknown-media-type 100vw, 1px"> ref sizes="1px" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e57 50w, /images/green-16x16.png?e57 51w" sizes="(min-width:0) or (min-width:0) 1px"> ref sizes="1px" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e58 50w, /images/green-16x16.png?e58 51w" sizes="(min-width:0) or (unknown-mf-name) 1px"> ref sizes="1px" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e59 50w, /images/green-16x16.png?e59 51w" sizes="(min-width:0) or (min-width:unknown-mf-value) 1px"> ref sizes="1px" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e60 50w, /images/green-16x16.png?e60 51w" sizes="(min-width:0) or (min-width:-1px) 1px"> ref sizes="1px" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e61 50w, /images/green-16x16.png?e61 51w" sizes="(min-width:0) or (unknown "general-enclosed") 1px"> ref sizes="1px" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e62 50w, /images/green-16x16.png?e62 51w" sizes="(min-width:0) or unknown-general-enclosed(foo) 1px"> ref sizes="1px" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e63 50w, /images/green-16x16.png?e63 51w" sizes="(min-width:0) or (!) 100vw, 1px"> ref sizes="1px" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e64 50w, /images/green-16x16.png?e64 51w" sizes="(min-width:0) or unknown-media-type 100vw, 1px"> ref sizes="1px" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e65 50w, /images/green-16x16.png?e65 51w" sizes="(123) 100vw, 1px"> ref sizes="1px" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e66 50w, /images/green-16x16.png?e66 51w" sizes="not (123) 100vw, 1px"> ref sizes="1px" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e67 50w, /images/green-16x16.png?e67 51w" sizes="(!) 100vw, 1px"> ref sizes="1px" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e68 50w, /images/green-16x16.png?e68 51w" sizes="not (!) 100vw, 1px"> ref sizes="1px" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e69 50w, /images/green-16x16.png?e69 51w" sizes="! 100vw, 1px"> ref sizes="1px" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e70 50w, /images/green-16x16.png?e70 51w" sizes="not ! 100vw, 1px"> ref sizes="1px" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e71 50w, /images/green-16x16.png?e71 51w" sizes="(\]) 100vw, 1px"> ref sizes="1px" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e72 50w, /images/green-16x16.png?e72 51w" sizes="not (\]) 100vw, 1px"> ref sizes="1px" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e73 50w, /images/green-16x16.png?e73 51w" sizes="\] 100vw, 1px"> ref sizes="1px" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e74 50w, /images/green-16x16.png?e74 51w" sizes="not \] 100vw, 1px"> ref sizes="1px" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e75 50w, /images/green-16x16.png?e75 51w" sizes="(}) 100vw, 1px"> ref sizes="1px" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e76 50w, /images/green-16x16.png?e76 51w" sizes="not (}) 100vw, 1px"> ref sizes="1px" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e77 50w, /images/green-16x16.png?e77 51w" sizes="} 100vw, 1px"> ref sizes="1px" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e78 50w, /images/green-16x16.png?e78 51w" sizes="not } 100vw, 1px"> ref sizes="1px" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e79 50w, /images/green-16x16.png?e79 51w" sizes=") 100vw, 1px"> ref sizes="1px" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e80 50w, /images/green-16x16.png?e80 51w" sizes="not ) 100vw, 1px"> ref sizes="1px" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e81 50w, /images/green-16x16.png?e81 51w" sizes="(;) 100vw, 1px"> ref sizes="1px" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e82 50w, /images/green-16x16.png?e82 51w" sizes="not (;) 100vw, 1px"> ref sizes="1px" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e83 50w, /images/green-16x16.png?e83 51w" sizes="(.) 100vw, 1px"> ref sizes="1px" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e84 50w, /images/green-16x16.png?e84 51w" sizes="not (.) 100vw, 1px"> ref sizes="1px" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e85 50w, /images/green-16x16.png?e85 51w" sizes="; 100vw, 1px"> ref sizes="1px" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e86 50w, /images/green-16x16.png?e86 51w" sizes="not ; 100vw, 1px"> ref sizes="1px" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e87 50w, /images/green-16x16.png?e87 51w" sizes=", 1px"> ref sizes="1px" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e88 50w, /images/green-16x16.png?e88 51w" sizes="1px,"> ref sizes="1px" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e89 50w, /images/green-16x16.png?e89 51w" sizes="(min-width:0) 1px,"> ref sizes="1px" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e90 50w, /images/green-16x16.png?e90 51w" sizes="-0e-0px"> ref sizes="1px" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e91 50w, /images/green-16x16.png?e91 51w" sizes="+0.11e+01px"> ref sizes="1px" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e92 50w, /images/green-16x16.png?e92 51w" sizes="0.2e1px"> ref sizes="1px" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e93 50w, /images/green-16x16.png?e93 51w" sizes="0.3E1px"> ref sizes="1px" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e94 50w, /images/green-16x16.png?e94 51w" sizes=".4E1px"> ref sizes="1px" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e95 50w, /images/green-16x16.png?e95 51w" sizes="all 100vw, 1px"> ref sizes="1px" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e96 50w, /images/green-16x16.png?e96 51w" sizes="all and (min-width:0) 100vw, 1px"> ref sizes="1px" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e97 50w, /images/green-16x16.png?e97 51w" sizes="min-width:0 100vw, 1px"> ref sizes="1px" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e98 50w, /images/green-16x16.png?e98 51w" sizes="1px, 100vw"> ref sizes="1px" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e99 50w, /images/green-16x16.png?e99 51w" sizes="1px, (min-width:0) 100vw"> ref sizes="1px" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e100 50w, /images/green-16x16.png?e100 51w" sizes="1px, foo bar"> ref sizes="1px" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e101 50w, /images/green-16x16.png?e101 51w" sizes="(min-width:0) 1px, foo bar"> ref sizes="1px" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e102 50w, /images/green-16x16.png?e102 51w" sizes="("grammar does not match") 100vw, 1px"> ref sizes="1px" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e103 50w, /images/green-16x16.png?e103 51w" sizes="not ("grammar does not match") 100vw, 1px"> ref sizes="1px" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e104 50w, /images/green-16x16.png?e104 51w" sizes="(unknown-general-enclosed !) 100vw, 1px"> ref sizes="1px" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e105 50w, /images/green-16x16.png?e105 51w" sizes="not (unknown-general-enclosed !) 100vw, 1px"> ref sizes="1px" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e106 50w, /images/green-16x16.png?e106 51w" sizes="(min-width:0) or (unknown-general-enclosed !) 1px"> ref sizes="1px" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e107 50w, /images/green-16x16.png?e107 51w" sizes="not ((min-width:0) or (unknown "general-enclosed")) 100vw, 1px"> ref sizes="1px" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e108 50w, /images/green-16x16.png?e108 51w" sizes="(max-width:0) or (unknown-general-enclosed !) 100vw, 1px"> ref sizes="1px" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e109 50w, /images/green-16x16.png?e109 51w" sizes="not ((max-width:0) or (unknown "general-enclosed")) 100vw, 1px"> ref sizes="1px" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f48 50w, /images/green-16x16.png?f48 51w" sizes="calc(1px"> ref sizes="1px" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f49 50w, /images/green-16x16.png?f49 51w" sizes="(min-width:0) calc(1px"> ref sizes="1px" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f2 50w, /images/green-16x16.png?f2 51w" sizes=""> ref sizes="100vw" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f3 50w, /images/green-16x16.png?f3 51w" sizes=","> ref sizes="100vw" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f4 50w, /images/green-16x16.png?f4 51w" sizes="-1px"> ref sizes="100vw" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f5 50w, /images/green-16x16.png?f5 51w" sizes="1"> ref sizes="100vw" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f6 50w, /images/green-16x16.png?f6 51w" sizes="0.1%"> ref sizes="100vw" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f7 50w, /images/green-16x16.png?f7 51w" sizes="0.1deg"> ref sizes="100vw" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f8 50w, /images/green-16x16.png?f8 51w" sizes="0.1grad"> ref sizes="100vw" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f9 50w, /images/green-16x16.png?f9 51w" sizes="0.1rad"> ref sizes="100vw" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f10 50w, /images/green-16x16.png?f10 51w" sizes="0.1turn"> ref sizes="100vw" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f11 50w, /images/green-16x16.png?f11 51w" sizes="0.1s"> ref sizes="100vw" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f12 50w, /images/green-16x16.png?f12 51w" sizes="0.1ms"> ref sizes="100vw" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f13 50w, /images/green-16x16.png?f13 51w" sizes="0.1Hz"> ref sizes="100vw" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f14 50w, /images/green-16x16.png?f14 51w" sizes="0.1kHz"> ref sizes="100vw" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f15 50w, /images/green-16x16.png?f15 51w" sizes="0.1dpi"> ref sizes="100vw" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f16 50w, /images/green-16x16.png?f16 51w" sizes="0.1dpcm"> ref sizes="100vw" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f17 50w, /images/green-16x16.png?f17 51w" sizes="0.1dppx"> ref sizes="100vw" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f18 50w, /images/green-16x16.png?f18 51w" data-foo="1px" sizes="attr(data-foo, length, 1px)"> ref sizes="100vw" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f19 50w, /images/green-16x16.png?f19 51w" data-foo="1" sizes="attr(data-foo, px, 1px)"> ref sizes="100vw" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f20 50w, /images/green-16x16.png?f20 51w" sizes="toggle(1px)"> ref sizes="100vw" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f21 50w, /images/green-16x16.png?f21 51w" sizes="inherit"> ref sizes="100vw" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f22 50w, /images/green-16x16.png?f22 51w" sizes="auto"> ref sizes="100vw" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f23 50w, /images/green-16x16.png?f23 51w" sizes="initial"> ref sizes="100vw" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f24 50w, /images/green-16x16.png?f24 51w" sizes="unset"> ref sizes="100vw" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f25 50w, /images/green-16x16.png?f25 51w" sizes="default"> ref sizes="100vw" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f26 50w, /images/green-16x16.png?f26 51w" sizes="1/* */px"> ref sizes="100vw" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f27 50w, /images/green-16x16.png?f27 51w" sizes="1p/* */x"> ref sizes="100vw" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f28 50w, /images/green-16x16.png?f28 51w" sizes="-/**/0"> ref sizes="100vw" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f29 50w, /images/green-16x16.png?f29 51w" sizes="((),1px"> ref sizes="100vw" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f30 50w, /images/green-16x16.png?f30 51w" sizes="x(x(),1px"> ref sizes="100vw" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f31 50w, /images/green-16x16.png?f31 51w" sizes="{{},1px"> ref sizes="100vw" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f32 50w, /images/green-16x16.png?f32 51w" sizes="[[\],1px"> ref sizes="100vw" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f33 50w, /images/green-16x16.png?f33 51w" sizes="1px !important"> ref sizes="100vw" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f34 50w, /images/green-16x16.png?f34 51w" sizes="\\1px"> ref sizes="100vw" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f35 50w, /images/green-16x16.png?f35 51w" sizes="all 1px"> ref sizes="100vw" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f36 50w, /images/green-16x16.png?f36 51w" sizes="all and (min-width:0) 1px"> ref sizes="100vw" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f37 50w, /images/green-16x16.png?f37 51w" sizes="min-width:0 1px"> ref sizes="100vw" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f38 50w, /images/green-16x16.png?f38 51w" sizes="100vw, 1px"> ref sizes="100vw" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f39 50w, /images/green-16x16.png?f39 51w" sizes="100vw, (min-width:0) 1px"> ref sizes="100vw" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f40 50w, /images/green-16x16.png?f40 51w" sizes="foo bar"> ref sizes="100vw" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f41 50w, /images/green-16x16.png?f41 51w" sizes="foo-bar"> ref sizes="100vw" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f42 50w, /images/green-16x16.png?f42 51w" sizes="(min-width:0) 1px foo bar"> ref sizes="100vw" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f43 50w, /images/green-16x16.png?f43 51w" sizes="(min-width:0) 0.1%"> ref sizes="100vw" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f44 50w, /images/green-16x16.png?f44 51w" sizes="(min-width:0) 1"> ref sizes="100vw" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f45 50w, /images/green-16x16.png?f45 51w" sizes="-1e0px"> ref sizes="100vw" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f46 50w, /images/green-16x16.png?f46 51w" sizes="1e1.5px"> ref sizes="100vw" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f47 50w, /images/green-16x16.png?f47 51w" style="--foo: 1px" sizes="var(--foo)"> ref sizes="100vw" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e36a 50w, /images/green-16x16.png?e36a 51w" sizes="min(1px, 100px)"> ref sizes="1px" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e36b 50w, /images/green-16x16.png?e36b 51w" sizes="min(-100px, 1px)"> ref sizes="1px" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e37a 50w, /images/green-16x16.png?e37a 51w" sizes="(min-width:0) min(1px, 100px)"> ref sizes="1px" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e37b 50w, /images/green-16x16.png?e37b 51w" sizes="(min-width:0) max(-100px, 1px)"> ref sizes="1px" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e38a 50w, /images/green-16x16.png?e38a 51w" sizes="(min-width:min(0, 200vw)) 1px"> ref sizes="1px" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e38b 50w, /images/green-16x16.png?e38b 51w" sizes="(min-width:max(-200vw, 0)) 1px"> ref sizes="1px" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f48a 50w, /images/green-16x16.png?f48a 51w" sizes="min(1px, 200vw"> ref sizes="1px" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f48b 50w, /images/green-16x16.png?f48b 51w" sizes="max(-200vw, 1px"> ref sizes="1px" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f49a 50w, /images/green-16x16.png?f49a 51w" sizes="(min-width:0) min(1px, 200vw"> ref sizes="1px" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f49b 50w, /images/green-16x16.png?f49b 51w" sizes="(min-width:0) max(-200vw, 1px"> ref sizes="1px" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e36a 50w, /images/green-16x16.png?e36a 51w" sizes="min(1px, 100px)"> ref sizes="1px" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e36b 50w, /images/green-16x16.png?e36b 51w" sizes="min(-100px, 1px)"> ref sizes="1px" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e37a 50w, /images/green-16x16.png?e37a 51w" sizes="(min-width:0) min(1px, 100px)"> ref sizes="1px" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e37b 50w, /images/green-16x16.png?e37b 51w" sizes="(min-width:0) max(-100px, 1px)"> ref sizes="1px" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e38a 50w, /images/green-16x16.png?e38a 51w" sizes="(min-width:min(0, 200vw)) 1px"> ref sizes="1px" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e38b 50w, /images/green-16x16.png?e38b 51w" sizes="(min-width:max(-200vw, 0)) 1px"> ref sizes="1px" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f48a 50w, /images/green-16x16.png?f48a 51w" sizes="min(1px, 200vw"> ref sizes="1px" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f48b 50w, /images/green-16x16.png?f48b 51w" sizes="max(-200vw, 1px"> ref sizes="1px" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f49a 50w, /images/green-16x16.png?f49a 51w" sizes="(min-width:0) min(1px, 200vw"> ref sizes="1px" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f49b 50w, /images/green-16x16.png?f49b 51w" sizes="(min-width:0) max(-200vw, 1px"> ref sizes="1px" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e36a 50w, /images/green-16x16.png?e36a 51w" sizes="min(1px, 100px)"> ref sizes="1px" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e36b 50w, /images/green-16x16.png?e36b 51w" sizes="min(-100px, 1px)"> ref sizes="1px" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e37a 50w, /images/green-16x16.png?e37a 51w" sizes="(min-width:0) min(1px, 100px)"> ref sizes="1px" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e37b 50w, /images/green-16x16.png?e37b 51w" sizes="(min-width:0) max(-100px, 1px)"> ref sizes="1px" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e38a 50w, /images/green-16x16.png?e38a 51w" sizes="(min-width:min(0, 200vw)) 1px"> ref sizes="1px" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e38b 50w, /images/green-16x16.png?e38b 51w" sizes="(min-width:max(-200vw, 0)) 1px"> ref sizes="1px" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f48a 50w, /images/green-16x16.png?f48a 51w" sizes="min(1px, 200vw"> ref sizes="1px" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f48b 50w, /images/green-16x16.png?f48b 51w" sizes="max(-200vw, 1px"> ref sizes="1px" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f49a 50w, /images/green-16x16.png?f49a 51w" sizes="(min-width:0) min(1px, 200vw"> ref sizes="1px" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f49b 50w, /images/green-16x16.png?f49b 51w" sizes="(min-width:0) max(-200vw, 1px"> ref sizes="1px" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e36a 50w, /images/green-16x16.png?e36a 51w" sizes="min(1px, 100px)"> ref sizes="1px" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e36b 50w, /images/green-16x16.png?e36b 51w" sizes="min(-100px, 1px)"> ref sizes="1px" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e37a 50w, /images/green-16x16.png?e37a 51w" sizes="(min-width:0) min(1px, 100px)"> ref sizes="1px" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e37b 50w, /images/green-16x16.png?e37b 51w" sizes="(min-width:0) max(-100px, 1px)"> ref sizes="1px" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e38a 50w, /images/green-16x16.png?e38a 51w" sizes="(min-width:min(0, 200vw)) 1px"> ref sizes="1px" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?e38b 50w, /images/green-16x16.png?e38b 51w" sizes="(min-width:max(-200vw, 0)) 1px"> ref sizes="1px" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f48a 50w, /images/green-16x16.png?f48a 51w" sizes="min(1px, 200vw"> ref sizes="1px" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f48b 50w, /images/green-16x16.png?f48b 51w" sizes="max(-200vw, 1px"> ref sizes="1px" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f49a 50w, /images/green-16x16.png?f49a 51w" sizes="(min-width:0) min(1px, 200vw"> ref sizes="1px" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f49b 50w, /images/green-16x16.png?f49b 51w" sizes="(min-width:0) max(-200vw, 1px"> ref sizes="1px" (width:1000px)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f17a 50w, /images/green-16x16.png?f17a 51w" sizes="0.1x"> ref sizes="100vw" (standards mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f17a 50w, /images/green-16x16.png?f17a 51w" sizes="0.1x"> ref sizes="100vw" (quirks mode)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f17a 50w, /images/green-16x16.png?f17a 51w" sizes="0.1x"> ref sizes="100vw" (display:none)] - expected: FAIL - - [<img srcset="/images/green-1x1.png?f17a 50w, /images/green-16x16.png?f17a 51w" sizes="0.1x"> ref sizes="100vw" (width:1000px)] - expected: FAIL - diff --git a/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/module/dynamic-import/propagate-nonce-external-classic.html.ini b/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/module/dynamic-import/propagate-nonce-external-classic.html.ini index 8e5a893687f..a9703dc3c56 100644 --- a/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/module/dynamic-import/propagate-nonce-external-classic.html.ini +++ b/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/module/dynamic-import/propagate-nonce-external-classic.html.ini @@ -3,3 +3,6 @@ [Untitled] expected: FAIL + [propagate-nonce-external-classic] + expected: FAIL + diff --git a/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/module/dynamic-import/propagate-nonce-inline-classic.html.ini b/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/module/dynamic-import/propagate-nonce-inline-classic.html.ini index d3648a27d9a..b4cf6f68cf5 100644 --- a/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/module/dynamic-import/propagate-nonce-inline-classic.html.ini +++ b/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/module/dynamic-import/propagate-nonce-inline-classic.html.ini @@ -3,3 +3,6 @@ [Untitled] expected: FAIL + [propagate-nonce-inline-classic] + expected: FAIL + diff --git a/tests/wpt/metadata/performance-timeline/idlharness.any.js.ini b/tests/wpt/metadata/performance-timeline/idlharness.any.js.ini index 7773d627528..dff210cc1d9 100644 --- a/tests/wpt/metadata/performance-timeline/idlharness.any.js.ini +++ b/tests/wpt/metadata/performance-timeline/idlharness.any.js.ini @@ -2,16 +2,27 @@ [Untitled] expected: FAIL + [idlharness] + expected: FAIL + [idlharness.any.worker.html] - expected: ERROR + [idlharness] + expected: FAIL + [idlharness.any.html] [Untitled] expected: FAIL + [idlharness] + expected: FAIL + [idlharness.https.any.serviceworker.html] [Untitled] expected: FAIL + [idlharness] + expected: FAIL + diff --git a/tests/wpt/metadata/performance-timeline/performanceentry-tojson.any.js.ini b/tests/wpt/metadata/performance-timeline/performanceentry-tojson.any.js.ini new file mode 100644 index 00000000000..8ad24aff52f --- /dev/null +++ b/tests/wpt/metadata/performance-timeline/performanceentry-tojson.any.js.ini @@ -0,0 +1,9 @@ +[performanceentry-tojson.any.html] + [performanceentry-tojson] + expected: FAIL + + +[performanceentry-tojson.any.worker.html] + [performanceentry-tojson] + expected: FAIL + diff --git a/tests/wpt/metadata/performance-timeline/performanceentry-tojson.html.ini b/tests/wpt/metadata/performance-timeline/performanceentry-tojson.html.ini deleted file mode 100644 index c212efca8e8..00000000000 --- a/tests/wpt/metadata/performance-timeline/performanceentry-tojson.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[performanceentry-tojson.html] - [Untitled] - expected: FAIL - diff --git a/tests/wpt/metadata/performance-timeline/po-takeRecords.any.js.ini b/tests/wpt/metadata/performance-timeline/po-takeRecords.any.js.ini new file mode 100644 index 00000000000..851af386c48 --- /dev/null +++ b/tests/wpt/metadata/performance-timeline/po-takeRecords.any.js.ini @@ -0,0 +1,9 @@ +[po-takeRecords.any.worker.html] + [Test PerformanceObserver's takeRecords()] + expected: FAIL + + +[po-takeRecords.any.html] + [Test PerformanceObserver's takeRecords()] + expected: FAIL + diff --git a/tests/wpt/metadata/performance-timeline/po-takeRecords.html.ini b/tests/wpt/metadata/performance-timeline/po-takeRecords.html.ini deleted file mode 100644 index 7ea09b3295f..00000000000 --- a/tests/wpt/metadata/performance-timeline/po-takeRecords.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[po-takeRecords.html] - [Test PerformanceObserver's takeRecords()] - expected: FAIL - diff --git a/tests/wpt/metadata/performance-timeline/webtiming-resolution.any.js.ini b/tests/wpt/metadata/performance-timeline/webtiming-resolution.any.js.ini new file mode 100644 index 00000000000..c9bacb01f1a --- /dev/null +++ b/tests/wpt/metadata/performance-timeline/webtiming-resolution.any.js.ini @@ -0,0 +1,11 @@ +[webtiming-resolution.any.html] + expected: TIMEOUT + +[webtiming-resolution.any.worker.html] + expected: TIMEOUT + [Verifies the resolution of performance.now() is at least 20 microseconds.] + expected: FAIL + + [Verifies the resolution of entry.startTime is at least 20 microseconds.] + expected: TIMEOUT + diff --git a/tests/wpt/metadata/performance-timeline/webtiming-resolution.html.ini b/tests/wpt/metadata/performance-timeline/webtiming-resolution.html.ini deleted file mode 100644 index 53f3b5c8a49..00000000000 --- a/tests/wpt/metadata/performance-timeline/webtiming-resolution.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[webtiming-resolution.html] - expected: TIMEOUT diff --git a/tests/wpt/metadata/touch-events/idlharness.window.js.ini b/tests/wpt/metadata/touch-events/idlharness.window.js.ini new file mode 100644 index 00000000000..e663f693ac3 --- /dev/null +++ b/tests/wpt/metadata/touch-events/idlharness.window.js.ini @@ -0,0 +1,4 @@ +[idlharness.window.html] + [idlharness] + expected: FAIL + diff --git a/tests/wpt/metadata/url/interfaces.any.js.ini b/tests/wpt/metadata/url/interfaces.any.js.ini index 8fece4f457b..a5d31c501eb 100644 --- a/tests/wpt/metadata/url/interfaces.any.js.ini +++ b/tests/wpt/metadata/url/interfaces.any.js.ini @@ -30,10 +30,12 @@ [Untitled] expected: FAIL + [interfaces] + expected: FAIL + [interfaces.any.worker.html] type: testharness - expected: ERROR [URL interface: operation toJSON()] expected: FAIL @@ -61,3 +63,6 @@ [Untitled] expected: FAIL + [interfaces] + expected: FAIL + diff --git a/tests/wpt/metadata/websockets/Secure-Close-undefined.any.js.ini b/tests/wpt/metadata/websockets/Secure-Close-undefined.any.js.ini index 3fccd5be3dc..5b19c388090 100644 --- a/tests/wpt/metadata/websockets/Secure-Close-undefined.any.js.ini +++ b/tests/wpt/metadata/websockets/Secure-Close-undefined.any.js.ini @@ -3,9 +3,15 @@ [Untitled] expected: NOTRUN + [Secure-Close-undefined] + expected: NOTRUN + [Secure-Close-undefined.any.html] expected: TIMEOUT [Untitled] expected: NOTRUN + [Secure-Close-undefined] + expected: NOTRUN + diff --git a/tests/wpt/metadata/websockets/basic-auth.any.js.ini b/tests/wpt/metadata/websockets/basic-auth.any.js.ini index 6786dafa823..7c1db1dba72 100644 --- a/tests/wpt/metadata/websockets/basic-auth.any.js.ini +++ b/tests/wpt/metadata/websockets/basic-auth.any.js.ini @@ -2,11 +2,17 @@ [Untitled] expected: FAIL + [basic-auth] + expected: FAIL + [basic-auth.any.sharedworker.html] [Untitled] expected: FAIL + [basic-auth] + expected: FAIL + [basic-auth.any.html] [HTTP basic authentication should work with WebSockets] diff --git a/tests/wpt/metadata/workers/interfaces.worker.js.ini b/tests/wpt/metadata/workers/interfaces.worker.js.ini index b31a1407741..2acf8e760c3 100644 --- a/tests/wpt/metadata/workers/interfaces.worker.js.ini +++ b/tests/wpt/metadata/workers/interfaces.worker.js.ini @@ -273,3 +273,6 @@ [Untitled] expected: FAIL + [interfaces] + expected: FAIL + diff --git a/tests/wpt/metadata/workers/modules/dedicated-worker-import.any.js.ini b/tests/wpt/metadata/workers/modules/dedicated-worker-import.any.js.ini new file mode 100644 index 00000000000..b04d5047473 --- /dev/null +++ b/tests/wpt/metadata/workers/modules/dedicated-worker-import.any.js.ini @@ -0,0 +1,9 @@ +[dedicated-worker-import.any.worker.html] + [dedicated-worker-import] + expected: FAIL + + +[dedicated-worker-import.any.html] + [dedicated-worker-import] + expected: FAIL + diff --git a/tests/wpt/metadata/workers/modules/dedicated-worker-import.html.ini b/tests/wpt/metadata/workers/modules/dedicated-worker-import.html.ini deleted file mode 100644 index b76318a48c9..00000000000 --- a/tests/wpt/metadata/workers/modules/dedicated-worker-import.html.ini +++ /dev/null @@ -1,34 +0,0 @@ -[dedicated-worker-import.html] - [Test static import on DedicatedWorkerGlobalScope.] - expected: TIMEOUT - - [Test nested static import on DedicatedWorkerGlobalScope.] - expected: NOTRUN - - [Test static import and then dynamic import on DedicatedWorkerGlobalScope.] - expected: NOTRUN - - [Test dynamic import on DedicatedWorkerGlobalScope.] - expected: NOTRUN - - [Test nested dynamic import on DedicatedWorkerGlobalScope.] - expected: NOTRUN - - [Test dynamic import and then static import on DedicatedWorkerGlobalScope.] - expected: NOTRUN - - [importScripts() on module worker should throw an exception.] - expected: NOTRUN - - [Worker construction for non-existent script should throw an exception.] - expected: NOTRUN - - [Static import for non-existent script should throw an exception.] - expected: NOTRUN - - [Dynamic import for non-existent script should throw an exception.] - expected: NOTRUN - - [DedicatedWorker: import] - expected: FAIL - diff --git a/tests/wpt/metadata/workers/opaque-origin.html.ini b/tests/wpt/metadata/workers/opaque-origin.html.ini index ba7b54700db..4988013bf01 100644 --- a/tests/wpt/metadata/workers/opaque-origin.html.ini +++ b/tests/wpt/metadata/workers/opaque-origin.html.ini @@ -3,3 +3,6 @@ [Untitled] expected: FAIL + [opaque-origin] + expected: FAIL + diff --git a/tests/wpt/metadata/workers/worker-from-blob-url.window.js.ini b/tests/wpt/metadata/workers/worker-from-blob-url.window.js.ini index af7c92b4ca3..42625df2d7c 100644 --- a/tests/wpt/metadata/workers/worker-from-blob-url.window.js.ini +++ b/tests/wpt/metadata/workers/worker-from-blob-url.window.js.ini @@ -2,3 +2,6 @@ [Untitled] expected: FAIL + [worker-from-blob-url] + expected: FAIL + diff --git a/tests/wpt/metadata/xhr/sync-no-timeout.any.js.ini b/tests/wpt/metadata/xhr/sync-no-timeout.any.js.ini index 1de61088fe1..842f7f5f93f 100644 --- a/tests/wpt/metadata/xhr/sync-no-timeout.any.js.ini +++ b/tests/wpt/metadata/xhr/sync-no-timeout.any.js.ini @@ -2,6 +2,9 @@ [Untitled] expected: FAIL + [sync-no-timeout] + expected: FAIL + [sync-no-timeout.any.worker.html] diff --git a/tests/wpt/mozilla/meta/bluetooth/interfaces.html.ini b/tests/wpt/mozilla/meta/bluetooth/interfaces.html.ini index fbcb43098f3..4d49360a540 100644 --- a/tests/wpt/mozilla/meta/bluetooth/interfaces.html.ini +++ b/tests/wpt/mozilla/meta/bluetooth/interfaces.html.ini @@ -579,3 +579,6 @@ [Untitled] expected: FAIL + [interfaces] + expected: FAIL + diff --git a/tests/wpt/mozilla/meta/mozilla/document_characterSet_long.html.ini b/tests/wpt/mozilla/meta/mozilla/document_characterSet_long.html.ini index 79923c15fb6..bf90f13aa8e 100644 --- a/tests/wpt/mozilla/meta/mozilla/document_characterSet_long.html.ini +++ b/tests/wpt/mozilla/meta/mozilla/document_characterSet_long.html.ini @@ -3,3 +3,6 @@ [Untitled] expected: FAIL + [document_characterSet_long] + expected: FAIL + diff --git a/tests/wpt/mozilla/meta/mozilla/document_characterSet_short.html.ini b/tests/wpt/mozilla/meta/mozilla/document_characterSet_short.html.ini index c6d6561a99b..5460b42b369 100644 --- a/tests/wpt/mozilla/meta/mozilla/document_characterSet_short.html.ini +++ b/tests/wpt/mozilla/meta/mozilla/document_characterSet_short.html.ini @@ -3,3 +3,6 @@ [Untitled] expected: FAIL + [document_characterSet_short] + expected: FAIL + diff --git a/tests/wpt/mozilla/meta/mozilla/style_no_trailing_space.html.ini b/tests/wpt/mozilla/meta/mozilla/style_no_trailing_space.html.ini index f2be9cdedd3..f3d4b2d5a04 100644 --- a/tests/wpt/mozilla/meta/mozilla/style_no_trailing_space.html.ini +++ b/tests/wpt/mozilla/meta/mozilla/style_no_trailing_space.html.ini @@ -3,3 +3,6 @@ [Untitled] expected: FAIL + [style_no_trailing_space] + expected: FAIL + diff --git a/tests/wpt/mozilla/meta/webgl/conformance-1.0.3/conformance/context/context-release-upon-reload.html.ini b/tests/wpt/mozilla/meta/webgl/conformance-1.0.3/conformance/context/context-release-upon-reload.html.ini deleted file mode 100644 index 84c7aa47561..00000000000 --- a/tests/wpt/mozilla/meta/webgl/conformance-1.0.3/conformance/context/context-release-upon-reload.html.ini +++ /dev/null @@ -1,5 +0,0 @@ -[context-release-upon-reload.html] - expected: TIMEOUT - [Overall test] - expected: NOTRUN - diff --git a/tests/wpt/mozilla/meta/webgl/conformance-1.0.3/conformance/context/context-release-with-workers.html.ini b/tests/wpt/mozilla/meta/webgl/conformance-1.0.3/conformance/context/context-release-with-workers.html.ini deleted file mode 100644 index 7aab2f5f662..00000000000 --- a/tests/wpt/mozilla/meta/webgl/conformance-1.0.3/conformance/context/context-release-with-workers.html.ini +++ /dev/null @@ -1,5 +0,0 @@ -[context-release-with-workers.html] - expected: TIMEOUT - [Overall test] - expected: NOTRUN - diff --git a/tests/wpt/web-platform-tests/BackgroundSync/interfaces.any.js b/tests/wpt/web-platform-tests/BackgroundSync/interfaces.https.any.js index 207a0d5d684..207a0d5d684 100644 --- a/tests/wpt/web-platform-tests/BackgroundSync/interfaces.any.js +++ b/tests/wpt/web-platform-tests/BackgroundSync/interfaces.https.any.js diff --git a/tests/wpt/web-platform-tests/FileAPI/reading-data-section/filereader_readAsDataURL.html b/tests/wpt/web-platform-tests/FileAPI/reading-data-section/filereader_readAsDataURL.html index f0a3957e760..5bc39499a22 100644 --- a/tests/wpt/web-platform-tests/FileAPI/reading-data-section/filereader_readAsDataURL.html +++ b/tests/wpt/web-platform-tests/FileAPI/reading-data-section/filereader_readAsDataURL.html @@ -1,39 +1,51 @@ -<!DOCTYPE html> -<html> - <head> - <meta charset="utf-8"> - <title>FileAPI Test: filereader_readAsDataURL</title> - <link rel="author" title="Intel" href="http://www.intel.com"> - <link rel="help" href="http://dev.w3.org/2006/webapi/FileAPI/#readAsDataURL"> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - </head> - <body> - <div id="log"></div> - - <script> - async_test(function() { - var blob = new Blob(["TEST"]); - var reader = new FileReader(); - - reader.onload = this.step_func(function(evt) { - assert_equals(typeof reader.result, "string", "The result is string"); - assert_equals(reader.result.indexOf("data:"), 0, "The result attribute starts with 'data'"); - assert_true(reader.result.indexOf("base64") > 0, "The result attribute contains 'base64'"); - assert_equals(reader.readyState, reader.DONE); - this.done(); - }); - - reader.onloadstart = this.step_func(function(evt) { - assert_equals(reader.readyState, reader.LOADING); - }); - - reader.onprogress = this.step_func(function(evt) { - assert_equals(reader.readyState, reader.LOADING); - }); - - reader.readAsDataURL(blob); - }); - </script> - </body> -</html> +<!doctype html> +<meta charset="utf-8"> +<title>FileAPI Test: FileReader.readAsDataURL</title> +<link rel="author" title="Intel" href="http://www.intel.com"> +<link rel="help" href="https://w3c.github.io/FileAPI/#readAsDataURL"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> + +<script> +async_test(function(testCase) { + var blob = new Blob(["TEST"]); + var reader = new FileReader(); + + reader.onload = this.step_func(function(evt) { + assert_equals(reader.readyState, reader.DONE); + testCase.done(); + }); + reader.onloadstart = this.step_func(function(evt) { + assert_equals(reader.readyState, reader.LOADING); + }); + reader.onprogress = this.step_func(function(evt) { + assert_equals(reader.readyState, reader.LOADING); + }); + + reader.readAsDataURL(blob); +}, 'FileReader readyState during readAsDataURL'); + +async_test(function(testCase) { + var blob = new Blob(["TEST"], { type: 'text/plain' }); + var reader = new FileReader(); + + reader.onload = this.step_func(function() { + assert_equals(reader.result, "data:text/plain;base64,VEVTVA=="); + testCase.done(); + }); + reader.readAsDataURL(blob); +}, 'readAsDataURL result for Blob with specified MIME type'); + +async_test(function(testCase) { + var blob = new Blob(["TEST"]); + var reader = new FileReader(); + + reader.onload = this.step_func(function() { + assert_equals(reader.result, + "data:application/octet-stream;base64,VEVTVA=="); + testCase.done(); + }); + reader.readAsDataURL(blob); +}, 'readAsDataURL result for Blob with unspecified MIME type'); + +</script>
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/FileAPI/url/url-in-tags-revoke.window.js b/tests/wpt/web-platform-tests/FileAPI/url/url-in-tags-revoke.window.js index f624f188fa8..d6a54ce400f 100644 --- a/tests/wpt/web-platform-tests/FileAPI/url/url-in-tags-revoke.window.js +++ b/tests/wpt/web-platform-tests/FileAPI/url/url-in-tags-revoke.window.js @@ -97,3 +97,18 @@ async_test(t => { document.body.appendChild(e); URL.revokeObjectURL(url); }, 'Fetching a blob URL immediately before revoking it works in <script> tags.'); + +async_test(t => { + const channel_name = 'a-click-test'; + const blob = new Blob([window_contents_for_channel(channel_name)], {type: 'text/html'}); + receive_message_on_channel(t, channel_name).then(t.step_func_done(t => { + assert_equals(t, 'foobar'); + })); + const url = URL.createObjectURL(blob); + const anchor = document.createElement('a'); + anchor.href = url; + anchor.target = '_blank'; + document.body.appendChild(anchor); + anchor.click(); + URL.revokeObjectURL(url); +}, 'Opening a blob URL in a new window by clicking an <a> tag works immediately before revoking the URL.'); diff --git a/tests/wpt/web-platform-tests/IndexedDB/idbdatabase-createObjectStore-exception-order.htm b/tests/wpt/web-platform-tests/IndexedDB/idbdatabase-createObjectStore-exception-order.htm index 50b3adb3ede..8705501e535 100644 --- a/tests/wpt/web-platform-tests/IndexedDB/idbdatabase-createObjectStore-exception-order.htm +++ b/tests/wpt/web-platform-tests/IndexedDB/idbdatabase-createObjectStore-exception-order.htm @@ -8,9 +8,13 @@ <script> indexeddb_test( - (t, db, txn) => { + (t, db, txn, rq) => { db.createObjectStore('s'); + // Acknowledge the error, to prevent window.error from firing in + // browsers that implement that. + rq.onerror = e => { e.preventDefault(); }; + txn.onabort = () => { setTimeout(t.step_func(() => { assert_throws( diff --git a/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/ecdh_bits.https.any.js b/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/ecdh_bits.https.any.js new file mode 100644 index 00000000000..c69249047bf --- /dev/null +++ b/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/ecdh_bits.https.any.js @@ -0,0 +1,3 @@ +// META: title=WebCryptoAPI: deriveBits() Using ECDH +// META: script=ecdh_bits.js +run_test(); diff --git a/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/ecdh_bits.https.worker.js b/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/ecdh_bits.https.worker.js deleted file mode 100644 index 8ff0ac3053c..00000000000 --- a/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/ecdh_bits.https.worker.js +++ /dev/null @@ -1,4 +0,0 @@ -importScripts("/resources/testharness.js"); -importScripts("ecdh_bits.js"); - -run_test(); diff --git a/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/ecdh_keys.https.any.js b/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/ecdh_keys.https.any.js new file mode 100644 index 00000000000..b212b92c74b --- /dev/null +++ b/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/ecdh_keys.https.any.js @@ -0,0 +1,3 @@ +// META: title=WebCryptoAPI: deriveKey() Using ECDH +// META: script=ecdh_keys.js +run_test(); diff --git a/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/ecdh_keys.https.worker.js b/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/ecdh_keys.https.worker.js deleted file mode 100644 index 488d60216fc..00000000000 --- a/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/ecdh_keys.https.worker.js +++ /dev/null @@ -1,4 +0,0 @@ -importScripts("/resources/testharness.js"); -importScripts("ecdh_keys.js"); - -run_test(); diff --git a/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/hkdf.https.any.js b/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/hkdf.https.any.js new file mode 100644 index 00000000000..d0d545a7d27 --- /dev/null +++ b/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/hkdf.https.any.js @@ -0,0 +1,9 @@ +// META: title=WebCryptoAPI: deriveBits() and deriveKey() Using HKDF +// META: variant=?1-1000 +// META: variant=?1001-2000 +// META: variant=?2001-3000 +// META: variant=?3001-last +// META: script=/common/subset-tests.js +// META: script=hkdf_vectors.js +// META: script=hkdf.js +run_test(); diff --git a/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/hkdf.https.worker.js b/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/hkdf.https.worker.js deleted file mode 100644 index b98b0f3502b..00000000000 --- a/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/hkdf.https.worker.js +++ /dev/null @@ -1,5 +0,0 @@ -importScripts("/resources/testharness.js"); -importScripts("hkdf_vectors.js"); -importScripts("hkdf.js"); - -run_test(); diff --git a/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/hkdf.js b/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/hkdf.js index 016740abf0f..95889676c15 100644 --- a/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/hkdf.js +++ b/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/hkdf.js @@ -36,7 +36,7 @@ function run_test() { var algorithm = {name: "HKDF", salt: salts[saltSize], info: infos[infoSize], hash: hashName}; // Check for correct deriveBits result - promise_test(function(test) { + subsetTest(promise_test, function(test) { return subtle.deriveBits(algorithm, baseKeys[derivedKeySize], 256) .then(function(derivation) { assert_true(equalBuffers(derivation, derivations[derivedKeySize][saltSize][hashName][infoSize]), "Derived correct key"); @@ -46,7 +46,7 @@ function run_test() { }, testName); // 0 length (OperationError) - promise_test(function(test) { + subsetTest(promise_test, function(test) { return subtle.deriveBits(algorithm, baseKeys[derivedKeySize], 0) .then(function(derivation) { assert_equals(derivation.byteLength, 0, "Derived correctly empty key"); @@ -65,7 +65,7 @@ function run_test() { testName += " using " + derivedKeySize + " derivedKey, " + saltSize + " salt, " + hashName + ", with " + infoSize + " info"; // Test the particular key derivation. - promise_test(function(test) { + subsetTest(promise_test, function(test) { return subtle.deriveKey(algorithm, baseKeys[derivedKeySize], derivedKeyType.algorithm, true, derivedKeyType.usages) .then(function(key) { // Need to export the key to see that the correct bits were set. @@ -85,7 +85,7 @@ function run_test() { // - illegal name for hash algorithm (NotSupportedError) var badHash = hashName.substring(0, 3) + hashName.substring(4); - promise_test(function(test) { + subsetTest(promise_test, function(test) { var badAlgorithm = {name: "HKDF", salt: salts[saltSize], hash: badHash}; return subtle.deriveKey(badAlgorithm, baseKeys[derivedKeySize], derivedKeyType.algorithm, true, derivedKeyType.usages) .then(function(key) { @@ -96,7 +96,7 @@ function run_test() { }, testName + " with bad hash name " + badHash); // - baseKey usages missing "deriveKey" (InvalidAccessError) - promise_test(function(test) { + subsetTest(promise_test, function(test) { return subtle.deriveKey(algorithm, noKey[derivedKeySize], derivedKeyType.algorithm, true, derivedKeyType.usages) .then(function(key) { assert_unreached("missing deriveKey usage should have thrown an InvalidAccessError"); @@ -106,7 +106,7 @@ function run_test() { }, testName + " with missing deriveKey usage"); // - baseKey algorithm does not match HKDF (InvalidAccessError) - promise_test(function(test) { + subsetTest(promise_test, function(test) { return subtle.deriveKey(algorithm, wrongKey, derivedKeyType.algorithm, true, derivedKeyType.usages) .then(function(key) { assert_unreached("wrong (ECDH) key should have thrown an InvalidAccessError"); @@ -120,7 +120,7 @@ function run_test() { // Test various error conditions for deriveBits below: // missing salt (TypeError) - promise_test(function(test) { + subsetTest(promise_test, function(test) { return subtle.deriveBits({name: "HKDF", info: infos[infoSize], hash: hashName}, baseKeys[derivedKeySize], 0) .then(function(derivation) { assert_equals(derivation.byteLength, 0, "Derived even with missing salt"); @@ -130,7 +130,7 @@ function run_test() { }, testName + " with missing salt"); // missing info (TypeError) - promise_test(function(test) { + subsetTest(promise_test, function(test) { return subtle.deriveBits({name: "HKDF", salt: salts[saltSize], hash: hashName}, baseKeys[derivedKeySize], 0) .then(function(derivation) { assert_equals(derivation.byteLength, 0, "Derived even with missing info"); @@ -140,7 +140,7 @@ function run_test() { }, testName + " with missing info"); // length null (OperationError) - promise_test(function(test) { + subsetTest(promise_test, function(test) { return subtle.deriveBits(algorithm, baseKeys[derivedKeySize], null) .then(function(derivation) { assert_unreached("null length should have thrown an TypeError"); @@ -150,7 +150,7 @@ function run_test() { }, testName + " with null length"); // length not multiple of 8 (OperationError) - promise_test(function(test) { + subsetTest(promise_test, function(test) { return subtle.deriveBits(algorithm, baseKeys[derivedKeySize], 44) .then(function(derivation) { assert_unreached("non-multiple of 8 length should have thrown an OperationError"); @@ -161,7 +161,7 @@ function run_test() { // - illegal name for hash algorithm (NotSupportedError) var badHash = hashName.substring(0, 3) + hashName.substring(4); - promise_test(function(test) { + subsetTest(promise_test, function(test) { var badAlgorithm = {name: "HKDF", salt: salts[saltSize], hash: badHash}; return subtle.deriveBits(badAlgorithm, baseKeys[derivedKeySize], 256) .then(function(derivation) { @@ -172,7 +172,7 @@ function run_test() { }, testName + " with bad hash name " + badHash); // - baseKey usages missing "deriveBits" (InvalidAccessError) - promise_test(function(test) { + subsetTest(promise_test, function(test) { return subtle.deriveBits(algorithm, noBits[derivedKeySize], 256) .then(function(derivation) { assert_unreached("missing deriveBits usage should have thrown an InvalidAccessError"); @@ -182,7 +182,7 @@ function run_test() { }, testName + " with missing deriveBits usage"); // - baseKey algorithm does not match HKDF (InvalidAccessError) - promise_test(function(test) { + subsetTest(promise_test, function(test) { return subtle.deriveBits(algorithm, wrongKey, 256) .then(function(derivation) { assert_unreached("wrong (ECDH) key should have thrown an InvalidAccessError"); @@ -202,7 +202,7 @@ function run_test() { algorithm.info = infos[infoSize]; } - promise_test(function(test) { + subsetTest(promise_test, function(test) { return subtle.deriveBits(algorithm, baseKeys[derivedKeySize], 256) .then(function(derivation) { assert_unreached("non-digest algorithm should have thrown an NotSupportedError"); @@ -218,7 +218,7 @@ function run_test() { }); testName += " using " + derivedKeySize + " derivedKey, " + saltSize + " salt, " + nonDigestHash + ", with " + infoSize + " info"; - promise_test(function(test) { + subsetTest(promise_test, function(test) { return subtle.deriveKey(algorithm, baseKeys[derivedKeySize], derivedKeyType.algorithm, true, derivedKeyType.usages) .then(function(derivation) { assert_unreached("non-digest algorithm should have thrown an NotSupportedError"); @@ -235,7 +235,7 @@ function run_test() { done(); }, function(err) { - test(function(test) { + subsetTest(test, function(test) { assert_unreached("setUpBaseKeys failed with error '" + err.message + "'"); }, "setUpBaseKeys"); done(); diff --git a/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/pbkdf2.https.any.js b/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/pbkdf2.https.any.js new file mode 100644 index 00000000000..539f390c8af --- /dev/null +++ b/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/pbkdf2.https.any.js @@ -0,0 +1,15 @@ +// META: title=WebCryptoAPI: deriveBits() and deriveKey() Using PBKDF2 +// META: timeout=long +// META: variant=?1-1000 +// META: variant=?1001-2000 +// META: variant=?2001-3000 +// META: variant=?3001-4000 +// META: variant=?4001-5000 +// META: variant=?5001-6000 +// META: variant=?6001-7000 +// META: variant=?7001-8000 +// META: variant=?8001-last +// META: script=/common/subset-tests.js +// META: script=pbkdf2_vectors.js +// META: script=pbkdf2.js +run_test(); diff --git a/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/pbkdf2.https.worker.js b/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/pbkdf2.https.worker.js deleted file mode 100644 index 1ab68d29efc..00000000000 --- a/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/pbkdf2.https.worker.js +++ /dev/null @@ -1,6 +0,0 @@ -// META: timeout=long -importScripts("/resources/testharness.js"); -importScripts("pbkdf2_vectors.js"); -importScripts("pbkdf2.js"); - -run_test(); diff --git a/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/pbkdf2.js b/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/pbkdf2.js index 74f8a6cbdb6..7edc7ea5a26 100644 --- a/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/pbkdf2.js +++ b/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/pbkdf2.js @@ -1,4 +1,4 @@ -function run_test(testPasswordSize, testSaltSize) { +function run_test() { // May want to test prefixed implementations. var subtle = self.crypto.subtle; @@ -27,15 +27,13 @@ function run_test(testPasswordSize, testSaltSize) { // and number of iterations. The derivations object is structured in // that way, so navigate it to run tests and compare with correct results. Object.keys(derivations).forEach(function(passwordSize) { - if (typeof testPasswordSize != 'undefined' && testPasswordSize != passwordSize) return; Object.keys(derivations[passwordSize]).forEach(function(saltSize) { - if (typeof testSaltSize != 'undefined' && testSaltSize != saltSize) return; Object.keys(derivations[passwordSize][saltSize]).forEach(function(hashName) { Object.keys(derivations[passwordSize][saltSize][hashName]).forEach(function(iterations) { var testName = passwordSize + " password, " + saltSize + " salt, " + hashName + ", with " + iterations + " iterations"; // Check for correct deriveBits result - promise_test(function(test) { + subsetTest(promise_test, function(test) { return subtle.deriveBits({name: "PBKDF2", salt: salts[saltSize], hash: hashName, iterations: parseInt(iterations)}, baseKeys[passwordSize], 256) .then(function(derivation) { assert_true(equalBuffers(derivation, derivations[passwordSize][saltSize][hashName][iterations]), "Derived correct key"); @@ -54,7 +52,7 @@ function run_test(testPasswordSize, testSaltSize) { testName += " using " + passwordSize + " password, " + saltSize + " salt, " + hashName + ", with " + iterations + " iterations"; // Test the particular key derivation. - promise_test(function(test) { + subsetTest(promise_test, function(test) { return subtle.deriveKey({name: "PBKDF2", salt: salts[saltSize], hash: hashName, iterations: parseInt(iterations)}, baseKeys[passwordSize], derivedKeyType.algorithm, true, derivedKeyType.usages) .then(function(key) { // Need to export the key to see that the correct bits were set. @@ -74,7 +72,7 @@ function run_test(testPasswordSize, testSaltSize) { // - illegal name for hash algorithm (NotSupportedError) var badHash = hashName.substring(0, 3) + hashName.substring(4); - promise_test(function(test) { + subsetTest(promise_test, function(test) { return subtle.deriveKey({name: "PBKDF2", salt: salts[saltSize], hash: badHash, iterations: parseInt(iterations)}, baseKeys[passwordSize], derivedKeyType.algorithm, true, derivedKeyType.usages) .then(function(key) { assert_unreached("bad hash name should have thrown an NotSupportedError"); @@ -84,7 +82,7 @@ function run_test(testPasswordSize, testSaltSize) { }, testName + " with bad hash name " + badHash); // - baseKey usages missing "deriveKey" (InvalidAccessError) - promise_test(function(test) { + subsetTest(promise_test, function(test) { return subtle.deriveKey({name: "PBKDF2", salt: salts[saltSize], hash: hashName, iterations: parseInt(iterations)}, noKey[passwordSize], derivedKeyType.algorithm, true, derivedKeyType.usages) .then(function(key) { assert_unreached("missing deriveKey usage should have thrown an InvalidAccessError"); @@ -94,7 +92,7 @@ function run_test(testPasswordSize, testSaltSize) { }, testName + " with missing deriveKey usage"); // - baseKey algorithm does not match PBKDF2 (InvalidAccessError) - promise_test(function(test) { + subsetTest(promise_test, function(test) { return subtle.deriveKey({name: "PBKDF2", salt: salts[saltSize], hash: hashName, iterations: parseInt(iterations)}, wrongKey, derivedKeyType.algorithm, true, derivedKeyType.usages) .then(function(key) { assert_unreached("wrong (ECDH) key should have thrown an InvalidAccessError"); @@ -107,7 +105,7 @@ function run_test(testPasswordSize, testSaltSize) { // Test various error conditions for deriveBits below: // length null (OperationError) - promise_test(function(test) { + subsetTest(promise_test, function(test) { return subtle.deriveBits({name: "PBKDF2", salt: salts[saltSize], hash: hashName, iterations: parseInt(iterations)}, baseKeys[passwordSize], null) .then(function(derivation) { assert_unreached("null length should have thrown an OperationError"); @@ -117,7 +115,7 @@ function run_test(testPasswordSize, testSaltSize) { }, testName + " with null length"); // 0 length (OperationError) - promise_test(function(test) { + subsetTest(promise_test, function(test) { return subtle.deriveBits({name: "PBKDF2", salt: salts[saltSize], hash: hashName, iterations: parseInt(iterations)}, baseKeys[passwordSize], 0) .then(function(derivation) { assert_unreached("0 length should have thrown an OperationError"); @@ -127,7 +125,7 @@ function run_test(testPasswordSize, testSaltSize) { }, testName + " with 0 length"); // length not multiple of 8 (OperationError) - promise_test(function(test) { + subsetTest(promise_test, function(test) { return subtle.deriveBits({name: "PBKDF2", salt: salts[saltSize], hash: hashName, iterations: parseInt(iterations)}, baseKeys[passwordSize], 44) .then(function(derivation) { assert_unreached("non-multiple of 8 length should have thrown an OperationError"); @@ -138,7 +136,7 @@ function run_test(testPasswordSize, testSaltSize) { // - illegal name for hash algorithm (NotSupportedError) var badHash = hashName.substring(0, 3) + hashName.substring(4); - promise_test(function(test) { + subsetTest(promise_test, function(test) { return subtle.deriveBits({name: "PBKDF2", salt: salts[saltSize], hash: badHash, iterations: parseInt(iterations)}, baseKeys[passwordSize], 256) .then(function(derivation) { assert_unreached("bad hash name should have thrown an NotSupportedError"); @@ -148,7 +146,7 @@ function run_test(testPasswordSize, testSaltSize) { }, testName + " with bad hash name " + badHash); // - baseKey usages missing "deriveBits" (InvalidAccessError) - promise_test(function(test) { + subsetTest(promise_test, function(test) { return subtle.deriveBits({name: "PBKDF2", salt: salts[saltSize], hash: hashName, iterations: parseInt(iterations)}, noBits[passwordSize], 256) .then(function(derivation) { assert_unreached("missing deriveBits usage should have thrown an InvalidAccessError"); @@ -158,7 +156,7 @@ function run_test(testPasswordSize, testSaltSize) { }, testName + " with missing deriveBits usage"); // - baseKey algorithm does not match PBKDF2 (InvalidAccessError) - promise_test(function(test) { + subsetTest(promise_test, function(test) { return subtle.deriveBits({name: "PBKDF2", salt: salts[saltSize], hash: hashName, iterations: parseInt(iterations)}, wrongKey, 256) .then(function(derivation) { assert_unreached("wrong (ECDH) key should have thrown an InvalidAccessError"); @@ -169,7 +167,7 @@ function run_test(testPasswordSize, testSaltSize) { }); // Check that 0 iterations throws proper error - promise_test(function(test) { + subsetTest(promise_test, function(test) { return subtle.deriveBits({name: "PBKDF2", salt: salts[saltSize], hash: hashName, iterations: 0}, baseKeys[passwordSize], 256) .then(function(derivation) { assert_unreached("0 iterations should have thrown an error"); @@ -185,7 +183,7 @@ function run_test(testPasswordSize, testSaltSize) { }); testName += " using " + passwordSize + " password, " + saltSize + " salt, " + hashName + ", with 0 iterations"; - promise_test(function(test) { + subsetTest(promise_test, function(test) { return subtle.deriveKey({name: "PBKDF2", salt: salts[saltSize], hash: hashName, iterations: 0}, baseKeys[passwordSize], derivedKeyType.algorithm, true, derivedKeyType.usages) .then(function(derivation) { assert_unreached("0 iterations should have thrown an error"); @@ -201,7 +199,7 @@ function run_test(testPasswordSize, testSaltSize) { [1, 1000, 100000].forEach(function(iterations) { var testName = passwordSize + " password, " + saltSize + " salt, " + nonDigestHash + ", with " + iterations + " iterations"; - promise_test(function(test) { + subsetTest(promise_test, function(test) { return subtle.deriveBits({name: "PBKDF2", salt: salts[saltSize], hash: nonDigestHash, iterations: parseInt(iterations)}, baseKeys[passwordSize], 256) .then(function(derivation) { assert_unreached("non-digest algorithm should have thrown an NotSupportedError"); @@ -217,7 +215,7 @@ function run_test(testPasswordSize, testSaltSize) { }); testName += " using " + passwordSize + " password, " + saltSize + " salt, " + nonDigestHash + ", with " + iterations + " iterations"; - promise_test(function(test) { + subsetTest(promise_test, function(test) { return subtle.deriveKey({name: "PBKDF2", salt: salts[saltSize], hash: nonDigestHash, iterations: parseInt(iterations)}, baseKeys[passwordSize], derivedKeyType.algorithm, true, derivedKeyType.usages) .then(function(derivation) { assert_unreached("non-digest algorithm should have thrown an NotSupportedError"); @@ -234,7 +232,7 @@ function run_test(testPasswordSize, testSaltSize) { done(); }, function(err) { - test(function(test) { + subsetTest(test, function(test) { assert_unreached("setUpBaseKeys failed with error '" + err.message + "'"); }, "setUpBaseKeys"); done(); diff --git a/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/test_ecdh_bits.https.html b/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/test_ecdh_bits.https.html deleted file mode 100644 index a1890382133..00000000000 --- a/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/test_ecdh_bits.https.html +++ /dev/null @@ -1,17 +0,0 @@ -<!DOCTYPE html> -<meta charset=utf-8> -<meta name="timeout" content="long"> -<title>WebCryptoAPI: deriveBits() Using ECDH</title> -<link rel="author" title="Charles Engelke" href="mailto:w3c@engelke.com"> -<link rel="help" href="https://w3c.github.io/webcrypto/Overview.html#SubtleCrypto-method-deriveBits"> -<script src="/resources/testharness.js"></script> -<script src="/resources/testharnessreport.js"></script> - -<script src="ecdh_bits.js"></script> - -<h1>deriveBits Tests for ECDH</h1> - -<div id="log"></div> -<script> -run_test(); -</script> diff --git a/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/test_ecdh_keys.https.html b/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/test_ecdh_keys.https.html deleted file mode 100644 index b303295f4c6..00000000000 --- a/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/test_ecdh_keys.https.html +++ /dev/null @@ -1,17 +0,0 @@ -<!DOCTYPE html> -<meta charset=utf-8> -<meta name="timeout" content="long"> -<title>WebCryptoAPI:deriveKey() Using ECDH</title> -<link rel="author" title="Charles Engelke" href="mailto:w3c@engelke.com"> -<link rel="help" href="https://w3c.github.io/webcrypto/Overview.html#SubtleCrypto-method-deriveKey"> -<script src="/resources/testharness.js"></script> -<script src="/resources/testharnessreport.js"></script> - -<script src="ecdh_keys.js"></script> - -<h1>deriveKey Tests for ECDH</h1> - -<div id="log"></div> -<script> -run_test(); -</script> diff --git a/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/test_hkdf.https.html b/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/test_hkdf.https.html deleted file mode 100644 index 23143bdbc85..00000000000 --- a/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/test_hkdf.https.html +++ /dev/null @@ -1,19 +0,0 @@ -<!DOCTYPE html> -<meta charset=utf-8> -<meta name="timeout" content="long"> -<title>WebCryptoAPI: deriveBits() and deriveKey() Using HKDF</title> -<link rel="author" title="Charles Engelke" href="mailto:w3c@engelke.com"> -<link rel="help" href="https://w3c.github.io/webcrypto/Overview.html#SubtleCrypto-method-deriveBits"> -<link rel="help" href="https://w3c.github.io/webcrypto/Overview.html#SubtleCrypto-method-deriveKey"> -<script src="/resources/testharness.js"></script> -<script src="/resources/testharnessreport.js"></script> - -<script src="hkdf_vectors.js"></script> -<script src="hkdf.js"></script> - -<h1>deriveBits and deriveKey Tests for HKDF</h1> - -<div id="log"></div> -<script> -run_test(); -</script> diff --git a/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/test_pbkdf2_empty_empty.https.html b/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/test_pbkdf2_empty_empty.https.html deleted file mode 100644 index 15af4f38f6d..00000000000 --- a/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/test_pbkdf2_empty_empty.https.html +++ /dev/null @@ -1,22 +0,0 @@ -<!DOCTYPE html> -<meta charset=utf-8> -<meta name="timeout" content="long"> -<title>WebCryptoAPI: deriveBits() and deriveKey() Using PBKDF2</title> -<link rel="author" title="Charles Engelke" href="mailto:w3c@engelke.com"> -<link rel="help" href="https://w3c.github.io/webcrypto/Overview.html#SubtleCrypto-method-deriveBits"> -<link rel="help" href="https://w3c.github.io/webcrypto/Overview.html#SubtleCrypto-method-deriveKey"> -<script src="/resources/testharness.js"></script> -<script src="/resources/testharnessreport.js"></script> - -<script src="pbkdf2_vectors.js"></script> -<script src="pbkdf2.js"></script> - -<h1>deriveBits and deriveKey Tests for PBKDF2</h1> - -<div id="log"></div> -<script> -run_test( - "empty", //password size - "empty" //salt size -); -</script> diff --git a/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/test_pbkdf2_empty_long.https.html b/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/test_pbkdf2_empty_long.https.html deleted file mode 100644 index c8a251dd3f2..00000000000 --- a/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/test_pbkdf2_empty_long.https.html +++ /dev/null @@ -1,22 +0,0 @@ -<!DOCTYPE html> -<meta charset=utf-8> -<meta name="timeout" content="long"> -<title>WebCryptoAPI: deriveBits() and deriveKey() Using PBKDF2</title> -<link rel="author" title="Charles Engelke" href="mailto:w3c@engelke.com"> -<link rel="help" href="https://w3c.github.io/webcrypto/Overview.html#SubtleCrypto-method-deriveBits"> -<link rel="help" href="https://w3c.github.io/webcrypto/Overview.html#SubtleCrypto-method-deriveKey"> -<script src="/resources/testharness.js"></script> -<script src="/resources/testharnessreport.js"></script> - -<script src="pbkdf2_vectors.js"></script> -<script src="pbkdf2.js"></script> - -<h1>deriveBits and deriveKey Tests for PBKDF2</h1> - -<div id="log"></div> -<script> -run_test( - "empty", //password size - "long" //salt size -); -</script> diff --git a/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/test_pbkdf2_empty_short.https.html b/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/test_pbkdf2_empty_short.https.html deleted file mode 100644 index 62da41aab5b..00000000000 --- a/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/test_pbkdf2_empty_short.https.html +++ /dev/null @@ -1,22 +0,0 @@ -<!DOCTYPE html> -<meta charset=utf-8> -<meta name="timeout" content="long"> -<title>WebCryptoAPI: deriveBits() and deriveKey() Using PBKDF2</title> -<link rel="author" title="Charles Engelke" href="mailto:w3c@engelke.com"> -<link rel="help" href="https://w3c.github.io/webcrypto/Overview.html#SubtleCrypto-method-deriveBits"> -<link rel="help" href="https://w3c.github.io/webcrypto/Overview.html#SubtleCrypto-method-deriveKey"> -<script src="/resources/testharness.js"></script> -<script src="/resources/testharnessreport.js"></script> - -<script src="pbkdf2_vectors.js"></script> -<script src="pbkdf2.js"></script> - -<h1>deriveBits and deriveKey Tests for PBKDF2</h1> - -<div id="log"></div> -<script> -run_test( - "empty", //password size - "short" //salt size -); -</script> diff --git a/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/test_pbkdf2_long_empty.https.html b/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/test_pbkdf2_long_empty.https.html deleted file mode 100644 index 3b5845fcdfb..00000000000 --- a/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/test_pbkdf2_long_empty.https.html +++ /dev/null @@ -1,22 +0,0 @@ -<!DOCTYPE html> -<meta charset=utf-8> -<meta name="timeout" content="long"> -<title>WebCryptoAPI: deriveBits() and deriveKey() Using PBKDF2</title> -<link rel="author" title="Charles Engelke" href="mailto:w3c@engelke.com"> -<link rel="help" href="https://w3c.github.io/webcrypto/Overview.html#SubtleCrypto-method-deriveBits"> -<link rel="help" href="https://w3c.github.io/webcrypto/Overview.html#SubtleCrypto-method-deriveKey"> -<script src="/resources/testharness.js"></script> -<script src="/resources/testharnessreport.js"></script> - -<script src="pbkdf2_vectors.js"></script> -<script src="pbkdf2.js"></script> - -<h1>deriveBits and deriveKey Tests for PBKDF2</h1> - -<div id="log"></div> -<script> -run_test( - "long", //password size - "empty" //salt size -); -</script> diff --git a/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/test_pbkdf2_long_long.https.html b/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/test_pbkdf2_long_long.https.html deleted file mode 100644 index d9d04433de1..00000000000 --- a/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/test_pbkdf2_long_long.https.html +++ /dev/null @@ -1,22 +0,0 @@ -<!DOCTYPE html> -<meta charset=utf-8> -<meta name="timeout" content="long"> -<title>WebCryptoAPI: deriveBits() and deriveKey() Using PBKDF2</title> -<link rel="author" title="Charles Engelke" href="mailto:w3c@engelke.com"> -<link rel="help" href="https://w3c.github.io/webcrypto/Overview.html#SubtleCrypto-method-deriveBits"> -<link rel="help" href="https://w3c.github.io/webcrypto/Overview.html#SubtleCrypto-method-deriveKey"> -<script src="/resources/testharness.js"></script> -<script src="/resources/testharnessreport.js"></script> - -<script src="pbkdf2_vectors.js"></script> -<script src="pbkdf2.js"></script> - -<h1>deriveBits and deriveKey Tests for PBKDF2</h1> - -<div id="log"></div> -<script> -run_test( - "long", //password size - "long" //salt size -); -</script> diff --git a/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/test_pbkdf2_long_short.https.html b/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/test_pbkdf2_long_short.https.html deleted file mode 100644 index fa81c7f3c1e..00000000000 --- a/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/test_pbkdf2_long_short.https.html +++ /dev/null @@ -1,22 +0,0 @@ -<!DOCTYPE html> -<meta charset=utf-8> -<meta name="timeout" content="long"> -<title>WebCryptoAPI: deriveBits() and deriveKey() Using PBKDF2</title> -<link rel="author" title="Charles Engelke" href="mailto:w3c@engelke.com"> -<link rel="help" href="https://w3c.github.io/webcrypto/Overview.html#SubtleCrypto-method-deriveBits"> -<link rel="help" href="https://w3c.github.io/webcrypto/Overview.html#SubtleCrypto-method-deriveKey"> -<script src="/resources/testharness.js"></script> -<script src="/resources/testharnessreport.js"></script> - -<script src="pbkdf2_vectors.js"></script> -<script src="pbkdf2.js"></script> - -<h1>deriveBits and deriveKey Tests for PBKDF2</h1> - -<div id="log"></div> -<script> -run_test( - "long", //password size - "short" //salt size -); -</script> diff --git a/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/test_pbkdf2_short_empty.https.html b/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/test_pbkdf2_short_empty.https.html deleted file mode 100644 index 2497b522c98..00000000000 --- a/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/test_pbkdf2_short_empty.https.html +++ /dev/null @@ -1,22 +0,0 @@ -<!DOCTYPE html> -<meta charset=utf-8> -<meta name="timeout" content="long"> -<title>WebCryptoAPI: deriveBits() and deriveKey() Using PBKDF2</title> -<link rel="author" title="Charles Engelke" href="mailto:w3c@engelke.com"> -<link rel="help" href="https://w3c.github.io/webcrypto/Overview.html#SubtleCrypto-method-deriveBits"> -<link rel="help" href="https://w3c.github.io/webcrypto/Overview.html#SubtleCrypto-method-deriveKey"> -<script src="/resources/testharness.js"></script> -<script src="/resources/testharnessreport.js"></script> - -<script src="pbkdf2_vectors.js"></script> -<script src="pbkdf2.js"></script> - -<h1>deriveBits and deriveKey Tests for PBKDF2</h1> - -<div id="log"></div> -<script> -run_test( - "short", //password size - "empty" //salt size -); -</script> diff --git a/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/test_pbkdf2_short_long.https.html b/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/test_pbkdf2_short_long.https.html deleted file mode 100644 index f56cd2c6ad0..00000000000 --- a/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/test_pbkdf2_short_long.https.html +++ /dev/null @@ -1,22 +0,0 @@ -<!DOCTYPE html> -<meta charset=utf-8> -<meta name="timeout" content="long"> -<title>WebCryptoAPI: deriveBits() and deriveKey() Using PBKDF2</title> -<link rel="author" title="Charles Engelke" href="mailto:w3c@engelke.com"> -<link rel="help" href="https://w3c.github.io/webcrypto/Overview.html#SubtleCrypto-method-deriveBits"> -<link rel="help" href="https://w3c.github.io/webcrypto/Overview.html#SubtleCrypto-method-deriveKey"> -<script src="/resources/testharness.js"></script> -<script src="/resources/testharnessreport.js"></script> - -<script src="pbkdf2_vectors.js"></script> -<script src="pbkdf2.js"></script> - -<h1>deriveBits and deriveKey Tests for PBKDF2</h1> - -<div id="log"></div> -<script> -run_test( - "short", //password size - "long" //salt size -); -</script> diff --git a/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/test_pbkdf2_short_short.https.html b/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/test_pbkdf2_short_short.https.html deleted file mode 100644 index c5fa4273b9d..00000000000 --- a/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/test_pbkdf2_short_short.https.html +++ /dev/null @@ -1,22 +0,0 @@ -<!DOCTYPE html> -<meta charset=utf-8> -<meta name="timeout" content="long"> -<title>WebCryptoAPI: deriveBits() and deriveKey() Using PBKDF2</title> -<link rel="author" title="Charles Engelke" href="mailto:w3c@engelke.com"> -<link rel="help" href="https://w3c.github.io/webcrypto/Overview.html#SubtleCrypto-method-deriveBits"> -<link rel="help" href="https://w3c.github.io/webcrypto/Overview.html#SubtleCrypto-method-deriveKey"> -<script src="/resources/testharness.js"></script> -<script src="/resources/testharnessreport.js"></script> - -<script src="pbkdf2_vectors.js"></script> -<script src="pbkdf2.js"></script> - -<h1>deriveBits and deriveKey Tests for PBKDF2</h1> - -<div id="log"></div> -<script> -run_test( - "short", //password size - "short" //salt size -); -</script> diff --git a/tests/wpt/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-CBC.https.any.js b/tests/wpt/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-CBC.https.any.js index 19c9fb28b3b..38bed1cc702 100644 --- a/tests/wpt/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-CBC.https.any.js +++ b/tests/wpt/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-CBC.https.any.js @@ -1,3 +1,4 @@ +// META: title=WebCryptoAPI: generateKey() for Failures // META: timeout=long // META: script=../util/helpers.js // META: script=failures.js diff --git a/tests/wpt/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-CTR.https.any.js b/tests/wpt/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-CTR.https.any.js index 2f8a0b3596f..0e7940775fe 100644 --- a/tests/wpt/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-CTR.https.any.js +++ b/tests/wpt/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-CTR.https.any.js @@ -1,3 +1,4 @@ +// META: title=WebCryptoAPI: generateKey() for Failures // META: timeout=long // META: script=../util/helpers.js // META: script=failures.js diff --git a/tests/wpt/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-GCM.https.any.js b/tests/wpt/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-GCM.https.any.js index bb0ab46fbe6..a394c8b629c 100644 --- a/tests/wpt/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-GCM.https.any.js +++ b/tests/wpt/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-GCM.https.any.js @@ -1,3 +1,4 @@ +// META: title=WebCryptoAPI: generateKey() for Failures // META: timeout=long // META: script=../util/helpers.js // META: script=failures.js diff --git a/tests/wpt/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-KW.https.any.js b/tests/wpt/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-KW.https.any.js index 54d685f7565..40c199b29a5 100644 --- a/tests/wpt/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-KW.https.any.js +++ b/tests/wpt/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-KW.https.any.js @@ -1,3 +1,4 @@ +// META: title=WebCryptoAPI: generateKey() for Failures // META: timeout=long // META: script=../util/helpers.js // META: script=failures.js diff --git a/tests/wpt/web-platform-tests/WebCryptoAPI/generateKey/failures_ECDH.https.any.js b/tests/wpt/web-platform-tests/WebCryptoAPI/generateKey/failures_ECDH.https.any.js index 4c13c5ac572..e522254d743 100644 --- a/tests/wpt/web-platform-tests/WebCryptoAPI/generateKey/failures_ECDH.https.any.js +++ b/tests/wpt/web-platform-tests/WebCryptoAPI/generateKey/failures_ECDH.https.any.js @@ -1,3 +1,4 @@ +// META: title=WebCryptoAPI: generateKey() for Failures // META: timeout=long // META: script=../util/helpers.js // META: script=failures.js diff --git a/tests/wpt/web-platform-tests/WebCryptoAPI/generateKey/failures_ECDSA.https.any.js b/tests/wpt/web-platform-tests/WebCryptoAPI/generateKey/failures_ECDSA.https.any.js index 74cd480e2c2..e19974ff488 100644 --- a/tests/wpt/web-platform-tests/WebCryptoAPI/generateKey/failures_ECDSA.https.any.js +++ b/tests/wpt/web-platform-tests/WebCryptoAPI/generateKey/failures_ECDSA.https.any.js @@ -1,3 +1,4 @@ +// META: title=WebCryptoAPI: generateKey() for Failures // META: timeout=long // META: script=../util/helpers.js // META: script=failures.js diff --git a/tests/wpt/web-platform-tests/WebCryptoAPI/generateKey/failures_HMAC.https.any.js b/tests/wpt/web-platform-tests/WebCryptoAPI/generateKey/failures_HMAC.https.any.js index 708d33beba4..43ce1c026fc 100644 --- a/tests/wpt/web-platform-tests/WebCryptoAPI/generateKey/failures_HMAC.https.any.js +++ b/tests/wpt/web-platform-tests/WebCryptoAPI/generateKey/failures_HMAC.https.any.js @@ -1,3 +1,4 @@ +// META: title=WebCryptoAPI: generateKey() for Failures // META: timeout=long // META: script=../util/helpers.js // META: script=failures.js diff --git a/tests/wpt/web-platform-tests/WebCryptoAPI/generateKey/failures_RSA-OAEP.https.any.js b/tests/wpt/web-platform-tests/WebCryptoAPI/generateKey/failures_RSA-OAEP.https.any.js index 4ec0ec20bac..1d2bca96b18 100644 --- a/tests/wpt/web-platform-tests/WebCryptoAPI/generateKey/failures_RSA-OAEP.https.any.js +++ b/tests/wpt/web-platform-tests/WebCryptoAPI/generateKey/failures_RSA-OAEP.https.any.js @@ -1,3 +1,4 @@ +// META: title=WebCryptoAPI: generateKey() for Failures // META: timeout=long // META: script=../util/helpers.js // META: script=failures.js diff --git a/tests/wpt/web-platform-tests/WebCryptoAPI/generateKey/failures_RSA-PSS.https.any.js b/tests/wpt/web-platform-tests/WebCryptoAPI/generateKey/failures_RSA-PSS.https.any.js index 557b5785e34..562f66697c9 100644 --- a/tests/wpt/web-platform-tests/WebCryptoAPI/generateKey/failures_RSA-PSS.https.any.js +++ b/tests/wpt/web-platform-tests/WebCryptoAPI/generateKey/failures_RSA-PSS.https.any.js @@ -1,3 +1,4 @@ +// META: title=WebCryptoAPI: generateKey() for Failures // META: timeout=long // META: script=../util/helpers.js // META: script=failures.js diff --git a/tests/wpt/web-platform-tests/WebCryptoAPI/generateKey/failures_RSASSA-PKCS1-v1_5.https.any.js b/tests/wpt/web-platform-tests/WebCryptoAPI/generateKey/failures_RSASSA-PKCS1-v1_5.https.any.js index 45771bf0d46..fb19308de6f 100644 --- a/tests/wpt/web-platform-tests/WebCryptoAPI/generateKey/failures_RSASSA-PKCS1-v1_5.https.any.js +++ b/tests/wpt/web-platform-tests/WebCryptoAPI/generateKey/failures_RSASSA-PKCS1-v1_5.https.any.js @@ -1,3 +1,4 @@ +// META: title=WebCryptoAPI: generateKey() for Failures // META: timeout=long // META: script=../util/helpers.js // META: script=failures.js diff --git a/tests/wpt/web-platform-tests/WebCryptoAPI/generateKey/successes_AES-CBC.https.any.js b/tests/wpt/web-platform-tests/WebCryptoAPI/generateKey/successes_AES-CBC.https.any.js index 6feb60e5caa..80f92c2cb7d 100644 --- a/tests/wpt/web-platform-tests/WebCryptoAPI/generateKey/successes_AES-CBC.https.any.js +++ b/tests/wpt/web-platform-tests/WebCryptoAPI/generateKey/successes_AES-CBC.https.any.js @@ -1,3 +1,4 @@ +// META: title=WebCryptoAPI: generateKey() Successful Calls // META: timeout=long // META: script=../util/helpers.js // META: script=/common/subset-tests.js diff --git a/tests/wpt/web-platform-tests/WebCryptoAPI/generateKey/successes_AES-CTR.https.any.js b/tests/wpt/web-platform-tests/WebCryptoAPI/generateKey/successes_AES-CTR.https.any.js index 7b4f2df5fb1..243a104b606 100644 --- a/tests/wpt/web-platform-tests/WebCryptoAPI/generateKey/successes_AES-CTR.https.any.js +++ b/tests/wpt/web-platform-tests/WebCryptoAPI/generateKey/successes_AES-CTR.https.any.js @@ -1,3 +1,4 @@ +// META: title=WebCryptoAPI: generateKey() Successful Calls // META: timeout=long // META: script=../util/helpers.js // META: script=/common/subset-tests.js diff --git a/tests/wpt/web-platform-tests/WebCryptoAPI/generateKey/successes_AES-GCM.https.any.js b/tests/wpt/web-platform-tests/WebCryptoAPI/generateKey/successes_AES-GCM.https.any.js index 8e7bc92170c..f0f947c8160 100644 --- a/tests/wpt/web-platform-tests/WebCryptoAPI/generateKey/successes_AES-GCM.https.any.js +++ b/tests/wpt/web-platform-tests/WebCryptoAPI/generateKey/successes_AES-GCM.https.any.js @@ -1,3 +1,4 @@ +// META: title=WebCryptoAPI: generateKey() Successful Calls // META: timeout=long // META: script=../util/helpers.js // META: script=/common/subset-tests.js diff --git a/tests/wpt/web-platform-tests/WebCryptoAPI/generateKey/successes_AES-KW.https.any.js b/tests/wpt/web-platform-tests/WebCryptoAPI/generateKey/successes_AES-KW.https.any.js index 5eb023369f4..dbc040fdc5c 100644 --- a/tests/wpt/web-platform-tests/WebCryptoAPI/generateKey/successes_AES-KW.https.any.js +++ b/tests/wpt/web-platform-tests/WebCryptoAPI/generateKey/successes_AES-KW.https.any.js @@ -1,3 +1,4 @@ +// META: title=WebCryptoAPI: generateKey() Successful Calls // META: timeout=long // META: script=../util/helpers.js // META: script=/common/subset-tests.js diff --git a/tests/wpt/web-platform-tests/WebCryptoAPI/generateKey/successes_ECDH.https.any.js b/tests/wpt/web-platform-tests/WebCryptoAPI/generateKey/successes_ECDH.https.any.js index 87590d23ea4..e9dee526149 100644 --- a/tests/wpt/web-platform-tests/WebCryptoAPI/generateKey/successes_ECDH.https.any.js +++ b/tests/wpt/web-platform-tests/WebCryptoAPI/generateKey/successes_ECDH.https.any.js @@ -1,3 +1,4 @@ +// META: title=WebCryptoAPI: generateKey() Successful Calls // META: timeout=long // META: script=../util/helpers.js // META: script=/common/subset-tests.js diff --git a/tests/wpt/web-platform-tests/WebCryptoAPI/generateKey/successes_ECDSA.https.any.js b/tests/wpt/web-platform-tests/WebCryptoAPI/generateKey/successes_ECDSA.https.any.js index 734d86972fc..a022f31fe9d 100644 --- a/tests/wpt/web-platform-tests/WebCryptoAPI/generateKey/successes_ECDSA.https.any.js +++ b/tests/wpt/web-platform-tests/WebCryptoAPI/generateKey/successes_ECDSA.https.any.js @@ -1,3 +1,4 @@ +// META: title=WebCryptoAPI: generateKey() Successful Calls // META: timeout=long // META: script=../util/helpers.js // META: script=/common/subset-tests.js diff --git a/tests/wpt/web-platform-tests/WebCryptoAPI/generateKey/successes_HMAC.https.any.js b/tests/wpt/web-platform-tests/WebCryptoAPI/generateKey/successes_HMAC.https.any.js index bc106f3c117..18e0b271226 100644 --- a/tests/wpt/web-platform-tests/WebCryptoAPI/generateKey/successes_HMAC.https.any.js +++ b/tests/wpt/web-platform-tests/WebCryptoAPI/generateKey/successes_HMAC.https.any.js @@ -1,3 +1,4 @@ +// META: title=WebCryptoAPI: generateKey() Successful Calls // META: timeout=long // META: script=../util/helpers.js // META: script=/common/subset-tests.js diff --git a/tests/wpt/web-platform-tests/WebCryptoAPI/generateKey/successes_RSA-OAEP.https.any.js b/tests/wpt/web-platform-tests/WebCryptoAPI/generateKey/successes_RSA-OAEP.https.any.js index b0412286c58..d933fd981d4 100644 --- a/tests/wpt/web-platform-tests/WebCryptoAPI/generateKey/successes_RSA-OAEP.https.any.js +++ b/tests/wpt/web-platform-tests/WebCryptoAPI/generateKey/successes_RSA-OAEP.https.any.js @@ -1,3 +1,4 @@ +// META: title=WebCryptoAPI: generateKey() Successful Calls // META: timeout=long // META: variant=?1-10 // META: variant=?11-20 diff --git a/tests/wpt/web-platform-tests/WebCryptoAPI/generateKey/successes_RSA-PSS.https.any.js b/tests/wpt/web-platform-tests/WebCryptoAPI/generateKey/successes_RSA-PSS.https.any.js index ea91c8f99b0..cb43e3de3de 100644 --- a/tests/wpt/web-platform-tests/WebCryptoAPI/generateKey/successes_RSA-PSS.https.any.js +++ b/tests/wpt/web-platform-tests/WebCryptoAPI/generateKey/successes_RSA-PSS.https.any.js @@ -1,3 +1,4 @@ +// META: title=WebCryptoAPI: generateKey() Successful Calls // META: timeout=long // META: variant=?1-10 // META: variant=?11-20 diff --git a/tests/wpt/web-platform-tests/WebCryptoAPI/generateKey/successes_RSASSA-PKCS1-v1_5.https.any.js b/tests/wpt/web-platform-tests/WebCryptoAPI/generateKey/successes_RSASSA-PKCS1-v1_5.https.any.js index fc785f9b31c..b8db5972284 100644 --- a/tests/wpt/web-platform-tests/WebCryptoAPI/generateKey/successes_RSASSA-PKCS1-v1_5.https.any.js +++ b/tests/wpt/web-platform-tests/WebCryptoAPI/generateKey/successes_RSASSA-PKCS1-v1_5.https.any.js @@ -1,3 +1,4 @@ +// META: title=WebCryptoAPI: generateKey() Successful Calls // META: timeout=long // META: variant=?1-10 // META: variant=?11-20 diff --git a/tests/wpt/web-platform-tests/accelerometer/META.yml b/tests/wpt/web-platform-tests/accelerometer/META.yml index ecdfdc3852d..2eeea5b1e99 100644 --- a/tests/wpt/web-platform-tests/accelerometer/META.yml +++ b/tests/wpt/web-platform-tests/accelerometer/META.yml @@ -4,4 +4,4 @@ suggested_reviewers: - riju - Honry - alexshalamov - - pozdnyakov + - rakuco diff --git a/tests/wpt/web-platform-tests/ambient-light/META.yml b/tests/wpt/web-platform-tests/ambient-light/META.yml index af4c1faf249..f6b3ed4471e 100644 --- a/tests/wpt/web-platform-tests/ambient-light/META.yml +++ b/tests/wpt/web-platform-tests/ambient-light/META.yml @@ -4,5 +4,5 @@ suggested_reviewers: - dontcallmedom - riju - alexshalamov - - pozdnyakov + - rakuco - Honry diff --git a/tests/wpt/web-platform-tests/background-fetch/interfaces-worker.https.html b/tests/wpt/web-platform-tests/background-fetch/interfaces-worker.https.html deleted file mode 100644 index 03a7fb6c11e..00000000000 --- a/tests/wpt/web-platform-tests/background-fetch/interfaces-worker.https.html +++ /dev/null @@ -1,15 +0,0 @@ -<!doctype html> -<meta charset="utf-8"> -<title>Background Fetch API IDL tests</title> -<script src="/resources/testharness.js"></script> -<script src="/resources/testharnessreport.js"></script> -<script src="/service-workers/service-worker/resources/test-helpers.sub.js"></script> - -<h1>idlharness test</h1> -<p>This test validates the WebIDL included in the Background Fetch API (Service Workers).</p> - -<script> -'use strict'; - -service_worker_test('interfaces.worker.js', 'Service Worker-scoped tests.'); -</script> diff --git a/tests/wpt/web-platform-tests/background-fetch/interfaces.html b/tests/wpt/web-platform-tests/background-fetch/interfaces.html deleted file mode 100644 index 51e320e6437..00000000000 --- a/tests/wpt/web-platform-tests/background-fetch/interfaces.html +++ /dev/null @@ -1,28 +0,0 @@ -<!doctype html> -<meta charset="utf-8"> -<title>Background Fetch API IDL tests</title> -<script src="/resources/testharness.js"></script> -<script src="/resources/testharnessreport.js"></script> -<script src="/resources/WebIDLParser.js"></script> -<script src="/resources/idlharness.js"></script> - -<h1>idlharness test</h1> -<p>This test validates the WebIDL included in the Background Fetch API (Documents).</p> - -<script> -'use strict'; - -promise_test(async function () { - const idls = await fetch('/interfaces/background-fetch.idl').then(r => r.text()); - const dom = await fetch('/interfaces/dom.idl').then(r => r.text()); - - var idlArray = new IdlArray(); - idlArray.add_untested_idls('interface ServiceWorkerRegistration {};'); - idlArray.add_untested_idls('[Exposed=ServiceWorker] interface ServiceWorkerGlobalScope {};'); - idlArray.add_untested_idls('interface ExtendableEvent{};'); - idlArray.add_untested_idls('dictionary ExtendableEventInit{};'); - idlArray.add_untested_idls(dom, { only: ['EventTarget'] }); - idlArray.add_idls(idls); - idlArray.test(); -}, 'Exposed interfaces in a Document.'); -</script> diff --git a/tests/wpt/web-platform-tests/background-fetch/interfaces.https.any.js b/tests/wpt/web-platform-tests/background-fetch/interfaces.https.any.js new file mode 100644 index 00000000000..668a679b2c0 --- /dev/null +++ b/tests/wpt/web-platform-tests/background-fetch/interfaces.https.any.js @@ -0,0 +1,19 @@ +// META: script=/resources/WebIDLParser.js +// META: script=/resources/idlharness.js + +'use strict'; + +// https://wicg.github.io/background-fetch/ + +promise_test(async () => { + const srcs = ['background-fetch', 'dedicated-workers', 'ServiceWorker', 'dom']; + const [idls, worker, serviceWorker, dom] = await Promise.all( + srcs.map(i => fetch(`/interfaces/${i}.idl`).then(r => r.text()))); + + var idlArray = new IdlArray(); + idlArray.add_idls(idls); + idlArray.add_dependency_idls(serviceWorker); + idlArray.add_dependency_idls(worker); + idlArray.add_dependency_idls(dom); + idlArray.test(); +}, 'background-fetch interfaces'); diff --git a/tests/wpt/web-platform-tests/background-fetch/interfaces.worker.js b/tests/wpt/web-platform-tests/background-fetch/interfaces.worker.js deleted file mode 100644 index 0760ffd59af..00000000000 --- a/tests/wpt/web-platform-tests/background-fetch/interfaces.worker.js +++ /dev/null @@ -1,20 +0,0 @@ -'use strict'; - -importScripts('/resources/testharness.js'); -importScripts('/resources/WebIDLParser.js', '/resources/idlharness.js'); - -promise_test(async function() { - const idls = await fetch('/interfaces/background-fetch.idl').then(r => r.text()); - const dom = await fetch('/interfaces/dom.idl').then(r => r.text()); - - var idlArray = new IdlArray(); - idlArray.add_untested_idls('interface ServiceWorkerRegistration {};'); - idlArray.add_untested_idls('[SecureContext, Exposed = (Window, Worker)] interface ServiceWorkerGlobalScope {};'); - idlArray.add_untested_idls('interface ExtendableEvent{};'); - idlArray.add_untested_idls('dictionary ExtendableEventInit{};'); - idlArray.add_untested_idls(dom, { only: ['EventTarget'] }); - idlArray.add_idls(idls); - idlArray.test(); -}, 'Exposed interfaces in a Service Worker.'); - -done(); diff --git a/tests/wpt/web-platform-tests/beacon/idlharness.any.js b/tests/wpt/web-platform-tests/beacon/idlharness.any.js new file mode 100644 index 00000000000..958daf4865d --- /dev/null +++ b/tests/wpt/web-platform-tests/beacon/idlharness.any.js @@ -0,0 +1,17 @@ +// META: script=/resources/WebIDLParser.js +// META: script=/resources/idlharness.js + +// https://w3c.github.io/beacon/ + +promise_test(async () => { + const idl = await fetch('/interfaces/beacon.idl').then(r => r.text()); + const html = await fetch('/interfaces/html.idl').then(r => r.text()); + + const idl_array = new IdlArray(); + idl_array.add_idls(idl); + idl_array.add_dependency_idls(html); + idl_array.add_objects({ + Navigator: ['navigator'], + }); + idl_array.test(); +}, 'beacon interfaces'); diff --git a/tests/wpt/web-platform-tests/bluetooth/idl/idlharness.tentative.window.js b/tests/wpt/web-platform-tests/bluetooth/idl/idlharness.tentative.window.js new file mode 100644 index 00000000000..6214f133ffd --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/idl/idlharness.tentative.window.js @@ -0,0 +1,19 @@ +// META: script=/resources/WebIDLParser.js +// META: script=/resources/idlharness.js + +'use strict'; + +// https://webbluetoothcg.github.io/web-bluetooth/ + +promise_test(async () => { + const srcs = ['web-bluetooth', 'dom', 'html', 'permissions']; + const [idl, dom, html, permissions] = await Promise.all( + srcs.map(i => fetch(`/interfaces/${i}.idl`).then(r => r.text()))); + + const idl_array = new IdlArray(); + idl_array.add_idls(idl); + idl_array.add_dependency_idls(dom); + idl_array.add_dependency_idls(html); + idl_array.add_dependency_idls(permissions); + idl_array.test(); +}, 'web-bluetooth interfaces.'); diff --git a/tests/wpt/web-platform-tests/console/console-count-logging-manual.html b/tests/wpt/web-platform-tests/console/console-count-logging-manual.html index 4cd430e3703..640729f1a21 100644 --- a/tests/wpt/web-platform-tests/console/console-count-logging-manual.html +++ b/tests/wpt/web-platform-tests/console/console-count-logging-manual.html @@ -7,7 +7,7 @@ <link rel="help" href="https://console.spec.whatwg.org/#count"> </head> <body> -<p>Open the console inside the developer tools. It should contain four lines whose contents are:</p> +<p>Open the console inside the developer tools. It should contain four entries whose contents are:</p> <p><code>default: 1</code></p> <p><code>default: 2</code></p> <p><code>default: 3</code></p> diff --git a/tests/wpt/web-platform-tests/console/console-countReset-logging-manual.html b/tests/wpt/web-platform-tests/console/console-countReset-logging-manual.html index e2ed2dd062f..62122fb214a 100644 --- a/tests/wpt/web-platform-tests/console/console-countReset-logging-manual.html +++ b/tests/wpt/web-platform-tests/console/console-countReset-logging-manual.html @@ -7,7 +7,7 @@ <link rel="help" href="https://console.spec.whatwg.org/#countReset"> </head> <body> -<p>Open the console inside the developer tools. It should contain lines whose contents are:</p> +<p>Open the console inside the developer tools. It should contain entries whose contents are:</p> <p><code>default: 1</code></p> <p><code>default: 1</code></p> <p><code>default: 1</code></p> diff --git a/tests/wpt/web-platform-tests/console/console-number-format-specifiers-symbol-manual.html b/tests/wpt/web-platform-tests/console/console-number-format-specifiers-symbol-manual.html index 4fb65fa8f18..f77b84e5159 100644 --- a/tests/wpt/web-platform-tests/console/console-number-format-specifiers-symbol-manual.html +++ b/tests/wpt/web-platform-tests/console/console-number-format-specifiers-symbol-manual.html @@ -7,7 +7,7 @@ <link rel="help" href="https://console.spec.whatwg.org/#formatter"> </head> <body> -<p>Open the console inside the developer tools. It should contain 15 lines, each of which are:</p> +<p>Open the console inside the developer tools. It should contain 15 entries, each of which are:</p> <p><code>NaN</code></p> <script> diff --git a/tests/wpt/web-platform-tests/console/console-string-format-specifier-symbol-manual.html b/tests/wpt/web-platform-tests/console/console-string-format-specifier-symbol-manual.html index 5988b14d0d4..3a1b93f7352 100644 --- a/tests/wpt/web-platform-tests/console/console-string-format-specifier-symbol-manual.html +++ b/tests/wpt/web-platform-tests/console/console-string-format-specifier-symbol-manual.html @@ -7,7 +7,7 @@ <link rel="help" href="https://console.spec.whatwg.org/#formatter"> </head> <body> -<p>Open the console inside the developer tools. It should contain five lines, each of which are:</p> +<p>Open the console inside the developer tools. It should contain five entries, each of which are:</p> <p><code>Symbol(description)</code></p> <script> diff --git a/tests/wpt/web-platform-tests/content-security-policy/embedded-enforcement/subsumption_algorithm-unsafe_hashed_attributes.html b/tests/wpt/web-platform-tests/content-security-policy/embedded-enforcement/subsumption_algorithm-unsafe_hashes.html index 889210c253a..2d5fa1574a1 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/embedded-enforcement/subsumption_algorithm-unsafe_hashed_attributes.html +++ b/tests/wpt/web-platform-tests/content-security-policy/embedded-enforcement/subsumption_algorithm-unsafe_hashes.html @@ -1,7 +1,7 @@ <!DOCTYPE html> <html> <head> -<title>Embedded Enforcement: Subsumption Algorithm - 'unsafe-hashed-attributes' keyword.</title> +<title>Embedded Enforcement: Subsumption Algorithm - 'unsafe-hashes' keyword.</title> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="support/testharness-helper.sub.js"></script> @@ -9,36 +9,36 @@ <body> <script> var tests = [ - { "name": "'unsafe-hashed-attributes' is properly subsumed.", - "required_csp": "style-src http://example1.com/foo/ 'self' 'unsafe-eval' 'strict-dynamic' 'unsafe-hashed-attributes'", - "returned_csp_1": "style-src http://example1.com/foo/bar.html 'unsafe-hashed-attributes'", + { "name": "'unsafe-hashes' is properly subsumed.", + "required_csp": "style-src http://example1.com/foo/ 'self' 'unsafe-eval' 'strict-dynamic' 'unsafe-hashes'", + "returned_csp_1": "style-src http://example1.com/foo/bar.html 'unsafe-hashes'", "expected": IframeLoad.EXPECT_LOAD }, - { "name": "No other keyword has the same effect as 'unsafe-hashed-attributes'.", - "required_csp": "style-src http://example1.com/foo/ 'self' 'unsafe-hashed-attributes'", + { "name": "No other keyword has the same effect as 'unsafe-hashes'.", + "required_csp": "style-src http://example1.com/foo/ 'self' 'unsafe-hashes'", "returned_csp_1": "style-src http://example1.com/foo/ 'unsafe-inline'", "expected": IframeLoad.EXPECT_BLOCK }, - { "name": "Other expressions have to be subsumed.", - "required_csp": "style-src http://example1.com/foo/ 'self' 'unsafe-hashed-attributes'", - "returned_csp_1": "style-src http://example1.com/foo/ 'unsafe-inline' 'unsafe-hashed-attributes'", + { "name": "Other expressions have to be subsumed.", + "required_csp": "style-src http://example1.com/foo/ 'self' 'unsafe-hashes'", + "returned_csp_1": "style-src http://example1.com/foo/ 'unsafe-inline' 'unsafe-hashes'", "expected": IframeLoad.EXPECT_BLOCK }, - { "name": "Effective policy is properly found.", - "required_csp": "style-src http://example1.com/foo/ 'self' 'unsafe-hashed-attributes'", - "returned_csp_1": "style-src http://example1.com/foo/ 'unsafe-eval' 'unsafe-hashed-attributes'", - "returned_csp_2": "style-src http://example1.com/foo/ 'self' 'unsafe-hashed-attributes'", + { "name": "Effective policy is properly found.", + "required_csp": "style-src http://example1.com/foo/ 'self' 'unsafe-hashes'", + "returned_csp_1": "style-src http://example1.com/foo/ 'unsafe-eval' 'unsafe-hashes'", + "returned_csp_2": "style-src http://example1.com/foo/ 'self' 'unsafe-hashes'", "expected": IframeLoad.EXPECT_LOAD }, - { "name": "Required csp must allow 'unsafe-hashed-attributes'.", - "required_csp": "style-src http://example1.com/foo/ 'self'", - "returned_csp_1": "style-src http://example1.com/foo/ 'self' 'unsafe-hashed-attributes'", + { "name": "Required csp must allow 'unsafe-hashes'.", + "required_csp": "style-src http://example1.com/foo/ 'self'", + "returned_csp_1": "style-src http://example1.com/foo/ 'self' 'unsafe-hashes'", "expected": IframeLoad.EXPECT_BLOCK }, - { "name": "Effective policy is properly found where 'unsafe-hashed-attributes' is not subsumed.", - "required_csp": "style-src http://example1.com/foo/ 'self'", - "returned_csp_1": "style-src 'unsafe-eval' 'unsafe-hashed-attributes'", - "returned_csp_2": "style-src 'unsafe-hashed-attributes' 'unsafe-inline'", + { "name": "Effective policy is properly found where 'unsafe-hashes' is not subsumed.", + "required_csp": "style-src http://example1.com/foo/ 'self'", + "returned_csp_1": "style-src 'unsafe-eval' 'unsafe-hashes'", + "returned_csp_2": "style-src 'unsafe-hashes' 'unsafe-inline'", "expected": IframeLoad.EXPECT_BLOCK }, - { "name": "Effective policy is properly found where 'unsafe-hashed-attributes' is not part of it.", - "required_csp": "style-src http://example1.com/foo/ 'self'", + { "name": "Effective policy is properly found where 'unsafe-hashes' is not part of it.", + "required_csp": "style-src http://example1.com/foo/ 'self'", "returned_csp_1": "style-src 'unsafe-eval' 'self'", - "returned_csp_2": "style-src 'unsafe-hashed-attributes' 'self'", + "returned_csp_2": "style-src 'unsafe-hashes' 'self'", "expected": IframeLoad.EXPECT_LOAD }, ]; tests.forEach(test => { diff --git a/tests/wpt/web-platform-tests/content-security-policy/unsafe-hashes/javascript_src_allowed-href.html b/tests/wpt/web-platform-tests/content-security-policy/unsafe-hashes/javascript_src_allowed-href.html new file mode 100644 index 00000000000..76e9576e8b1 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/unsafe-hashes/javascript_src_allowed-href.html @@ -0,0 +1,26 @@ +<!DOCTYPE HTML> +<html> + +<head> + <meta http-equiv="Content-Security-Policy" content="script-src 'unsafe-hashes' 'nonce-abc' + 'sha256-r5W8SQIDMTbMxAjJ7KzCzFT38dwBy7Y5KF5B+20009g=';"> + <!-- + 'sha256-r5W8SQIDMTbMxAjJ7KzCzFT38dwBy7Y5KF5B+20009g=' ==> 'javascript:t1.done();' + --> + <script src='/resources/testharness.js' nonce='abc'></script> + <script src='/resources/testharnessreport.js' nonce='abc'></script> +</head> + +<body> + <div id='log'></div> + <a href='javascript:t1.done();' id='test'> + <script nonce='abc'> + var t1 = async_test("Test that the javascript: src is allowed to run"); + + window.addEventListener('securitypolicyviolation', t1.unreached_func("Should have not raised any event")); + + document.getElementById('test').click(); + </script> +</body> + +</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/unsafe-hashes/javascript_src_allowed-href_blank.html b/tests/wpt/web-platform-tests/content-security-policy/unsafe-hashes/javascript_src_allowed-href_blank.html new file mode 100644 index 00000000000..30d05ee04f5 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/unsafe-hashes/javascript_src_allowed-href_blank.html @@ -0,0 +1,26 @@ +<!DOCTYPE HTML> +<html> + +<head> + <meta http-equiv="Content-Security-Policy" content="script-src 'unsafe-hashes' 'nonce-abc' + 'sha256-r5W8SQIDMTbMxAjJ7KzCzFT38dwBy7Y5KF5B+20009g=';"> + <!-- + 'sha256-r5W8SQIDMTbMxAjJ7KzCzFT38dwBy7Y5KF5B+20009g=' ==> 'javascript:t1.done();' + --> + <script src='/resources/testharness.js' nonce='abc'></script> + <script src='/resources/testharnessreport.js' nonce='abc'></script> +</head> + +<body> + <div id='log'></div> + <a target="_blank" href='javascript:t1.done();' id='test'> + <script nonce='abc'> + var t1 = async_test("Test that the javascript: src is allowed to run"); + + window.addEventListener('securitypolicyviolation', t1.unreached_func("Should have not raised any event")); + + document.getElementById('test').click(); + </script> +</body> + +</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/unsafe-hashes/javascript_src_allowed-window_location.html b/tests/wpt/web-platform-tests/content-security-policy/unsafe-hashes/javascript_src_allowed-window_location.html new file mode 100644 index 00000000000..7dfb7b572f9 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/unsafe-hashes/javascript_src_allowed-window_location.html @@ -0,0 +1,27 @@ +<!DOCTYPE HTML> +<html> + +<head> + <!-- + 'sha256-IIiAJ8UuliU8o1qAv6CV4P3R8DeTf/v3MrsCwXW171Y=' ==> 'javascript:opener.postMessage('pass', '*')' + --> + <script src='/resources/testharness.js' nonce='abc'></script> + <script src='/resources/testharnessreport.js' nonce='abc'></script> +</head> + +<body> + <div id='log'></div> + <script nonce='abc'> + var t1 = async_test("Test that the javascript: src is allowed to run"); + + window.onmessage = t1.step_func_done(function(e) { + assert_equals(e.data, "pass"); + }); + + window.open('support/child_window_location_navigate.sub.html' + + '?csp=' + encodeURI("script-src 'unsafe-hashes' 'nonce-abc' 'sha256-IIiAJ8UuliU8o1qAv6CV4P3R8DeTf/v3MrsCwXW171Y='") + + '&url=' + encodeURI("javascript:opener.postMessage('pass', '*')")); + </script> +</body> + +</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/unsafe-hashes/javascript_src_allowed-window_open.html b/tests/wpt/web-platform-tests/content-security-policy/unsafe-hashes/javascript_src_allowed-window_open.html new file mode 100644 index 00000000000..970290e3f6f --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/unsafe-hashes/javascript_src_allowed-window_open.html @@ -0,0 +1,29 @@ +<!DOCTYPE HTML> +<html> + +<head> + <meta http-equiv="Content-Security-Policy" content="script-src 'unsafe-hashes' 'nonce-abc' + 'sha256-IIiAJ8UuliU8o1qAv6CV4P3R8DeTf/v3MrsCwXW171Y=';"> + <!-- + 'sha256-IIiAJ8UuliU8o1qAv6CV4P3R8DeTf/v3MrsCwXW171Y=' ==> 'javascript:opener.postMessage('pass', '*')' + --> + <script src='/resources/testharness.js' nonce='abc'></script> + <script src='/resources/testharnessreport.js' nonce='abc'></script> +</head> + +<body> + <div id='log'></div> + <script nonce='abc'> + var t1 = async_test("Test that the javascript: src is allowed to run"); + + window.onmessage = t1.step_func_done(function(e) { + assert_equals(e.data, "pass"); + }); + + window.addEventListener('securitypolicyviolation', t1.unreached_func("Should have not raised any event")); + + window.open("javascript:opener.postMessage('pass', '*')"); + </script> +</body> + +</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/unsafe-hashes/javascript_src_denied_missing_unsafe_hashes-href.html b/tests/wpt/web-platform-tests/content-security-policy/unsafe-hashes/javascript_src_denied_missing_unsafe_hashes-href.html new file mode 100644 index 00000000000..f53a2e924c3 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/unsafe-hashes/javascript_src_denied_missing_unsafe_hashes-href.html @@ -0,0 +1,29 @@ +<!DOCTYPE HTML> +<html> + +<head> + <meta http-equiv="Content-Security-Policy" content="script-src 'nonce-abc' + 'sha256-3MhWOWQJwDMJCRltopqBmDhP4qq569eTDcH+BpbHp0o=';"> + <!-- + 'sha256-3MhWOWQJwDMJCRltopqBmDhP4qq569eTDcH+BpbHp0o=' ==> javascript:t1.unreached_func("Should not have run javascript: URL"); + --> + <script src='/resources/testharness.js' nonce='abc'></script> + <script src='/resources/testharnessreport.js' nonce='abc'></script> +</head> + +<body> + <div id='log'></div> + <a href='javascript:t1.unreached_func("Should not have run javascript: URL");' id='test'> + <script nonce='abc'> + var t1 = async_test("Test that the javascript: src is not allowed to run"); + + window.addEventListener('securitypolicyviolation', t1.step_func_done(function(e) { + assert_equals(e.violatedDirective, 'script-src'); + assert_equals(e.blockedURI, 'inline'); + })); + + document.getElementById('test').click(); + </script> +</body> + +</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/unsafe-hashes/javascript_src_denied_missing_unsafe_hashes-href_blank.html b/tests/wpt/web-platform-tests/content-security-policy/unsafe-hashes/javascript_src_denied_missing_unsafe_hashes-href_blank.html new file mode 100644 index 00000000000..6b9f60ce368 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/unsafe-hashes/javascript_src_denied_missing_unsafe_hashes-href_blank.html @@ -0,0 +1,29 @@ +<!DOCTYPE HTML> +<html> + +<head> + <meta http-equiv="Content-Security-Policy" content="script-src 'unsafe-hashes' 'nonce-abc' + 'sha256-r5W8SQIDMTbMxAjJ7KzCzFT38dwBy7Y5KF5B+20009g=';"> + <!-- + 'sha256-3MhWOWQJwDMJCRltopqBmDhP4qq569eTDcH+BpbHp0o=' ==> javascript:t1.unreached_func("Should not have run javascript: URL"); + --> + <script src='/resources/testharness.js' nonce='abc'></script> + <script src='/resources/testharnessreport.js' nonce='abc'></script> +</head> + +<body> + <div id='log'></div> + <a href='javascript:t1.unreached_func("Should not have run javascript: URL");' id='test'> + <script nonce='abc'> + var t1 = async_test("Test that the javascript: src is not allowed to run"); + + window.addEventListener('securitypolicyviolation', t1.step_func_done(function(e) { + assert_equals(e.violatedDirective, 'script-src'); + assert_equals(e.blockedURI, 'inline'); + })); + + document.getElementById('test').click(); + </script> +</body> + +</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/unsafe-hashes/javascript_src_denied_missing_unsafe_hashes-window_location.html b/tests/wpt/web-platform-tests/content-security-policy/unsafe-hashes/javascript_src_denied_missing_unsafe_hashes-window_location.html new file mode 100644 index 00000000000..c014bd1554a --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/unsafe-hashes/javascript_src_denied_missing_unsafe_hashes-window_location.html @@ -0,0 +1,27 @@ +<!DOCTYPE HTML> +<html> + +<head> + <!-- + 'sha256-IIiAJ8UuliU8o1qAv6CV4P3R8DeTf/v3MrsCwXW171Y=' ==> 'javascript:opener.postMessage('pass', '*')' + --> + <script src='/resources/testharness.js' nonce='abc'></script> + <script src='/resources/testharnessreport.js' nonce='abc'></script> +</head> + +<body> + <div id='log'></div> + <script nonce='abc'> + var t1 = async_test("Test that the javascript: src is not allowed to run"); + + window.onmessage = t1.step_func_done(function(e) { + assert_equals(e.data, "fail"); + }); + + window.open('support/child_window_location_navigate.sub.html' + + '?csp=' + encodeURI("script-src 'nonce-abc' 'sha256-IIiAJ8UuliU8o1qAv6CV4P3R8DeTf/v3MrsCwXW171Y='") + + '&url=' + encodeURI("javascript:opener.postMessage('pass', '*')")); + </script> +</body> + +</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/unsafe-hashes/javascript_src_denied_missing_unsafe_hashes-window_open.html b/tests/wpt/web-platform-tests/content-security-policy/unsafe-hashes/javascript_src_denied_missing_unsafe_hashes-window_open.html new file mode 100644 index 00000000000..3667f8016fa --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/unsafe-hashes/javascript_src_denied_missing_unsafe_hashes-window_open.html @@ -0,0 +1,30 @@ +<!DOCTYPE HTML> +<html> + +<head> + <meta http-equiv="Content-Security-Policy" content="script-src 'nonce-abc' + 'sha256-IIiAJ8UuliU8o1qAv6CV4P3R8DeTf/v3MrsCwXW171Y=';"> + <!-- + 'sha256-IIiAJ8UuliU8o1qAv6CV4P3R8DeTf/v3MrsCwXW171Y=' ==> 'javascript:opener.postMessage('pass', '*')' + --> + <script src='/resources/testharness.js' nonce='abc'></script> + <script src='/resources/testharnessreport.js' nonce='abc'></script> +</head> + +<body> + <div id='log'></div> + <script nonce='abc'> + var t1 = async_test("Test that the javascript: src is not allowed to run"); + + window.onmessage = t1.unreached_func("Should have not received any message"); + + window.addEventListener('securitypolicyviolation', t1.step_func_done(function(e) { + assert_equals(e.violatedDirective, 'script-src'); + assert_equals(e.blockedURI, 'inline'); + })); + + window.open("javascript:opener.postMessage('pass', '*')"); + </script> +</body> + +</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/unsafe-hashes/javascript_src_denied_wrong_hash-href.html b/tests/wpt/web-platform-tests/content-security-policy/unsafe-hashes/javascript_src_denied_wrong_hash-href.html new file mode 100644 index 00000000000..adae81b0c06 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/unsafe-hashes/javascript_src_denied_wrong_hash-href.html @@ -0,0 +1,29 @@ +<!DOCTYPE HTML> +<html> + +<head> + <meta http-equiv="Content-Security-Policy" content="script-src 'unsafe-hashes' 'nonce-abc' + 'sha256-r5W8SQIDMTbMxAjJ7KzCzFT38dwBy7Y5KF5B+20009g=';"> + <!-- + 'sha256-3MhWOWQJwDMJCRltopqBmDhP4qq569eTDcH+BpbHp0o=' ==> javascript:t1.unreached_func("Should not have run javascript: URL"); + --> + <script src='/resources/testharness.js' nonce='abc'></script> + <script src='/resources/testharnessreport.js' nonce='abc'></script> +</head> + +<body> + <div id='log'></div> + <a href='javascript:t1.unreached_func("Should not have run javascript: URL");' id='test'> + <script nonce='abc'> + var t1 = async_test("Test that the javascript: src is not allowed to run"); + + window.addEventListener('securitypolicyviolation', t1.step_func_done(function(e) { + assert_equals(e.violatedDirective, 'script-src'); + assert_equals(e.blockedURI, 'inline'); + })); + + document.getElementById('test').click(); + </script> +</body> + +</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/unsafe-hashes/javascript_src_denied_wrong_hash-href_blank.html b/tests/wpt/web-platform-tests/content-security-policy/unsafe-hashes/javascript_src_denied_wrong_hash-href_blank.html new file mode 100644 index 00000000000..470283e10be --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/unsafe-hashes/javascript_src_denied_wrong_hash-href_blank.html @@ -0,0 +1,29 @@ +<!DOCTYPE HTML> +<html> + +<head> + <meta http-equiv="Content-Security-Policy" content="script-src 'nonce-abc' + 'sha256-3MhWOWQJwDMJCRltopqBmDhP4qq569eTDcH+BpbHp0o=';"> + <!-- + 'sha256-3MhWOWQJwDMJCRltopqBmDhP4qq569eTDcH+BpbHp0o=' ==> javascript:t1.unreached_func("Should not have run javascript: URL"); + --> + <script src='/resources/testharness.js' nonce='abc'></script> + <script src='/resources/testharnessreport.js' nonce='abc'></script> +</head> + +<body> + <div id='log'></div> + <a target="_blank" href='javascript:t1.unreached_func("Should not have run javascript: URL");' id='test'> + <script nonce='abc'> + var t1 = async_test("Test that the javascript: src is not allowed to run"); + + window.addEventListener('securitypolicyviolation', t1.step_func_done(function(e) { + assert_equals(e.violatedDirective, 'script-src'); + assert_equals(e.blockedURI, 'inline'); + })); + + document.getElementById('test').click(); + </script> +</body> + +</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/unsafe-hashes/javascript_src_denied_wrong_hash-window_location.html b/tests/wpt/web-platform-tests/content-security-policy/unsafe-hashes/javascript_src_denied_wrong_hash-window_location.html new file mode 100644 index 00000000000..cfb8d6b958e --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/unsafe-hashes/javascript_src_denied_wrong_hash-window_location.html @@ -0,0 +1,27 @@ +<!DOCTYPE HTML> +<html> + +<head> + <!-- + 'sha256-IIiAJ8UuliU8o1qAv6CV4P3R8DeTf/v3MrsCwXW171Y=' ==> 'javascript:opener.postMessage('pass', '*')' + --> + <script src='/resources/testharness.js' nonce='abc'></script> + <script src='/resources/testharnessreport.js' nonce='abc'></script> +</head> + +<body> + <div id='log'></div> + <script nonce='abc'> + var t1 = async_test("Test that the javascript: src is not allowed to run"); + + window.onmessage = t1.step_func_done(function(e) { + assert_equals(e.data, "fail"); + }); + + window.open('support/child_window_location_navigate.sub.html' + + '?csp=' + encodeURI("script-src 'unsafe-hashes' 'nonce-abc' 'sha256-VjH6k67F4kobUnNDOBE85QiJ9cuZMiYT6desKXvezVg='") + + '&url=' + encodeURI("javascript:opener.postMessage('pass', '*')")); + </script> +</body> + +</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/unsafe-hashes/javascript_src_denied_wrong_hash-window_open.html b/tests/wpt/web-platform-tests/content-security-policy/unsafe-hashes/javascript_src_denied_wrong_hash-window_open.html new file mode 100644 index 00000000000..8314e6ab911 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/unsafe-hashes/javascript_src_denied_wrong_hash-window_open.html @@ -0,0 +1,30 @@ +<!DOCTYPE HTML> +<html> + +<head> + <meta http-equiv="Content-Security-Policy" content="script-src 'unsafe-hashes' 'nonce-abc' + 'sha256-VjH6k67F4kobUnNDOBE85QiJ9cuZMiYT6desKXvezVg=';"> + <!-- + 'sha256-IIiAJ8UuliU8o1qAv6CV4P3R8DeTf/v3MrsCwXW171Y=' ==> 'javascript:opener.postMessage('pass', '*')' + --> + <script src='/resources/testharness.js' nonce='abc'></script> + <script src='/resources/testharnessreport.js' nonce='abc'></script> +</head> + +<body> + <div id='log'></div> + <script nonce='abc'> + var t1 = async_test("Test that the javascript: src is not allowed to run"); + + window.onmessage = t1.unreached_func("Should have not received any message"); + + window.addEventListener('securitypolicyviolation', t1.step_func_done(function(e) { + assert_equals(e.violatedDirective, 'script-src'); + assert_equals(e.blockedURI, 'inline'); + })); + + window.open("javascript:opener.postMessage('pass', '*')"); + </script> +</body> + +</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/unsafe-hashed-attributes/script_event_handlers_allowed.html b/tests/wpt/web-platform-tests/content-security-policy/unsafe-hashes/script_event_handlers_allowed.html index 17f19384dad..cd7855998fa 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/unsafe-hashed-attributes/script_event_handlers_allowed.html +++ b/tests/wpt/web-platform-tests/content-security-policy/unsafe-hashes/script_event_handlers_allowed.html @@ -2,8 +2,8 @@ <html> <head> - <meta http-equiv="Content-Security-Policy" content="script-src 'unsafe-hashed-attributes' 'nonce-abc' 'sha256-wmuLCpoj8EMqfQlPnt5NIMgKkCK62CxAkAiewI0zZps='; img-src *;"> - <title>Event handlers should be allowed if a matching hash and 'unsafe-hashed-attributes' are present</title> + <meta http-equiv="Content-Security-Policy" content="script-src 'unsafe-hashes' 'nonce-abc' 'sha256-wmuLCpoj8EMqfQlPnt5NIMgKkCK62CxAkAiewI0zZps='; img-src *;"> + <title>Event handlers should be allowed if a matching hash and 'unsafe-hashes' are present</title> <script src='/resources/testharness.js' nonce='abc'></script> <script src='/resources/testharnessreport.js' nonce='abc'></script> </head> diff --git a/tests/wpt/web-platform-tests/content-security-policy/unsafe-hashed-attributes/script_event_handlers_denied_matching_hash_no_unsafe_inline_attribute.html b/tests/wpt/web-platform-tests/content-security-policy/unsafe-hashes/script_event_handlers_denied_missing_unsafe_hashes.html index 1dae30cbbdd..0323dda50b7 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/unsafe-hashed-attributes/script_event_handlers_denied_matching_hash_no_unsafe_inline_attribute.html +++ b/tests/wpt/web-platform-tests/content-security-policy/unsafe-hashes/script_event_handlers_denied_missing_unsafe_hashes.html @@ -3,7 +3,7 @@ <head> <meta http-equiv="Content-Security-Policy" content="script-src 'nonce-abc' 'sha256-Cb9N8BP42Neca22vQ9VaXlPU8oPF8HPxZHxRVcnLZJ4='; img-src *;"> - <title>Event handlers should not be allowed if a matching hash is present without 'unsafe-hashed-attributes'</title> + <title>Event handlers should not be allowed if a matching hash is present without 'unsafe-hashes'</title> <script src='/resources/testharness.js' nonce='abc'></script> <script src='/resources/testharnessreport.js' nonce='abc'></script> diff --git a/tests/wpt/web-platform-tests/content-security-policy/unsafe-hashed-attributes/script_event_handlers_denied_not_matching_hash.html b/tests/wpt/web-platform-tests/content-security-policy/unsafe-hashes/script_event_handlers_denied_wrong_hash.html index 993ed550d4e..b9b13572c3b 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/unsafe-hashed-attributes/script_event_handlers_denied_not_matching_hash.html +++ b/tests/wpt/web-platform-tests/content-security-policy/unsafe-hashes/script_event_handlers_denied_wrong_hash.html @@ -2,7 +2,7 @@ <html> <head> - <meta http-equiv="Content-Security-Policy" content="script-src 'unsafe-hashed-attributes' 'nonce-abc' 'sha256-thisdoesnotmatch'; img-src *;"> + <meta http-equiv="Content-Security-Policy" content="script-src 'unsafe-hashes' 'nonce-abc' 'sha256-thisdoesnotmatch'; img-src *;"> <title>Event handlers should be not allowed if a matching hash is not present</title> <script src='/resources/testharness.js' nonce='abc'></script> <script src='/resources/testharnessreport.js' nonce='abc'></script> diff --git a/tests/wpt/web-platform-tests/content-security-policy/unsafe-hashes/style_attribute_allowed.html b/tests/wpt/web-platform-tests/content-security-policy/unsafe-hashes/style_attribute_allowed.html new file mode 100644 index 00000000000..69657efda7e --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/unsafe-hashes/style_attribute_allowed.html @@ -0,0 +1,31 @@ +<!DOCTYPE HTML> +<html> + +<head> + <meta http-equiv="Content-Security-Policy" content="img-src *; + style-src 'unsafe-hashes' 'sha256-S0VSqEOmzmyOifPfat2sJ7ELOgkldAEbaXlvi5iMqjc=';"> + <!-- + 'sha256-S0VSqEOmzmyOifPfat2sJ7ELOgkldAEbaXlvi5iMqjc=' ==> 'background: green' + --> + <title>Event handlers should be allowed if a matching hash and 'unsafe-hashes' are present</title> + <script src='/resources/testharness.js'></script> + <script src='/resources/testharnessreport.js'></script> +</head> + +<body> + <div id='log'></div> + <script> + var t1 = async_test("Test that the inline style attribute is loaded"); + + function check_for_style() { + assert_equals("green", document.getElementById('test').style.background); + t1.done(); + } + + window.addEventListener('securitypolicyviolation', t1.unreached_func("Should have not raised any event")); + </script> + <img src='../support/pass.png' id='test' style='background: green' + onload='check_for_style()'> +</body> + +</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/unsafe-hashes/style_attribute_denied_missing_unsafe_hashes.html b/tests/wpt/web-platform-tests/content-security-policy/unsafe-hashes/style_attribute_denied_missing_unsafe_hashes.html new file mode 100644 index 00000000000..66be2c3d807 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/unsafe-hashes/style_attribute_denied_missing_unsafe_hashes.html @@ -0,0 +1,29 @@ +<!DOCTYPE HTML> +<html> + +<head> + <meta http-equiv="Content-Security-Policy" content="img-src *; + style-src 'sha256-S0VSqEOmzmyOifPfat2sJ7ELOgkldAEbaXlvi5iMqjc=';"> + <!-- + 'sha256-S0VSqEOmzmyOifPfat2sJ7ELOgkldAEbaXlvi5iMqjc=' ==> 'background: green' + --> + <title>Event handlers should be allowed if a matching hash and 'unsafe-hashes' are present</title> + <script src='/resources/testharness.js'></script> + <script src='/resources/testharnessreport.js'></script> +</head> + +<body> + <div id='log'></div> + <script> + var t1 = async_test("Test that the inline style attribute is blocked"); + + window.addEventListener('securitypolicyviolation', t1.step_func_done(function(e) { + assert_equals(e.violatedDirective, 'style-src'); + assert_equals(e.blockedURI, 'inline'); + })); + + </script> + <img src='../support/pass.png' id='test' style='background: green'> +</body> + +</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/unsafe-hashes/style_attribute_denied_wrong_hash.html b/tests/wpt/web-platform-tests/content-security-policy/unsafe-hashes/style_attribute_denied_wrong_hash.html new file mode 100644 index 00000000000..32ca66a8a8b --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/unsafe-hashes/style_attribute_denied_wrong_hash.html @@ -0,0 +1,29 @@ +<!DOCTYPE HTML> +<html> + +<head> + <meta http-equiv="Content-Security-Policy" content="img-src *; + style-src 'unsafe-hashes' 'sha256-UI8QfroYhb0WX073XBuM+RTPntpjZfkyFLsMw5vQfd0=';"> + <!-- + 'sha256-S0VSqEOmzmyOifPfat2sJ7ELOgkldAEbaXlvi5iMqjc=' ==> 'background: green' + --> + <title>Event handlers should be allowed if a matching hash and 'unsafe-hashes' are present</title> + <script src='/resources/testharness.js'></script> + <script src='/resources/testharnessreport.js'></script> +</head> + +<body> + <div id='log'></div> + <script> + var t1 = async_test("Test that the inline style attribute is blocked"); + + window.addEventListener('securitypolicyviolation', t1.step_func_done(function(e) { + assert_equals(e.violatedDirective, 'style-src'); + assert_equals(e.blockedURI, 'inline'); + })); + + </script> + <img src='../support/pass.png' id='test' style='background: green'> +</body> + +</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/unsafe-hashes/support/child_window_location_navigate.sub.html b/tests/wpt/web-platform-tests/content-security-policy/unsafe-hashes/support/child_window_location_navigate.sub.html new file mode 100644 index 00000000000..b6e60467b64 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/unsafe-hashes/support/child_window_location_navigate.sub.html @@ -0,0 +1,18 @@ +<!DOCTYPE HTML> +<html> + +<head> + <meta http-equiv="Content-Security-Policy" content="{{GET[csp]}}"> +</head> + +<body> + <script nonce='abc'> + window.addEventListener('securitypolicyviolation', function(e) { + opener.postMessage('fail', '*'); + }); + + window.location.href = "{{GET[url]}}"; + </script> +</body> + +</html> diff --git a/tests/wpt/web-platform-tests/cookie-store/META.yml b/tests/wpt/web-platform-tests/cookie-store/META.yml index f6fab6fc646..eeb57de0302 100644 --- a/tests/wpt/web-platform-tests/cookie-store/META.yml +++ b/tests/wpt/web-platform-tests/cookie-store/META.yml @@ -1,3 +1,3 @@ suggested_reviewers: - - bsittler + - inexorabletash - pwnall diff --git a/tests/wpt/web-platform-tests/cookie-store/cookieListItem_attributes.tentative.window.js b/tests/wpt/web-platform-tests/cookie-store/cookieListItem_attributes.tentative.window.js new file mode 100644 index 00000000000..4b4b211b44d --- /dev/null +++ b/tests/wpt/web-platform-tests/cookie-store/cookieListItem_attributes.tentative.window.js @@ -0,0 +1,121 @@ +'use strict'; + +// Workaround because add_cleanup doesn't support async functions yet. +// See https://github.com/web-platform-tests/wpt/issues/6075 +async function async_cleanup(cleanup_function) { + try { + await cleanup_function(); + } catch (e) { + // Errors in cleanup functions shouldn't result in test failures. + } +} + +const kCurrentHostname = (new URL(self.location.href)).hostname; +const kIsSecureTransport = (new URL(self.location.href)).protocol === 'https:'; + +const kOneDay = 24 * 60 * 60 * 1000; +const kTenYears = 10 * 365 * kOneDay; +const kTenYearsFromNow = Date.now() + kTenYears; + +promise_test(async testCase => { + await cookieStore.delete('cookie-name'); + + await cookieStore.set('cookie-name', 'cookie-value'); + + const cookie = await cookieStore.get('cookie-name'); + assert_equals(cookie.name, 'cookie-name'); + assert_equals(cookie.value, 'cookie-value'); + assert_equals(cookie.domain, null); + assert_equals(cookie.path, '/'); + assert_equals(cookie.expires, null); + assert_equals(cookie.secure, kIsSecureTransport); + + await async_cleanup(() => cookieStore.delete('cookie-name')); +}, 'cookieStore.set defaults with positional name and value'); + +promise_test(async testCase => { + await cookieStore.delete('cookie-name'); + + await cookieStore.set({ name: 'cookie-name', value: 'cookie-value' }); + const cookie = await cookieStore.get('cookie-name'); + assert_equals(cookie.name, 'cookie-name'); + assert_equals(cookie.value, 'cookie-value'); + assert_equals(cookie.domain, null); + assert_equals(cookie.path, '/'); + assert_equals(cookie.expires, null); + assert_equals(cookie.secure, kIsSecureTransport); + + await async_cleanup(() => cookieStore.delete('cookie-name')); +}, 'cookieStore.set defaults with name and value in options'); + +promise_test(async testCase => { + await cookieStore.delete('cookie-name'); + + await cookieStore.set('cookie-name', 'cookie-value', + { expires: kTenYearsFromNow }); + const cookie = await cookieStore.get('cookie-name'); + assert_equals(cookie.name, 'cookie-name'); + assert_equals(cookie.value, 'cookie-value'); + assert_equals(cookie.domain, null); + assert_equals(cookie.path, '/'); + assert_approx_equals(cookie.expires, kTenYearsFromNow, kOneDay); + assert_equals(cookie.secure, kIsSecureTransport); + + await async_cleanup(() => cookieStore.delete('cookie-name')); +}, 'cookieStore.set with expires set to 10 years in the future'); + +promise_test(async testCase => { + await cookieStore.delete('cookie-name'); + + await cookieStore.set({ name: 'cookie-name', value: 'cookie-value', + expires: kTenYearsFromNow }); + const cookie = await cookieStore.get('cookie-name'); + assert_equals(cookie.name, 'cookie-name'); + assert_equals(cookie.value, 'cookie-value'); + assert_equals(cookie.domain, null); + assert_equals(cookie.path, '/'); + assert_approx_equals(cookie.expires, kTenYearsFromNow, kOneDay); + assert_equals(cookie.secure, kIsSecureTransport); + + await async_cleanup(() => cookieStore.delete('cookie-name')); +}, 'cookieStore.set with name and value in options and expires in the future'); + +promise_test(async testCase => { + await cookieStore.delete('cookie-name', { domain: kCurrentHostname }); + + await cookieStore.set('cookie-name', 'cookie-value', + { domain: kCurrentHostname }); + const cookie = await cookieStore.get('cookie-name'); + assert_equals(cookie.name, 'cookie-name'); + assert_equals(cookie.value, 'cookie-value'); + assert_equals(cookie.domain, kCurrentHostname); + assert_equals(cookie.path, '/'); + assert_equals(cookie.expires, null); + assert_equals(cookie.secure, kIsSecureTransport); + + await async_cleanup(async () => { + await cookieStore.delete('cookie-name', { domain: kCurrentHostname }); + }); +}, 'cookieStore.set with domain set to the current hostname'); + +promise_test(async testCase => { + const currentUrl = new URL(self.location.href); + const currentPath = currentUrl.pathname; + const currentDirectory = + currentPath.substr(0, currentPath.lastIndexOf('/') + 1); + await cookieStore.delete('cookie-name', { path: currentDirectory }); + + await cookieStore.set('cookie-name', 'cookie-value', + { path: currentDirectory }); + const cookie = await cookieStore.get('cookie-name'); + assert_equals(cookie.name, 'cookie-name'); + assert_equals(cookie.value, 'cookie-value'); + assert_equals(cookie.domain, null); + assert_equals(cookie.path, currentDirectory); + assert_equals(cookie.expires, null); + assert_equals(cookie.secure, kIsSecureTransport); + + await async_cleanup(async () => { + await cookieStore.delete('cookie-name', { path: currentDirectory }); + }); +}, 'cookieStore.set with path set to the current directory'); diff --git a/tests/wpt/web-platform-tests/cookie-store/cookieStore_delete_arguments.tentative.window.js b/tests/wpt/web-platform-tests/cookie-store/cookieStore_delete_arguments.tentative.window.js index 974d16bc2cb..9b10204437c 100644 --- a/tests/wpt/web-platform-tests/cookie-store/cookieStore_delete_arguments.tentative.window.js +++ b/tests/wpt/web-platform-tests/cookie-store/cookieStore_delete_arguments.tentative.window.js @@ -86,22 +86,26 @@ promise_test(async testCase => { const currentUrl = new URL(self.location.href); const currentDomain = currentUrl.hostname; const subDomain = `sub.${currentDomain}`; - await cookieStore.set( - 'cookie-name', 'cookie-value', { domain: currentDomain }); - - await cookieStore.delete('cookie-name', { domain: subDomain }); - const cookie = await cookieStore.get('cookie-name'); - assert_equals(cookie.name, 'cookie-name'); - assert_equals(cookie.value, 'cookie-value'); - await async_cleanup(async () => { - await cookieStore.delete('cookie-name', { domain: currentDomain }) - }); + await promise_rejects(testCase, new TypeError(), cookieStore.delete( + 'cookie-name', 'cookie-value', { domain: subDomain })); }, 'cookieStore.delete with domain set to a subdomain of the current hostname'); promise_test(async testCase => { const currentUrl = new URL(self.location.href); const currentDomain = currentUrl.hostname; + assert_not_equals(currentDomain[0] === '.', + 'this test assumes that the current hostname does not start with .'); + const domainSuffix = currentDomain.substr(1); + + await promise_rejects(testCase, new TypeError(), cookieStore.delete( + 'cookie-name', { domain: domainSuffix })); +}, 'cookieStore.delete with domain set to a non-domain-matching suffix of ' + + 'the current hostname'); + +promise_test(async testCase => { + const currentUrl = new URL(self.location.href); + const currentDomain = currentUrl.hostname; await cookieStore.set( 'cookie-name', 'cookie-value', { domain: currentDomain }); @@ -119,20 +123,23 @@ promise_test(async testCase => { const currentUrl = new URL(self.location.href); const currentDomain = currentUrl.hostname; const subDomain = `sub.${currentDomain}`; - await cookieStore.set( - 'cookie-name', 'cookie-value', { domain: currentDomain }); - - await cookieStore.delete({ name: 'cookie-name', domain: subDomain }); - const cookie = await cookieStore.get('cookie-name'); - assert_equals(cookie.name, 'cookie-name'); - assert_equals(cookie.value, 'cookie-value'); - await async_cleanup(async () => { - await cookieStore.delete('cookie-name', { domain: currentDomain }) - }); + await promise_rejects(testCase, new TypeError(), cookieStore.delete( + { name: 'cookie-name', domain: subDomain })); }, 'cookieStore.delete with name in options and domain set to a subdomain of ' + 'the current hostname'); +promise_test(async testCase => { + const currentUrl = new URL(self.location.href); + const currentDomain = currentUrl.hostname; + assert_not_equals(currentDomain[0] === '.', + 'this test assumes that the current hostname does not start with .'); + const domainSuffix = currentDomain.substr(1); + + await promise_rejects(testCase, new TypeError(), cookieStore.delete( + { name: 'cookie-name', domain: domainSuffix })); +}, 'cookieStore.delete with name in options and domain set to a ' + + 'non-domain-matching suffix of the current hostname'); promise_test(async testCase => { const currentUrl = new URL(self.location.href); diff --git a/tests/wpt/web-platform-tests/cookie-store/cookieStore_set_arguments.tentative.window.js b/tests/wpt/web-platform-tests/cookie-store/cookieStore_set_arguments.tentative.window.js index 9656acfa8e9..c35e8deb117 100644 --- a/tests/wpt/web-platform-tests/cookie-store/cookieStore_set_arguments.tentative.window.js +++ b/tests/wpt/web-platform-tests/cookie-store/cookieStore_set_arguments.tentative.window.js @@ -129,38 +129,51 @@ promise_test(async testCase => { const currentUrl = new URL(self.location.href); const currentDomain = currentUrl.hostname; const subDomain = `sub.${currentDomain}`; - await cookieStore.delete('cookie-name', { domain: currentDomain }); - await cookieStore.delete('cookie-name', { domain: subDomain }); - await cookieStore.set( - 'cookie-name', 'cookie-value', { domain: subDomain }); + await promise_rejects(testCase, new TypeError(), cookieStore.set( + 'cookie-name', 'cookie-value', { domain: subDomain })); const cookie = await cookieStore.get('cookie-name'); assert_equals(cookie, null); - - await async_cleanup(async () => { - await cookieStore.delete('cookie-name', { domain: subDomain }); - }); }, 'cookieStore.set with domain set to a subdomain of the current hostname'); promise_test(async testCase => { const currentUrl = new URL(self.location.href); const currentDomain = currentUrl.hostname; + assert_not_equals(currentDomain[0] === '.', + 'this test assumes that the current hostname does not start with .'); + const domainSuffix = currentDomain.substr(1); + + await promise_rejects(testCase, new TypeError(), cookieStore.set( + 'cookie-name', 'cookie-value', { domain: domainSuffix })); + const cookie = await cookieStore.get('cookie-name'); + assert_equals(cookie, null); +}, 'cookieStore.set with domain set to a non-domain-matching suffix of the ' + + 'current hostname'); + +promise_test(async testCase => { + const currentUrl = new URL(self.location.href); + const currentDomain = currentUrl.hostname; await cookieStore.delete('cookie-name'); - await cookieStore.set('cookie-name', 'cookie-old-value'); - await cookieStore.set( - 'cookie-name', 'cookie-new-value', { domain: currentDomain }); + await cookieStore.set('cookie-name', 'cookie-value1'); + await cookieStore.set('cookie-name', 'cookie-value2', + { domain: currentDomain }); const cookies = await cookieStore.getAll('cookie-name'); - assert_equals(cookies.length, 1); + assert_equals(cookies.length, 2); + assert_equals(cookies[0].name, 'cookie-name'); - assert_equals(cookies[0].value, 'cookie-new-value'); + assert_equals(cookies[1].name, 'cookie-name'); + + const values = cookies.map((cookie) => cookie.value); + values.sort(); + assert_array_equals(values, ['cookie-value1', 'cookie-value2']); await async_cleanup(async () => { await cookieStore.delete('cookie-name'); await cookieStore.delete('cookie-name', { domain: currentDomain }); }); -}, 'cookieStore.set default domain is current hostname'); +}, 'cookieStore.set default domain is null and differs from current hostname'); promise_test(async testCase => { const currentUrl = new URL(self.location.href); diff --git a/tests/wpt/web-platform-tests/css/compositing/parsing/background-blend-mode-invalid.html b/tests/wpt/web-platform-tests/css/compositing/parsing/background-blend-mode-invalid.html new file mode 100644 index 00000000000..e62ad2d9688 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/compositing/parsing/background-blend-mode-invalid.html @@ -0,0 +1,19 @@ +<!DOCTYPE html> +<html> +<head> +<meta charset="utf-8"> +<title>Compositing and Blending Level 1: parsing background-blend-mode with invalid values</title> +<link rel="author" title="Eric Willigers" href="mailto:ericwilligers@chromium.org"> +<link rel="help" href="https://drafts.fxtf.org/compositing-1/#propdef-background-blend-mode"> +<meta name="assert" content="background-blend-mode supports only the grammar '<blend-mode>#'."> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/parsing-testcommon.js"></script> +</head> +<body> +<script> +test_invalid_value("background-blend-mode", "auto"); +test_invalid_value("background-blend-mode", "normal luminosity"); +</script> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/css/compositing/parsing/background-blend-mode-valid.html b/tests/wpt/web-platform-tests/css/compositing/parsing/background-blend-mode-valid.html new file mode 100644 index 00000000000..debbafdbd54 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/compositing/parsing/background-blend-mode-valid.html @@ -0,0 +1,35 @@ +<!DOCTYPE html> +<html> +<head> +<meta charset="utf-8"> +<title>Compositing and Blending Level 1: parsing background-blend-mode with valid values</title> +<link rel="author" title="Eric Willigers" href="mailto:ericwilligers@chromium.org"> +<link rel="help" href="https://drafts.fxtf.org/compositing-1/#propdef-background-blend-mode"> +<meta name="assert" content="background-blend-mode supports the full grammar '<blend-mode>#'."> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/parsing-testcommon.js"></script> +</head> +<body> +<script> +test_valid_value("background-blend-mode", "normal"); +test_valid_value("background-blend-mode", "multiply"); +test_valid_value("background-blend-mode", "screen"); +test_valid_value("background-blend-mode", "overlay"); +test_valid_value("background-blend-mode", "darken"); +test_valid_value("background-blend-mode", "lighten"); +test_valid_value("background-blend-mode", "color-dodge"); +test_valid_value("background-blend-mode", "color-burn"); +test_valid_value("background-blend-mode", "hard-light"); +test_valid_value("background-blend-mode", "soft-light"); +test_valid_value("background-blend-mode", "difference"); +test_valid_value("background-blend-mode", "exclusion"); +test_valid_value("background-blend-mode", "hue"); +test_valid_value("background-blend-mode", "saturation"); +test_valid_value("background-blend-mode", "color"); +test_valid_value("background-blend-mode", "luminosity"); + +test_valid_value("background-blend-mode", "normal, luminosity"); +</script> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/css/compositing/parsing/isolation-invalid.html b/tests/wpt/web-platform-tests/css/compositing/parsing/isolation-invalid.html new file mode 100644 index 00000000000..759c6c9b70c --- /dev/null +++ b/tests/wpt/web-platform-tests/css/compositing/parsing/isolation-invalid.html @@ -0,0 +1,19 @@ +<!DOCTYPE html> +<html> +<head> +<meta charset="utf-8"> +<title>Compositing and Blending Level 1: parsing isolation with invalid values</title> +<link rel="author" title="Eric Willigers" href="mailto:ericwilligers@chromium.org"> +<link rel="help" href="https://drafts.fxtf.org/compositing-1/#propdef-isolation"> +<meta name="assert" content="isolation supports only the grammar '<isolation-mode>'."> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/parsing-testcommon.js"></script> +</head> +<body> +<script> +test_invalid_value("isolation", "none"); +test_invalid_value("isolation", "auto isolate"); +</script> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/css/compositing/parsing/isolation-valid.html b/tests/wpt/web-platform-tests/css/compositing/parsing/isolation-valid.html new file mode 100644 index 00000000000..bfc27be65bb --- /dev/null +++ b/tests/wpt/web-platform-tests/css/compositing/parsing/isolation-valid.html @@ -0,0 +1,19 @@ +<!DOCTYPE html> +<html> +<head> +<meta charset="utf-8"> +<title>Compositing and Blending Level 1: parsing isolation with valid values</title> +<link rel="author" title="Eric Willigers" href="mailto:ericwilligers@chromium.org"> +<link rel="help" href="https://drafts.fxtf.org/compositing-1/#propdef-isolation"> +<meta name="assert" content="isolation supports the full grammar '<isolation-mode>'."> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/parsing-testcommon.js"></script> +</head> +<body> +<script> +test_valid_value("isolation", "auto"); +test_valid_value("isolation", "isolate"); +</script> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/css/compositing/parsing/mix-blend-mode-invalid.html b/tests/wpt/web-platform-tests/css/compositing/parsing/mix-blend-mode-invalid.html new file mode 100644 index 00000000000..cde6cee4b15 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/compositing/parsing/mix-blend-mode-invalid.html @@ -0,0 +1,20 @@ +<!DOCTYPE html> +<html> +<head> +<meta charset="utf-8"> +<title>Compositing and Blending Level 1: parsing mix-blend-mode with invalid values</title> +<link rel="author" title="Eric Willigers" href="mailto:ericwilligers@chromium.org"> +<link rel="help" href="https://drafts.fxtf.org/compositing-1/#propdef-mix-blend-mode"> +<meta name="assert" content="mix-blend-mode supports only the grammar '<blend-mode>'."> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/parsing-testcommon.js"></script> +</head> +<body> +<script> +test_invalid_value("mix-blend-mode", "auto"); +test_invalid_value("mix-blend-mode", "normal luminosity"); +test_invalid_value("mix-blend-mode", "normal, luminosity"); +</script> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/css/compositing/parsing/mix-blend-mode-valid.html b/tests/wpt/web-platform-tests/css/compositing/parsing/mix-blend-mode-valid.html new file mode 100644 index 00000000000..50a333a6742 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/compositing/parsing/mix-blend-mode-valid.html @@ -0,0 +1,33 @@ +<!DOCTYPE html> +<html> +<head> +<meta charset="utf-8"> +<title>Compositing and Blending Level 1: parsing mix-blend-mode with valid values</title> +<link rel="author" title="Eric Willigers" href="mailto:ericwilligers@chromium.org"> +<link rel="help" href="https://drafts.fxtf.org/compositing-1/#propdef-mix-blend-mode"> +<meta name="assert" content="mix-blend-mode supports the full grammar '<blend-mode>'."> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/parsing-testcommon.js"></script> +</head> +<body> +<script> +test_valid_value("mix-blend-mode", "normal"); +test_valid_value("mix-blend-mode", "multiply"); +test_valid_value("mix-blend-mode", "screen"); +test_valid_value("mix-blend-mode", "overlay"); +test_valid_value("mix-blend-mode", "darken"); +test_valid_value("mix-blend-mode", "lighten"); +test_valid_value("mix-blend-mode", "color-dodge"); +test_valid_value("mix-blend-mode", "color-burn"); +test_valid_value("mix-blend-mode", "hard-light"); +test_valid_value("mix-blend-mode", "soft-light"); +test_valid_value("mix-blend-mode", "difference"); +test_valid_value("mix-blend-mode", "exclusion"); +test_valid_value("mix-blend-mode", "hue"); +test_valid_value("mix-blend-mode", "saturation"); +test_valid_value("mix-blend-mode", "color"); +test_valid_value("mix-blend-mode", "luminosity"); +</script> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/css/css-ui/parsing/resources/parsing-testcommon.js b/tests/wpt/web-platform-tests/css/compositing/parsing/resources/parsing-testcommon.js index b075882f89a..b075882f89a 100644 --- a/tests/wpt/web-platform-tests/css/css-ui/parsing/resources/parsing-testcommon.js +++ b/tests/wpt/web-platform-tests/css/compositing/parsing/resources/parsing-testcommon.js diff --git a/tests/wpt/web-platform-tests/css/css-animations/idlharness.html b/tests/wpt/web-platform-tests/css/css-animations/idlharness.html new file mode 100644 index 00000000000..2c6191d4fd6 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-animations/idlharness.html @@ -0,0 +1,36 @@ +<!DOCTYPE html> +<html> + +<head> + <meta charset="utf-8"> + <title>css-animations IDL tests</title> + <link rel="help" href="https://drafts.csswg.org/css-animations/"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/resources/WebIDLParser.js"></script> + <script src="/resources/idlharness.js"></script> +</head> + +<body> + <div id="log"></div> + + <script> + 'use strict'; + + promise_test(async () => { + const idl = await fetch('/interfaces/css-animations.idl').then(r => r.text()); + const cssom = await fetch('/interfaces/cssom.idl').then(r => r.text()); + const dom = await fetch('/interfaces/dom.idl').then(r => r.text()); + + const idl_array = new IdlArray(); + idl_array.add_idls(idl); + idl_array.add_dependency_idls(cssom); + idl_array.add_dependency_idls(dom); + + idl_array.test(); + }, 'Test css-animations IDL implementation'); + </script> + +</body> + +</html> diff --git a/tests/wpt/web-platform-tests/css/css-conditional/idlharness.html b/tests/wpt/web-platform-tests/css/css-conditional/idlharness.html new file mode 100644 index 00000000000..410466b2523 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-conditional/idlharness.html @@ -0,0 +1,33 @@ +<!DOCTYPE html> +<html> + +<head> + <meta charset="utf-8"> + <title>css-conditional IDL tests</title> + <link rel="help" href="https://drafts.csswg.org/css-conditional/"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/resources/WebIDLParser.js"></script> + <script src="/resources/idlharness.js"></script> +</head> + +<body> + <div id="log"></div> + + <script> + 'use strict'; + promise_test(async () => { + const idl = await fetch('/interfaces/css-conditional.idl').then(r => r.text()); + const cssom = await fetch('/interfaces/cssom.idl').then(r => r.text()); + const dom = await fetch('/interfaces/dom.idl').then(r => r.text()); + const idl_array = new IdlArray(); + idl_array.add_idls(idl); + idl_array.add_dependency_idls(cssom); + idl_array.add_dependency_idls(dom); + idl_array.test(); + }, 'Test css-conditional IDL implementation'); + </script> + +</body> + +</html> diff --git a/tests/wpt/web-platform-tests/css/css-contain/contain-size-013.html b/tests/wpt/web-platform-tests/css/css-contain/contain-size-013.html new file mode 100644 index 00000000000..f1bbc085454 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-contain/contain-size-013.html @@ -0,0 +1,17 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>CSS Containment Test: Size containment replaced elements intrinsic size</title> +<link rel="author" title="Manuel Rego Casasnovas" href="mailto:rego@igalia.com"> +<link rel="help" href="https://drafts.csswg.org/css-contain-1/#containment-size"> +<link rel="match" href="../reference/ref-filled-green-100px-square.xht"> +<meta name=assert content="This test checks that intrinsic size of replaced elements with 'contain: size' is zero."> +<style> +img { + background: green; + padding: 50px; + contain: size; +} +</style> + +<p>Test passes if there is a filled green square and <strong>no red</strong>.</p> +<img src="/css/support/60x60-red.png" /> diff --git a/tests/wpt/web-platform-tests/css/css-display/display-contents-sharing-001-ref.html b/tests/wpt/web-platform-tests/css/css-display/display-contents-sharing-001-ref.html new file mode 100644 index 00000000000..a047f326fe2 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-display/display-contents-sharing-001-ref.html @@ -0,0 +1,10 @@ +<!doctype html> +<meta charset="utf-8"> +<title style="display: none">CSS Test Reference</title> +<link rel="author" title="Emilio Cobos Álvarez" href="mailto:emilio@crisal.io"> +<style> + * { display: contents } +</style> +<whatever> + PASS +</whatever> diff --git a/tests/wpt/web-platform-tests/css/css-display/display-contents-sharing-001.html b/tests/wpt/web-platform-tests/css/css-display/display-contents-sharing-001.html new file mode 100644 index 00000000000..3ecb8eb2b1f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-display/display-contents-sharing-001.html @@ -0,0 +1,14 @@ +<!doctype html> +<meta charset="utf-8"> +<title style="display: none">CSS Test: display:contents style sharing.</title> +<link rel="author" title="Emilio Cobos Álvarez" href="mailto:emilio@crisal.io"> +<link rel="match" href="display-contents-sharing-001-ref.html"> +<link rel="help" href="https://drafts.csswg.org/css-display/#unbox-html"> +<link rel="help" href="https://bugzil.la/1469076"> +<style> + * { display: contents } +</style> +<br> +<whatever> + PASS +</whatever> diff --git a/tests/wpt/web-platform-tests/css/css-env/at-supports.tentative.html b/tests/wpt/web-platform-tests/css/css-env/at-supports.tentative.html new file mode 100644 index 00000000000..c893f2dc549 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-env/at-supports.tentative.html @@ -0,0 +1,22 @@ +<!DOCTYPE html> +<html> + <head> + <link rel="help" href="https://drafts.csswg.org/css-env-1/"> + <title>Test that CSS env vars work with @support</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <style> + @supports (background-color: env(test)) { + body { background-color: rgb(0, 128, 0); } + } + </style> + </head> + <body> + <script> + test(() => { + const style = window.getComputedStyle(document.body); + assert_equals(style.getPropertyValue("background-color"), "rgb(0, 128, 0)"); + }); + </script> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/css/css-env/env-in-custom-properties.tentative.html b/tests/wpt/web-platform-tests/css/css-env/env-in-custom-properties.tentative.html new file mode 100644 index 00000000000..ea471b001f2 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-env/env-in-custom-properties.tentative.html @@ -0,0 +1,23 @@ +<!DOCTYPE html> +<html> + <head> + <link rel="help" href="https://drafts.csswg.org/css-env-1/"> + <title>Test env() will work in custom properties</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <style> + body { + --my-width: env(test, 100px); + width: var(--my-width); + } + </style> + </head> + <body> + <script> + test(() => { + const style = window.getComputedStyle(document.body); + assert_equals(style.getPropertyValue("width"), "100px"); + }); + </script> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/css/css-env/fallback-nested-var.tentative.html b/tests/wpt/web-platform-tests/css/css-env/fallback-nested-var.tentative.html new file mode 100644 index 00000000000..6bde1ca9692 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-env/fallback-nested-var.tentative.html @@ -0,0 +1,23 @@ +<!DOCTYPE html> +<html> + <head> + <link rel="help" href="https://drafts.csswg.org/css-env-1/"> + <title>Test that nested var() fallback values work with CSS env vars</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <style> + body { + --main-bg-color: rgb(0, 128, 0); + background-color: env(test, var(--main-bg-color)); + } + </style> + </head> + <body> + <script> + test(() => { + const style = window.getComputedStyle(document.body); + assert_equals(style.getPropertyValue("background-color"), "rgb(0, 128, 0)"); + }); + </script> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/css/css-env/seralization-round-tripping.tentative.html b/tests/wpt/web-platform-tests/css/css-env/seralization-round-tripping.tentative.html new file mode 100644 index 00000000000..26a9afee011 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-env/seralization-round-tripping.tentative.html @@ -0,0 +1,19 @@ +<!DOCTYPE html> +<html> + <head> + <link rel="help" href="https://drafts.csswg.org/css-env-1/"> + <title>Test style seralization round tripping with CSS env vars</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + </head> + <body> + <script> + test(() => { + document.body.style.top = "env(test)"; + assert_equals(document.body.style.getPropertyValue("top"), "env(test)"); + document.body.style.setProperty("top", "env()"); + assert_equals(document.body.style.getPropertyValue("top"), "env(test)"); + }); + </script> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/css/css-env/supports-script.tentative.html b/tests/wpt/web-platform-tests/css/css-env/supports-script.tentative.html new file mode 100644 index 00000000000..ec9b6d0dfe6 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-env/supports-script.tentative.html @@ -0,0 +1,19 @@ +<!DOCTYPE html> +<html> + <head> + <link rel="help" href="https://drafts.csswg.org/css-env-1/"> + <title>Test that CSS env vars work with CSS.supports</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + </head> + <body> + <script> + test(() => { + assert_true(CSS.supports("background: env(test)")); + assert_true(CSS.supports("background", "env(test)")); + assert_false(CSS.supports("background", "env()")); + assert_false(CSS.supports("background", "env(test,)")); + }); + </script> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/css/css-env/syntax.tentative.html b/tests/wpt/web-platform-tests/css/css-env/syntax.tentative.html new file mode 100644 index 00000000000..8b265785616 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-env/syntax.tentative.html @@ -0,0 +1,57 @@ +<!DOCTYPE html> +<html> + <head> + <link rel="help" href="https://drafts.csswg.org/css-env-1/"> + <title>Test env() syntax</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <style> + div { background-color: rgb(0, 128, 0); } + </style> + </head> + <body> + <script> + // This value is expected if the syntax is valid. + const envWorkingValue = "rgba(0, 0, 0, 0)"; + + // This value is expected if the syntax is invalid. + const pageDefaultValue = "rgb(0, 128, 0)"; + + // This value is used to test fallback values. + const blueValue = "rgb(0, 0, 255)"; + + const testCases = [ + { style: "", expectedPropertyValue: pageDefaultValue }, + { style: "background-color: env(test)", expectedPropertyValue: envWorkingValue }, + { style: "background-color: ENV(test)", expectedPropertyValue: envWorkingValue }, + { style: "background-color: env(test) !important", expectedPropertyValue: envWorkingValue }, + { style: "background-color: env(test, 10px)", expectedPropertyValue: envWorkingValue }, + { style: "background-color: env(test, blue)", expectedPropertyValue: blueValue }, + { style: "background-color: env(test, env(another))", expectedPropertyValue: envWorkingValue }, + { style: "background-color: env(test, env(another, blue))", expectedPropertyValue: blueValue }, + { style: "background-color: env(-test)", expectedPropertyValue: envWorkingValue }, + { style: "background-color: env(--test)", expectedPropertyValue: envWorkingValue }, + { style: "background-color: env(10px)", expectedPropertyValue: pageDefaultValue }, + { style: "background-color: env(env(test))", expectedPropertyValue: pageDefaultValue }, + { style: "background-color: env( test)", expectedPropertyValue: envWorkingValue }, + { style: "background-color: env(test )", expectedPropertyValue: envWorkingValue }, + { style: "background-color: env( test )", expectedPropertyValue: envWorkingValue }, + { style: "background-color: env(test /**/, blue)", expectedPropertyValue: blueValue }, + { style: "background-color: env(test, {})", expectedPropertyValue: envWorkingValue }, + { style: "background-color: env(test, {)", expectedPropertyValue: pageDefaultValue }, + ]; + + testCases.forEach((testcase) => { + test(() => { + const elem = document.createElement("div"); + const style = window.getComputedStyle(elem); + + document.body.appendChild(elem); + elem.style.cssText = testcase.style; + + assert_equals(style.getPropertyValue("background-color"), testcase.expectedPropertyValue); + }, testcase.style + " " + testcase.expectedPropertyValue); + }); + </script> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/css/css-env/unknown-env-names-override-previous.tentative.html b/tests/wpt/web-platform-tests/css/css-env/unknown-env-names-override-previous.tentative.html new file mode 100644 index 00000000000..388aa225220 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-env/unknown-env-names-override-previous.tentative.html @@ -0,0 +1,17 @@ +<!DOCTYPE html> +<html> + <head> + <link rel="help" href="https://drafts.csswg.org/css-env-1/"> + <title>Test unknown env() names will override previous values</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + </head> + <body style="background-color: green; background-color: env(unknown);"> + <script> + test(() => { + const style = window.getComputedStyle(document.body); + assert_equals(style.getPropertyValue("background-color"), "rgba(0, 0, 0, 0)"); + }); + </script> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/css/css-fonts/font-shorthand-serialization-font-stretch.html b/tests/wpt/web-platform-tests/css/css-fonts/font-shorthand-serialization-font-stretch.html new file mode 100644 index 00000000000..f5fff421ff9 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-fonts/font-shorthand-serialization-font-stretch.html @@ -0,0 +1,39 @@ +<!doctype html> +<meta charset="utf-8"> +<title>CSS Test: font shorthand serialization with font-stretch values</title> +<link rel="help" href="https://drafts.csswg.org/css-fonts-4/#propdef-font"> +<link rel="help" href="https://drafts.csswg.org/cssom-1/#serializing-css-values"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<div id="test" style="font: medium serif"></div> +<script> +test(function() { + const div = document.getElementById("test"); + div.style.fontStretch = "50%"; + assert_equals(div.style.font, "ultra-condensed medium serif"); + div.style.fontStretch = "62.5%"; + assert_equals(div.style.font, "extra-condensed medium serif"); + div.style.fontStretch = "75%"; + assert_equals(div.style.font, "condensed medium serif"); + div.style.fontStretch = "87.5%"; + assert_equals(div.style.font, "semi-condensed medium serif"); + div.style.fontStretch = "100%"; + assert_equals(div.style.font, "medium serif", "The keyword normal should be omitted"); + div.style.fontStretch = "112.5%"; + assert_equals(div.style.font, "semi-expanded medium serif"); + div.style.fontStretch = "125%"; + assert_equals(div.style.font, "expanded medium serif"); + div.style.fontStretch = "150%"; + assert_equals(div.style.font, "extra-expanded medium serif"); + div.style.fontStretch = "200%"; + assert_equals(div.style.font, "ultra-expanded medium serif"); +}, "Percentages which can be transformed into keywords should be for serialization"); + +test(function() { + const div = document.getElementById("test"); + div.style.fontStretch = "25%"; + assert_equals(div.style.font, ""); + div.style.fontStretch = "101%"; + assert_equals(div.style.font, ""); +}, "Percentages which cannot be transformed into keywords should prevent the font shorthand from serializing"); +</script> diff --git a/tests/wpt/web-platform-tests/css/css-fonts/test_font_feature_values_parsing.html b/tests/wpt/web-platform-tests/css/css-fonts/test_font_feature_values_parsing.html index f5c03c1604a..7a5844d5600 100644 --- a/tests/wpt/web-platform-tests/css/css-fonts/test_font_feature_values_parsing.html +++ b/tests/wpt/web-platform-tests/css/css-fonts/test_font_feature_values_parsing.html @@ -4,7 +4,7 @@ <meta charset=utf-8> <title>@font-feature-values rule parsing tests</title> <link rel="author" title="John Daggett" href="mailto:jdaggett@mozilla.com"> - <link rel="help" href="http://www.w3.org/TR/css-fonts-3/#font-feature-values" /> + <link rel="help" href="http://www.w3.org/TR/css-fonts-4/#font-feature-values" /> <meta name="assert" content="tests that valid @font-feature-values rules parse and invalid ones don't" /> <!-- https://bugzilla.mozilla.org/show_bug.cgi?id=549861 --> <script type="text/javascript" src="/resources/testharness.js"></script> diff --git a/tests/wpt/web-platform-tests/css/css-grid/abspos/grid-positioned-items-gaps-002-rtl.html b/tests/wpt/web-platform-tests/css/css-grid/abspos/grid-positioned-items-gaps-002-rtl.html new file mode 100644 index 00000000000..4ea6cd65723 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/abspos/grid-positioned-items-gaps-002-rtl.html @@ -0,0 +1,53 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>CSS Grid Layout Test: Grid positioned items percentage and calc() gaps</title> +<link rel="author" title="Manuel Rego Casasnovas" href="mailto:rego@igalia.com"> +<link rel="help" href="https://drafts.csswg.org/css-grid-1/#abspos"> +<link rel="help" href="https://drafts.csswg.org/css-grid-1/#gutters"> +<meta name="assert" content="This test checks the behavior of the positioned items in a grid container with percentage and calc() gaps."> +<link rel="stylesheet" href="support/grid.css"> +<style> + +.grid { + grid-template-columns: 100px 100px 100px 100px; + grid-template-rows: 50px 50px 50px 50px; + width: 800px; + height: 600px; + border: 5px solid black; + margin: 30px; + padding: 15px; + /* Ensures that the grid container is the containing block of the absolutely positioned grid children. */ + position: relative; +} + +.grid > div { + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + background-color: lime; +} + +</style> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/check-layout-th.js"></script> + +<body onload="checkLayout('.grid')"> + +<div id="log"></div> + +<div class="grid directionRTL" style="gap: 10%;"> + <div style="grid-column: 2 / 4; grid-row: 2 / 4;" + data-offset-x="355" data-offset-y="125" data-expected-width="280" data-expected-height="160"> + </div> +</div> + +<div class="grid directionRTL" style="gap: calc(10% + 25px);"> + <div style="grid-column: 2 / 4; grid-row: 2 / 4;" + data-offset-x="305" data-offset-y="150" data-expected-width="305" data-expected-height="185"> + </div> +</div> + +</body> diff --git a/tests/wpt/web-platform-tests/css/css-grid/abspos/grid-positioned-items-gaps-002.html b/tests/wpt/web-platform-tests/css/css-grid/abspos/grid-positioned-items-gaps-002.html new file mode 100644 index 00000000000..22b1b4b44bf --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/abspos/grid-positioned-items-gaps-002.html @@ -0,0 +1,53 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>CSS Grid Layout Test: Grid positioned items percentage and calc() gaps</title> +<link rel="author" title="Manuel Rego Casasnovas" href="mailto:rego@igalia.com"> +<link rel="help" href="https://drafts.csswg.org/css-grid-1/#abspos"> +<link rel="help" href="https://drafts.csswg.org/css-grid-1/#gutters"> +<meta name="assert" content="This test checks the behavior of the positioned items in a grid container with percentage and calc() gaps."> +<link rel="stylesheet" href="support/grid.css"> +<style> + +.grid { + grid-template-columns: 100px 100px 100px 100px; + grid-template-rows: 50px 50px 50px 50px; + width: 800px; + height: 600px; + border: 5px solid black; + margin: 30px; + padding: 15px; + /* Ensures that the grid container is the containing block of the absolutely positioned grid children. */ + position: relative; +} + +.grid > div { + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + background-color: lime; +} + +</style> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/check-layout-th.js"></script> + +<body onload="checkLayout('.grid')"> + +<div id="log"></div> + +<div class="grid" style="gap: 10%;"> + <div style="grid-column: 2 / 4; grid-row: 2 / 4;" + data-offset-x="195" data-offset-y="125" data-expected-width="280" data-expected-height="160"> + </div> +</div> + +<div class="grid" style="gap: calc(10% + 25px);"> + <div style="grid-column: 2 / 4; grid-row: 2 / 4;" + data-offset-x="220" data-offset-y="150" data-expected-width="305" data-expected-height="185"> + </div> +</div> + +</body> diff --git a/tests/wpt/web-platform-tests/css/css-properties-values-api/support/alt/alt.css b/tests/wpt/web-platform-tests/css/css-properties-values-api/support/alt/alt.css new file mode 100644 index 00000000000..aeb6ad5abe0 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-properties-values-api/support/alt/alt.css @@ -0,0 +1,4 @@ +#target { + --reg-alt-non-inherited-url: url(foo.jpg); + --reg-alt-non-inherited-func: url("foo.jpg"); +} diff --git a/tests/wpt/web-platform-tests/css/css-properties-values-api/support/alt/alt.js b/tests/wpt/web-platform-tests/css/css-properties-values-api/support/alt/alt.js new file mode 100644 index 00000000000..f25e18beeb8 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-properties-values-api/support/alt/alt.js @@ -0,0 +1,11 @@ +function reg_url(name, inherits) { + CSS.registerProperty({ + name: name, + syntax: '<url> | none', + inherits: inherits, + initialValue: 'none' + }); +} + +reg_url('--reg-alt-non-inherited-url', false); +reg_url('--reg-alt-non-inherited-func', false); diff --git a/tests/wpt/web-platform-tests/css/css-properties-values-api/support/main/main.css b/tests/wpt/web-platform-tests/css/css-properties-values-api/support/main/main.css new file mode 100644 index 00000000000..6b81abdee70 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-properties-values-api/support/main/main.css @@ -0,0 +1,22 @@ +#target { + --unreg-url: url(foo.jpg); + --unreg-func: url("foo.jpg"); + + --reg-inherited-url: url(foo.jpg); + --reg-non-inherited-url: url(foo.jpg); + + --reg-inherited-func: url("foo.jpg"); + --reg-non-inherited-func: url("foo.jpg"); + + --reg-ref-to-unreg-url: var(--unreg-url); + --reg-ref-to-unreg-func: var(--unreg-func); + + --reg-ref-to-reg-url: var(--reg-alt-non-inherited-url); + --reg-ref-to-reg-func: var(--reg-alt-non-inherited-func); + + --unreg-ref-to-reg-url: var(--reg-alt-non-inherited-url); + --unreg-ref-to-reg-func: var(--reg-alt-non-inherited-func); + + --unreg-multi-ref-to-reg-urls: var(--reg-non-inherited-url), var(--reg-alt-non-inherited-url); + --unreg-multi-ref-to-reg-funcs: var(--reg-non-inherited-func), var(--reg-alt-non-inherited-func); +} diff --git a/tests/wpt/web-platform-tests/css/css-properties-values-api/support/main/main.js b/tests/wpt/web-platform-tests/css/css-properties-values-api/support/main/main.js new file mode 100644 index 00000000000..169ed7b53c1 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-properties-values-api/support/main/main.js @@ -0,0 +1,25 @@ +function reg_url(name, inherits) { + CSS.registerProperty({ + name: name, + syntax: '<url> | none', + inherits: inherits, + initialValue: 'none' + }); +} + +reg_url('--reg-non-inherited-url', false); +reg_url('--reg-non-inherited-func', false); + +reg_url('--reg-inherited-url', true); +reg_url('--reg-inherited-func', true); + +reg_url('--reg-ref-to-unreg-url', false); +reg_url('--reg-ref-to-unreg-func', false); + +reg_url('--reg-ref-to-reg-url', false); +reg_url('--reg-ref-to-reg-func', false); + +reg_url('--reg-merged-func', false); + +reg_url('--reg-utf16be-url', false); +reg_url('--reg-utf16be-func', false); diff --git a/tests/wpt/web-platform-tests/css/css-properties-values-api/support/main/main.utf16be.css b/tests/wpt/web-platform-tests/css/css-properties-values-api/support/main/main.utf16be.css Binary files differnew file mode 100644 index 00000000000..26485da32b7 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-properties-values-api/support/main/main.utf16be.css diff --git a/tests/wpt/web-platform-tests/css/css-properties-values-api/url-resolution.tentative.html b/tests/wpt/web-platform-tests/css/css-properties-values-api/url-resolution.tentative.html new file mode 100644 index 00000000000..d1cc98c91ec --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-properties-values-api/url-resolution.tentative.html @@ -0,0 +1,139 @@ +<!DOCTYPE html> +<link rel="author" title="Anders Hartvoll Ruud" href="andruud@chromium.org"> +<!-- TODO(andruud): Replace help link when spec is updated. --> +<link rel="help" href="https://github.com/w3c/css-houdini-drafts/issues/393#issuecomment-294706386" /> +<meta name="assert" content="This test verifies that relative URLs in registered properties resolve correctly" /> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> + +<script src="support/main/main.js"></script> +<script src="support/alt/alt.js"></script> +<link id="main" rel="stylesheet" type="text/css" href="support/main/main.css" /> +<link id="main_utf16be" rel="stylesheet" type="text/css" href="support/main/main.utf16be.css" /> +<link id="alt" rel="stylesheet" type="text/css" href="support/alt/alt.css" /> +<div id=target> + <div id=inner></div> +</div> +<script> +function parse_url(urlstr) { + urlstr = urlstr.trim(); + if (!urlstr.startsWith('url("') || !urlstr.endsWith('")')) + throw 'Unknown url format: ' + urlstr; + return urlstr.slice(5, -2); +} + +function get_bg_url(element) { + return parse_url(getComputedStyle(element)['background-image']); +} + +function get_bg_urls(element) { + return getComputedStyle(element)['background-image'] + .split(',') + .map(x => x.trim()) + .map(x => parse_url(x)); +} + +function assert_base_path_equal(actual, expected) { + let actual_base = new URL(actual).pathname.split('/').slice(0, -1); + let expected_base = new URL(expected).pathname.split('/').slice(0, -1); + assert_equals(actual_base.join('/'), expected_base.join('/')); +} + +function assert_base_paths_equal(actual, expected) { + assert_equals(actual.length, expected.length); + for (let i = 0; i < actual.length; i++) { + assert_base_path_equal(actual[i], expected[i]); + } +} + +test(function() { + target.style = 'background-image: var(--unreg-url);'; + assert_base_path_equal(get_bg_url(target), document.baseURI); +}, 'Unregistered property resolves against document (URL token)'); + +test(function() { + target.style = 'background-image: var(--unreg-func);'; + assert_base_path_equal(get_bg_url(target), document.baseURI); +}, 'Unregistered property resolves against document (URL function)'); + +test(function() { + target.style = 'background-image: var(--reg-non-inherited-url);'; + assert_base_path_equal(get_bg_url(target), main.sheet.href); +}, 'Registered non-inherited <url> resolves against sheet (URL token)'); + +test(function() { + target.style = 'background-image: var(--reg-non-inherited-func);'; + assert_base_path_equal(get_bg_url(target), main.sheet.href); +}, 'Registered non-inherited <url> resolves against sheet (URL function)'); + +test(function() { + target.style = 'background-image: var(--reg-inherited-url);'; + assert_base_path_equal(get_bg_url(target), main.sheet.href); +}, 'Registered inherited <url> resolves against sheet (URL token)'); + +test(function() { + target.style = 'background-image: var(--reg-inherited-func);'; + assert_base_path_equal(get_bg_url(target), main.sheet.href); +}, 'Registered inherited <url> resolves against sheet (URL function)'); + +test(function() { + inner.style = 'background-image: var(--reg-inherited-url);'; + assert_base_path_equal(get_bg_url(inner), main.sheet.href); +}, 'Registered inherited <url> resolves against sheet (Child node, URL token)'); + +test(function() { + inner.style = 'background-image: var(--reg-inherited-func);'; + assert_base_path_equal(get_bg_url(inner), main.sheet.href); +}, 'Registered inherited <url> resolves against sheet (Child node, URL function)'); + +test(function() { + target.style = 'background-image: var(--reg-ref-to-unreg-url);'; + assert_base_path_equal(get_bg_url(target), main.sheet.href); +}, 'Registered property with unregistered var reference resolves against sheet (URL token)'); + +test(function() { + target.style = 'background-image: var(--reg-ref-to-unreg-func);'; + assert_base_path_equal(get_bg_url(target), main.sheet.href); +}, 'Registered property with unregistered var reference resolves against sheet. (URL function)'); + +test(function() { + target.style = 'background-image: var(--reg-ref-to-reg-url);'; + assert_base_path_equal(get_bg_url(target), alt.sheet.href); +}, 'Registered property with registered var reference resolves against sheet of referenced property (URL token)'); + +test(function() { + target.style = 'background-image: var(--reg-ref-to-reg-func);'; + assert_base_path_equal(get_bg_url(target), alt.sheet.href); +}, 'Registered property with registered var reference resolves against sheet of referenced property (URL function)'); + +test(function() { + target.style = 'background-image: var(--unreg-ref-to-reg-url);'; + assert_base_path_equal(get_bg_url(target), alt.sheet.href); +}, 'Unregistered property with registered var reference resolves against sheet of referenced property (URL token)'); + +test(function() { + target.style = 'background-image: var(--unreg-ref-to-reg-func);'; + assert_base_path_equal(get_bg_url(target), alt.sheet.href); +}, 'Unregistered property with registered var reference resolves against sheet of referenced property (URL function)'); + +test(function() { + target.style = 'background-image: var(--unreg-multi-ref-to-reg-urls);'; + assert_base_paths_equal(get_bg_urls(target), [main.sheet.href, alt.sheet.href]); +}, 'Multiple (registered) var reference resolve against respective sheets (URL token)'); + +test(function() { + target.style = 'background-image: var(--unreg-multi-ref-to-reg-funcs);'; + assert_base_paths_equal(get_bg_urls(target), [main.sheet.href, alt.sheet.href]); +}, 'Multiple (registered) var reference resolve against respective sheets (URL function)'); + +test(function() { + target.style = 'background-image: var(--reg-utf16be-url);'; + assert_base_path_equal(get_bg_url(target), main_utf16be.sheet.href); +}, 'Registered UTF16BE-encoded var reference resolve against sheet (URL token)'); + +test(function() { + target.style = 'background-image: var(--reg-utf16be-func);'; + assert_base_path_equal(get_bg_url(target), main_utf16be.sheet.href); +}, 'Registered UTF16BE-encoded var reference resolve against sheet (URL function)'); + +</script> diff --git a/tests/wpt/web-platform-tests/css/css-scoping/shadow-directionality-001.tentative.html b/tests/wpt/web-platform-tests/css/css-scoping/shadow-directionality-001.tentative.html new file mode 100644 index 00000000000..7070d2a1d9a --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-scoping/shadow-directionality-001.tentative.html @@ -0,0 +1,34 @@ +<!doctype html> +<title>CSS Test: directionality propagation in Shadow DOM.</title> +<link rel="author" href="mailto:emilio@crisal.io" title="Emilio Cobos Álvarez"> +<link rel="help" href="https://html.spec.whatwg.org/#the-dir-attribute"> +<link rel="help" href="https://github.com/whatwg/html/issues/3699"> +<link rel="match" href="reference/green-box.html"> +<style> + div { width: 100px; } +</style> +<p>Test passes if you see a single 100px by 100px green box below.</p> +<div id="host1"></div> +<div id="host2" dir="rtl"></div> +<div id="host3"></div> +<div id="host4" dir="rtl"></div> +<script> + host1.attachShadow({ mode: "open" }).innerHTML = ` + <style>:dir(ltr) { background: green; height: 25px; }</style> + <div></div> + `; + host2.attachShadow({ mode: "open" }).innerHTML = ` + <style>:dir(rtl) { background: green; height: 25px; }</style> + <div></div> + `; + host3.attachShadow({ mode: "open" }).innerHTML = ` + <style>:dir(rtl) { background: green; height: 25px; }</style> + <div></div> + `; + host4.attachShadow({ mode: "open" }).innerHTML = ` + <style>span:dir(ltr) { display: block; background: green; height: 25px; }</style> + <div dir="ltr"><span></span></div> + `; + document.body.offsetTop; + host3.setAttribute("dir", "rtl"); +</script> diff --git a/tests/wpt/web-platform-tests/css/css-scoping/shadow-directionality-002.tentative.html b/tests/wpt/web-platform-tests/css/css-scoping/shadow-directionality-002.tentative.html new file mode 100644 index 00000000000..6aba12436a6 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-scoping/shadow-directionality-002.tentative.html @@ -0,0 +1,19 @@ +<!doctype html> +<title>CSS Test: directionality propagation in Shadow DOM, appending a shadow host.</title> +<link rel="author" href="mailto:emilio@crisal.io" title="Emilio Cobos Álvarez"> +<link rel="help" href="https://html.spec.whatwg.org/#the-dir-attribute"> +<link rel="help" href="https://github.com/whatwg/html/issues/3699"> +<link rel="match" href="reference/green-box.html"> +<p>Test passes if you see a single 100px by 100px green box below.</p> +<style> + div { width: 100px; } +</style> +<div id="host-parent" dir="rtl"></div> +<script> + let host = document.createElement("div"); + host.attachShadow({ mode: "open" }).innerHTML = ` + <style>:dir(rtl) { background: green; height: 100px; width: 100px; }</style> + <div></div> + `; + document.getElementById("host-parent").appendChild(host); +</script> diff --git a/tests/wpt/web-platform-tests/css/css-scoping/shadow-link-rel-stylesheet-no-style-leak.html b/tests/wpt/web-platform-tests/css/css-scoping/shadow-link-rel-stylesheet-no-style-leak.html new file mode 100644 index 00000000000..8ca69ccd1b2 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-scoping/shadow-link-rel-stylesheet-no-style-leak.html @@ -0,0 +1,21 @@ +<!doctype html> +<title>CSS Test: <link rel="stylesheet"> in Shadow DOM doesn't affect the normal DOM</title> +<link rel="help" href="https://html.spec.whatwg.org/#link-type-stylesheet"> +<link rel="help" href="https://drafts.csswg.org/css-scoping/#selectors-data-model"> +<link rel="match" href="reference/green-box.html"> +<p>Test passes if you see a single 100px by 100px green box below.</p> +<style> + #light-dom { + width: 100px; + height: 100px; + background: green; + color: green; + } +</style> +<div id="host">FAIL</div> +<div id="light-dom"></div> +<script> + host.attachShadow({ mode: "open" }).innerHTML = ` + <link rel="stylesheet" href="data:text/css,div { background: red !important }"> + `; +</script> diff --git a/tests/wpt/web-platform-tests/css/css-scoping/shadow-link-rel-stylesheet.html b/tests/wpt/web-platform-tests/css/css-scoping/shadow-link-rel-stylesheet.html new file mode 100644 index 00000000000..d67929a1adb --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-scoping/shadow-link-rel-stylesheet.html @@ -0,0 +1,11 @@ +<!doctype html> +<title>CSS Test: <link rel="stylesheet"> in Shadow DOM</title> +<link rel="help" href="https://html.spec.whatwg.org/#link-type-stylesheet"> +<link rel="match" href="reference/green-box.html"> +<p>Test passes if you see a single 100px by 100px green box below.</p> +<div id="host">FAIL</div> +<script> + host.attachShadow({ mode: "open" }).innerHTML = ` + <link rel="stylesheet" href="resources/host-green-box.css"> + `; +</script> diff --git a/tests/wpt/web-platform-tests/css/css-tables/height-distribution/percentage-sizing-of-table-cell-children-002-ref.html b/tests/wpt/web-platform-tests/css/css-tables/height-distribution/percentage-sizing-of-table-cell-children-002-ref.html index 37fe964e9ab..f2ed9e15dd2 100644 --- a/tests/wpt/web-platform-tests/css/css-tables/height-distribution/percentage-sizing-of-table-cell-children-002-ref.html +++ b/tests/wpt/web-platform-tests/css/css-tables/height-distribution/percentage-sizing-of-table-cell-children-002-ref.html @@ -26,6 +26,7 @@ height: 100%; } </style> +<link rel="stylesheet" type="text/css" href="support/scrollbars.css"> <p>The test passes if you see scrollbars but there's no overflow, so you cannot actually scroll.</p> diff --git a/tests/wpt/web-platform-tests/css/css-tables/height-distribution/percentage-sizing-of-table-cell-children-002.html b/tests/wpt/web-platform-tests/css/css-tables/height-distribution/percentage-sizing-of-table-cell-children-002.html index 814aa2791d8..19b02b20315 100644 --- a/tests/wpt/web-platform-tests/css/css-tables/height-distribution/percentage-sizing-of-table-cell-children-002.html +++ b/tests/wpt/web-platform-tests/css/css-tables/height-distribution/percentage-sizing-of-table-cell-children-002.html @@ -17,7 +17,6 @@ display: table-cell; background: cyan; overflow: scroll; - margin: 1px 2px 3px 4px; padding: 5px 15px 10px 20px; border: solid magenta; border-width: 12px 9px 6px 3px; @@ -29,6 +28,7 @@ height: 100%; } </style> +<link rel="stylesheet" type="text/css" href="support/scrollbars.css"> <p>The test passes if you see scrollbars but there's no overflow, so you cannot actually scroll.</p> diff --git a/tests/wpt/web-platform-tests/css/css-tables/height-distribution/percentage-sizing-of-table-cell-replaced-children-001-ref.html b/tests/wpt/web-platform-tests/css/css-tables/height-distribution/percentage-sizing-of-table-cell-replaced-children-001-ref.html index 3919e1e24a6..a696e56b4c6 100644 --- a/tests/wpt/web-platform-tests/css/css-tables/height-distribution/percentage-sizing-of-table-cell-replaced-children-001-ref.html +++ b/tests/wpt/web-platform-tests/css/css-tables/height-distribution/percentage-sizing-of-table-cell-replaced-children-001-ref.html @@ -27,6 +27,7 @@ img { height: 100%; } </style> +<link rel="stylesheet" type="text/css" href="support/scrollbars.css"> <p>The test passes if you see scrollbars but there's no overflow, so you cannot actually scroll.</p> diff --git a/tests/wpt/web-platform-tests/css/css-tables/height-distribution/percentage-sizing-of-table-cell-replaced-children-001.html b/tests/wpt/web-platform-tests/css/css-tables/height-distribution/percentage-sizing-of-table-cell-replaced-children-001.html index 2d3673800b5..bd2de2d2dd6 100644 --- a/tests/wpt/web-platform-tests/css/css-tables/height-distribution/percentage-sizing-of-table-cell-replaced-children-001.html +++ b/tests/wpt/web-platform-tests/css/css-tables/height-distribution/percentage-sizing-of-table-cell-replaced-children-001.html @@ -17,7 +17,6 @@ display: table-cell; background: cyan; overflow: scroll; - margin: 1px 2px 3px 4px; padding: 5px 15px 10px 20px; border: solid magenta; border-width: 12px 9px 6px 3px; @@ -30,6 +29,7 @@ img { height: 100%; } </style> +<link rel="stylesheet" type="text/css" href="support/scrollbars.css"> <p>The test passes if you see scrollbars but there's no overflow, so you cannot actually scroll.</p> diff --git a/tests/wpt/web-platform-tests/css/css-tables/height-distribution/support/scrollbars.css b/tests/wpt/web-platform-tests/css/css-tables/height-distribution/support/scrollbars.css new file mode 100644 index 00000000000..7a6944e169c --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-tables/height-distribution/support/scrollbars.css @@ -0,0 +1,10 @@ +/* This makes the scrollbars visible on mac, both to humans and screenshots.*/ + +::-webkit-scrollbar { + -webkit-appearance: none; +} + +::-webkit-scrollbar-track { + background-color: #eee; + border-radius: 8px; +} diff --git a/tests/wpt/web-platform-tests/css/css-transitions/idlharness.html b/tests/wpt/web-platform-tests/css/css-transitions/idlharness.html new file mode 100644 index 00000000000..36178b734b9 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-transitions/idlharness.html @@ -0,0 +1,23 @@ +<!doctype html> +<title>css-transitions IDL tests</title> +<link rel="help" href="https://drafts.csswg.org/css-transitions/"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/WebIDLParser.js"></script> +<script src="/resources/idlharness.js"></script> +<script> + "use strict"; + + promise_test(async () => { + const idl_array = new IdlArray(); + const idl = await fetch("/interfaces/css-transitions.idl").then(r => r.text()); + const cssom = await fetch("/interfaces/cssom.idl").then(r => r.text()); + const html = await fetch("/interfaces/html.idl").then(r => r.text()); + const dom = await fetch("/interfaces/dom.idl").then(r => r.text()); + idl_array.add_idls(idl); + idl_array.add_dependency_idls(cssom); + idl_array.add_dependency_idls(html); + idl_array.add_dependency_idls(dom); + idl_array.test(); + }, "Test IDL implementation of css-transitions API"); +</script> diff --git a/tests/wpt/web-platform-tests/css/css-ui/parsing/box-sizing-invalid.html b/tests/wpt/web-platform-tests/css/css-ui/parsing/box-sizing-invalid.html index 90bb5a1c8fb..4ced38240f2 100644 --- a/tests/wpt/web-platform-tests/css/css-ui/parsing/box-sizing-invalid.html +++ b/tests/wpt/web-platform-tests/css/css-ui/parsing/box-sizing-invalid.html @@ -8,7 +8,7 @@ <meta name="assert" content="box-sizing supports only the grammar 'content-box | border-box'."> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="resources/parsing-testcommon.js"></script> +<script src="support/parsing-testcommon.js"></script> </head> <body> <script> diff --git a/tests/wpt/web-platform-tests/css/css-ui/parsing/box-sizing-valid.html b/tests/wpt/web-platform-tests/css/css-ui/parsing/box-sizing-valid.html index 3d23d473d83..fb60ac23bb8 100644 --- a/tests/wpt/web-platform-tests/css/css-ui/parsing/box-sizing-valid.html +++ b/tests/wpt/web-platform-tests/css/css-ui/parsing/box-sizing-valid.html @@ -8,7 +8,7 @@ <meta name="assert" content="box-sizing supports the full grammar 'content-box | border-box'."> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="resources/parsing-testcommon.js"></script> +<script src="support/parsing-testcommon.js"></script> </head> <body> <script> diff --git a/tests/wpt/web-platform-tests/css/css-ui/parsing/caret-color-invalid.html b/tests/wpt/web-platform-tests/css/css-ui/parsing/caret-color-invalid.html index 9751b9b9d22..b4c9cb71e03 100644 --- a/tests/wpt/web-platform-tests/css/css-ui/parsing/caret-color-invalid.html +++ b/tests/wpt/web-platform-tests/css/css-ui/parsing/caret-color-invalid.html @@ -8,7 +8,7 @@ <meta name="assert" content="caret-color supports only the grammar 'auto | <color>'."> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="resources/parsing-testcommon.js"></script> +<script src="support/parsing-testcommon.js"></script> </head> <body> <script> diff --git a/tests/wpt/web-platform-tests/css/css-ui/parsing/caret-color-valid.html b/tests/wpt/web-platform-tests/css/css-ui/parsing/caret-color-valid.html index 81cfe25782a..41cc70654da 100644 --- a/tests/wpt/web-platform-tests/css/css-ui/parsing/caret-color-valid.html +++ b/tests/wpt/web-platform-tests/css/css-ui/parsing/caret-color-valid.html @@ -8,7 +8,7 @@ <meta name="assert" content="caret-color supports the full grammar 'auto | <color>'."> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="resources/parsing-testcommon.js"></script> +<script src="support/parsing-testcommon.js"></script> </head> <body> <script> diff --git a/tests/wpt/web-platform-tests/css/css-ui/parsing/cursor-invalid.html b/tests/wpt/web-platform-tests/css/css-ui/parsing/cursor-invalid.html index bd055307135..dda8031d309 100644 --- a/tests/wpt/web-platform-tests/css/css-ui/parsing/cursor-invalid.html +++ b/tests/wpt/web-platform-tests/css/css-ui/parsing/cursor-invalid.html @@ -8,7 +8,7 @@ <meta name="assert" content="cursor supports only the grammar."> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="resources/parsing-testcommon.js"></script> +<script src="support/parsing-testcommon.js"></script> </head> <body> <script> diff --git a/tests/wpt/web-platform-tests/css/css-ui/parsing/cursor-valid.html b/tests/wpt/web-platform-tests/css/css-ui/parsing/cursor-valid.html index 20ea26754c6..e33b82e2ddc 100644 --- a/tests/wpt/web-platform-tests/css/css-ui/parsing/cursor-valid.html +++ b/tests/wpt/web-platform-tests/css/css-ui/parsing/cursor-valid.html @@ -8,7 +8,7 @@ <meta name="assert" content="cursor supports the full grammar."> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="resources/parsing-testcommon.js"></script> +<script src="support/parsing-testcommon.js"></script> </head> <body> <script> diff --git a/tests/wpt/web-platform-tests/css/css-ui/parsing/outline-color-invalid.html b/tests/wpt/web-platform-tests/css/css-ui/parsing/outline-color-invalid.html index 029c1e98dbf..195f55dc72b 100644 --- a/tests/wpt/web-platform-tests/css/css-ui/parsing/outline-color-invalid.html +++ b/tests/wpt/web-platform-tests/css/css-ui/parsing/outline-color-invalid.html @@ -8,7 +8,7 @@ <meta name="assert" content="outline-color supports only the grammar '<color> | invert'."> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="resources/parsing-testcommon.js"></script> +<script src="support/parsing-testcommon.js"></script> </head> <body> <script> diff --git a/tests/wpt/web-platform-tests/css/css-ui/parsing/outline-color-valid-mandatory.html b/tests/wpt/web-platform-tests/css/css-ui/parsing/outline-color-valid-mandatory.html index 891bbc00a44..fbe730bdae3 100644 --- a/tests/wpt/web-platform-tests/css/css-ui/parsing/outline-color-valid-mandatory.html +++ b/tests/wpt/web-platform-tests/css/css-ui/parsing/outline-color-valid-mandatory.html @@ -8,7 +8,7 @@ <meta name="assert" content="outline-color supports '<color>'."> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="resources/parsing-testcommon.js"></script> +<script src="support/parsing-testcommon.js"></script> </head> <body> <script> diff --git a/tests/wpt/web-platform-tests/css/css-ui/parsing/outline-color-valid-optional.html b/tests/wpt/web-platform-tests/css/css-ui/parsing/outline-color-valid-optional.html index bd3b9e6be67..bf12b87f219 100644 --- a/tests/wpt/web-platform-tests/css/css-ui/parsing/outline-color-valid-optional.html +++ b/tests/wpt/web-platform-tests/css/css-ui/parsing/outline-color-valid-optional.html @@ -9,7 +9,7 @@ <meta name="flags" content="may"> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="resources/parsing-testcommon.js"></script> +<script src="support/parsing-testcommon.js"></script> </head> <body> <script> diff --git a/tests/wpt/web-platform-tests/css/css-ui/parsing/outline-invalid.html b/tests/wpt/web-platform-tests/css/css-ui/parsing/outline-invalid.html index ea8d88b57d9..c56a579452f 100644 --- a/tests/wpt/web-platform-tests/css/css-ui/parsing/outline-invalid.html +++ b/tests/wpt/web-platform-tests/css/css-ui/parsing/outline-invalid.html @@ -8,7 +8,7 @@ <meta name="assert" content="outline supports only the grammar '<outline-color> || <outline> || <outline>'."> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="resources/parsing-testcommon.js"></script> +<script src="support/parsing-testcommon.js"></script> </head> <body> <script> diff --git a/tests/wpt/web-platform-tests/css/css-ui/parsing/outline-offset-invalid.html b/tests/wpt/web-platform-tests/css/css-ui/parsing/outline-offset-invalid.html index f5471600cc3..1ee9477a111 100644 --- a/tests/wpt/web-platform-tests/css/css-ui/parsing/outline-offset-invalid.html +++ b/tests/wpt/web-platform-tests/css/css-ui/parsing/outline-offset-invalid.html @@ -8,7 +8,7 @@ <meta name="assert" content="outline-offset supports only the grammar '<length>'."> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="resources/parsing-testcommon.js"></script> +<script src="support/parsing-testcommon.js"></script> </head> <body> <script> diff --git a/tests/wpt/web-platform-tests/css/css-ui/parsing/outline-offset-valid.html b/tests/wpt/web-platform-tests/css/css-ui/parsing/outline-offset-valid.html index a7064e552cf..c5e023b8e96 100644 --- a/tests/wpt/web-platform-tests/css/css-ui/parsing/outline-offset-valid.html +++ b/tests/wpt/web-platform-tests/css/css-ui/parsing/outline-offset-valid.html @@ -8,7 +8,7 @@ <meta name="assert" content="outline-offset supports the full grammar '<length>'."> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="resources/parsing-testcommon.js"></script> +<script src="support/parsing-testcommon.js"></script> </head> <body> <script> diff --git a/tests/wpt/web-platform-tests/css/css-ui/parsing/outline-style-invalid.html b/tests/wpt/web-platform-tests/css/css-ui/parsing/outline-style-invalid.html index 1ea6230af7d..2340c62d902 100644 --- a/tests/wpt/web-platform-tests/css/css-ui/parsing/outline-style-invalid.html +++ b/tests/wpt/web-platform-tests/css/css-ui/parsing/outline-style-invalid.html @@ -8,7 +8,7 @@ <meta name="assert" content="outline-style supports only the grammar 'auto | <outline-line-style>'."> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="resources/parsing-testcommon.js"></script> +<script src="support/parsing-testcommon.js"></script> </head> <body> <script> diff --git a/tests/wpt/web-platform-tests/css/css-ui/parsing/outline-style-valid.html b/tests/wpt/web-platform-tests/css/css-ui/parsing/outline-style-valid.html index cebf614508d..5adcfda7ec7 100644 --- a/tests/wpt/web-platform-tests/css/css-ui/parsing/outline-style-valid.html +++ b/tests/wpt/web-platform-tests/css/css-ui/parsing/outline-style-valid.html @@ -8,7 +8,7 @@ <meta name="assert" content="outline-style supports the full grammar 'auto | <outline-line-style>'."> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="resources/parsing-testcommon.js"></script> +<script src="support/parsing-testcommon.js"></script> </head> <body> <script> diff --git a/tests/wpt/web-platform-tests/css/css-ui/parsing/outline-valid-mandatory.html b/tests/wpt/web-platform-tests/css/css-ui/parsing/outline-valid-mandatory.html index f4cfe2cfd32..a296c989bce 100644 --- a/tests/wpt/web-platform-tests/css/css-ui/parsing/outline-valid-mandatory.html +++ b/tests/wpt/web-platform-tests/css/css-ui/parsing/outline-valid-mandatory.html @@ -9,7 +9,7 @@ <meta name="assert" content="outline supports the full grammar '<outline-color> || <outline> || <outline>'."> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="resources/parsing-testcommon.js"></script> +<script src="support/parsing-testcommon.js"></script> </head> <body> <script> diff --git a/tests/wpt/web-platform-tests/css/css-ui/parsing/outline-valid-optional.html b/tests/wpt/web-platform-tests/css/css-ui/parsing/outline-valid-optional.html index 66ec8973e25..e179406cafb 100644 --- a/tests/wpt/web-platform-tests/css/css-ui/parsing/outline-valid-optional.html +++ b/tests/wpt/web-platform-tests/css/css-ui/parsing/outline-valid-optional.html @@ -11,7 +11,7 @@ <meta name="flags" content="may"> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="resources/parsing-testcommon.js"></script> +<script src="support/parsing-testcommon.js"></script> </head> <body> <script> diff --git a/tests/wpt/web-platform-tests/css/css-ui/parsing/outline-width-invalid.html b/tests/wpt/web-platform-tests/css/css-ui/parsing/outline-width-invalid.html index 71cb5337549..07012fef225 100644 --- a/tests/wpt/web-platform-tests/css/css-ui/parsing/outline-width-invalid.html +++ b/tests/wpt/web-platform-tests/css/css-ui/parsing/outline-width-invalid.html @@ -8,7 +8,7 @@ <meta name="assert" content="outline-width supports only the grammar '<border-width>'."> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="resources/parsing-testcommon.js"></script> +<script src="support/parsing-testcommon.js"></script> </head> <body> <script> diff --git a/tests/wpt/web-platform-tests/css/css-ui/parsing/outline-width-valid.html b/tests/wpt/web-platform-tests/css/css-ui/parsing/outline-width-valid.html index f68399150cb..050371246ce 100644 --- a/tests/wpt/web-platform-tests/css/css-ui/parsing/outline-width-valid.html +++ b/tests/wpt/web-platform-tests/css/css-ui/parsing/outline-width-valid.html @@ -8,7 +8,7 @@ <meta name="assert" content="outline-width supports the full grammar '<border-width>'."> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="resources/parsing-testcommon.js"></script> +<script src="support/parsing-testcommon.js"></script> </head> <body> <script> diff --git a/tests/wpt/web-platform-tests/css/css-ui/parsing/resize-invalid.html b/tests/wpt/web-platform-tests/css/css-ui/parsing/resize-invalid.html index 5fdb8ee71af..a56a1dbc6e2 100644 --- a/tests/wpt/web-platform-tests/css/css-ui/parsing/resize-invalid.html +++ b/tests/wpt/web-platform-tests/css/css-ui/parsing/resize-invalid.html @@ -8,7 +8,7 @@ <meta name="assert" content="resize supports only the grammar 'none | both | horizontal | vertical'."> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="resources/parsing-testcommon.js"></script> +<script src="support/parsing-testcommon.js"></script> </head> <body> <script> diff --git a/tests/wpt/web-platform-tests/css/css-ui/parsing/resize-valid.html b/tests/wpt/web-platform-tests/css/css-ui/parsing/resize-valid.html index e9f03d99949..025b0e447bb 100644 --- a/tests/wpt/web-platform-tests/css/css-ui/parsing/resize-valid.html +++ b/tests/wpt/web-platform-tests/css/css-ui/parsing/resize-valid.html @@ -8,7 +8,7 @@ <meta name="assert" content="resize supports the full grammar 'none | both | horizontal | vertical'."> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="resources/parsing-testcommon.js"></script> +<script src="support/parsing-testcommon.js"></script> </head> <body> <script> diff --git a/tests/wpt/web-platform-tests/css/css-ui/parsing/support/parsing-testcommon.js b/tests/wpt/web-platform-tests/css/css-ui/parsing/support/parsing-testcommon.js new file mode 100644 index 00000000000..b075882f89a --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/parsing/support/parsing-testcommon.js @@ -0,0 +1,39 @@ +'use strict'; + +// serializedValue can be the expected serialization of value, +// or an array of permitted serializations, +// or omitted if value should serialize as value. +function test_valid_value(property, value, serializedValue) { + if (arguments.length < 3) + serializedValue = value; + + var stringifiedValue = JSON.stringify(value); + + test(function(){ + var div = document.createElement('div'); + div.style[property] = value; + assert_not_equals(div.style.getPropertyValue(property), "", "property should be set"); + + var div = document.createElement('div'); + div.style[property] = value; + var readValue = div.style.getPropertyValue(property); + if (serializedValue instanceof Array) + assert_in_array(readValue, serializedValue, "serialization should be sound"); + else + assert_equals(readValue, serializedValue, "serialization should be canonical"); + + div.style[property] = readValue; + assert_equals(div.style.getPropertyValue(property), readValue, "serialization should round-trip"); + + }, "e.style['" + property + "'] = " + stringifiedValue + " should set the property value"); +} + +function test_invalid_value(property, value) { + var stringifiedValue = JSON.stringify(value); + + test(function(){ + var div = document.createElement('div'); + div.style[property] = value; + assert_equals(div.style.getPropertyValue(property), ""); + }, "e.style['" + property + "'] = " + stringifiedValue + " should not set the property value"); +} diff --git a/tests/wpt/web-platform-tests/css/css-ui/parsing/text-overflow-invalid.html b/tests/wpt/web-platform-tests/css/css-ui/parsing/text-overflow-invalid.html index f39748160a2..f3945a162ec 100644 --- a/tests/wpt/web-platform-tests/css/css-ui/parsing/text-overflow-invalid.html +++ b/tests/wpt/web-platform-tests/css/css-ui/parsing/text-overflow-invalid.html @@ -8,7 +8,7 @@ <meta name="assert" content="text-overflow supports only the grammar 'clip | ellipsis'."> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="resources/parsing-testcommon.js"></script> +<script src="support/parsing-testcommon.js"></script> </head> <body> <script> diff --git a/tests/wpt/web-platform-tests/css/css-ui/parsing/text-overflow-valid.html b/tests/wpt/web-platform-tests/css/css-ui/parsing/text-overflow-valid.html index 80f267eab77..3f0aaa60938 100644 --- a/tests/wpt/web-platform-tests/css/css-ui/parsing/text-overflow-valid.html +++ b/tests/wpt/web-platform-tests/css/css-ui/parsing/text-overflow-valid.html @@ -8,7 +8,7 @@ <meta name="assert" content="text-overflow supports the full grammar 'clip | ellipsis'."> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="resources/parsing-testcommon.js"></script> +<script src="support/parsing-testcommon.js"></script> </head> <body> <script> diff --git a/tests/wpt/web-platform-tests/css/css-values/calc-rounding-001.html b/tests/wpt/web-platform-tests/css/css-values/calc-rounding-001.html new file mode 100644 index 00000000000..dfd03a69530 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-values/calc-rounding-001.html @@ -0,0 +1,43 @@ +<!doctype html> +<!-- + Any copyright is dedicated to the Public Domain. + http://creativecommons.org/publicdomain/zero/1.0/ +--> +<meta charset="utf-8"> +<title>CSS Test: calc rounding doesn't accumulate a lot of error.</title> +<link rel="author" href="mailto:mats@mozilla.com" title="Mats Palmgren"> +<link rel="author" href="mailto:emilio@crisal.io" title="Emilio Cobos Álvarez"> +<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1323735"> +<link rel="help" href="https://drafts.csswg.org/css-values/#funcdef-calc"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<style> +body { + background: #f3f5f6; +} + +div { + font-size: 15px; + width: 401px; + margin: 20px; + background: #fff; + display: flex; + flex-wrap: wrap; +} + +b { + height: 50px; + background: red; + width: calc((100% - 4.5em) / 4); /* .5em gutters */ +} + +b:not(:last-child) { + margin-right: 1.5em; +} +</style> +<div><b></b><b></b><b></b><b></b></div> +<script> + test(function() { + assert_equals(document.querySelector("div").offsetHeight, 50); + }, "calc() doesn't accumulate much error that makes flex items overflow"); +</script> diff --git a/tests/wpt/web-platform-tests/css/cssom-view/elementFromPoint-mixed-font-sizes.html b/tests/wpt/web-platform-tests/css/cssom-view/elementFromPoint-mixed-font-sizes.html new file mode 100644 index 00000000000..e2bac90afdf --- /dev/null +++ b/tests/wpt/web-platform-tests/css/cssom-view/elementFromPoint-mixed-font-sizes.html @@ -0,0 +1,23 @@ +<!DOCTYPE html> +<link rel="help" href="http://www.w3.org/TR/cssom-view/#extensions-to-the-document-interface"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<div style="font-size: 40px"> + <span id="target"> + XXX <span id="small" style="font-size:10px">small</span> YYY + </span> +</div> +<script> +test(() => { + // Find a point in the empty region above the "small" span, but still inside + // the "target" span. + const small = document.getElementById('small'); + const rect = small.getBoundingClientRect(); + const x = rect.left + rect.width / 2; + const y = rect.top - 5; + + const actual = document.elementFromPoint(x, y); + const target = document.getElementById('target'); + assert_equals(actual, target); +}, 'document.elementFromPoint finds container SPAN in the empty region above a child SPAN with a smaller font size'); +</script> diff --git a/tests/wpt/web-platform-tests/css/cssom-view/scrollIntoView-vertical-rl-writing-mode.html b/tests/wpt/web-platform-tests/css/cssom-view/scrollIntoView-vertical-rl-writing-mode.html new file mode 100644 index 00000000000..4d67b4de3d4 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/cssom-view/scrollIntoView-vertical-rl-writing-mode.html @@ -0,0 +1,107 @@ +<!DOCTYPE html> +<title>CSSOM View - scrollIntoView considers vertical-rl writing mode</title> +<meta charset="utf-8"> +<link rel="author" title="Suneel Kota" href="mailto:suneel.kota@samsung.com"> +<link rel="help" href="https://drafts.csswg.org/cssom-view/#dom-element-scrollintoview"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> + +<style> +.box { + float: left; + width: 200px; + height: 200px; +} +#scroller { + writing-mode: vertical-rl; + overflow: scroll; + width: 300px; + height: 300px; +} +#container{ + width: 600px; + height: 600px; +} +#target { + background-color: #ff0; +} +</style> +<body> +<div id="scroller"> + <div id="container"> + <!-- ROW-1 --> + <div class="row"> + <div class="box"></div> + <div class="box"></div> + <div class="box"></div> + </div> + + <!-- ROW-2 --> + <div class="row"> + <div class="box"></div> + <div class="box" id="target"></div> + <div class="box"></div> + </div> + + <!-- ROW-3 --> + <div class="row"> + <div class="box"></div> + <div class="box"></div> + <div class="box"></div> + </div> + </div> +</div> + +<script> +var target = document.getElementById("target"); +var scroller = document.getElementById("scroller"); +var scrollbar_width = scroller.offsetWidth - scroller.clientWidth; + +var scroller_width = scroller.offsetWidth; +var scroller_height = scroller.offsetHeight; +var box_width = target.offsetWidth; +var box_height = target.offsetHeight; + +var expectedX = [ ((2*box_width)-scroller_width)+scrollbar_width, ((3*box_width - scroller_width)/2)+ (scrollbar_width/2), box_width ]; +var expectedY = [ box_height, ((3*box_height - scroller_height)/2) + (scrollbar_width/2), ((2*box_height)-scroller_height) + scrollbar_width ]; + +// As browsers differ in the meaning of scrollLeft when +// in a right-to-left mode, we adjust the expectation +// to match the semantics of scrollLeft. +if(scroller.scrollLeft === 0) + expectedX = [ -box_width, -(((3*box_width - scroller_width)/2)+ (scrollbar_width/2)), -(((2*box_width)-scroller_width)+scrollbar_width)]; + +// This formats dict as a string suitable as test name. +// format_value() is provided by testharness.js, +// which also preserves sign for -0. +function format_dict(dict) { + const props = []; + for (let prop in dict) { + props.push(`${prop}: ${format_value(dict[prop])}`); + } + return `{${props.join(", ")}}`; +} + +[ + [{block: "start", inline: "start"}, expectedX[0], expectedY[0]], + [{block: "start", inline: "center"}, expectedX[0], expectedY[1]], + [{block: "start", inline: "end"}, expectedX[0], expectedY[2]], + [{block: "center", inline: "start"}, expectedX[1], expectedY[0]], + [{block: "center", inline: "center"}, expectedX[1], expectedY[1]], + [{block: "center", inline: "end"}, expectedX[1], expectedY[2]], + [{block: "end", inline: "start"}, expectedX[2], expectedY[0]], + [{block: "end", inline: "center"}, expectedX[2], expectedY[1]], + [{block: "end", inline: "end"}, expectedX[2], expectedY[2]], +].forEach(([input, expectedX, expectedY]) => { + test(() => { + scroller.scrollTo(0, 0); + target.scrollIntoView(input); + assert_approx_equals(scroller.scrollLeft, expectedX, 0.5, "scrollX"); + assert_approx_equals(scroller.scrollTop, expectedY, 0.5, "scrollY"); + }, `scrollIntoView(${format_dict(input)})`); +}) + +</script> + +</body> +</html> diff --git a/tests/wpt/web-platform-tests/css/cssom/getComputedStyle-detached-subtree.html b/tests/wpt/web-platform-tests/css/cssom/getComputedStyle-detached-subtree.html index 1cbb92a466e..4f59ccd13c7 100644 --- a/tests/wpt/web-platform-tests/css/cssom/getComputedStyle-detached-subtree.html +++ b/tests/wpt/web-platform-tests/css/cssom/getComputedStyle-detached-subtree.html @@ -12,10 +12,10 @@ </div> <iframe srcdoc="<html></html>" style="display: none"></iframe> <script> -function testNoComputedStyle(element, description) { +function testNoComputedStyle(element, description, global) { test(function() { assert_true(!!element); - let style = getComputedStyle(element); + let style = (global ? global : window).getComputedStyle(element); assert_true(!!style); assert_true(style.length === 0); assert_equals(style.color, ""); @@ -28,6 +28,10 @@ testNoComputedStyle(detached, "detached element"); testNoComputedStyle(document.querySelector('iframe').contentDocument.documentElement, "element in non-rendered iframe (display: none)"); +testNoComputedStyle(document.querySelector('iframe').contentDocument.documentElement, + "element in non-rendered iframe (display: none) from iframe's window", + document.querySelector('iframe').contentWindow); + host.attachShadow({ mode: "open" }); testNoComputedStyle(document.getElementById('non-slotted'), "element outside the flat tree"); diff --git a/tests/wpt/web-platform-tests/css/cssom/getComputedStyle-display-none-001.html b/tests/wpt/web-platform-tests/css/cssom/getComputedStyle-display-none-001.html new file mode 100644 index 00000000000..5a356f15a4f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/cssom/getComputedStyle-display-none-001.html @@ -0,0 +1,39 @@ +<!doctype html> +<meta charset="utf-8"> +<title>CSSOM: getComputedStyle gets invalidated for display: none elements (inheritance)</title> +<link rel="help" href="https://drafts.csswg.org/cssom/#dom-window-getcomputedstyle"> +<link rel="help" href="https://bugs.webkit.org/show_bug.cgi?id=186882"> +<link rel="author" title="Emilio Cobos Álvarez" href="mailto:emilio@crisal.io"> +<script src=/resources/testharness.js></script> +<script src=/resources/testharnessreport.js></script> +<style> +#undisplayed, #host { + display: none; + color: red; +} +</style> +<div id="undisplayed"><div id="child"></div></div> +<div id="host"></div> +<script> + test(function() { + let undisplayed_style = getComputedStyle(undisplayed); + let undisplayed_child_style = getComputedStyle(child); + assert_equals(undisplayed_style.color, "rgb(255, 0, 0)"); + assert_equals(undisplayed_child_style.color, "rgb(255, 0, 0)"); + undisplayed.style.color = "green"; + assert_equals(undisplayed_style.color, "rgb(0, 128, 0)"); + assert_equals(undisplayed_child_style.color, "rgb(0, 128, 0)"); + }, "getComputedStyle gets invalidated in display: none subtrees due to inherited changes to an ancestor"); + test(function() { + host.attachShadow({ mode: 'open' }).innerHTML = ` + <div></div> + `; + let host_style = getComputedStyle(host); + let shadow_style = getComputedStyle(host.shadowRoot.firstElementChild); + assert_equals(host_style.color, "rgb(255, 0, 0)"); + assert_equals(shadow_style.color, "rgb(255, 0, 0)"); + host.style.color = "green"; + assert_equals(host_style.color, "rgb(0, 128, 0)"); + assert_equals(shadow_style.color, "rgb(0, 128, 0)"); + }, "getComputedStyle gets invalidated in display: none subtrees due to inherited changes to an ancestor shadow host"); +</script> diff --git a/tests/wpt/web-platform-tests/css/cssom/getComputedStyle-display-none-002.html b/tests/wpt/web-platform-tests/css/cssom/getComputedStyle-display-none-002.html new file mode 100644 index 00000000000..12fb7fc3f8c --- /dev/null +++ b/tests/wpt/web-platform-tests/css/cssom/getComputedStyle-display-none-002.html @@ -0,0 +1,34 @@ +<!doctype html> +<meta charset="utf-8"> +<title>CSSOM: getComputedStyle gets invalidated for display: none elements (rules)</title> +<link rel="help" href="https://drafts.csswg.org/cssom/#dom-window-getcomputedstyle"> +<link rel="help" href="https://bugs.webkit.org/show_bug.cgi?id=186882"> +<link rel="author" title="Emilio Cobos Álvarez" href="mailto:emilio@crisal.io"> +<script src=/resources/testharness.js></script> +<script src=/resources/testharnessreport.js></script> +<style> +#undisplayed { + display: none; + color: red; +} +.sibling + #undisplayed { + color: green; +} + +.sibling + #undisplayed > div { + color: yellow; +} +</style> +<div id="helper"></div> +<div id="undisplayed"><div id="child"></div></div> +<script> + test(function() { + let undisplayed_style = getComputedStyle(undisplayed); + let undisplayed_child_style = getComputedStyle(child); + assert_equals(undisplayed_style.color, "rgb(255, 0, 0)"); + assert_equals(undisplayed_child_style.color, "rgb(255, 0, 0)"); + helper.classList.add("sibling"); + assert_equals(undisplayed_style.color, "rgb(0, 128, 0)"); + assert_equals(undisplayed_child_style.color, "rgb(255, 255, 0)"); + }, "getComputedStyle gets invalidated in display: none subtrees due to rule matching changes"); +</script> diff --git a/tests/wpt/web-platform-tests/css/cssom/getComputedStyle-pseudo.html b/tests/wpt/web-platform-tests/css/cssom/getComputedStyle-pseudo.html index f5a637a7d31..340f9eed9b9 100644 --- a/tests/wpt/web-platform-tests/css/cssom/getComputedStyle-pseudo.html +++ b/tests/wpt/web-platform-tests/css/cssom/getComputedStyle-pseudo.html @@ -44,6 +44,16 @@ content: "foo"; position: absolute; } +#contents-pseudos-dynamic::before, +#contents-pseudos-dynamic::after { + display: block; + content: "foo"; + position: absolute; +} +#contents-pseudos-dynamic.contents::before, +#contents-pseudos-dynamic.contents::after { + display: contents; +} </style> <div id="test"> <div id="contents"></div> @@ -51,6 +61,7 @@ <div id="flex"></div> <div id="flex-no-pseudo"></div> <div id="contents-pseudos"></div> + <div id="contents-pseudos-dynamic"></div> </div> <script> test(function() { @@ -110,6 +121,22 @@ test(function() { }); }, "display: contents on pseudo-elements"); test(function() { + var contentsPseudosDynamic = document.getElementById('contents-pseudos-dynamic'); + [":before", ":after"].forEach(function(pseudo) { + assert_equals(getComputedStyle(contentsPseudosDynamic, pseudo).display, "block", + "Check that display for " + pseudo + " is block before change"); + }); + contentsPseudosDynamic.className = "contents"; + [":before", ":after"].forEach(function(pseudo) { + assert_equals(getComputedStyle(contentsPseudosDynamic, pseudo).display, "contents", + "display: contents in " + pseudo + " should get reflected on CSSOM"); + assert_equals(getComputedStyle(contentsPseudosDynamic, pseudo).width, "auto", + pseudo + " with display: contents should have no box"); + assert_equals(getComputedStyle(contentsPseudosDynamic, pseudo).position, "absolute", + "display: contents in " + pseudo + " should reflect other non-inherited properties in CSSOM"); + }); +}, "Dynamically change to display: contents on pseudo-elements"); +test(function() { var div = document.getElementById('test'); assert_throws(new TypeError(), () => getComputedStyle(div, "totallynotapseudo"), "getComputedStyle with an unknown pseudo-element throws"); diff --git a/tests/wpt/web-platform-tests/custom-elements/Document-createElement.html b/tests/wpt/web-platform-tests/custom-elements/Document-createElement.html index cc946a4797a..fc43fc44cfc 100644 --- a/tests/wpt/web-platform-tests/custom-elements/Document-createElement.html +++ b/tests/wpt/web-platform-tests/custom-elements/Document-createElement.html @@ -363,6 +363,31 @@ test(function () { }, 'document.createElement must report an exception thrown by a custom element constructor'); +test(function () { + var exceptionToThrow = {name: 'exception thrown by a custom constructor'}; + class ThrowCustomBuiltinElement extends HTMLDivElement { + constructor() + { + super(); + if (exceptionToThrow) + throw exceptionToThrow; + } + }; + customElements.define('throw-custom-builtin-element', ThrowCustomBuiltinElement, { extends: 'div' }); + + assert_throws(exceptionToThrow, function () { new ThrowCustomBuiltinElement; }); + var instance; + assert_reports(exceptionToThrow, function () { instance = document.createElement('div', { is: 'throw-custom-builtin-element' }); }); + assert_equals(instance.localName, 'div'); + assert_true(instance instanceof HTMLDivElement); + + exceptionToThrow = false; + var instance = document.createElement('div', { is: 'throw-custom-builtin-element' }); + assert_true(instance instanceof ThrowCustomBuiltinElement); + assert_equals(instance.localName, 'div'); + +}, 'document.createElement must report an exception thrown by a custom built-in element constructor'); + test(() => { class MyElement extends HTMLDivElement {} diff --git a/tests/wpt/web-platform-tests/docs/_writing-tests/testharness.md b/tests/wpt/web-platform-tests/docs/_writing-tests/testharness.md index e78fb3a4882..e91302f1d21 100644 --- a/tests/wpt/web-platform-tests/docs/_writing-tests/testharness.md +++ b/tests/wpt/web-platform-tests/docs/_writing-tests/testharness.md @@ -31,10 +31,10 @@ for example: The test can then do different things based on the URL. -There is a utility script in `/common/subset-tests.js` that works -well together with variants, where a test that would otherwise have -too many tests to be useful can be split up in ranges of subtests. -For example: +There are two utility scripts in that work well together with variants, +`/common /subset-tests.js` and `/common/subset-tests-by- key.js`, where +a test that would otherwise have too many tests to be useful can be +split up in ranges of subtests. For example: ``` <!doctype html> @@ -56,6 +56,24 @@ For example: </script> ``` +With `subsetTestByKey`, the key is given as the first argument, and the +query string can include or exclude a key (will be matched as a regular +expression). + +``` +<!doctype html> +<title>Testing variants by key</title> +<meta name="variant" content="?include=Foo"> +<meta name="variant" content="?include=Bar"> +<meta name="variant" content="?exclude=(Foo|Bar)"> +<script src="/resources/testharness.js"> +<script src="/resources/testharnessreport.js"> +<script src="/common/subset-tests-by-key.js"> +<script> + subsetTestByKey("Foo", async_test, () => { ... }, "Testing foo"); + ... +</script> +``` ## Auto-generated test boilerplate diff --git a/tests/wpt/web-platform-tests/dom/interfaces.html b/tests/wpt/web-platform-tests/dom/interfaces.html index 21cef048cd9..111608bcaec 100644 --- a/tests/wpt/web-platform-tests/dom/interfaces.html +++ b/tests/wpt/web-platform-tests/dom/interfaces.html @@ -1,6 +1,7 @@ <!doctype html> <meta charset=utf-8> <title>DOM IDL tests</title> +<meta name="timeout" content="long"> <meta name="variant" content="?include=Node"> <meta name="variant" content="?exclude=Node"> <script src=/resources/testharness.js></script> diff --git a/tests/wpt/web-platform-tests/dom/nodes/attributes.html b/tests/wpt/web-platform-tests/dom/nodes/attributes.html index 9746cc6d5a5..486cafaad9f 100644 --- a/tests/wpt/web-platform-tests/dom/nodes/attributes.html +++ b/tests/wpt/web-platform-tests/dom/nodes/attributes.html @@ -20,6 +20,122 @@ var XML = "http://www.w3.org/XML/1998/namespace" var XMLNS = "http://www.w3.org/2000/xmlns/" +// toggleAttribute exhaustive tests +// Step 1 +test(function() { + var el = document.createElement("foo") + for (var i = 0; i < invalid_names.length; i++) { + assert_throws("INVALID_CHARACTER_ERR", function() { el.toggleAttribute(invalid_names[i], true) }) + } + for (var i = 0; i < invalid_names.length; i++) { + assert_throws("INVALID_CHARACTER_ERR", function() { el.toggleAttribute(invalid_names[i]) }) + } + for (var i = 0; i < invalid_names.length; i++) { + assert_throws("INVALID_CHARACTER_ERR", function() { el.toggleAttribute(invalid_names[i], false) }) + } +}, "When qualifiedName does not match the Name production, an " + + "INVALID_CHARACTER_ERR exception is to be thrown. (toggleAttribute)") +test(function() { + var el = document.getElementById("test2") + for (var i = 0; i < el.children.length; i++) { + assert_throws("INVALID_CHARACTER_ERR", function() { + el.children[i].toggleAttribute("~", false) + }) + } + for (var i = 0; i < el.children.length; i++) { + assert_throws("INVALID_CHARACTER_ERR", function() { + el.children[i].toggleAttribute("~") + }) + } + for (var i = 0; i < el.children.length; i++) { + assert_throws("INVALID_CHARACTER_ERR", function() { + el.children[i].toggleAttribute("~", true) + }) + } +}, "When qualifiedName does not match the Name production, an " + + "INVALID_CHARACTER_ERR exception is to be thrown, even if the attribute " + + "is already present. (toggleAttribute)") + +// Step 2 +test(function() { + var el = document.createElement("div") + assert_true(el.toggleAttribute("ALIGN")) + assert_true(!el.hasAttributeNS("", "ALIGN")) + assert_true(el.hasAttributeNS("", "align")) + assert_true(el.hasAttribute("align")) + assert_true(!el.toggleAttribute("ALIGN")) + assert_true(!el.hasAttributeNS("", "ALIGN")) + assert_true(!el.hasAttributeNS("", "align")) + assert_true(!el.hasAttribute("align")) +}, "toggleAttribute should lowercase its name argument (upper case attribute)") +test(function() { + var el = document.createElement("div") + assert_true(el.toggleAttribute("CHEEseCaKe")) + assert_true(!el.hasAttributeNS("", "CHEEseCaKe")) + assert_true(el.hasAttributeNS("", "cheesecake")) + assert_true(el.hasAttribute("cheesecake")) +}, "toggleAttribute should lowercase its name argument (mixed case attribute)") + +// Step 3 +test(function() { + var el = document.createElement("foo") + var tests = ["xmlns", "xmlns:a", "xmlnsx", "xmlns0"] + for (var i = 0; i < tests.length; i++) { + assert_true(el.toggleAttribute(tests[i])); + assert_true(el.hasAttribute(tests[i])); + } +}, "toggleAttribute should not throw even when qualifiedName starts with 'xmlns'") + +// Step 4 +test(function() { + var el = document.createElement("foo") + for (var i = 0; i < valid_names.length; i++) { + assert_true(el.toggleAttribute(valid_names[i])) + assert_true(el.hasAttribute(valid_names[i])) + assert_true(!el.toggleAttribute(valid_names[i])) + assert_true(!el.hasAttribute(valid_names[i])) + // Check using force attr + assert_true(el.toggleAttribute(valid_names[i], true)) + assert_true(el.hasAttribute(valid_names[i])) + assert_true(el.toggleAttribute(valid_names[i], true)) + assert_true(el.hasAttribute(valid_names[i])) + assert_true(!el.toggleAttribute(valid_names[i], false)) + assert_true(!el.hasAttribute(valid_names[i])) + } +}, "Basic functionality should be intact. (toggleAttribute)") + +// Step 5 +test(function() { + var el = document.createElement("foo") + el.toggleAttribute("a") + el.toggleAttribute("b") + el.setAttribute("a", "thing") + el.toggleAttribute("c") + attributes_are(el, [["a", "thing"], + ["b", ""], + ["c", ""]]) +}, "toggleAttribute should not change the order of previously set attributes.") +test(function() { + var el = document.createElement("baz") + el.setAttributeNS("ab", "attr", "fail") + el.setAttributeNS("kl", "attr", "pass") + el.toggleAttribute("attr") + attributes_are(el, [["attr", "pass", "kl"]]) +}, "toggleAttribute should set the first attribute with the given name") +test(function() { + // Based on a test by David Flanagan. + var el = document.createElement("baz") + el.setAttributeNS("foo", "foo:bar", "1"); + el.setAttributeNS("foo", "foo:bat", "2"); + assert_equals(el.getAttribute("foo:bar"), "1") + assert_equals(el.getAttribute("foo:bat"), "2") + attr_is(el.attributes[0], "1", "bar", "foo", "foo", "foo:bar") + attr_is(el.attributes[1], "2", "bat", "foo", "foo", "foo:bat") + el.toggleAttribute("foo:bar"); + assert_true(!el.hasAttribute("foo:bar")) + attr_is(el.attributes[0], "2", "bat", "foo", "foo", "foo:bat") +}, "toggleAttribute should set the attribute with the given qualified name") + // setAttribute exhaustive tests // Step 1 test(function() { diff --git a/tests/wpt/web-platform-tests/encrypted-media/idlharness.https.html b/tests/wpt/web-platform-tests/encrypted-media/idlharness.https.html index a609f9483e6..6a2ae80a538 100644 --- a/tests/wpt/web-platform-tests/encrypted-media/idlharness.https.html +++ b/tests/wpt/web-platform-tests/encrypted-media/idlharness.https.html @@ -20,31 +20,18 @@ <div id='log'></div> <script> - setup(function() { - - fetch( '/interfaces/encrypted-media.idl' ) - .then( function( response ) { - if ( !response.ok ) throw new Error( 'IDL fetch failed' ); - return response.text(); - } ) - .then( function( idls ) { - - var idl_array = new IdlArray(); - idl_array.add_untested_idls("interface Navigator {};"); - idl_array.add_untested_idls("interface HTMLMediaElement {};"); - idl_array.add_untested_idls("interface Event {};"); - idl_array.add_untested_idls("dictionary EventInit {};"); - idl_array.add_untested_idls("interface EventTarget {};"); - - idl_array.add_idls(idls); - - idl_array.test(); - - done(); - - } ); - - }, {explicit_done: true}); + 'use strict'; + + promise_test(async () => { + const idls = await fetch('/interfaces/encrypted-media.idl').then(r => r.text()); + const html = await fetch('/interfaces/html.idl').then(r => r.text()); + const dom = await fetch('/interfaces/dom.idl').then(r => r.text()); + var idl_array = new IdlArray(); + idl_array.add_idls(idls); + idl_array.add_dependency_idls(html); + idl_array.add_dependency_idls(dom); + idl_array.test(); + }, 'Test encrypted-media IDL'); </script> </body> </html> diff --git a/tests/wpt/web-platform-tests/fetch/api/idl.any.js b/tests/wpt/web-platform-tests/fetch/api/idl.any.js index 129a7ceecf2..9fd5eccd2cb 100644 --- a/tests/wpt/web-platform-tests/fetch/api/idl.any.js +++ b/tests/wpt/web-platform-tests/fetch/api/idl.any.js @@ -4,7 +4,7 @@ promise_test(async() => { const text = await (await fetch("/interfaces/fetch.idl")).text(); - const referrer_policy = await (await fetch("/interfaces/webappsec-referrer-policy.idl")).text(); + const referrer_policy = await (await fetch("/interfaces/referrer-policy.idl")).text(); const idl_array = new IdlArray(); idl_array.add_idls(text); idl_array.add_untested_idls("[Exposed=(Window,Worker)] interface AbortSignal {};"); diff --git a/tests/wpt/web-platform-tests/fetch/cors-rfc1918/idlharness.tentative.any.js b/tests/wpt/web-platform-tests/fetch/cors-rfc1918/idlharness.tentative.any.js new file mode 100644 index 00000000000..c1acdeeb4ab --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/cors-rfc1918/idlharness.tentative.any.js @@ -0,0 +1,20 @@ +// META: script=/resources/WebIDLParser.js +// META: script=/resources/idlharness.js + +promise_test(async () => { + const idl = await fetch('/interfaces/cors-rfc1918.idl').then(r => r.text()); + const html = await fetch('/interfaces/html.idl').then(r => r.text()); + const dom = await fetch('/interfaces/dom.idl').then(r => r.text()); + + const idlArray = new IdlArray(); + idlArray.add_idls(idl); + idlArray.add_dependency_idls(html); + idlArray.add_dependency_idls(dom); + + const objects = { + Document: ['document'], + WorkerGlobalScope: ['self'], + }; + idlArray.add_objects(objects); + idlArray.test(); +}, 'Test CORS RFC1918 interfaces'); diff --git a/tests/wpt/web-platform-tests/fetch/sec-metadata/fetch.tentative.https.sub.html b/tests/wpt/web-platform-tests/fetch/sec-metadata/fetch.tentative.https.sub.html index 2fd6a4bbc6c..7a2c223d071 100644 --- a/tests/wpt/web-platform-tests/fetch/sec-metadata/fetch.tentative.https.sub.html +++ b/tests/wpt/web-platform-tests/fetch/sec-metadata/fetch.tentative.https.sub.html @@ -9,7 +9,7 @@ .then(j => { assert_header_equals(j.header, { "cause": undefined, - "destination": "\"\"", + "destination": "", "target": "subresource", "site": "same-origin" }); @@ -22,7 +22,7 @@ .then(j => { assert_header_equals(j.header, { "cause": undefined, - "destination": "\"\"", + "destination": "", "target": "subresource", "site": "same-site" }); @@ -35,7 +35,7 @@ .then(j => { assert_header_equals(j.header, { "cause": undefined, - "destination": "\"\"", + "destination": "", "target": "subresource", "site": "cross-site" }); diff --git a/tests/wpt/web-platform-tests/fetch/sec-metadata/resources/helper.js b/tests/wpt/web-platform-tests/fetch/sec-metadata/resources/helper.js index 5754b5009e3..03d2d2d2eba 100644 --- a/tests/wpt/web-platform-tests/fetch/sec-metadata/resources/helper.js +++ b/tests/wpt/web-platform-tests/fetch/sec-metadata/resources/helper.js @@ -2,6 +2,7 @@ function parse_metadata(value) { let result = {}; value.split(',').forEach(item => { let parsed = item.trim().split('='); + parsed[1] = parsed[1].trim().replace(/^"|"$/g, ''); result[parsed[0]] = parsed[1]; }); return result; diff --git a/tests/wpt/web-platform-tests/generic-sensor/META.yml b/tests/wpt/web-platform-tests/generic-sensor/META.yml index f0d3b8e1ca2..e2bef0a10fd 100644 --- a/tests/wpt/web-platform-tests/generic-sensor/META.yml +++ b/tests/wpt/web-platform-tests/generic-sensor/META.yml @@ -3,5 +3,5 @@ suggested_reviewers: - dontcallmedom - riju - alexshalamov - - pozdnyakov + - rakuco - Honry diff --git a/tests/wpt/web-platform-tests/geolocation-sensor/META.yml b/tests/wpt/web-platform-tests/geolocation-sensor/META.yml index c5511ef31f5..447e8b08ddf 100644 --- a/tests/wpt/web-platform-tests/geolocation-sensor/META.yml +++ b/tests/wpt/web-platform-tests/geolocation-sensor/META.yml @@ -1,3 +1,4 @@ suggested_reviewers: - anssiko - Honry + - rakuco diff --git a/tests/wpt/web-platform-tests/gyroscope/META.yml b/tests/wpt/web-platform-tests/gyroscope/META.yml index ecdfdc3852d..2eeea5b1e99 100644 --- a/tests/wpt/web-platform-tests/gyroscope/META.yml +++ b/tests/wpt/web-platform-tests/gyroscope/META.yml @@ -4,4 +4,4 @@ suggested_reviewers: - riju - Honry - alexshalamov - - pozdnyakov + - rakuco diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/unloading-documents/unload/006-1.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/unloading-documents/unload/006-1.html index 8d265962375..bc2e10bdc35 100644 --- a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/unloading-documents/unload/006-1.html +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/unloading-documents/unload/006-1.html @@ -4,9 +4,12 @@ onpagehide = function() { onpagehide = null; setTimeout(function() { - parent.t.done() + parent.t.unreached_func('setTimeout survived navigatoin'); }, 1000); } +if (parent.loaded) { + setTimeout(function() { parent.t.done(); }, 2000); +} onload = function() { if (!parent.loaded) { parent.loaded = true; diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/unloading-documents/unload/manual-001-1.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/unloading-documents/unload/pagehide-manual-1.html index 3da0a0de3ec..3da0a0de3ec 100644 --- a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/unloading-documents/unload/manual-001-1.html +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/unloading-documents/unload/pagehide-manual-1.html diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/unloading-documents/unload/manual-001.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/unloading-documents/unload/pagehide-manual.html index 6d817a111cd..ba34c3087f3 100644 --- a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/unloading-documents/unload/manual-001.html +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/unloading-documents/unload/pagehide-manual.html @@ -2,4 +2,4 @@ <title>Document salvagable state after setting pagehide handler</title> <script>onpagehide = function() {setTimeout(function(){document.body.innerHTML = "PASS"}, 100)}</script> <p>Click the link below then navigate back to this page. Shortly after returning you should see the text "PASS"</p> -<p><A href="manual-001-1.html">Click here</a> +<p><a href="pagehide-manual-1.html">Click here</a> diff --git a/tests/wpt/web-platform-tests/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/parsing.html b/tests/wpt/web-platform-tests/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/parsing.html index f0dade87bd3..0548e70722a 100644 --- a/tests/wpt/web-platform-tests/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/parsing.html +++ b/tests/wpt/web-platform-tests/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/parsing.html @@ -1,9 +1,23 @@ <!doctype html> <meta charset=utf-8> -<meta name=timeout content=long> +<meta name="variant" content="?1-10"> +<meta name="variant" content="?11-20"> +<meta name="variant" content="?21-30"> +<meta name="variant" content="?31-40"> +<meta name="variant" content="?41-50"> +<meta name="variant" content="?51-60"> +<meta name="variant" content="?61-70"> +<meta name="variant" content="?71-80"> +<meta name="variant" content="?81-90"> +<meta name="variant" content="?91-100"> +<meta name="variant" content="?101-110"> +<meta name="variant" content="?111-120"> +<meta name="variant" content="?121-130"> +<meta name="variant" content="?131-last"> <title>Parsing of meta refresh</title> <script src=/resources/testharness.js></script> <script src=/resources/testharnessreport.js></script> +<script src=/common/subset-tests.js></script> <style> iframe { display:none } </style> @@ -95,7 +109,7 @@ tests_arr.forEach(function(test_obj) { return; } const filename = type === "<meta>" ? "refresh.sub.html" : "refresh.py"; - async_test(function(t) { + subsetTest(async_test, function(t) { var iframe = document.createElement('iframe'); t.add_cleanup(function() { document.body.removeChild(iframe); diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-iframe-element/iframe-allow.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-iframe-element/iframe-allow.html new file mode 100644 index 00000000000..9e673149238 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-iframe-element/iframe-allow.html @@ -0,0 +1,66 @@ +<!doctype html> +<meta charset=utf-8> +<title>Check processing of allow attribute in nested browsing context</title> +<link rel="author" title="Google" href="https://www.google.com"> +<link rel="help" href="https://html.spec.whatwg.org/multipage/iframe-embed-object.html#attr-iframe-allow"> +<link rel="help" href="https://html.spec.whatwg.org/multipage/browsing-the-web.html#initialise-the-document-object"> +<link rel="help" href="https://fullscreen.spec.whatwg.org/#fullscreen-enabled-flag"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> + +<div id="log"></div> +<script> + // This returns a data URL (cross-origin with the containing document) which + // advances a counter, and reports the counter value together with the + // document's fullscreenEnabled state, every time it receives a postMessage. + // Fullscreen itself is not important for this test, but the flag is a useful + // indicator of whether a policy-controlled-feature is allowed or denied. + function getSourceForCrossOriginPage(initial_count) { + var page_contents = "<html><body><script>var count="+initial_count+";window.addEventListener('message',function(){parent.postMessage({'count':count++,'fullscreenEnabled':document.fullscreenEnabled},'*');});</scr"+"ipt></body></html>"; + return "data:text/html;base64,"+btoa(page_contents); + } + + async_test(function(t) { + var iframe = document.createElement("iframe"); + iframe.src = getSourceForCrossOriginPage(0); + + iframe.addEventListener('load', function() { + // Request the fullscreenEnabled state whenever the frame loads + iframe.contentWindow.postMessage(true,"*"); + }); + + window.addEventListener('message', this.step_func(function(msg) { + if (msg.data.count == 0) { + assert_false(msg.data.fullscreenEnabled, "Document inside cross-origin iframe without allow attribute should not have feature enabled"); + iframe.setAttribute("allow", "fullscreen"); + iframe.contentWindow.postMessage(true,"*"); // Request state again + } else if (msg.data.count == 1) { + assert_false(msg.data.fullscreenEnabled, "Feature should be denied when correct allow attribute is added, before reload"); + iframe.src = getSourceForCrossOriginPage(2); // Reload the frame + } else if (msg.data.count == 2) { + assert_true(msg.data.fullscreenEnabled, "Feature should be allowed when correct allow attribute is added, after reload"); + iframe.removeAttribute("allow"); + iframe.contentWindow.postMessage(true,"*"); // Request state again + } else if (msg.data.count == 3) { + assert_true(msg.data.fullscreenEnabled, "Feature should be allowed when allow attribute is removed, before reload"); + iframe.src = getSourceForCrossOriginPage(4); // Reload the frame + } else if (msg.data.count == 4) { + assert_false(msg.data.fullscreenEnabled, "Feature should be denied when allow attribute is removed, after reload"); + iframe.setAttribute("allow", "payment"); // Set allow to an unrelated feature + iframe.src = getSourceForCrossOriginPage(5); // Reload the frame + } else if (msg.data.count == 5) { + assert_false(msg.data.fullscreenEnabled, "Feature should be denied with incorrect allow attribute"); + iframe.setAttribute("allow", "payment;fullscreen"); // Include fullscreen again + iframe.src = getSourceForCrossOriginPage(6); // Reload the frame + } else if (msg.data.count == 6) { + assert_true(msg.data.fullscreenEnabled, "Feature should be allowed with complex allow attribute"); + t.done(); + } else { + assert_unreached(); + } + })); + + document.body.appendChild(iframe); + }, "iframe-cross-origin-allow"); + +</script> diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-iframe-element/iframe-allowfullscreen.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-iframe-element/iframe-allowfullscreen.html index da5791a2de9..9fc285bf3e1 100644 --- a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-iframe-element/iframe-allowfullscreen.html +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-iframe-element/iframe-allowfullscreen.html @@ -3,13 +3,21 @@ <title>Check how allowfullscreen affects fullscreen enabled flag</title> <link rel="author" title="Xidorn Quan" href="https://www.upsuper.org"> <link rel="author" title="Mozilla" href="https://www.mozilla.org"> -<link rel="help" href="https://html.spec.whatwg.org/multipage/browsers.html#initialise-the-document-object"> +<link rel="help" href="https://html.spec.whatwg.org/multipage/browsing-the-web.html#initialise-the-document-object"> <link rel="help" href="https://fullscreen.spec.whatwg.org/#fullscreen-enabled-flag"> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <div id="log"></div> <script> + // This returns a data URL (cross-origin with the containing document) which + // advances a counter, and reports the counter value together with the + // document's fullscreenEnabled state, every time it receives a postMessage. + function getSourceForCrossOriginPage(initial_count) { + var page_contents = "<html><body><script>var count="+initial_count+";window.addEventListener('message',function(){parent.postMessage({'count':count++,'fullscreenEnabled':document.fullscreenEnabled},'*');});</scr"+"ipt></body></html>"; + return "data:text/html;base64,"+btoa(page_contents); + } + async_test(function(t) { var iframe = document.createElement("iframe"); iframe.src = "support/blank.htm"; @@ -21,13 +29,45 @@ assert_true(document.fullscreenEnabled, "Top level document has fullscreen enabled flag set"); eventWatcher.wait_for("load").then(t.step_func_done(function() { - assert_false(iframe.contentDocument.fullscreenEnabled, "Document inside iframe without allowfullscreen attribute should not have fullscreen enabled flag set"); - iframe.setAttribute("allowfullscreen", true); - assert_true(iframe.contentDocument.fullscreenEnabled, "Fullscreen should be allowed when allowfullscreen attribute is set"); - iframe.removeAttribute("allowfullscreen"); - assert_false(iframe.contentDocument.fullscreenEnabled, "Fullscreen should be denied when allowfullscreen attribute is removed"); + assert_true(iframe.contentDocument.fullscreenEnabled, "Document inside same-origin iframe without allowfullscreen attribute should still have fullscreen enabled flag set"); })); - }, "iframe-allowfullscreen"); + }, "iframe-same-origin-allowfullscreen"); + + async_test(function(t) { + var iframe = document.createElement("iframe"); + iframe.src = getSourceForCrossOriginPage(0); + + iframe.addEventListener('load', function() { + // Request the fullscreenEnabled state whenever the frame loads + iframe.contentWindow.postMessage(true,"*"); + }); + + window.addEventListener('message', this.step_func(function(msg) { + if (msg.data.count == 0) { + assert_false(msg.data.fullscreenEnabled, "Document inside cross-origin iframe without allowfullscreen attribute should not have fullscreen enabled flag set"); + iframe.setAttribute("allowfullscreen", ""); + iframe.contentWindow.postMessage(true,"*"); // Request state again + } else if (msg.data.count == 1) { + assert_false(msg.data.fullscreenEnabled, "Fullscreen should be denied when allowfullscreen attribute is added, before reload"); + iframe.src = getSourceForCrossOriginPage(2); // Reload the frame + } else if (msg.data.count == 2) { + assert_true(msg.data.fullscreenEnabled, "Fullscreen should be allowed when allowfullscreen attribute is added, after reload"); + iframe.removeAttribute("allowfullscreen"); + iframe.contentWindow.postMessage(true,"*"); // Request state again + } else if (msg.data.count == 3) { + assert_true(msg.data.fullscreenEnabled, "Fullscreen should be allowed when allowfullscreen attribute is removed, before reload"); + iframe.src = getSourceForCrossOriginPage(4); // Reload the frame + } else if (msg.data.count == 4) { + assert_false(msg.data.fullscreenEnabled, "Fullscreen should be denied when allowfullscreen attribute is removed, after reload"); + t.done(); + } + })); + + document.body.appendChild(iframe); + t.add_cleanup(function() { + document.body.removeChild(iframe); + }); + }, "iframe-cross-origin-allowfullscreen"); /* Fullscreen enabled flag with about:blank */ @@ -41,7 +81,7 @@ test(function() { test_allowfullscreen_noload(function() {}, function(doc) { - assert_false(doc.fullscreenEnabled, "Fullscreen should not be enabled without allowfullscreen attribute"); + assert_true(doc.fullscreenEnabled, "Fullscreen should still be enabled in same-origin document without allowfullscreen attribute"); }); }, "iframe-noload-noallowfullscreen"); diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-display-none.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-display-none.html new file mode 100644 index 00000000000..6aa77ebf85b --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-display-none.html @@ -0,0 +1,7 @@ +<!doctype html> +<title>img parse a sizes attribute (display:none)</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<div id=log></div> +<iframe data-desc="display:none" style="width:1000px; height:1000px" src="support/sizes-iframed.sub.html?doctype=doctype%20html&style=display:none"></iframe> +<script src="support/parse-a-sizes-attribute.js"></script> diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-quirks-mode.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-quirks-mode.html new file mode 100644 index 00000000000..2150192d296 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-quirks-mode.html @@ -0,0 +1,7 @@ +<!doctype html> +<title>img parse a sizes attribute (quirks mode)</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<div id=log></div> +<iframe data-desc="quirks mode" style="width:1000px; height:1000px" src="support/sizes-iframed.sub.html?doctype=----&style="></iframe> +<script src="support/parse-a-sizes-attribute.js"></script> diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-standards-mode.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-standards-mode.html new file mode 100644 index 00000000000..6e70c88396d --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-standards-mode.html @@ -0,0 +1,7 @@ +<!doctype html> +<title>img parse a sizes attribute (standards mode)</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<div id=log></div> +<iframe data-desc="standards mode" style="width:1000px; height:1000px" src="support/sizes-iframed.sub.html?doctype=doctype%20html&style="></iframe> +<script src="support/parse-a-sizes-attribute.js"></script> diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-width-1000px.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-width-1000px.html new file mode 100644 index 00000000000..ab3f69e0583 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-width-1000px.html @@ -0,0 +1,7 @@ +<!doctype html> +<title>img parse a sizes attribute (width:1000px)</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<div id=log></div> +<iframe data-desc="width:1000px" style="width:1000px; height:1000px" src="support/sizes-iframed.sub.html?doctype=doctype%20html&style=width:1000px%3B%20height:16px"></iframe> +<script src="support/parse-a-sizes-attribute.js"></script> diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute.html deleted file mode 100644 index 711af8ca32f..00000000000 --- a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute.html +++ /dev/null @@ -1,42 +0,0 @@ -<!doctype html> -<title>img parse a sizes attribute</title> -<meta name="timeout" content="long"> -<script src="/resources/testharness.js"></script> -<script src="/resources/testharnessreport.js"></script> -<div id=log></div> -<iframe data-desc="standards mode" style="width:1000px; height:1000px" src="sizes-iframed.sub.html?doctype=doctype%20html&style="></iframe> -<iframe data-desc="quirks mode" style="width:1000px; height:1000px" src="sizes-iframed.sub.html?doctype=----&style="></iframe> -<iframe data-desc="display:none" style="width:1000px; height:1000px" src="sizes-iframed.sub.html?doctype=doctype%20html&style=display:none"></iframe> -<iframe data-desc="width:1000px" style="width:1000px; height:1000px" src="sizes-iframed.sub.html?doctype=doctype%20html&style=width:1000px%3B%20height:16px"></iframe> -<script> -setup({explicit_done:true}); - -function check(p, iframe) { - var current = p.firstElementChild; - var ref_sizes = current.getAttribute('sizes'); - var expect = current.currentSrc; - if (expect) { - expect = expect.split('?')[0]; - } - while (current = current.nextElementSibling) { - test(function() { - if (expect === '' || expect === null || expect === undefined) { - assert_unreached('ref currentSrc was ' + format_value(expect)); - } - var got = current.currentSrc; - assert_greater_than(got.indexOf('?'), -1, 'expected a "?" in currentSrc'); - got = got.split('?')[0]; - assert_equals(got, expect); - }, current.outerHTML + ' ref sizes=' + format_value(ref_sizes) + ' (' + iframe.getAttribute('data-desc') + ')'); - } -} - -onload = function() { - [].forEach.call(document.querySelectorAll('iframe'), function(iframe) { - [].forEach.call(iframe.contentDocument.querySelectorAll('p'), function(p) { - check(p, iframe); - }); - }); - done(); -} -</script> diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/sizes/support/parse-a-sizes-attribute.js b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/sizes/support/parse-a-sizes-attribute.js new file mode 100644 index 00000000000..62ad00a4682 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/sizes/support/parse-a-sizes-attribute.js @@ -0,0 +1,29 @@ +setup({explicit_done:true}); + +function check(p, iframe) { + var current = p.firstElementChild; + var ref_sizes = current.getAttribute('sizes'); + var expect = current.currentSrc; + if (expect) { + expect = expect.split('?')[0]; + } + while (current = current.nextElementSibling) { + test(function() { + if (expect === '' || expect === null || expect === undefined) { + assert_unreached('ref currentSrc was ' + format_value(expect)); + } + var got = current.currentSrc; + assert_greater_than(got.indexOf('?'), -1, 'expected a "?" in currentSrc'); + got = got.split('?')[0]; + assert_equals(got, expect); + }, current.outerHTML + ' ref sizes=' + format_value(ref_sizes) + ' (' + iframe.getAttribute('data-desc') + ')'); + } +} + +onload = function() { + var iframe = document.querySelector('iframe'); + [].forEach.call(iframe.contentDocument.querySelectorAll('p'), function(p) { + check(p, iframe); + }); + done(); +} diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/sizes/sizes-iframed.sub.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/sizes/support/sizes-iframed.sub.html index c564a5845d5..c564a5845d5 100644 --- a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/sizes/sizes-iframed.sub.html +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/sizes/support/sizes-iframed.sub.html diff --git a/tests/wpt/web-platform-tests/html/semantics/forms/the-textarea-element/textarea-maxlength.html b/tests/wpt/web-platform-tests/html/semantics/forms/the-textarea-element/textarea-maxlength.html deleted file mode 100644 index ff4e8f1b65c..00000000000 --- a/tests/wpt/web-platform-tests/html/semantics/forms/the-textarea-element/textarea-maxlength.html +++ /dev/null @@ -1,51 +0,0 @@ -<!DOCTYPE html> -<html> - -<head> - <title>textarea maxlength</title> - <link rel="author" title="tigercosmos" href="mailto:phy.tiger@gmail.com"> - <link rel=help href="https://html.spec.whatwg.org/multipage/#attr-textarea-maxlength"> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> -</head> - -<body> - - <textarea id="none"></textarea> - <textarea id="negative" maxlength="-5"></textarea> - <textarea id="non-numeric" maxlength="not-a-number"></textarea> - <textarea id="assign-negative"></textarea> - <textarea id="assign-non-numeric"></textarea> - - <script> - test( - function () { - assert_equals(document.getElementById("none").maxLength, -1); - }, "Unset maxlength is -1"); - - test( - function () { - assert_equals(document.getElementById("negative").maxLength, -1); - }, "Negative maxlength is always -1"); - - test( - function () { - assert_equals(document.getElementById("non-numeric").maxLength, -1); - }, "Non-numeric maxlength is -1"); - - test( - function () { - assert_throws("INDEX_SIZE_ERR", function () { - document.getElementById("assign-negative").maxLength = -5; - }); - }, "Assigning negative integer throws IndexSizeError"); - - test( - function () { - document.getElementById("assign-non-numeric").maxLength = "not-a-number"; - assert_equals(document.getElementById("assign-non-numeric").maxLength, 0); - }, "Assigning non-numeric to maxlength sets maxlength to 0"); - </script> -</body> - -</html>
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/semantics/forms/the-textarea-element/textarea-minlength.html b/tests/wpt/web-platform-tests/html/semantics/forms/the-textarea-element/textarea-minlength.html deleted file mode 100644 index 9a15a129392..00000000000 --- a/tests/wpt/web-platform-tests/html/semantics/forms/the-textarea-element/textarea-minlength.html +++ /dev/null @@ -1,51 +0,0 @@ -<!DOCTYPE html> -<html> - -<head> - <title>textarea minlength</title> - <link rel="author" title="tigercosmos" href="mailto:phy.tiger@gmail.com"> - <link rel=help href="https://html.spec.whatwg.org/multipage/#attr-textarea-minlength"> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> -</head> - -<body> - - <textarea id="none"></textarea> - <textarea id="negative" minlength=-5></textarea> - <textarea id="non-numeric" minlength="not-a-number"></textarea> - <textarea id="assign-negative"></textarea> - <textarea id="assign-non-numeric"></textarea> - - <script> - test( - function () { - assert_equals(document.getElementById("none").minLength, -1); - }, "Unset minlength is -1"); - - test( - function () { - assert_equals(document.getElementById("negative").minLength, -1); - }, "Negative minlength is always -1"); - - test( - function () { - assert_equals(document.getElementById("non-numeric").minLength, -1); - }, "Non-numeric minlength is -1"); - - test( - function () { - assert_throws("INDEX_SIZE_ERR", function () { - document.getElementById("assign-negative").minLength = -5; - }); - }, "Assigning negative integer throws IndexSizeError"); - - test( - function () { - document.getElementById("assign-non-numeric").minLength = "not-a-number"; - assert_equals(document.getElementById("assign-non-numeric").minLength, 0); - }, "Assigning non-numeric to minlength sets minlength to 0"); - </script> -</body> - -</html>
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/dynamic-import/string-compilation-nonce-classic.html b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/dynamic-import/string-compilation-nonce-classic.html index 6191827e234..33714c70ca6 100644 --- a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/dynamic-import/string-compilation-nonce-classic.html +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/dynamic-import/string-compilation-nonce-classic.html @@ -3,7 +3,7 @@ <title>import() inside compiled strings uses the appropriate nonce inside a classic script</title> <link rel="author" title="Domenic Denicola" href="mailto:d@domenic.me"> -<meta http-equiv="content-security-policy" content="script-src 'nonce-correct' 'unsafe-eval' 'unsafe-hashed-attributes' 'sha256-cAMzxBL19bKt4KwKGbxy/ZOFIIjH5AmRjlVbsD5pvNw=' 'sha256-3VjoJYNK/9HJMS8rrZHlqSZgUssDY+GPyc7AU8lNM3k='"> +<meta http-equiv="content-security-policy" content="script-src 'nonce-correct' 'unsafe-eval' 'unsafe-hashes' 'sha256-cAMzxBL19bKt4KwKGbxy/ZOFIIjH5AmRjlVbsD5pvNw=' 'sha256-3VjoJYNK/9HJMS8rrZHlqSZgUssDY+GPyc7AU8lNM3k='"> <script nonce="correct" src="/resources/testharness.js"></script> <script nonce="correct" src="/resources/testharnessreport.js"></script> @@ -74,7 +74,7 @@ promise_test(t => { const promise = createTestPromise(t); - // This only works because of the 'unsafe-hashed-attributes' and the hash in the CSP policy + // This only works because of the 'unsafe-hashes' and the hash in the CSP policy dummyDiv.setAttribute( "onclick", `import('../imports-a.js?label=reflected inline event handlers').then(window.continueTest, window.errorTest)` @@ -91,7 +91,7 @@ promise_test(t => { const promise = createTestPromise(t); - // This only works because of the 'unsafe-hashed-attributes' and the hash in the CSP policy + // This only works because of the 'unsafe-hashes' and the hash in the CSP policy dummyDiv.setAttribute( "onclick", `import('../imports-a.js?label=inline event handlers triggered via UA code').then(window.continueTest, window.errorTest)` diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/dynamic-import/string-compilation-nonce-module.html b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/dynamic-import/string-compilation-nonce-module.html index 3e09dd6d4b9..9411acd2a07 100644 --- a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/dynamic-import/string-compilation-nonce-module.html +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/dynamic-import/string-compilation-nonce-module.html @@ -3,7 +3,7 @@ <title>import() inside compiled strings uses the appropriate nonce inside a module script</title> <link rel="author" title="Domenic Denicola" href="mailto:d@domenic.me"> -<meta http-equiv="content-security-policy" content="script-src 'nonce-correct' 'unsafe-eval' 'unsafe-hashed-attributes' 'sha256-cAMzxBL19bKt4KwKGbxy/ZOFIIjH5AmRjlVbsD5pvNw=' 'sha256-3VjoJYNK/9HJMS8rrZHlqSZgUssDY+GPyc7AU8lNM3k='"> +<meta http-equiv="content-security-policy" content="script-src 'nonce-correct' 'unsafe-eval' 'unsafe-hashes' 'sha256-cAMzxBL19bKt4KwKGbxy/ZOFIIjH5AmRjlVbsD5pvNw=' 'sha256-3VjoJYNK/9HJMS8rrZHlqSZgUssDY+GPyc7AU8lNM3k='"> <script nonce="correct" src="/resources/testharness.js"></script> <script nonce="correct" src="/resources/testharnessreport.js"></script> @@ -73,7 +73,7 @@ promise_test(t => { const promise = createTestPromise(t); - // This only works because of the 'unsafe-hashed-attributes' and the hash in the CSP policy + // This only works because of the 'unsafe-hashes' and the hash in the CSP policy dummyDiv.setAttribute( "onclick", `import('../imports-a.js?label=reflected inline event handlers').then(window.continueTest, window.errorTest)` @@ -90,7 +90,7 @@ promise_test(t => { const promise = createTestPromise(t); - // This only works because of the 'unsafe-hashed-attributes' and the hash in the CSP policy + // This only works because of the 'unsafe-hashes' and the hash in the CSP policy dummyDiv.setAttribute( "onclick", `import('../imports-a.js?label=inline event handlers triggered via UA code').then(window.continueTest, window.errorTest)` diff --git a/tests/wpt/web-platform-tests/infrastructure/server/order-of-metas.any.js b/tests/wpt/web-platform-tests/infrastructure/server/order-of-metas.any.js new file mode 100644 index 00000000000..20f678475c3 --- /dev/null +++ b/tests/wpt/web-platform-tests/infrastructure/server/order-of-metas.any.js @@ -0,0 +1,10 @@ +// META: global=window,dedicatedworker,sharedworker +// META: script=resources/expect-seen-testharness.js +// META: timeout=long +// META: title=foo +// META: script=resources/expect-global.js +// META: script=resources/expect-title-meta.js + +test(() => { + assert_array_equals(scripts, ['expect-seen-testharness.js', 'expect-global.js', 'expect-title-meta.js']); +}, "order of scripts"); diff --git a/tests/wpt/web-platform-tests/infrastructure/server/order-of-metas.window.js b/tests/wpt/web-platform-tests/infrastructure/server/order-of-metas.window.js new file mode 100644 index 00000000000..ec2848056a7 --- /dev/null +++ b/tests/wpt/web-platform-tests/infrastructure/server/order-of-metas.window.js @@ -0,0 +1,8 @@ +// META: script=resources/expect-seen-testharness.js +// META: timeout=long +// META: title=foo +// META: script=resources/expect-title-meta.js + +test(() => { + assert_array_equals(scripts, ['expect-seen-testharness.js', 'expect-title-meta.js']); +}, "order of scripts"); diff --git a/tests/wpt/web-platform-tests/infrastructure/server/resources/expect-global.js b/tests/wpt/web-platform-tests/infrastructure/server/resources/expect-global.js new file mode 100644 index 00000000000..63d4944e61f --- /dev/null +++ b/tests/wpt/web-platform-tests/infrastructure/server/resources/expect-global.js @@ -0,0 +1,5 @@ +test(() => { + assert_true('GLOBAL' in self); +}, 'GLOBAL exists'); + +scripts.push('expect-global.js'); diff --git a/tests/wpt/web-platform-tests/infrastructure/server/resources/expect-seen-testharness.js b/tests/wpt/web-platform-tests/infrastructure/server/resources/expect-seen-testharness.js new file mode 100644 index 00000000000..29af1fca55b --- /dev/null +++ b/tests/wpt/web-platform-tests/infrastructure/server/resources/expect-seen-testharness.js @@ -0,0 +1,5 @@ +test(() => { + assert_true('add_completion_callback' in self); +}, 'add_completion_callback exists'); + +var scripts = ['expect-seen-testharness.js']; diff --git a/tests/wpt/web-platform-tests/infrastructure/server/resources/expect-title-meta.js b/tests/wpt/web-platform-tests/infrastructure/server/resources/expect-title-meta.js new file mode 100644 index 00000000000..d17588a18f0 --- /dev/null +++ b/tests/wpt/web-platform-tests/infrastructure/server/resources/expect-title-meta.js @@ -0,0 +1,11 @@ +if (!self.GLOBAL || self.GLOBAL.isWindow()) { + test(() => { + assert_equals(document.title, "foo"); + }, '<title> exists'); + + test(() => { + assert_equals(document.querySelectorAll("meta[name=timeout][content=long]").length, 1); + }, '<meta name=timeout> exists'); +} + +scripts.push('expect-title-meta.js'); diff --git a/tests/wpt/web-platform-tests/infrastructure/server/title.any.js b/tests/wpt/web-platform-tests/infrastructure/server/title.any.js new file mode 100644 index 00000000000..df2f8b048c3 --- /dev/null +++ b/tests/wpt/web-platform-tests/infrastructure/server/title.any.js @@ -0,0 +1,13 @@ +// META: global=window,dedicatedworker,sharedworker +// META: title=foobar +test(t => { + if (GLOBAL.isWindow()) { + assert_equals(document.title, 'foobar'); + assert_false('META_TITLE' in self); + } else { + assert_equals(META_TITLE, 'foobar'); + } + assert_equals(t.name, 'foobar'); +}); + +done(); diff --git a/tests/wpt/web-platform-tests/interfaces/background-fetch.idl b/tests/wpt/web-platform-tests/interfaces/background-fetch.idl index 77cdfffcf00..68509fc1a68 100644 --- a/tests/wpt/web-platform-tests/interfaces/background-fetch.idl +++ b/tests/wpt/web-platform-tests/interfaces/background-fetch.idl @@ -1,4 +1,7 @@ -// 4.1. Extensions to ServiceWorkerGlobalScope +// GENERATED CONTENT - DO NOT EDIT +// Content of this file was automatically extracted from the +// "Background Fetch" spec. +// See: https://wicg.github.io/background-fetch/ partial interface ServiceWorkerGlobalScope { attribute EventHandler onbackgroundfetched; @@ -7,14 +10,10 @@ partial interface ServiceWorkerGlobalScope { attribute EventHandler onbackgroundfetchclick; }; -// 4.2. Extensions to ServiceWorkerRegistration - partial interface ServiceWorkerRegistration { readonly attribute BackgroundFetchManager backgroundFetch; }; -// 4.3. BackgroundFetchManager - [Exposed=(Window,Worker)] interface BackgroundFetchManager { Promise<BackgroundFetchRegistration> fetch(DOMString id, (RequestInfo or sequence<RequestInfo>) requests, optional BackgroundFetchOptions options); @@ -24,21 +23,19 @@ interface BackgroundFetchManager { }; dictionary BackgroundFetchOptions { - sequence<IconDefinition> icons; - DOMString title; - unsigned long long downloadTotal; + sequence<IconDefinition> icons = []; + DOMString title = ""; + unsigned long long downloadTotal = 0; }; // This is taken from https://w3c.github.io/manifest/#icons-member. // This definition should probably be moved somewhere more general. dictionary IconDefinition { DOMString src; - DOMString sizes; - DOMString type; + DOMString sizes = ""; + DOMString type = ""; }; -// 4.4. BackgroundFetchRegistration - [Exposed=(Window,Worker)] interface BackgroundFetchRegistration : EventTarget { readonly attribute DOMString id; @@ -70,8 +67,6 @@ interface BackgroundFetchActiveFetch : BackgroundFetchFetch { // In future this will include a fetch observer }; -// 4.4.3. BackgroundFetchEvent - [Constructor(DOMString type, BackgroundFetchEventInit init), Exposed=ServiceWorker] interface BackgroundFetchEvent : ExtendableEvent { readonly attribute DOMString id; @@ -81,8 +76,6 @@ dictionary BackgroundFetchEventInit : ExtendableEventInit { required DOMString id; }; -// 4.4.4. BackgroundFetchSettledEvent - [Constructor(DOMString type, BackgroundFetchSettledEventInit init), Exposed=ServiceWorker] interface BackgroundFetchSettledEvent : BackgroundFetchEvent { readonly attribute BackgroundFetchSettledFetches fetches; @@ -103,15 +96,11 @@ interface BackgroundFetchSettledFetch : BackgroundFetchFetch { readonly attribute Response? response; }; -// 4.4.5. BackgroundFetchUpdateEvent - [Constructor(DOMString type, BackgroundFetchSettledEventInit init), Exposed=ServiceWorker] interface BackgroundFetchUpdateEvent : BackgroundFetchSettledEvent { Promise<void> updateUI(DOMString title); }; -// 4.4.6. BackgroundFetchClickEvent - [Constructor(DOMString type, BackgroundFetchClickEventInit init), Exposed=ServiceWorker] interface BackgroundFetchClickEvent : BackgroundFetchEvent { readonly attribute BackgroundFetchState state; diff --git a/tests/wpt/web-platform-tests/interfaces/beacon.idl b/tests/wpt/web-platform-tests/interfaces/beacon.idl new file mode 100644 index 00000000000..663448565e9 --- /dev/null +++ b/tests/wpt/web-platform-tests/interfaces/beacon.idl @@ -0,0 +1,8 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content of this file was automatically extracted from the +// "Beacon" spec. +// See: https://w3c.github.io/beacon/ + +partial interface Navigator { + boolean sendBeacon(USVString url, optional BodyInit? data = null); +}; diff --git a/tests/wpt/web-platform-tests/interfaces/cors-rfc1918.idl b/tests/wpt/web-platform-tests/interfaces/cors-rfc1918.idl new file mode 100644 index 00000000000..f00d4fa4430 --- /dev/null +++ b/tests/wpt/web-platform-tests/interfaces/cors-rfc1918.idl @@ -0,0 +1,14 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content of this file was automatically extracted from the +// "CORS and RFC1918" spec. +// See: https://wicg.github.io/cors-rfc1918/ + +enum AddressSpace { "local", "private", "public" }; + +partial interface Document { + readonly attribute AddressSpace addressSpace; +}; + +partial interface WorkerGlobalScope { + readonly attribute AddressSpace addressSpace; +}; diff --git a/tests/wpt/web-platform-tests/interfaces/css-animations.idl b/tests/wpt/web-platform-tests/interfaces/css-animations.idl new file mode 100644 index 00000000000..3162c9e83bf --- /dev/null +++ b/tests/wpt/web-platform-tests/interfaces/css-animations.idl @@ -0,0 +1,45 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content of this file was automatically extracted from the +// "CSS Animations Level 1" spec. +// See: https://drafts.csswg.org/css-animations/ + +[Exposed=Window, + Constructor(CSSOMString type, optional AnimationEventInit animationEventInitDict)] +interface AnimationEvent : Event { + readonly attribute CSSOMString animationName; + readonly attribute double elapsedTime; + readonly attribute CSSOMString pseudoElement; +}; +dictionary AnimationEventInit : EventInit { + CSSOMString animationName = ""; + double elapsedTime = 0.0; + CSSOMString pseudoElement = ""; +}; + +partial interface CSSRule { + const unsigned short KEYFRAMES_RULE = 7; + const unsigned short KEYFRAME_RULE = 8; +}; + +[Exposed=Window] +interface CSSKeyframeRule : CSSRule { + attribute CSSOMString keyText; + [SameObject, PutForwards=cssText] readonly attribute CSSStyleDeclaration style; +}; + +[Exposed=Window] +interface CSSKeyframesRule : CSSRule { + attribute CSSOMString name; + readonly attribute CSSRuleList cssRules; + + void appendRule(CSSOMString rule); + void deleteRule(CSSOMString select); + CSSKeyframeRule? findRule(CSSOMString select); +}; + +partial interface GlobalEventHandlers { + attribute EventHandler onanimationstart; + attribute EventHandler onanimationiteration; + attribute EventHandler onanimationend; + attribute EventHandler onanimationcancel; +}; diff --git a/tests/wpt/web-platform-tests/interfaces/css-conditional.idl b/tests/wpt/web-platform-tests/interfaces/css-conditional.idl new file mode 100644 index 00000000000..6671de2960a --- /dev/null +++ b/tests/wpt/web-platform-tests/interfaces/css-conditional.idl @@ -0,0 +1,33 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content of this file was automatically extracted from the CSS Conditional Rules spec. +// See https://drafts.csswg.org/css-conditional/ + +partial interface CSSRule { + const unsigned short SUPPORTS_RULE = 12; +}; + +[Exposed=Window] +interface CSSGroupingRule : CSSRule { + readonly attribute CSSRuleList cssRules; + unsigned long insertRule (CSSOMString rule, unsigned long index); + void deleteRule (unsigned long index); +}; + +[Exposed=Window] +interface CSSConditionRule : CSSGroupingRule { + attribute CSSOMString conditionText; +}; + +[Exposed=Window] +interface CSSMediaRule : CSSConditionRule { + [SameObject, PutForwards=mediaText] readonly attribute MediaList media; +}; + +[Exposed=Window] +interface CSSSupportsRule : CSSConditionRule { +}; + +partial interface CSS { + static boolean supports(CSSOMString property, CSSOMString value); + static boolean supports(CSSOMString conditionText); +}; diff --git a/tests/wpt/web-platform-tests/interfaces/css-transitions.idl b/tests/wpt/web-platform-tests/interfaces/css-transitions.idl new file mode 100644 index 00000000000..478318d9987 --- /dev/null +++ b/tests/wpt/web-platform-tests/interfaces/css-transitions.idl @@ -0,0 +1,25 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content of this file was automatically extracted from the +// "CSS Transitions" spec. +// See: https://drafts.csswg.org/css-transitions/ + +[Exposed=Window, + Constructor(CSSOMString type, optional TransitionEventInit transitionEventInitDict)] +interface TransitionEvent : Event { + readonly attribute CSSOMString propertyName; + readonly attribute double elapsedTime; + readonly attribute CSSOMString pseudoElement; +}; + +dictionary TransitionEventInit : EventInit { + CSSOMString propertyName = ""; + double elapsedTime = 0.0; + CSSOMString pseudoElement = ""; +}; + +partial interface GlobalEventHandlers { + attribute EventHandler ontransitionrun; + attribute EventHandler ontransitionstart; + attribute EventHandler ontransitionend; + attribute EventHandler ontransitioncancel; +}; diff --git a/tests/wpt/web-platform-tests/interfaces/encrypted-media.idl b/tests/wpt/web-platform-tests/interfaces/encrypted-media.idl index fbe898b2060..607ed6be9d3 100644 --- a/tests/wpt/web-platform-tests/interfaces/encrypted-media.idl +++ b/tests/wpt/web-platform-tests/interfaces/encrypted-media.idl @@ -1,75 +1,72 @@ -// Encrypted Media Extensions WebIDL -// -// NOTE: Please update the link below to the specification version from -// which this IDL was extracted. -// -// https://www.w3.org/TR/2016/WD-encrypted-media-20160610/ -// + commit 5499821932391ae2c2e53756ae7ab9fae89d5863 -// +// GENERATED CONTENT - DO NOT EDIT +// Content of this file was automatically extracted from the +// "Encrypted Media Extensions" spec. +// See: https://w3c.github.io/encrypted-media/ +[Exposed=Window] partial interface Navigator { - Promise<MediaKeySystemAccess> requestMediaKeySystemAccess (DOMString keySystem, sequence<MediaKeySystemConfiguration> supportedConfigurations); + [SecureContext] Promise<MediaKeySystemAccess> requestMediaKeySystemAccess(DOMString keySystem, + sequence<MediaKeySystemConfiguration> supportedConfigurations); }; - enum MediaKeysRequirement { "required", "optional", "not-allowed" }; - dictionary MediaKeySystemConfiguration { - DOMString label = ""; - sequence<DOMString> initDataTypes = []; - sequence<MediaKeySystemMediaCapability> audioCapabilities = []; - sequence<MediaKeySystemMediaCapability> videoCapabilities = []; - MediaKeysRequirement distinctiveIdentifier = "optional"; - MediaKeysRequirement persistentState = "optional"; - sequence<DOMString> sessionTypes; + DOMString label = ""; + sequence<DOMString> initDataTypes = []; + sequence<MediaKeySystemMediaCapability> audioCapabilities = []; + sequence<MediaKeySystemMediaCapability> videoCapabilities = []; + MediaKeysRequirement distinctiveIdentifier = "optional"; + MediaKeysRequirement persistentState = "optional"; + sequence<DOMString> sessionTypes; }; - dictionary MediaKeySystemMediaCapability { - DOMString contentType = ""; - DOMString robustness = ""; + DOMString contentType = ""; + DOMString robustness = ""; }; - +[Exposed=Window, + SecureContext] interface MediaKeySystemAccess { - readonly attribute DOMString keySystem; - MediaKeySystemConfiguration getConfiguration (); - Promise<MediaKeys> createMediaKeys (); + readonly attribute DOMString keySystem; + MediaKeySystemConfiguration getConfiguration(); + Promise<MediaKeys> createMediaKeys(); }; - enum MediaKeySessionType { "temporary", - "persistent-usage-record", "persistent-license" }; - +[Exposed=Window, + SecureContext] interface MediaKeys { - MediaKeySession createSession (optional MediaKeySessionType sessionType = "temporary"); - Promise<boolean> setServerCertificate (BufferSource serverCertificate); + MediaKeySession createSession(optional MediaKeySessionType sessionType = "temporary"); + Promise<boolean> setServerCertificate(BufferSource serverCertificate); }; - +[Exposed=Window, + SecureContext] interface MediaKeySession : EventTarget { - readonly attribute DOMString sessionId; - readonly attribute unrestricted double expiration; - readonly attribute Promise<void> closed; - readonly attribute MediaKeyStatusMap keyStatuses; - attribute EventHandler onkeystatuseschange; - attribute EventHandler onmessage; - Promise<void> generateRequest (DOMString initDataType, BufferSource initData); - Promise<boolean> load (DOMString sessionId); - Promise<void> update (BufferSource response); - Promise<void> close (); - Promise<void> remove (); -}; - + readonly attribute DOMString sessionId; + readonly attribute unrestricted double expiration; + readonly attribute Promise<void> closed; + readonly attribute MediaKeyStatusMap keyStatuses; + attribute EventHandler onkeystatuseschange; + attribute EventHandler onmessage; + Promise<void> generateRequest(DOMString initDataType, + BufferSource initData); + Promise<boolean> load(DOMString sessionId); + Promise<void> update(BufferSource response); + Promise<void> close(); + Promise<void> remove(); +}; +[Exposed=Window, + SecureContext] interface MediaKeyStatusMap { - iterable<BufferSource,MediaKeyStatus>; - readonly attribute unsigned long size; - boolean has (BufferSource keyId); - any get (BufferSource keyId); + iterable<BufferSource, MediaKeyStatus>; + readonly attribute unsigned long size; + boolean has(BufferSource keyId); + any get(BufferSource keyId); }; - enum MediaKeyStatus { "usable", "expired", @@ -79,41 +76,38 @@ enum MediaKeyStatus { "status-pending", "internal-error" }; - enum MediaKeyMessageType { "license-request", "license-renewal", "license-release", "individualization-request" }; - -[Constructor(DOMString type, MediaKeyMessageEventInit eventInitDict)] +[Exposed=Window, + SecureContext, + Constructor(DOMString type, MediaKeyMessageEventInit eventInitDict)] interface MediaKeyMessageEvent : Event { - readonly attribute MediaKeyMessageType messageType; - readonly attribute ArrayBuffer message; + readonly attribute MediaKeyMessageType messageType; + readonly attribute ArrayBuffer message; }; - dictionary MediaKeyMessageEventInit : EventInit { - required MediaKeyMessageType messageType; - required ArrayBuffer message; + required MediaKeyMessageType messageType; + required ArrayBuffer message; }; - -// partial interface HTMLMediaElement : EventTarget { +[Exposed=Window] partial interface HTMLMediaElement { - readonly attribute MediaKeys? mediaKeys; - attribute EventHandler onencrypted; - attribute EventHandler onwaitingforkey; - Promise<void> setMediaKeys (MediaKeys? mediaKeys); -}; - -[Constructor(DOMString type, optional MediaEncryptedEventInit eventInitDict)] + [SecureContext] + readonly attribute MediaKeys? mediaKeys; + attribute EventHandler onencrypted; + attribute EventHandler onwaitingforkey; + [SecureContext] Promise<void> setMediaKeys(MediaKeys? mediaKeys); +}; +[Exposed=Window, + Constructor(DOMString type, optional MediaEncryptedEventInit eventInitDict)] interface MediaEncryptedEvent : Event { - readonly attribute DOMString initDataType; - readonly attribute ArrayBuffer? initData; + readonly attribute DOMString initDataType; + readonly attribute ArrayBuffer? initData; }; - dictionary MediaEncryptedEventInit : EventInit { - DOMString initDataType = ""; - ArrayBuffer? initData = null; + DOMString initDataType = ""; + ArrayBuffer? initData = null; }; - diff --git a/tests/wpt/web-platform-tests/interfaces/mediacapture-depth.idl b/tests/wpt/web-platform-tests/interfaces/mediacapture-depth.idl new file mode 100644 index 00000000000..d39c7e8bfec --- /dev/null +++ b/tests/wpt/web-platform-tests/interfaces/mediacapture-depth.idl @@ -0,0 +1,76 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content of this file was automatically extracted from the +// "Media Capture Depth Stream Extensions" spec. +// See: https://w3c.github.io/mediacapture-depth/ + +partial dictionary MediaTrackSupportedConstraints { + // Apply to both depth stream track and color stream track: + boolean videoKind = true; + boolean focalLengthX = false; + boolean focalLengthY = false; + boolean principalPointX = false; + boolean principalPointY = false; + boolean deprojectionDistortionCoefficients = false; + boolean projectionDistortionCoefficients = false; + // Apply to depth stream track: + boolean depthNear = false; + boolean depthFar = false; + boolean depthToVideoTransform = false; +}; +partial dictionary MediaTrackCapabilities { + // Apply to both depth stream track and color stream track: + DOMString videoKind; + (double or DoubleRange) focalLengthX; + (double or DoubleRange) focalLengthY; + (double or DoubleRange) principalPointX; + (double or DoubleRange) principalPointY; + boolean deprojectionDistortionCoefficients; + boolean projectionDistortionCoefficients; + // Apply to depth stream track: + (double or DoubleRange) depthNear; + (double or DoubleRange) depthFar; + boolean depthToVideoTransform; +}; +partial dictionary MediaTrackConstraintSet { + // Apply to both depth stream track and color stream track: + ConstrainDOMString videoKind; + ConstrainDouble focalLengthX; + ConstrainDouble focalLengthY; + ConstrainDouble principalPointX; + ConstrainDouble principalPointY; + ConstrainBoolean deprojectionDistortionCoefficients; + ConstrainBoolean projectionDistortionCoefficients; + // Apply to depth stream track: + ConstrainDouble depthNear; + ConstrainDouble depthFar; + ConstrainBoolean depthToVideoTransform; +}; +partial dictionary MediaTrackSettings { + // Apply to both depth stream track and color stream track: + DOMString videoKind; + double focalLengthX; + double focalLengthY; + double principalPointX; + double principalPointY; + DistortionCoefficients deprojectionDistortionCoefficients; + DistortionCoefficients projectionDistortionCoefficients; + // Apply to depth stream track: + double depthNear; + double depthFar; + Transformation depthToVideoTransform; +}; +dictionary DistortionCoefficients { + double k1; + double k2; + double p1; + double p2; + double k3; +}; +dictionary Transformation { + Float32Array transformationMatrix; + DOMString videoDeviceId; +}; +enum VideoKindEnum { + "color", + "depth" +}; diff --git a/tests/wpt/web-platform-tests/interfaces/mediacapture-fromelement.idl b/tests/wpt/web-platform-tests/interfaces/mediacapture-fromelement.idl new file mode 100644 index 00000000000..7b35de99e8e --- /dev/null +++ b/tests/wpt/web-platform-tests/interfaces/mediacapture-fromelement.idl @@ -0,0 +1,16 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content of this file was automatically extracted from the +// "Media Capture from DOM Elements" spec. +// See: https://w3c.github.io/mediacapture-fromelement/ + +partial interface HTMLMediaElement { + MediaStream captureStream(); +}; +partial interface HTMLCanvasElement { + MediaStream captureStream(optional double frameRequestRate); +}; +[Exposed=Window] +interface CanvasCaptureMediaStreamTrack : MediaStreamTrack { + readonly attribute HTMLCanvasElement canvas; + void requestFrame(); +}; diff --git a/tests/wpt/web-platform-tests/interfaces/mediacapture-image.idl b/tests/wpt/web-platform-tests/interfaces/mediacapture-image.idl new file mode 100644 index 00000000000..3aeb6ebfa99 --- /dev/null +++ b/tests/wpt/web-platform-tests/interfaces/mediacapture-image.idl @@ -0,0 +1,150 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content of this file was automatically extracted from the MediaStream Image Capture spec. +// See https://w3c.github.io/mediacapture-image/ + +[Exposed=Window, Constructor(MediaStreamTrack videoTrack)] +interface ImageCapture { + Promise<Blob> takePhoto(optional PhotoSettings photoSettings); + Promise<PhotoCapabilities> getPhotoCapabilities(); + Promise<PhotoSettings> getPhotoSettings(); + + Promise<ImageBitmap> grabFrame(); + + readonly attribute MediaStreamTrack track; +}; + +[Exposed=Window] interface PhotoCapabilities { + readonly attribute RedEyeReduction redEyeReduction; + readonly attribute MediaSettingsRange imageHeight; + readonly attribute MediaSettingsRange imageWidth; + readonly attribute FrozenArray<FillLightMode> fillLightMode; +}; + +dictionary PhotoSettings { + FillLightMode fillLightMode; + double imageHeight; + double imageWidth; + boolean redEyeReduction; +}; + +[Exposed=Window] interface MediaSettingsRange { + readonly attribute double max; + readonly attribute double min; + readonly attribute double step; +}; + +enum RedEyeReduction { + "never", + "always", + "controllable" +}; + +enum FillLightMode { + "auto", + "off", + "flash" +}; + +partial dictionary MediaTrackSupportedConstraints { + boolean whiteBalanceMode = true; + boolean exposureMode = true; + boolean focusMode = true; + boolean pointsOfInterest = true; + + boolean exposureCompensation = true; + boolean exposureTime = true; + boolean colorTemperature = true; + boolean iso = true; + + boolean brightness = true; + boolean contrast = true; + boolean saturation = true; + boolean sharpness = true; + boolean focusDistance = true; + boolean zoom = true; + boolean torch = true; +}; + +partial dictionary MediaTrackCapabilities { + sequence<DOMString> whiteBalanceMode; + sequence<DOMString> exposureMode; + sequence<DOMString> focusMode; + + MediaSettingsRange exposureCompensation; + MediaSettingsRange exposureTime; + MediaSettingsRange colorTemperature; + MediaSettingsRange iso; + + MediaSettingsRange brightness; + MediaSettingsRange contrast; + MediaSettingsRange saturation; + MediaSettingsRange sharpness; + + MediaSettingsRange focusDistance; + MediaSettingsRange zoom; + + boolean torch; +}; + +partial dictionary MediaTrackConstraintSet { + ConstrainDOMString whiteBalanceMode; + ConstrainDOMString exposureMode; + ConstrainDOMString focusMode; + ConstrainPoint2D pointsOfInterest; + + ConstrainDouble exposureCompensation; + ConstrainDouble exposureTime; + ConstrainDouble colorTemperature; + ConstrainDouble iso; + + ConstrainDouble brightness; + ConstrainDouble contrast; + ConstrainDouble saturation; + ConstrainDouble sharpness; + + ConstrainDouble focusDistance; + ConstrainDouble zoom; + + ConstrainBoolean torch; +}; + +partial dictionary MediaTrackSettings { + DOMString whiteBalanceMode; + DOMString exposureMode; + DOMString focusMode; + sequence<Point2D> pointsOfInterest; + + double exposureCompensation; + double exposureTime; + double colorTemperature; + double iso; + + double brightness; + double contrast; + double saturation; + double sharpness; + + double focusDistance; + double zoom; + + boolean torch; +}; + +dictionary ConstrainPoint2DParameters { + sequence<Point2D> exact; + sequence<Point2D> ideal; +}; + +typedef (sequence<Point2D> or ConstrainPoint2DParameters) ConstrainPoint2D; + +enum MeteringMode { + "none", + "manual", + "single-shot", + "continuous" +}; + +dictionary Point2D { + double x = 0.0; + double y = 0.0; +}; diff --git a/tests/wpt/web-platform-tests/interfaces/mediacapture-main.idl b/tests/wpt/web-platform-tests/interfaces/mediacapture-main.idl index 0513f8fa760..d5e39e342a5 100644 --- a/tests/wpt/web-platform-tests/interfaces/mediacapture-main.idl +++ b/tests/wpt/web-platform-tests/interfaces/mediacapture-main.idl @@ -1,39 +1,43 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content of this file was automatically extracted from the Media Capture and Streams spec. +// See https://w3c.github.io/mediacapture-main/ + [Exposed=Window, Constructor, - Constructor(MediaStream stream), - Constructor(sequence<MediaStreamTrack> tracks)] + Constructor (MediaStream stream), + Constructor (sequence<MediaStreamTrack> tracks)] interface MediaStream : EventTarget { - readonly attribute DOMString id; - sequence<MediaStreamTrack> getAudioTracks(); - sequence<MediaStreamTrack> getVideoTracks(); - sequence<MediaStreamTrack> getTracks(); - MediaStreamTrack? getTrackById(DOMString trackId); - void addTrack(MediaStreamTrack track); - void removeTrack(MediaStreamTrack track); - MediaStream clone(); - readonly attribute boolean active; - attribute EventHandler onaddtrack; - attribute EventHandler onremovetrack; + readonly attribute DOMString id; + sequence<MediaStreamTrack> getAudioTracks (); + sequence<MediaStreamTrack> getVideoTracks (); + sequence<MediaStreamTrack> getTracks (); + MediaStreamTrack? getTrackById (DOMString trackId); + void addTrack (MediaStreamTrack track); + void removeTrack (MediaStreamTrack track); + MediaStream clone (); + readonly attribute boolean active; + attribute EventHandler onaddtrack; + attribute EventHandler onremovetrack; }; [Exposed=Window] interface MediaStreamTrack : EventTarget { - readonly attribute DOMString kind; - readonly attribute DOMString id; - readonly attribute DOMString label; - attribute boolean enabled; - readonly attribute boolean muted; - attribute EventHandler onmute; - attribute EventHandler onunmute; - readonly attribute MediaStreamTrackState readyState; - attribute EventHandler onended; - MediaStreamTrack clone(); - void stop(); - MediaTrackCapabilities getCapabilities(); - MediaTrackConstraints getConstraints(); - MediaTrackSettings getSettings(); - Promise<void> applyConstraints(optional MediaTrackConstraints constraints); - attribute EventHandler onoverconstrained; + readonly attribute DOMString kind; + readonly attribute DOMString id; + readonly attribute DOMString label; + attribute boolean enabled; + readonly attribute boolean muted; + attribute EventHandler onmute; + attribute EventHandler onunmute; + readonly attribute MediaStreamTrackState readyState; + attribute EventHandler onended; + MediaStreamTrack clone (); + void stop (); + MediaTrackCapabilities getCapabilities (); + MediaTrackConstraints getConstraints (); + MediaTrackSettings getSettings (); + Promise<void> applyConstraints (optional MediaTrackConstraints constraints); + attribute EventHandler onoverconstrained; }; enum MediaStreamTrackState { @@ -42,71 +46,83 @@ enum MediaStreamTrackState { }; dictionary MediaTrackSupportedConstraints { - boolean width = true; - boolean height = true; - boolean aspectRatio = true; - boolean frameRate = true; - boolean facingMode = true; - boolean volume = true; - boolean sampleRate = true; - boolean sampleSize = true; - boolean echoCancellation = true; - boolean latency = true; - boolean channelCount = true; - boolean deviceId = true; - boolean groupId = true; + boolean width = true; + boolean height = true; + boolean aspectRatio = true; + boolean frameRate = true; + boolean facingMode = true; + boolean resizeMode = true; + boolean volume = true; + boolean sampleRate = true; + boolean sampleSize = true; + boolean echoCancellation = true; + boolean autoGainControl = true; + boolean noiseSuppression = true; + boolean latency = true; + boolean channelCount = true; + boolean deviceId = true; + boolean groupId = true; }; dictionary MediaTrackCapabilities { - LongRange width; - LongRange height; - DoubleRange aspectRatio; - DoubleRange frameRate; - sequence<DOMString> facingMode; - DoubleRange volume; - LongRange sampleRate; - LongRange sampleSize; - sequence<boolean> echoCancellation; - DoubleRange latency; - LongRange channelCount; - DOMString deviceId; - DOMString groupId; -}; - -dictionary MediaTrackConstraints : MediaTrackConstraintSet { - sequence<MediaTrackConstraintSet> advanced; + ULongRange width; + ULongRange height; + DoubleRange aspectRatio; + DoubleRange frameRate; + sequence<DOMString> facingMode; + sequence<DOMString> resizeMode; + DoubleRange volume; + ULongRange sampleRate; + ULongRange sampleSize; + sequence<boolean> echoCancellation; + sequence<boolean> autoGainControl; + sequence<boolean> noiseSuppression; + DoubleRange latency; + ULongRange channelCount; + DOMString deviceId; + DOMString groupId; +}; + + dictionary MediaTrackConstraints : MediaTrackConstraintSet { + sequence<MediaTrackConstraintSet> advanced; }; dictionary MediaTrackConstraintSet { - ConstrainLong width; - ConstrainLong height; - ConstrainDouble aspectRatio; - ConstrainDouble frameRate; - ConstrainDOMString facingMode; - ConstrainDouble volume; - ConstrainLong sampleRate; - ConstrainLong sampleSize; - ConstrainBoolean echoCancellation; - ConstrainDouble latency; - ConstrainLong channelCount; - ConstrainDOMString deviceId; - ConstrainDOMString groupId; + ConstrainULong width; + ConstrainULong height; + ConstrainDouble aspectRatio; + ConstrainDouble frameRate; + ConstrainDOMString facingMode; + ConstrainDOMString resizeMode; + ConstrainDouble volume; + ConstrainULong sampleRate; + ConstrainULong sampleSize; + ConstrainBoolean echoCancellation; + ConstrainBoolean autoGainControl; + ConstrainBoolean noiseSuppression; + ConstrainDouble latency; + ConstrainULong channelCount; + ConstrainDOMString deviceId; + ConstrainDOMString groupId; }; dictionary MediaTrackSettings { - long width; - long height; - double aspectRatio; - double frameRate; - DOMString facingMode; - double volume; - long sampleRate; - long sampleSize; - boolean echoCancellation; - double latency; - long channelCount; - DOMString deviceId; - DOMString groupId; + long width; + long height; + double aspectRatio; + double frameRate; + DOMString facingMode; + DOMString resizeMode; + double volume; + long sampleRate; + long sampleSize; + boolean echoCancellation; + boolean autoGainControl; + boolean noiseSuppression; + double latency; + long channelCount; + DOMString deviceId; + DOMString groupId; }; enum VideoFacingModeEnum { @@ -116,11 +132,16 @@ enum VideoFacingModeEnum { "right" }; +enum VideoResizeModeEnum { + "none", + "crop-and-scale" +}; + [Exposed=Window, - Constructor(DOMString type, MediaStreamTrackEventInit eventInitDict)] + Constructor (DOMString type, MediaStreamTrackEventInit eventInitDict)] interface MediaStreamTrackEvent : Event { [SameObject] - readonly attribute MediaStreamTrack track; + readonly attribute MediaStreamTrack track; }; dictionary MediaStreamTrackEventInit : EventInit { @@ -128,36 +149,35 @@ dictionary MediaStreamTrackEventInit : EventInit { }; [Exposed=Window, - Constructor(DOMString type, OverconstrainedErrorEventInit eventInitDict)] + Constructor (DOMString type, OverconstrainedErrorEventInit eventInitDict)] interface OverconstrainedErrorEvent : Event { - readonly attribute OverconstrainedError? error; + readonly attribute OverconstrainedError? error; }; dictionary OverconstrainedErrorEventInit : EventInit { - OverconstrainedError? error = null; + OverconstrainedError? error = null; }; -[Exposed=Window, - NoInterfaceObject] +[Exposed=Window, NoInterfaceObject] interface NavigatorUserMedia { [SameObject] - readonly attribute MediaDevices mediaDevices; + readonly attribute MediaDevices mediaDevices; }; Navigator implements NavigatorUserMedia; [Exposed=Window] interface MediaDevices : EventTarget { - attribute EventHandler ondevicechange; - Promise<sequence<MediaDeviceInfo>> enumerateDevices(); + attribute EventHandler ondevicechange; + Promise<sequence<MediaDeviceInfo>> enumerateDevices (); }; [Exposed=Window] interface MediaDeviceInfo { - readonly attribute DOMString deviceId; - readonly attribute MediaDeviceKind kind; - readonly attribute DOMString label; - readonly attribute DOMString groupId; + readonly attribute DOMString deviceId; + readonly attribute MediaDeviceKind kind; + readonly attribute DOMString label; + readonly attribute DOMString groupId; [Default] object toJSON(); }; @@ -167,25 +187,22 @@ enum MediaDeviceKind { "videoinput" }; -[Exposed=Window] -interface InputDeviceInfo : MediaDeviceInfo { - MediaTrackCapabilities getCapabilities(); + [Exposed=Window] interface InputDeviceInfo : MediaDeviceInfo { + MediaTrackCapabilities getCapabilities (); }; partial interface NavigatorUserMedia { - void getUserMedia(MediaStreamConstraints constraints, - NavigatorUserMediaSuccessCallback successCallback, - NavigatorUserMediaErrorCallback errorCallback); + void getUserMedia (MediaStreamConstraints constraints, NavigatorUserMediaSuccessCallback successCallback, NavigatorUserMediaErrorCallback errorCallback); }; partial interface MediaDevices { - MediaTrackSupportedConstraints getSupportedConstraints(); - Promise<MediaStream> getUserMedia(optional MediaStreamConstraints constraints); + MediaTrackSupportedConstraints getSupportedConstraints (); + Promise<MediaStream> getUserMedia (optional MediaStreamConstraints constraints); }; dictionary MediaStreamConstraints { - (boolean or MediaTrackConstraints) video = false; - (boolean or MediaTrackConstraints) audio = false; + (boolean or MediaTrackConstraints) video = false; + (boolean or MediaTrackConstraints) audio = false; }; callback NavigatorUserMediaSuccessCallback = void (MediaStream stream); @@ -196,44 +213,44 @@ typedef object MediaStreamError; [NoInterfaceObject] interface ConstrainablePattern { - Capabilities getCapabilities(); - Constraints getConstraints(); - Settings getSettings(); - Promise<void> applyConstraints(optional Constraints constraints); - attribute EventHandler onoverconstrained; + Capabilities getCapabilities (); + Constraints getConstraints (); + Settings getSettings (); + Promise<void> applyConstraints (optional Constraints constraints); + attribute EventHandler onoverconstrained; }; dictionary DoubleRange { - double max; - double min; + double max; + double min; }; dictionary ConstrainDoubleRange : DoubleRange { - double exact; - double ideal; + double exact; + double ideal; }; -dictionary LongRange { - long max; - long min; +dictionary ULongRange { + [Clamp] unsigned long max; + [Clamp] unsigned long min; }; -dictionary ConstrainLongRange : LongRange { - long exact; - long ideal; +dictionary ConstrainULongRange : ULongRange { + [Clamp] unsigned long exact; + [Clamp] unsigned long ideal; }; dictionary ConstrainBooleanParameters { - boolean exact; - boolean ideal; + boolean exact; + boolean ideal; }; dictionary ConstrainDOMStringParameters { - (DOMString or sequence<DOMString>) exact; - (DOMString or sequence<DOMString>) ideal; + (DOMString or sequence<DOMString>) exact; + (DOMString or sequence<DOMString>) ideal; }; -typedef (long or ConstrainLongRange) ConstrainLong; +typedef ([Clamp] unsigned long or ConstrainULongRange) ConstrainULong; typedef (double or ConstrainDoubleRange) ConstrainDouble; @@ -251,5 +268,5 @@ dictionary ConstraintSet { }; dictionary Constraints : ConstraintSet { - sequence<ConstraintSet> advanced; + sequence<ConstraintSet> advanced; }; diff --git a/tests/wpt/web-platform-tests/interfaces/mediacapture-record.idl b/tests/wpt/web-platform-tests/interfaces/mediacapture-record.idl new file mode 100644 index 00000000000..d1a2f211dd6 --- /dev/null +++ b/tests/wpt/web-platform-tests/interfaces/mediacapture-record.idl @@ -0,0 +1,60 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content of this file was automatically extracted from the MediaStream Recording spec. +// See https://w3c.github.io/mediacapture-record/ + +[Exposed=Window, + Constructor(MediaStream stream, optional MediaRecorderOptions options)] +interface MediaRecorder : EventTarget { + readonly attribute MediaStream stream; + readonly attribute DOMString mimeType; + readonly attribute RecordingState state; + attribute EventHandler onstart; + attribute EventHandler onstop; + attribute EventHandler ondataavailable; + attribute EventHandler onpause; + attribute EventHandler onresume; + attribute EventHandler onerror; + readonly attribute unsigned long videoBitsPerSecond; + readonly attribute unsigned long audioBitsPerSecond; + + void start(optional long timeslice); + void stop(); + void pause(); + void resume(); + void requestData(); + + static boolean isTypeSupported(DOMString type); +}; + +dictionary MediaRecorderOptions { + DOMString mimeType; + unsigned long audioBitsPerSecond; + unsigned long videoBitsPerSecond; + unsigned long bitsPerSecond; +}; + +enum RecordingState { + "inactive", + "recording", + "paused" +}; + +[Exposed=Window, Constructor(DOMString type, BlobEventInit eventInitDict)] +interface BlobEvent : Event { + [SameObject] readonly attribute Blob data; + readonly attribute DOMHighResTimeStamp timecode; +}; + +dictionary BlobEventInit { + required Blob data; + DOMHighResTimeStamp timecode; +}; + +dictionary MediaRecorderErrorEventInit : EventInit { + required DOMException error; +}; + +[Exposed=Window, Constructor(DOMString type, MediaRecorderErrorEventInit eventInitDict)] +interface MediaRecorderErrorEvent : Event { + [SameObject] readonly attribute DOMException error; +}; diff --git a/tests/wpt/web-platform-tests/interfaces/orientation-event.idl b/tests/wpt/web-platform-tests/interfaces/orientation-event.idl new file mode 100644 index 00000000000..aa74fa32350 --- /dev/null +++ b/tests/wpt/web-platform-tests/interfaces/orientation-event.idl @@ -0,0 +1,68 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content of this file was automatically extracted from the +// "DeviceOrientation Event Specification" spec. +// See: https://w3c.github.io/deviceorientation/spec-source-orientation.html + +partial interface Window { + attribute EventHandler ondeviceorientation; + }; + + [Constructor(DOMString type, optional DeviceOrientationEventInit eventInitDict), Exposed=Window] + interface DeviceOrientationEvent : Event { + readonly attribute double? alpha; + readonly attribute double? beta; + readonly attribute double? gamma; + readonly attribute boolean absolute; + }; + + dictionary DeviceOrientationEventInit : EventInit { + double? alpha = null; + double? beta = null; + double? gamma = null; + boolean absolute = false; + }; + + partial interface Window { + attribute EventHandler ondevicemotion; + }; + + [NoInterfaceObject] + interface DeviceAcceleration { + readonly attribute double? x; + readonly attribute double? y; + readonly attribute double? z; + }; + + [NoInterfaceObject] + interface DeviceRotationRate { + readonly attribute double? alpha; + readonly attribute double? beta; + readonly attribute double? gamma; + }; + + [Constructor(DOMString type, optional DeviceMotionEventInit eventInitDict), Exposed=Window] + interface DeviceMotionEvent : Event { + readonly attribute DeviceAcceleration? acceleration; + readonly attribute DeviceAcceleration? accelerationIncludingGravity; + readonly attribute DeviceRotationRate? rotationRate; + readonly attribute double interval; + }; + + dictionary DeviceAccelerationInit { + double? x = null; + double? y = null; + double? z = null; + }; + + dictionary DeviceRotationRateInit { + double? alpha = null; + double? beta = null; + double? gamma = null; + }; + + dictionary DeviceMotionEventInit : EventInit { + DeviceAccelerationInit? acceleration; + DeviceAccelerationInit? accelerationIncludingGravity; + DeviceRotationRateInit? rotationRate; + double interval = 0; + }; diff --git a/tests/wpt/web-platform-tests/interfaces/presentation-api.idl b/tests/wpt/web-platform-tests/interfaces/presentation-api.idl new file mode 100644 index 00000000000..3f6e6310023 --- /dev/null +++ b/tests/wpt/web-platform-tests/interfaces/presentation-api.idl @@ -0,0 +1,111 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content of this file was automatically extracted from the +// "Presentation API" spec. +// See: https://w3c.github.io/presentation-api/ + +partial interface Navigator { + [SecureContext, + SameObject] + readonly attribute Presentation presentation; +}; + +[SecureContext, + Exposed=Window] +interface Presentation { +}; +partial interface Presentation { + attribute PresentationRequest? defaultRequest; +}; +partial interface Presentation { + readonly attribute PresentationReceiver? receiver; +}; +[Constructor(USVString url), + Constructor(sequence<USVString> urls), + SecureContext, + Exposed=Window] +interface PresentationRequest : EventTarget { + Promise<PresentationConnection> start(); + Promise<PresentationConnection> reconnect(USVString presentationId); + Promise<PresentationAvailability> getAvailability(); + + attribute EventHandler onconnectionavailable; +}; +[SecureContext, + Exposed=Window] +interface PresentationAvailability : EventTarget { + readonly attribute boolean value; + + attribute EventHandler onchange; +}; +[Constructor(DOMString type, PresentationConnectionAvailableEventInit eventInitDict), + SecureContext, + Exposed=Window] +interface PresentationConnectionAvailableEvent : Event { + [SameObject] + readonly attribute PresentationConnection connection; +}; + +dictionary PresentationConnectionAvailableEventInit : EventInit { + required PresentationConnection connection; +}; +enum PresentationConnectionState { + "connecting", + "connected", + "closed", + "terminated" +}; + +enum BinaryType { + "blob", + "arraybuffer" +}; + +[SecureContext, + Exposed=Window] +interface PresentationConnection : EventTarget { + readonly attribute USVString id; + readonly attribute USVString url; + readonly attribute PresentationConnectionState state; + void close(); + void terminate(); + attribute EventHandler onconnect; + attribute EventHandler onclose; + attribute EventHandler onterminate; + + // Communication + attribute BinaryType binaryType; + attribute EventHandler onmessage; + void send(DOMString message); + void send(Blob data); + void send(ArrayBuffer data); + void send(ArrayBufferView data); +}; +enum PresentationConnectionCloseReason { + "error", + "closed", + "wentaway" +}; + +[Constructor(DOMString type, PresentationConnectionCloseEventInit eventInitDict), + SecureContext, + Exposed=Window] +interface PresentationConnectionCloseEvent : Event { + readonly attribute PresentationConnectionCloseReason reason; + readonly attribute DOMString message; +}; + +dictionary PresentationConnectionCloseEventInit : EventInit { + required PresentationConnectionCloseReason reason; + DOMString message = ""; +}; +[SecureContext, + Exposed=Window] +interface PresentationReceiver { + readonly attribute Promise<PresentationConnectionList> connectionList; +}; +[SecureContext, + Exposed=Window] +interface PresentationConnectionList : EventTarget { + readonly attribute FrozenArray<PresentationConnection> connections; + attribute EventHandler onconnectionavailable; +}; diff --git a/tests/wpt/web-platform-tests/interfaces/push-api.idl b/tests/wpt/web-platform-tests/interfaces/push-api.idl new file mode 100644 index 00000000000..9047d9785ed --- /dev/null +++ b/tests/wpt/web-platform-tests/interfaces/push-api.idl @@ -0,0 +1,96 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content of this file was automatically extracted from the +// "Push API" spec. +// See: https://w3c.github.io/push-api/ + +[SecureContext] +partial interface ServiceWorkerRegistration { + readonly attribute PushManager pushManager; +}; +[Exposed=(Window,Worker), + SecureContext] +interface PushManager { + [SameObject] + static readonly attribute FrozenArray<DOMString> supportedContentEncodings; + + Promise<PushSubscription> subscribe(optional PushSubscriptionOptionsInit options); + Promise<PushSubscription?> getSubscription(); + Promise<PushPermissionState> permissionState(optional PushSubscriptionOptionsInit options); +}; +dictionary PushSubscriptionOptionsInit { + boolean userVisibleOnly = false; + (BufferSource or DOMString)? applicationServerKey = null; +}; + +[Exposed=(Window,Worker), + SecureContext] +interface PushSubscriptionOptions { + readonly attribute boolean userVisibleOnly; + [SameObject] + readonly attribute ArrayBuffer? applicationServerKey; +}; +[Exposed=(Window,Worker), + SecureContext] +interface PushSubscription { + readonly attribute USVString endpoint; + readonly attribute DOMTimeStamp? expirationTime; + [SameObject] + readonly attribute PushSubscriptionOptions options; + ArrayBuffer? getKey(PushEncryptionKeyName name); + Promise<boolean> unsubscribe(); + + PushSubscriptionJSON toJSON(); +}; + +dictionary PushSubscriptionJSON { + USVString endpoint; + DOMTimeStamp? expirationTime; + record<DOMString, USVString> keys; +}; +enum PushEncryptionKeyName { + "p256dh", + "auth" +}; +[Exposed=ServiceWorker, + SecureContext] +interface PushMessageData { + ArrayBuffer arrayBuffer(); + Blob blob(); + any json(); + USVString text(); +}; +[Exposed=ServiceWorker, + SecureContext] +partial interface ServiceWorkerGlobalScope { + attribute EventHandler onpush; + attribute EventHandler onpushsubscriptionchange; +}; +typedef (BufferSource or USVString) PushMessageDataInit; + +dictionary PushEventInit : ExtendableEventInit { + PushMessageDataInit data; +}; + +[Constructor(DOMString type, optional PushEventInit eventInitDict), + Exposed=ServiceWorker, + SecureContext] +interface PushEvent : ExtendableEvent { + readonly attribute PushMessageData? data; +}; +dictionary PushSubscriptionChangeInit : ExtendableEventInit { + PushSubscription newSubscription = null; + PushSubscription oldSubscription = null; +}; + +[Constructor(DOMString type, optional PushSubscriptionChangeInit eventInitDict), + Exposed=ServiceWorker, + SecureContext] +interface PushSubscriptionChangeEvent : ExtendableEvent { + readonly attribute PushSubscription? newSubscription; + readonly attribute PushSubscription? oldSubscription; +}; +enum PushPermissionState { + "denied", + "granted", + "prompt", +}; diff --git a/tests/wpt/web-platform-tests/interfaces/webappsec-referrer-policy.idl b/tests/wpt/web-platform-tests/interfaces/referrer-policy.idl index f0317a430cd..2f5dab3c274 100644 --- a/tests/wpt/web-platform-tests/interfaces/webappsec-referrer-policy.idl +++ b/tests/wpt/web-platform-tests/interfaces/referrer-policy.idl @@ -1,6 +1,7 @@ // GENERATED CONTENT - DO NOT EDIT -// Content of this file was automatically extracted from the Referrer Policy spec. -// See https://w3c.github.io/webappsec-referrer-policy/ +// Content of this file was automatically extracted from the +// "Referrer Policy" spec. +// See: https://w3c.github.io/webappsec-referrer-policy/ enum ReferrerPolicy { "", diff --git a/tests/wpt/web-platform-tests/interfaces/scroll-animations.idl b/tests/wpt/web-platform-tests/interfaces/scroll-animations.idl new file mode 100644 index 00000000000..5529cfa4665 --- /dev/null +++ b/tests/wpt/web-platform-tests/interfaces/scroll-animations.idl @@ -0,0 +1,33 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content of this file was automatically extracted from the +// "Scroll-linked Animations" spec. +// See: https://wicg.github.io/scroll-animations/ + +enum ScrollDirection { + "auto", + "block", + "inline", + "horizontal", + "vertical" +}; + +enum ScrollTimelineAutoKeyword { "auto" }; + +dictionary ScrollTimelineOptions { + Element scrollSource; + ScrollDirection orientation = "auto"; + DOMString startScrollOffset = "auto"; + DOMString endScrollOffset = "auto"; + (double or ScrollTimelineAutoKeyword) timeRange = "auto"; + FillMode fill = "none"; +}; + +[Constructor(optional ScrollTimelineOptions options)] +interface ScrollTimeline : AnimationTimeline { + readonly attribute Element scrollSource; + readonly attribute ScrollDirection orientation; + readonly attribute DOMString startScrollOffset; + readonly attribute DOMString endScrollOffset; + readonly attribute (double or ScrollTimelineAutoKeyword) timeRange; + readonly attribute FillMode fill; +}; diff --git a/tests/wpt/web-platform-tests/interfaces/secure-contexts.idl b/tests/wpt/web-platform-tests/interfaces/secure-contexts.idl new file mode 100644 index 00000000000..15bf27539ba --- /dev/null +++ b/tests/wpt/web-platform-tests/interfaces/secure-contexts.idl @@ -0,0 +1,8 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content of this file was automatically extracted from the +// "Secure Contexts" spec. +// See: https://w3c.github.io/webappsec-secure-contexts/ + +partial interface WindowOrWorkerGlobalScope { + readonly attribute boolean isSecureContext; +}; diff --git a/tests/wpt/web-platform-tests/interfaces/shape-detection-api.idl b/tests/wpt/web-platform-tests/interfaces/shape-detection-api.idl new file mode 100644 index 00000000000..8f8009889d0 --- /dev/null +++ b/tests/wpt/web-platform-tests/interfaces/shape-detection-api.idl @@ -0,0 +1,67 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content of this file was automatically extracted from the +// "Accelerated Shape Detection in Images" spec. +// See: https://wicg.github.io/shape-detection-api/ + +[Exposed=(Window,Worker), + Constructor(optional FaceDetectorOptions faceDetectorOptions)] +interface FaceDetector { + Promise<sequence<DetectedFace>> detect(ImageBitmapSource image); +}; + +dictionary FaceDetectorOptions { + unsigned short maxDetectedFaces; + boolean fastMode; +}; + +interface DetectedFace { + [SameObject] readonly attribute DOMRectReadOnly boundingBox; + [SameObject] readonly attribute FrozenArray<Landmark>? landmarks; +}; + +dictionary Landmark { + required FrozenArray<Point2D> locations; + LandmarkType type; +}; + +enum LandmarkType { + "mouth", + "eye", + "nose" +}; + +[Exposed=(Window,Worker), + Constructor(optional BarcodeDetectorOptions barcodeDetectorOptions)] +interface BarcodeDetector { + readonly attribute FrozenArray<BarcodeFormat> supportedFormats; + + Promise<sequence<DetectedBarcode>> detect(ImageBitmapSource image); +}; + +dictionary BarcodeDetectorOptions { + sequence<BarcodeFormat> formats; +}; + +interface DetectedBarcode { + [SameObject] readonly attribute DOMRectReadOnly boundingBox; + [SameObject] readonly attribute DOMString rawValue; + [SameObject] readonly attribute BarcodeFormat format; + [SameObject] readonly attribute FrozenArray<Point2D> cornerPoints; +}; + +enum BarcodeFormat { + "aztec", + "code_128", + "code_39", + "code_93", + "codabar", + "data_matrix", + "ean_13", + "ean_8", + "itf", + "pdf417", + "qr_code", + "unknown", + "upc_a", + "upc_e" +}; diff --git a/tests/wpt/web-platform-tests/interfaces/touch-events.idl b/tests/wpt/web-platform-tests/interfaces/touch-events.idl new file mode 100644 index 00000000000..5c5a3ef82e8 --- /dev/null +++ b/tests/wpt/web-platform-tests/interfaces/touch-events.idl @@ -0,0 +1,86 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content of this file was automatically extracted from the +// "Touch Events - Level 2" spec. +// See: https://w3c.github.io/touch-events/ + +enum TouchType { + "direct", + "stylus" +}; + +dictionary TouchInit { + required long identifier; + required EventTarget target; + double clientX = 0; + double clientY = 0; + double screenX = 0; + double screenY = 0; + double pageX = 0; + double pageY = 0; + float radiusX = 0; + float radiusY = 0; + float rotationAngle = 0; + float force = 0; + double altitudeAngle = 0; + double azimuthAngle = 0; + TouchType touchType = "direct"; +}; + +[Constructor(TouchInit touchInitDict), + Exposed=Window] +interface Touch { + readonly attribute long identifier; + readonly attribute EventTarget target; + readonly attribute double screenX; + readonly attribute double screenY; + readonly attribute double clientX; + readonly attribute double clientY; + readonly attribute double pageX; + readonly attribute double pageY; + readonly attribute float radiusX; + readonly attribute float radiusY; + readonly attribute float rotationAngle; + readonly attribute float force; + readonly attribute float altitudeAngle; + readonly attribute float azimuthAngle; + readonly attribute TouchType touchType; +}; +interface TouchList { + readonly attribute unsigned long length; + getter Touch? item(unsigned long index); +}; +dictionary TouchEventInit : EventModifierInit { + sequence<Touch> touches = []; + sequence<Touch> targetTouches = []; + sequence<Touch> changedTouches = []; +}; + +[Constructor(DOMString type, optional TouchEventInit eventInitDict), + Exposed=Window] +interface TouchEvent : UIEvent { + readonly attribute TouchList touches; + readonly attribute TouchList targetTouches; + readonly attribute TouchList changedTouches; + readonly attribute boolean altKey; + readonly attribute boolean metaKey; + readonly attribute boolean ctrlKey; + readonly attribute boolean shiftKey; +}; +partial interface GlobalEventHandlers { + attribute EventHandler ontouchstart; + attribute EventHandler ontouchend; + attribute EventHandler ontouchmove; + attribute EventHandler ontouchcancel; +}; +partial interface Document { + // Deprecated in this specification + Touch createTouch(WindowProxy view, + EventTarget target, + long identifier, + double pageX, + double pageY, + double screenX, + double screenY); + // Deprecated in this specification + TouchList createTouchList(Touch... touches); +}; diff --git a/tests/wpt/web-platform-tests/interfaces/web-bluetooth.idl b/tests/wpt/web-platform-tests/interfaces/web-bluetooth.idl new file mode 100644 index 00000000000..7046fec40f1 --- /dev/null +++ b/tests/wpt/web-platform-tests/interfaces/web-bluetooth.idl @@ -0,0 +1,216 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content of this file was automatically extracted from the +// "Web Bluetooth" spec. +// See: https://webbluetoothcg.github.io/web-bluetooth/ + +dictionary BluetoothDataFilterInit { + BufferSource dataPrefix; + BufferSource mask; +}; +dictionary BluetoothLEScanFilterInit { + sequence<BluetoothServiceUUID> services; + DOMString name; + DOMString namePrefix; + // Maps unsigned shorts to BluetoothDataFilters. + object manufacturerData; + // Maps BluetoothServiceUUIDs to BluetoothDataFilters. + object serviceData; +}; + +dictionary RequestDeviceOptions { + sequence<BluetoothLEScanFilterInit> filters; + sequence<BluetoothServiceUUID> optionalServices = []; + boolean acceptAllDevices = false; +}; + +interface Bluetooth : EventTarget { + [SecureContext] + Promise<boolean> getAvailability(); + [SecureContext] + attribute EventHandler onavailabilitychanged; + [SecureContext, SameObject] + readonly attribute BluetoothDevice? referringDevice; + [SecureContext] + Promise<BluetoothDevice> requestDevice(optional RequestDeviceOptions options); +}; +Bluetooth implements BluetoothDeviceEventHandlers; +Bluetooth implements CharacteristicEventHandlers; +Bluetooth implements ServiceEventHandlers; + +dictionary BluetoothPermissionDescriptor : PermissionDescriptor { + DOMString deviceId; + // These match RequestDeviceOptions. + sequence<BluetoothLEScanFilterInit> filters; + sequence<BluetoothServiceUUID> optionalServices = []; + boolean acceptAllDevices = false; +}; + +dictionary AllowedBluetoothDevice { + required DOMString deviceId; + required boolean mayUseGATT; + // An allowedServices of "all" means all services are allowed. + required (DOMString or sequence<UUID>) allowedServices; +}; +dictionary BluetoothPermissionData { + required sequence<AllowedBluetoothDevice> allowedDevices; +}; + +interface BluetoothPermissionResult : PermissionStatus { + attribute FrozenArray<BluetoothDevice> devices; +}; + +[Constructor(DOMString type, optional ValueEventInit initDict)] +interface ValueEvent : Event { + readonly attribute any value; +}; + +dictionary ValueEventInit : EventInit { + any value = null; +}; + +interface BluetoothDevice { + readonly attribute DOMString id; + readonly attribute DOMString? name; + readonly attribute BluetoothRemoteGATTServer? gatt; + + Promise<void> watchAdvertisements(); + void unwatchAdvertisements(); + readonly attribute boolean watchingAdvertisements; +}; +BluetoothDevice implements EventTarget; +BluetoothDevice implements BluetoothDeviceEventHandlers; +BluetoothDevice implements CharacteristicEventHandlers; +BluetoothDevice implements ServiceEventHandlers; + +interface BluetoothManufacturerDataMap { + readonly maplike<unsigned short, DataView>; +}; +interface BluetoothServiceDataMap { + readonly maplike<UUID, DataView>; +}; +[Constructor(DOMString type, BluetoothAdvertisingEventInit init)] +interface BluetoothAdvertisingEvent : Event { + [SameObject] + readonly attribute BluetoothDevice device; + readonly attribute FrozenArray<UUID> uuids; + readonly attribute DOMString? name; + readonly attribute unsigned short? appearance; + readonly attribute byte? txPower; + readonly attribute byte? rssi; + [SameObject] + readonly attribute BluetoothManufacturerDataMap manufacturerData; + [SameObject] + readonly attribute BluetoothServiceDataMap serviceData; +}; +dictionary BluetoothAdvertisingEventInit : EventInit { + required BluetoothDevice device; + sequence<(DOMString or unsigned long)> uuids; + DOMString name; + unsigned short appearance; + byte txPower; + byte rssi; + Map manufacturerData; + Map serviceData; +}; + +interface BluetoothRemoteGATTServer { + [SameObject] + readonly attribute BluetoothDevice device; + readonly attribute boolean connected; + Promise<BluetoothRemoteGATTServer> connect(); + void disconnect(); + Promise<BluetoothRemoteGATTService> getPrimaryService(BluetoothServiceUUID service); + Promise<sequence<BluetoothRemoteGATTService>> + getPrimaryServices(optional BluetoothServiceUUID service); +}; + +interface BluetoothRemoteGATTService { + [SameObject] + readonly attribute BluetoothDevice device; + readonly attribute UUID uuid; + readonly attribute boolean isPrimary; + Promise<BluetoothRemoteGATTCharacteristic> + getCharacteristic(BluetoothCharacteristicUUID characteristic); + Promise<sequence<BluetoothRemoteGATTCharacteristic>> + getCharacteristics(optional BluetoothCharacteristicUUID characteristic); + Promise<BluetoothRemoteGATTService> + getIncludedService(BluetoothServiceUUID service); + Promise<sequence<BluetoothRemoteGATTService>> + getIncludedServices(optional BluetoothServiceUUID service); +}; +BluetoothRemoteGATTService implements EventTarget; +BluetoothRemoteGATTService implements CharacteristicEventHandlers; +BluetoothRemoteGATTService implements ServiceEventHandlers; + +interface BluetoothRemoteGATTCharacteristic { + [SameObject] + readonly attribute BluetoothRemoteGATTService service; + readonly attribute UUID uuid; + readonly attribute BluetoothCharacteristicProperties properties; + readonly attribute DataView? value; + Promise<BluetoothRemoteGATTDescriptor> getDescriptor(BluetoothDescriptorUUID descriptor); + Promise<sequence<BluetoothRemoteGATTDescriptor>> + getDescriptors(optional BluetoothDescriptorUUID descriptor); + Promise<DataView> readValue(); + Promise<void> writeValue(BufferSource value); + Promise<BluetoothRemoteGATTCharacteristic> startNotifications(); + Promise<BluetoothRemoteGATTCharacteristic> stopNotifications(); +}; +BluetoothRemoteGATTCharacteristic implements EventTarget; +BluetoothRemoteGATTCharacteristic implements CharacteristicEventHandlers; + +interface BluetoothCharacteristicProperties { + readonly attribute boolean broadcast; + readonly attribute boolean read; + readonly attribute boolean writeWithoutResponse; + readonly attribute boolean write; + readonly attribute boolean notify; + readonly attribute boolean indicate; + readonly attribute boolean authenticatedSignedWrites; + readonly attribute boolean reliableWrite; + readonly attribute boolean writableAuxiliaries; +}; + +interface BluetoothRemoteGATTDescriptor { + [SameObject] + readonly attribute BluetoothRemoteGATTCharacteristic characteristic; + readonly attribute UUID uuid; + readonly attribute DataView? value; + Promise<DataView> readValue(); + Promise<void> writeValue(BufferSource value); +}; + +[NoInterfaceObject] +interface CharacteristicEventHandlers { + attribute EventHandler oncharacteristicvaluechanged; +}; + +[NoInterfaceObject] +interface BluetoothDeviceEventHandlers { + attribute EventHandler ongattserverdisconnected; +}; + +[NoInterfaceObject] +interface ServiceEventHandlers { + attribute EventHandler onserviceadded; + attribute EventHandler onservicechanged; + attribute EventHandler onserviceremoved; +}; + +typedef DOMString UUID; +interface BluetoothUUID { + static UUID getService((DOMString or unsigned long) name); + static UUID getCharacteristic((DOMString or unsigned long) name); + static UUID getDescriptor((DOMString or unsigned long) name); + + static UUID canonicalUUID([EnforceRange] unsigned long alias); +}; + +typedef (DOMString or unsigned long) BluetoothServiceUUID; +typedef (DOMString or unsigned long) BluetoothCharacteristicUUID; +typedef (DOMString or unsigned long) BluetoothDescriptorUUID; + +partial interface Navigator { + [SameObject] + readonly attribute Bluetooth bluetooth; +}; diff --git a/tests/wpt/web-platform-tests/interfaces/web-audio-api.idl b/tests/wpt/web-platform-tests/interfaces/webaudio.idl index 9c253659869..5f3085df81e 100644 --- a/tests/wpt/web-platform-tests/interfaces/web-audio-api.idl +++ b/tests/wpt/web-platform-tests/interfaces/webaudio.idl @@ -1,6 +1,7 @@ // GENERATED CONTENT - DO NOT EDIT -// Content of this file was automatically extracted from the Web Audio API spec. -// See https://webaudio.github.io/web-audio-api/ +// Content of this file was automatically extracted from the +// "Web Audio API" spec. +// See: https://webaudio.github.io/web-audio-api/ enum AudioContextState { "suspended", @@ -21,34 +22,35 @@ interface BaseAudioContext : EventTarget { readonly attribute AudioContextState state; [SameObject, SecureContext] readonly attribute AudioWorklet audioWorklet; - Promise<void> resume (); attribute EventHandler onstatechange; + + AnalyserNode createAnalyser (); + BiquadFilterNode createBiquadFilter (); AudioBuffer createBuffer (unsigned long numberOfChannels, unsigned long length, float sampleRate); - Promise<AudioBuffer> decodeAudioData (ArrayBuffer audioData, - optional DecodeSuccessCallback successCallback, - optional DecodeErrorCallback errorCallback); AudioBufferSourceNode createBufferSource (); + ChannelMergerNode createChannelMerger (optional unsigned long numberOfInputs = 6); + ChannelSplitterNode createChannelSplitter (optional unsigned long numberOfOutputs = 6); ConstantSourceNode createConstantSource (); - ScriptProcessorNode createScriptProcessor(optional unsigned long bufferSize = 0, - optional unsigned long numberOfInputChannels = 2, - optional unsigned long numberOfOutputChannels = 2); - AnalyserNode createAnalyser (); - GainNode createGain (); - DelayNode createDelay (optional double maxDelayTime = 1.0); - BiquadFilterNode createBiquadFilter (); - IIRFilterNode createIIRFilter (sequence<double> feedforward, sequence<double> feedback); - WaveShaperNode createWaveShaper (); - PannerNode createPanner (); - StereoPannerNode createStereoPanner (); ConvolverNode createConvolver (); - ChannelSplitterNode createChannelSplitter (optional unsigned long numberOfOutputs = 6); - ChannelMergerNode createChannelMerger (optional unsigned long numberOfInputs = 6); + DelayNode createDelay (optional double maxDelayTime = 1.0); DynamicsCompressorNode createDynamicsCompressor (); + GainNode createGain (); + IIRFilterNode createIIRFilter (sequence<double> feedforward, sequence<double> feedback); OscillatorNode createOscillator (); + PannerNode createPanner (); PeriodicWave createPeriodicWave (sequence<float> real, sequence<float> imag, optional PeriodicWaveConstraints constraints); + ScriptProcessorNode createScriptProcessor(optional unsigned long bufferSize = 0, + optional unsigned long numberOfInputChannels = 2, + optional unsigned long numberOfOutputChannels = 2); + StereoPannerNode createStereoPanner (); + WaveShaperNode createWaveShaper (); + + Promise<AudioBuffer> decodeAudioData (ArrayBuffer audioData, + optional DecodeSuccessCallback successCallback, + optional DecodeErrorCallback errorCallback); + Promise<void> resume (); }; -[Exposed=Window] enum AudioContextLatencyCategory { "balanced", "interactive", @@ -69,13 +71,11 @@ interface AudioContext : BaseAudioContext { MediaStreamAudioDestinationNode createMediaStreamDestination (); }; -[Exposed=Window] dictionary AudioContextOptions { (AudioContextLatencyCategory or double) latencyHint = "interactive"; float sampleRate; }; -[Exposed=Window] dictionary AudioTimestamp { double contextTime; DOMHighResTimeStamp performanceTime; @@ -91,7 +91,6 @@ interface OfflineAudioContext : BaseAudioContext { attribute EventHandler oncomplete; }; -[Exposed=Window] dictionary OfflineAudioContextOptions { unsigned long numberOfChannels = 1; required unsigned long length; @@ -104,7 +103,6 @@ interface OfflineAudioCompletionEvent : Event { readonly attribute AudioBuffer renderedBuffer; }; -[Exposed=Window] dictionary OfflineAudioCompletionEventInit : EventInit { required AudioBuffer renderedBuffer; }; @@ -148,14 +146,12 @@ interface AudioNode : EventTarget { attribute ChannelInterpretation channelInterpretation; }; -[Exposed=Window] enum ChannelCountMode { "max", "clamped-max", "explicit" }; -[Exposed=Window] enum ChannelInterpretation { "speakers", "discrete" @@ -228,7 +224,6 @@ interface AudioBufferSourceNode : AudioScheduledSourceNode { void start (optional double when = 0, optional double offset, optional double duration); - void stop (optional double when = 0); }; dictionary AudioBufferSourceOptions { @@ -314,7 +309,7 @@ dictionary ChannelMergerOptions : AudioNodeOptions { }; [Exposed=Window, - Constructor (BaseAudioContext context, optional ChannelSplitterNode options)] + Constructor (BaseAudioContext context, optional ChannelSplitterOptions options)] interface ChannelSplitterNode : AudioNode { }; @@ -396,7 +391,7 @@ dictionary IIRFilterOptions : AudioNodeOptions { }; [Exposed=Window, - Constructor (BaseAudioContext context, MediaElementAudioSourceOptions options)] + Constructor (AudioContext context, MediaElementAudioSourceOptions options)] interface MediaElementAudioSourceNode : AudioNode { [SameObject] readonly attribute HTMLMediaElement mediaElement; }; @@ -406,13 +401,13 @@ dictionary MediaElementAudioSourceOptions { }; [Exposed=Window, - Constructor (BaseAudioContext context, optional AudioNodeOptions options)] + Constructor (AudioContext context, optional AudioNodeOptions options)] interface MediaStreamAudioDestinationNode : AudioNode { readonly attribute MediaStream stream; }; [Exposed=Window, - Constructor (BaseAudioContext context, MediaStreamAudioSourceOptions options)] + Constructor (AudioContext context, MediaStreamAudioSourceOptions options)] interface MediaStreamAudioSourceNode : AudioNode { [SameObject] readonly attribute MediaStream mediaStream; }; @@ -558,6 +553,7 @@ interface AudioWorklet : Worklet { [Global=(Worklet, AudioWorklet), Exposed=AudioWorklet] interface AudioWorkletGlobalScope : WorkletGlobalScope { void registerProcessor (DOMString name, VoidFunction processorCtor); + readonly attribute unsigned long long currentFrame; readonly attribute double currentTime; readonly attribute float sampleRate; }; @@ -567,21 +563,13 @@ interface AudioParamMap { readonly maplike<DOMString, AudioParam>; }; -enum AudioWorkletProcessorState { - "pending", - "running", - "stopped", - "error" -}; - [Exposed=Window, SecureContext, Constructor (BaseAudioContext context, DOMString name, optional AudioWorkletNodeOptions options)] interface AudioWorkletNode : AudioNode { readonly attribute AudioParamMap parameters; readonly attribute MessagePort port; - readonly attribute AudioWorkletProcessorState processorState; - attribute EventHandler onprocessorstatechange; + attribute EventHandler onprocessorerror; }; dictionary AudioWorkletNodeOptions : AudioNodeOptions { @@ -589,7 +577,7 @@ dictionary AudioWorkletNodeOptions : AudioNodeOptions { unsigned long numberOfOutputs = 1; sequence<unsigned long> outputChannelCount; record<DOMString, double> parameterData; - object processorOptions = null; + object? processorOptions = null; }; [Exposed=AudioWorklet, @@ -603,4 +591,5 @@ dictionary AudioParamDescriptor { float defaultValue = 0; float minValue = -3.4028235e38; float maxValue = 3.4028235e38; + AutomationRate automationRate = "a-rate"; }; diff --git a/tests/wpt/web-platform-tests/interfaces/webxr.idl b/tests/wpt/web-platform-tests/interfaces/webxr.idl index 45c01494629..73b55b3149e 100644 --- a/tests/wpt/web-platform-tests/interfaces/webxr.idl +++ b/tests/wpt/web-platform-tests/interfaces/webxr.idl @@ -47,9 +47,9 @@ dictionary XRSessionCreationOptions { attribute EventHandler onend; }; -callback XRFrameRequestCallback = void (DOMHighResTimeStamp time, XRPresentationFrame frame); +callback XRFrameRequestCallback = void (DOMHighResTimeStamp time, XRFrame frame); -[SecureContext, Exposed=Window] interface XRPresentationFrame { +[SecureContext, Exposed=Window] interface XRFrame { readonly attribute FrozenArray<XRView> views; XRDevicePose? getDevicePose(XRCoordinateSystem coordinateSystem); diff --git a/tests/wpt/web-platform-tests/magnetometer/META.yml b/tests/wpt/web-platform-tests/magnetometer/META.yml index ecdfdc3852d..2eeea5b1e99 100644 --- a/tests/wpt/web-platform-tests/magnetometer/META.yml +++ b/tests/wpt/web-platform-tests/magnetometer/META.yml @@ -4,4 +4,4 @@ suggested_reviewers: - riju - Honry - alexshalamov - - pozdnyakov + - rakuco diff --git a/tests/wpt/web-platform-tests/media-source/interfaces.html b/tests/wpt/web-platform-tests/media-source/interfaces.html index a01a1612d2f..13e31489dd2 100644 --- a/tests/wpt/web-platform-tests/media-source/interfaces.html +++ b/tests/wpt/web-platform-tests/media-source/interfaces.html @@ -59,6 +59,7 @@ interface SourceBuffer : EventTarget { attribute EventHandler onabort; void appendBuffer(BufferSource data); void abort(); + void changeType(DOMString type); void remove(double start, unrestricted double end); }; diff --git a/tests/wpt/web-platform-tests/media-source/mediasource-append-buffer.html b/tests/wpt/web-platform-tests/media-source/mediasource-append-buffer.html index 7245f64ab86..ff4cd4e663a 100644 --- a/tests/wpt/web-platform-tests/media-source/mediasource-append-buffer.html +++ b/tests/wpt/web-platform-tests/media-source/mediasource-append-buffer.html @@ -425,11 +425,11 @@ loadedmetadataCalled = true; e.target.removeEventListener(e.type, metadata); }); - sourceBuffer.addEventListener("updateend", function updateend(e) { + sourceBuffer.addEventListener("updateend", test.step_func(function updateend(e) { assert_true(loadedmetadataCalled); assert_equals(mediaElement.readyState, mediaElement.HAVE_METADATA); e.target.removeEventListener(e.type, updateend); - }); + })); test.expectEvent(sourceBuffer, "updateend", "remainingInitSegment append ended."); test.expectEvent(mediaElement, "loadedmetadata", "loadedmetadata event received."); sourceBuffer.appendBuffer(initSegment); @@ -444,11 +444,11 @@ loadeddataCalled = true; e.target.removeEventListener(e.type, loadeddata); }); - sourceBuffer.addEventListener("updateend", function updateend(e) { + sourceBuffer.addEventListener("updateend", test.step_func(function updateend(e) { assert_true(loadeddataCalled); assert_greater_than_equal(mediaElement.readyState, mediaElement.HAVE_CURRENT_DATA); e.target.removeEventListener(e.type, updateend); - }); + })); test.expectEvent(sourceBuffer, "updateend", "mediaSegment append ended."); test.expectEvent(mediaElement, "loadeddata", "loadeddata fired."); sourceBuffer.appendBuffer(mediaSegment); diff --git a/tests/wpt/web-platform-tests/media-source/mediasource-changetype-play.html b/tests/wpt/web-platform-tests/media-source/mediasource-changetype-play.html new file mode 100644 index 00000000000..c4527149d0d --- /dev/null +++ b/tests/wpt/web-platform-tests/media-source/mediasource-changetype-play.html @@ -0,0 +1,42 @@ +<!DOCTYPE html> +<!-- Copyright © 2018 Chromium authors and World Wide Web Consortium, (Massachusetts Institute of Technology, ERCIM, Keio University, Beihang). --> +<html> + <head> + <title>Exercise changeType for supported test types.</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="mediasource-util.js"></script> + <script src="mediasource-changetype-util.js"></script> + </head> + <body> + <div id="log"></div> + <script> + +function generateChangeTypeTests(audio_types, video_types) +{ + async_test(function(test) { + assert_true(audio_types.length > 1, "Browser doesn't support at least 2 types of audio test media" + audio_types); + assert_true(video_types.length > 1, "Browser doesn't support at least 2 types of video test media"); + test.done(); + }, "Check if browser supports enough test media types"); + + // Generate audio-only changeType tests + for (let audio1 of audio_types) { + for (let audio2 of audio_types) { + mediaSourceChangeTypeTest(audio1, audio2, "Test audio-only changeType for " + audio1.type + " <-> " + audio2.type); + } + } + + // Generate video-only changeType tests + for (let video1 of video_types) { + for (let video2 of video_types) { + mediaSourceChangeTypeTest(video1, video2, "Test video-only changeType for " + video1.type + " <-> " + video2.type); + } + } +} + +findSupportedChangeTypeTestTypes(generateChangeTypeTests); + + </script> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/media-source/mediasource-changetype-util.js b/tests/wpt/web-platform-tests/media-source/mediasource-changetype-util.js new file mode 100644 index 00000000000..f6976d2238d --- /dev/null +++ b/tests/wpt/web-platform-tests/media-source/mediasource-changetype-util.js @@ -0,0 +1,156 @@ +// Copyright © 2018 Chromium authors and World Wide Web Consortium, (Massachusetts Institute of Technology, ERCIM, Keio University, Beihang). + +function findSupportedChangeTypeTestTypes(cb) +{ + var CHANGE_TYPE_MEDIA_LIST = [ + { + type: 'video/webm; codecs="vp8"', + is_video: true, + url: 'webm/test-v-128k-320x240-24fps-8kfr.webm' + }, + { + type: 'video/webm; codecs="vp9"', + is_video: true, + url: 'webm/test-vp9.webm' + }, + { + type: 'video/mp4; codecs="avc1.4D4001"', + is_video: true, + url: 'mp4/test-v-128k-320x240-24fps-8kfr.mp4' + }, + { + type: 'video/webm; codecs="vorbis"', + is_video: false, + url: 'webm/test-a-128k-44100Hz-1ch.webm' + }, + { + type: 'video/mp4; codecs="mp4a.40.2"', + is_video: false, + url: 'mp4/test-a-128k-44100Hz-1ch.mp4' + }, + { + type: 'audio/mpeg', + is_video: false, + url: 'mp3/sound_5.mp3' + } + ]; + + var audio_result = []; + var video_result = []; + + for (var i = 0; i < CHANGE_TYPE_MEDIA_LIST.length; ++i) { + var media = CHANGE_TYPE_MEDIA_LIST[i]; + if (window.MediaSource && MediaSource.isTypeSupported(media.type)) { + if (media.is_video === true) { + video_result.push(media); + } else { + audio_result.push(media); + } + } + } + + + cb(audio_result, video_result); +} + +function appendBuffer(test, sourceBuffer, data) +{ + test.expectEvent(sourceBuffer, "update"); + test.expectEvent(sourceBuffer, "updateend"); + sourceBuffer.appendBuffer(data); +} + +function trimBuffered(test, mediaElement, sourceBuffer, minimumPreviousDuration, newDuration) +{ + assert_less_than(newDuration, minimumPreviousDuration); + assert_less_than(minimumPreviousDuration, mediaElement.duration); + test.expectEvent(sourceBuffer, "update"); + test.expectEvent(sourceBuffer, "updateend"); + sourceBuffer.remove(newDuration, Infinity); +} + +function trimDuration(test, mediaElement, mediaSource, newDuration) +{ + assert_less_than(newDuration, mediaElement.duration); + test.expectEvent(mediaElement, "durationchange"); + mediaSource.duration = newDuration; +} + +function runChangeTypeTest(test, mediaElement, mediaSource, typeA, dataA, typeB, dataB) +{ + var sourceBuffer = mediaSource.addSourceBuffer(typeA); + + appendBuffer(test, sourceBuffer, dataA); + + // changeType A->B and append B starting at 0.5 seconds. + test.waitForExpectedEvents(function() + { + sourceBuffer.changeType(typeB); + sourceBuffer.timestampOffset = 0.5; + appendBuffer(test, sourceBuffer, dataB); + }); + + // changeType B->B and append B starting at 1.0 seconds. + test.waitForExpectedEvents(function() + { + sourceBuffer.changeType(typeB); + sourceBuffer.timestampOffset = 1.0; + appendBuffer(test, sourceBuffer, dataB); + }); + + // changeType B->A and append A starting at 1.5 seconds. + test.waitForExpectedEvents(function() + { + sourceBuffer.changeType(typeA); + sourceBuffer.timestampOffset = 1.5; + appendBuffer(test, sourceBuffer, dataA); + }); + + // changeTypoe A->A and append A starting at 1.3 seconds. + test.waitForExpectedEvents(function() + { + sourceBuffer.changeType(typeA); + sourceBuffer.timestampOffset = 1.3; + appendBuffer(test, sourceBuffer, dataA); + }); + + // Trim duration to 2 seconds, then play through to end. + test.waitForExpectedEvents(function() + { + trimBuffered(test, mediaElement, sourceBuffer, 2.1, 2); + }); + + test.waitForExpectedEvents(function() + { + trimDuration(test, mediaElement, mediaSource, 2); + }); + + test.waitForExpectedEvents(function() + { + assert_equals(mediaElement.currentTime, 0); + test.expectEvent(mediaSource, "sourceended"); + test.expectEvent(mediaElement, "play"); + test.expectEvent(mediaElement, "ended"); + mediaSource.endOfStream(); + mediaElement.play(); + }); + + test.waitForExpectedEvents(function() { + test.done(); + }); +} + +function mediaSourceChangeTypeTest(metadataA, metadataB, description) +{ + mediasource_test(function(test, mediaElement, mediaSource) + { + mediaElement.pause(); + mediaElement.addEventListener('error', test.unreached_func("Unexpected event 'error'")); + MediaSourceUtil.loadBinaryData(test, metadataA.url, function(dataA) { + MediaSourceUtil.loadBinaryData(test, metadataB.url, function(dataB) { + runChangeTypeTest(test, mediaElement, mediaSource, metadataA.type, dataA, metadataB.type, dataB); + }); + }); + }, description); +} + diff --git a/tests/wpt/web-platform-tests/media-source/mediasource-changetype.html b/tests/wpt/web-platform-tests/media-source/mediasource-changetype.html new file mode 100644 index 00000000000..263dd826716 --- /dev/null +++ b/tests/wpt/web-platform-tests/media-source/mediasource-changetype.html @@ -0,0 +1,149 @@ +<!DOCTYPE html> +<!-- Copyright © 2018 Chromium authors and World Wide Web Consortium, (Massachusetts Institute of Technology, ERCIM, Keio University, Beihang). --> +<html> + <head> + <meta charset="utf-8"> + <title>SourceBuffer.changeType() test cases.</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="mediasource-util.js"></script> + </head> + <body> + <div id="log"></div> + <script> +mediasource_test(function(test, mediaElement, mediaSource) +{ + var sourceBuffer = mediaSource.addSourceBuffer(MediaSourceUtil.AUDIO_VIDEO_TYPE); + + assert_throws(new TypeError(), function() + { + sourceBuffer.changeType(""); + }, "changeType"); + + test.done(); +}, "Test changeType with an empty type."); + +mediasource_test(function(test, mediaElement, mediaSource) +{ + var sourceBuffer = mediaSource.addSourceBuffer(MediaSourceUtil.AUDIO_VIDEO_TYPE); + + mediaSource.removeSourceBuffer(sourceBuffer); + + assert_throws("InvalidStateError", function() + { + sourceBuffer.changeType(MediaSourceUtil.AUDIO_VIDEO_TYPE); + }, "changeType"); + + test.done(); +}, "Test changeType after SourceBuffer removed from mediaSource."); + +mediasource_test(function(test, mediaElement, mediaSource) +{ + var sourceBuffer = mediaSource.addSourceBuffer(MediaSourceUtil.AUDIO_VIDEO_TYPE); + sourceBuffer.appendBuffer(new Uint8Array(0)); + assert_true(sourceBuffer.updating, "Updating flag set when a buffer is appended."); + + assert_throws("InvalidStateError", function() + { + sourceBuffer.changeType(MediaSourceUtil.AUDIO_VIDEO_TYPE); + }, "changeType"); + + test.done(); +}, "Test changeType while update pending."); + +mediasource_test(function(test, mediaElement, mediaSource) +{ + var sourceBuffer = mediaSource.addSourceBuffer(MediaSourceUtil.AUDIO_VIDEO_TYPE); + + var unsupported_type = null; + assert_false(MediaSource.isTypeSupported(unsupported_type), "null MIME type is not expected to be supported."); + + assert_throws("NotSupportedError", function() + { + sourceBuffer.changeType(unsupported_type); + }, "changeType"); + + test.done(); +}, "Test changeType with null type."); + +mediasource_test(function(test, mediaElement, mediaSource) +{ + var sourceBuffer = mediaSource.addSourceBuffer(MediaSourceUtil.AUDIO_VIDEO_TYPE); + + var unsupported_type = 'invalidType'; + assert_false(MediaSource.isTypeSupported(unsupported_type), unsupported_type + " is not expected to be supported."); + + assert_throws("NotSupportedError", function() + { + sourceBuffer.changeType(unsupported_type); + }, "changeType"); + + test.done(); +}, "Test changeType with unsupported type."); + +mediasource_testafterdataloaded(function(test, mediaElement, mediaSource, segmentInfo, sourceBuffer, mediaData) +{ + test.expectEvent(sourceBuffer, "updatestart"); + test.expectEvent(sourceBuffer, "update"); + test.expectEvent(sourceBuffer, "updateend"); + sourceBuffer.appendBuffer(mediaData); + + test.waitForExpectedEvents(function() + { + mediaSource.endOfStream(); + assert_equals(mediaSource.readyState, "ended"); + + test.expectEvent(mediaSource, "sourceopen"); + sourceBuffer.changeType(MediaSourceUtil.AUDIO_VIDEO_TYPE); + assert_equals(mediaSource.readyState, "open"); + }); + + test.waitForExpectedEvents(function() + { + test.done(); + }); +}, "Test changeType transitioning readyState from 'ended' to 'open'."); + +mediasource_test(function(test, mediaElement, mediaSource) { + var sequenceType = "audio/aac"; + if (!MediaSource.isTypeSupported(sequenceType)) { + sequenceType = "audio/mpeg"; + assert_true(MediaSource.isTypeSupported(sequenceType), + "No bytestream that generates timestamps is supported, aborting test"); + } + + assert_not_equals(MediaSourceUtil.AUDIO_ONLY_TYPE, sequenceType, + "This test requires distinct audio-only types"); + + var sourceBuffer = mediaSource.addSourceBuffer(MediaSourceUtil.AUDIO_ONLY_TYPE); + assert_equals(sourceBuffer.mode, "segments", + "None of the audioOnlyTypes in the test util generate timestamps, but mode is incorrectly set"); + + sourceBuffer.changeType(sequenceType); + assert_equals(sourceBuffer.mode, "sequence", + "Mode is not updated correctly for a bytestream that generates timestamps"); + + test.done(); +}, "Test changeType sets mode to sequence for change to type that generates timestamps"); + +mediasource_test(function(test, mediaElement, mediaSource) { + var sourceBuffer = mediaSource.addSourceBuffer(MediaSourceUtil.AUDIO_ONLY_TYPE); + + assert_equals(sourceBuffer.mode, "segments", + "None of the audioOnlyTypes in the test util generate timestamps, but mode is incorrectly set"); + sourceBuffer.changeType(MediaSourceUtil.AUDIO_ONLY_TYPE); + assert_equals(sourceBuffer.mode, "segments", + "Previous segments mode is not retained correctly for changeType to one that doesn't generate timestamps"); + + sourceBuffer.mode = "sequence"; + assert_equals(sourceBuffer.mode, "sequence", "mode should be sequence now"); + sourceBuffer.changeType(MediaSourceUtil.AUDIO_ONLY_TYPE); + assert_equals(sourceBuffer.mode, "sequence", + "Previous sequence mode is not retained correctly for changeType to one that doesn't generate timestamps"); + + test.done(); +}, "Test changeType retains previous mode when changing to type that doesn't generate timestamps"); + + </script> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/media-source/mp3/sound_5.mp3 b/tests/wpt/web-platform-tests/media-source/mp3/sound_5.mp3 Binary files differnew file mode 100644 index 00000000000..bd202919899 --- /dev/null +++ b/tests/wpt/web-platform-tests/media-source/mp3/sound_5.mp3 diff --git a/tests/wpt/web-platform-tests/media-source/webm/test-vp9.webm b/tests/wpt/web-platform-tests/media-source/webm/test-vp9.webm Binary files differnew file mode 100644 index 00000000000..d63dfdaac71 --- /dev/null +++ b/tests/wpt/web-platform-tests/media-source/webm/test-vp9.webm diff --git a/tests/wpt/web-platform-tests/mediacapture-depth/META.yml b/tests/wpt/web-platform-tests/mediacapture-depth/META.yml new file mode 100644 index 00000000000..6799cdfa1ae --- /dev/null +++ b/tests/wpt/web-platform-tests/mediacapture-depth/META.yml @@ -0,0 +1,4 @@ +suggested_reviewers: + - anssiko + - Honry + - robman diff --git a/tests/wpt/web-platform-tests/mediacapture-depth/idlharness.html b/tests/wpt/web-platform-tests/mediacapture-depth/idlharness.html new file mode 100644 index 00000000000..29e3aa580dc --- /dev/null +++ b/tests/wpt/web-platform-tests/mediacapture-depth/idlharness.html @@ -0,0 +1,31 @@ +<!DOCTYPE html> +<html> + +<head> + <meta charset=utf-8> + <title>Media Capture Depth Stream Extensions IDL test</title> + <link rel="help" href="See https://w3c.github.io/mediacapture-depth/"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/resources/WebIDLParser.js"></script> + <script src="/resources/idlharness.js"></script> +</head> + +<body> + <script> + 'use strict'; + + promise_test(async () => { + const idl = await fetch('/interfaces/mediacapture-depth.idl').then(r => r.text()); + const main = await fetch('/interfaces/mediacapture-main.idl').then(r => r.text()); + + var idl_array = new IdlArray(); + idl_array.add_idls(idl); + idl_array.add_dependency_idls(main); + idl_array.test(); + }, 'mediacapture-depth interfaces'); + </script> + <div id="log"></div> +</body> + +</html> diff --git a/tests/wpt/web-platform-tests/mediacapture-fromelement/idlharness.html b/tests/wpt/web-platform-tests/mediacapture-fromelement/idlharness.html index 1dad5c4c2ec..2403d8aca4a 100644 --- a/tests/wpt/web-platform-tests/mediacapture-fromelement/idlharness.html +++ b/tests/wpt/web-platform-tests/mediacapture-fromelement/idlharness.html @@ -13,42 +13,26 @@ <media id='media' width=10 height=10/> <canvas id='canvas' width=10 height=10/> - <pre id="untested_idl" style="display: none"> - interface HTMLCanvasElement {}; - interface HTMLMediaElement {}; - interface MediaStream {}; - interface MediaStreamTrack {}; - </pre> - <pre id="idl" style="display: none"> - // https://w3c.github.io/mediacapture-fromelement/ - - partial interface HTMLMediaElement { - MediaStream captureStream(); - }; - - partial interface HTMLCanvasElement { - MediaStream captureStream(optional double frameRequestRate); - }; - - interface CanvasCaptureMediaStreamTrack : MediaStreamTrack { - readonly attribute HTMLCanvasElement canvas; - void requestFrame(); - }; - - </pre> <script> - var canvas = document.getElementById('canvas'); - var media = document.getElementById('media'); + 'use strict'; + + promise_test(async () => { + const srcs = ['mediacapture-fromelement', 'mediacapture-main', 'html', 'dom']; + const [idl, main, html, dom] = await Promise.all( + srcs.map(i => fetch(`/interfaces/${i}.idl`).then(r => r.text()))); - var idl_array = new IdlArray(); - idl_array.add_untested_idls(document.getElementById("untested_idl").textContent); - idl_array.add_idls(document.getElementById("idl").textContent); - idl_array.add_objects({ - HTMLMediaElement: [media], - HTMLCanvasElement: [canvas], - CanvasCaptureMediaStreamTrack: [canvas.captureStream().getTracks()[0]], - }); - idl_array.test(); + var idl_array = new IdlArray(); + idl_array.add_idls(idl); + idl_array.add_dependency_idls(main); + idl_array.add_dependency_idls(html); + idl_array.add_dependency_idls(dom); + idl_array.add_objects({ + HTMLMediaElement: ['document.getElementById("media")'], + HTMLCanvasElement: ['document.getElementById("canvas")'], + CanvasCaptureMediaStreamTrack: ['canvas.captureStream().getTracks()[0]'], + }); + idl_array.test(); + }, 'Test mediacapture-fromelement IDL interfaces'); </script> <div id="log"></div> </body> diff --git a/tests/wpt/web-platform-tests/mediacapture-image/idlharness.html b/tests/wpt/web-platform-tests/mediacapture-image/idlharness.html index 146e0e85c8e..4b19b5893a7 100644 --- a/tests/wpt/web-platform-tests/mediacapture-image/idlharness.html +++ b/tests/wpt/web-platform-tests/mediacapture-image/idlharness.html @@ -13,158 +13,14 @@ <body> <canvas id='canvas' width=10 height=10/> - <pre id="untested_idl" style="display: none"> - interface Event {}; - interface EventHandler {}; - interface EventTarget {}; - interface MediaStreamTrack {}; - </pre> - <pre id="idl" style="display: none"> - // https://w3c.github.io/mediacapture-image +<script> + 'use strict'; - [Constructor(MediaStreamTrack videoTrack)] - interface ImageCapture { - Promise<Blob> takePhoto(optional PhotoSettings photoSettings); - Promise<PhotoCapabilities> getPhotoCapabilities(); + promise_test(async () => { + const srcs = ['mediacapture-image', 'mediacapture-main', 'html', 'dom']; + const [idl, main, html, dom] = await Promise.all( + srcs.map(i => fetch(`/interfaces/${i}.idl`).then(r => r.text()))); - Promise<ImageBitmap> grabFrame(); - - readonly attribute MediaStreamTrack track; - }; - - interface PhotoCapabilities { - readonly attribute RedEyeReduction redEyeReduction; - readonly attribute MediaSettingsRange imageHeight; - readonly attribute MediaSettingsRange imageWidth; - readonly attribute FrozenArray<FillLightMode> fillLightMode; - }; - - dictionary PhotoSettings { - FillLightMode fillLightMode; - double imageHeight; - double imageWidth; - boolean redEyeReduction; - }; - - interface MediaSettingsRange { - readonly attribute double max; - readonly attribute double min; - readonly attribute double step; - }; - - enum RedEyeReduction { - "never", - "always", - "controllable", - }; - - enum FillLightMode { - "auto", - "off", - "flash", - }; - - // Partial dictionaries are unsupported, see - // https://github.com/w3c/testharness.js/issues/84 - - partial dictionary MediaTrackSupportedConstraints { - boolean whiteBalanceMode = true; - boolean exposureMode = true; - boolean focusMode = true; - boolean pointsOfInterest = true; - - boolean exposureCompensation = true; - boolean colorTemperature = true; - boolean iso = true; - - boolean brightness = true; - boolean contrast = true; - boolean saturation = true; - boolean sharpness = true; - boolean zoom = true; - boolean torch = true; - }; - - partial dictionary MediaTrackCapabilities { - sequence<DOMString> whiteBalanceMode; - sequence<DOMString> exposureMode; - sequence<DOMString> focusMode; - - MediaSettingsRange exposureCompensation; - MediaSettingsRange colorTemperature; - MediaSettingsRange iso; - - MediaSettingsRange brightness; - MediaSettingsRange contrast; - MediaSettingsRange saturation; - MediaSettingsRange sharpness; - - MediaSettingsRange zoom; - - boolean torch; - }; - - partial dictionary MediaTrackConstraintSet { - ConstrainDOMString whiteBalanceMode; - ConstrainDOMString exposureMode; - ConstrainDOMString focusMode; - ConstrainPoint2D pointsOfInterest; - - ConstrainDouble exposureCompensation; - ConstrainDouble colorTemperature; - ConstrainDouble iso; - - ConstrainDouble brightness; - ConstrainDouble contrast; - ConstrainDouble saturation; - ConstrainDouble sharpness; - - ConstrainDouble zoom; - - ConstrainBoolean torch; - }; - - partial dictionary MediaTrackSettings { - DOMString whiteBalanceMode; - DOMString exposureMode; - DOMString focusMode; - sequence<Point2D> pointsOfInterest; - - double exposureCompensation; - double colorTemperature; - double iso; - - double brightness; - double contrast; - double saturation; - double sharpness; - - double zoom; - - boolean torch; - }; - - dictionary ConstrainPoint2DParameters { - sequence<Point2D> exact; - sequence<Point2D> ideal; - }; - - typedef (sequence<Point2D> or ConstrainPoint2DParameters) ConstrainPoint2D; - - enum MeteringMode { - "none", - "manual", - "single-shot", - "continuous" - }; - - dictionary Point2D { - double x = 0.0; - double y = 0.0; - }; - - </pre> - <script> var canvas = document.getElementById('canvas'); var context = canvas.getContext("2d"); context.fillStyle = "red"; @@ -172,13 +28,15 @@ var track = canvas.captureStream().getVideoTracks()[0]; var idl_array = new IdlArray(); - idl_array.add_untested_idls( - document.getElementById("untested_idl").textContent); - idl_array.add_idls(document.getElementById("idl").textContent); + idl_array.add_idls(idl); + idl_array.add_dependency_idls(main); + idl_array.add_dependency_idls(html); + idl_array.add_dependency_idls(dom); idl_array.add_objects({ ImageCapturer : [new ImageCapture(track)] }); idl_array.test(); + }, 'Test mediacapture-image IDL interfaces'); </script> <div id="log"></div> </body> diff --git a/tests/wpt/web-platform-tests/mediacapture-record/idlharness.html b/tests/wpt/web-platform-tests/mediacapture-record/idlharness.html index 2da20a13171..8e4ba3c3eba 100644 --- a/tests/wpt/web-platform-tests/mediacapture-record/idlharness.html +++ b/tests/wpt/web-platform-tests/mediacapture-record/idlharness.html @@ -12,76 +12,11 @@ </head> <body> <canvas id='canvas' width=10 height=10/> - - <pre id="untested_idl" style="display: none"> - interface Event {}; - interface EventHandler {}; - interface EventTarget {}; - interface MediaStream {}; - </pre> - <pre id="idl" style="display: none"> - // https://w3c.github.io/mediacapture-record/MediaRecorder.html - - [Constructor(MediaStream stream, optional MediaRecorderOptions options)] - interface MediaRecorder : EventTarget { - readonly attribute MediaStream stream; - readonly attribute DOMString mimeType; - readonly attribute RecordingState state; - attribute EventHandler onstart; - attribute EventHandler onstop; - attribute EventHandler ondataavailable; - attribute EventHandler onpause; - attribute EventHandler onresume; - attribute EventHandler onerror; - readonly attribute unsigned long videoBitsPerSecond; - readonly attribute unsigned long audioBitsPerSecond; - - void start(optional long timeslice); - void stop(); - void pause(); - void resume(); - void requestData(); - - static boolean isTypeSupported(DOMString type); - }; - - dictionary MediaRecorderOptions { - DOMString mimeType; - unsigned long audioBitsPerSecond; - unsigned long videoBitsPerSecond; - unsigned long bitsPerSecond; - }; - - enum RecordingState { - "inactive", - "recording", - "paused" - }; - - [Constructor(DOMString type, BlobEventInit eventInitDict)] - interface BlobEvent : Event { - [SameObject] readonly attribute Blob data; - readonly attribute DOMHighResTimeStamp timecode; - }; - - dictionary BlobEventInit { - required Blob data; - DOMHighResTimeStamp timecode; - }; - - dictionary MediaRecorderErrorEventInit : EventInit { - required DOMException error; - }; - - [Exposed=Window, Constructor(DOMString type, MediaRecorderErrorEventInit eventInitDict)] - interface MediaRecorderErrorEvent : Event { - [SameObject] readonly attribute DOMException error; - }; - - </pre> <script> - promise_test(async function() { - const dom = await fetch('/interfaces/dom.idl').then(r => r.text()); + promise_test(async () => { + const srcs = ['mediacapture-record', 'mediacapture-main', 'html', 'dom']; + const [idl, main, html, dom] = await Promise.all( + srcs.map(i => fetch(`/interfaces/${i}.idl`).then(r => r.text()))); var canvas = document.getElementById('canvas'); var context = canvas.getContext("2d"); @@ -90,9 +25,10 @@ var stream = canvas.captureStream(); var idl_array = new IdlArray(); - idl_array.add_untested_idls(dom, { only: ['EventInit'] }); - idl_array.add_untested_idls(document.getElementById("untested_idl").textContent); - idl_array.add_idls(document.getElementById("idl").textContent); + idl_array.add_idls(idl); + idl_array.add_dependency_idls(main); + idl_array.add_dependency_idls(html); + idl_array.add_dependency_idls(dom); idl_array.add_objects({ MediaRecorder: [new MediaRecorder(stream)], }); diff --git a/tests/wpt/web-platform-tests/mediacapture-streams/MediaDevices-IDL-all.html b/tests/wpt/web-platform-tests/mediacapture-streams/MediaDevices-IDL-all.html index a793bedc78d..e398c8b1e19 100644 --- a/tests/wpt/web-platform-tests/mediacapture-streams/MediaDevices-IDL-all.html +++ b/tests/wpt/web-platform-tests/mediacapture-streams/MediaDevices-IDL-all.html @@ -19,29 +19,20 @@ <script> 'use strict'; - function doIdlTest([dom, idlText]) { - var idl_array = new IdlArray(); - - // dummies - idl_array.add_untested_idls(dom, { only: ['Event', 'EventInit']}); - idl_array.add_untested_idls("interface Navigator {};"); - idl_array.add_untested_idls("interface EventTarget {};"); - idl_array.add_untested_idls("interface EventHandler {};"); - - idl_array.add_idls(idlText); + promise_test(async () => { + const main = await fetch('/interfaces/mediacapture-main.idl').then(r => r.text()); + const dom = await fetch('/interfaces/dom.idl').then(r => r.text()); + const html = await fetch('/interfaces/html.idl').then(r => r.text()); - idl_array.add_objects({"Navigator": ["navigator"]}); - idl_array.add_objects({"MediaDevices":["navigator.mediaDevices"]}); + var idl_array = new IdlArray(); + idl_array.add_idls(main); + idl_array.add_dependency_idls(html); + idl_array.add_dependency_idls(dom); + idl_array.add_objects({ + Navigator: ["navigator"], + MediaDevices: ["navigator.mediaDevices"] + }); idl_array.test(); - } - - promise_test(() => { - return Promise.all( - [ - '/interfaces/dom.idl', - '/interfaces/mediacapture-main.idl', - ].map(url => fetch(url).then(r => r.text()))) - .then(doIdlTest); }, 'Test driver') </script> </body> diff --git a/tests/wpt/web-platform-tests/mediacapture-streams/MediaDevices-IDL-enumerateDevices.html b/tests/wpt/web-platform-tests/mediacapture-streams/MediaDevices-IDL-enumerateDevices.html index 0d6c6c00bf5..446ee15459d 100644 --- a/tests/wpt/web-platform-tests/mediacapture-streams/MediaDevices-IDL-enumerateDevices.html +++ b/tests/wpt/web-platform-tests/mediacapture-streams/MediaDevices-IDL-enumerateDevices.html @@ -20,13 +20,15 @@ <script> "use strict"; - function doIdlTest([dom, idlText]) { - const MDI_idl = new IdlArray(); + promise_test(async () => { + const idl = await fetch(`/interfaces/mediacapture-main.idl`).then(r => r.text()); + const dom = await fetch(`/interfaces/dom.idl`).then(r => r.text()); + const html = await fetch(`/interfaces/html.idl`).then(r => r.text()); - MDI_idl.add_untested_idls(dom, { only: ['Event', 'EventInit'] }); - MDI_idl.add_untested_idls("interface EventTarget {};"); - MDI_idl.add_untested_idls("interface Navigator {};"); - MDI_idl.add_idls(idlText); + const MDI_idl = new IdlArray(); + MDI_idl.add_idls(idl); + MDI_idl.add_dependency_idls(html); + MDI_idl.add_dependency_idls(dom); assert_true(undefined !== navigator.mediaDevices.enumerateDevices, "navigator.mediaDevices.enumerateDevices exists"); @@ -56,16 +58,6 @@ MDI_idl.test(); }); - } - - promise_test(() => { - return Promise.all( - [ - '/interfaces/dom.idl', - '/interfaces/mediacapture-main.idl', - ].map(url => fetch(url).then(r => r.text()))) - .then(doIdlTest); - }, "Test MediaDevices.enumerateDevices call and result. Types only."); </script> </body> diff --git a/tests/wpt/web-platform-tests/mediacapture-streams/MediaStreamTrack-getSettings.https.html b/tests/wpt/web-platform-tests/mediacapture-streams/MediaStreamTrack-getSettings.https.html index 4c2feef37ec..0eb3a26cd82 100644 --- a/tests/wpt/web-platform-tests/mediacapture-streams/MediaStreamTrack-getSettings.https.html +++ b/tests/wpt/web-platform-tests/mediacapture-streams/MediaStreamTrack-getSettings.https.html @@ -75,4 +75,36 @@ } }); }, 'groupId is correctly reported by getSettings() for all devices'); + + promise_test(t => { + return navigator.mediaDevices.getUserMedia({audio: true}).then(stream => { + let settings = stream.getAudioTracks()[0].getSettings(); + assert_equals(typeof(settings.deviceId), "string", + "deviceId should exist and it should be a string."); + assert_equals(typeof(settings.groupId), "string", + "groupId should exist and it should be a string."); + assert_equals(typeof(settings.volume), "number", + "volume should exist and it should be a number."); + assert_true(settings.volume >= 0.0 && settings.volume <= 1.0, + "volume should be a number in the range [0.0, 1.0]."); + assert_equals(typeof(settings.sampleRate), "number", + "sampleRate should exist and it should be a number."); + assert_true(settings.sampleRate > 0, "sampleRate should be positive."); + assert_equals(typeof(settings.sampleSize), "number", + "sampleSize should exist and it should be a number."); + assert_true(settings.sampleSize > 0, "sampleSize should be positive."); + assert_equals(typeof(settings.echoCancellation), "boolean", + "echoCancellation should exist and it should be a boolean."); + assert_equals(typeof(settings.autoGainControl), "boolean", + "autoGainControl should exist and it should be a boolean."); + assert_equals(typeof(settings.noiseSuppression), "boolean", + "noiseSuppression should exist and it should be a boolean."); + assert_equals(typeof(settings.latency), "number", + "latency should exist and it should be a number."); + assert_true(settings.latency >= 0, "latency should not be negative."); + assert_equals(typeof(settings.channelCount), "number", + "channelCount should exist and it should be a number."); + assert_true(settings.channelCount > 0, "channelCount should be positive."); + }); + }, 'audio properties are reported by getSettings()'); </script> diff --git a/tests/wpt/web-platform-tests/orientation-event/idlharness.html b/tests/wpt/web-platform-tests/orientation-event/idlharness.html deleted file mode 100644 index dabb45cc477..00000000000 --- a/tests/wpt/web-platform-tests/orientation-event/idlharness.html +++ /dev/null @@ -1,101 +0,0 @@ -<!DOCTYPE html> -<meta charset="utf-8" /> -<title>DeviceOrientation Event IDL tests</title> -<link rel="author" title="Intel" href="http://www.intel.com"> -<link rel="help" href="http://dev.w3.org/geo/api/spec-source-orientation.html"> -<script src="/resources/testharness.js"></script> -<script src="/resources/testharnessreport.js"></script> -<script src="/resources/WebIDLParser.js"></script> -<script src="/resources/idlharness.js"></script> - -<script type="text/plain" id="untested_idl"> -interface Event { -}; - -interface EventHandler { -}; - -dictionary EventInit { -}; - -interface Window { -}; -</script> - -<script type="text/plain" id="idl"> -partial interface Window { - attribute EventHandler ondeviceorientation; - attribute EventHandler ondevicemotion; -}; - -[Constructor(DOMString type, optional DeviceOrientationEventInit eventInitDict)] -interface DeviceOrientationEvent : Event { - readonly attribute double? alpha; - readonly attribute double? beta; - readonly attribute double? gamma; - readonly attribute boolean absolute; -}; - -dictionary DeviceOrientationEventInit : EventInit { - double? alpha = null; - double? beta = null; - double? gamma = null; - boolean absolute = false; -}; - -[NoInterfaceObject] -interface DeviceAcceleration { - readonly attribute double? x; - readonly attribute double? y; - readonly attribute double? z; -}; - -[NoInterfaceObject] -interface DeviceRotationRate { - readonly attribute double? alpha; - readonly attribute double? beta; - readonly attribute double? gamma; -}; - -[Constructor(DOMString type, optional DeviceMotionEventInit eventInitDict)] -interface DeviceMotionEvent : Event { - readonly attribute DeviceAcceleration? acceleration; - readonly attribute DeviceAcceleration? accelerationIncludingGravity; - readonly attribute DeviceRotationRate? rotationRate; - readonly attribute double interval; -}; - -dictionary DeviceAccelerationInit { - double? x = null; - double? y = null; - double? z = null; -}; - -dictionary DeviceRotationRateInit { - double? alpha = null; - double? beta = null; - double? gamma = null; -}; - -dictionary DeviceMotionEventInit : EventInit { - DeviceAcceleration? acceleration; - DeviceAcceleration? accelerationIncludingGravity; - DeviceRotationRate? rotationRate; - double interval = 0; -}; -</script> - -<script> -"use strict"; -var idl_array = new IdlArray(); - -idl_array.add_untested_idls(document.getElementById("untested_idl").textContent); -idl_array.add_idls(document.getElementById("idl").textContent); - -idl_array.add_objects({ - DeviceOrientationEvent: ['new DeviceOrientationEvent("foo")'], - DeviceMotionEvent: ['new DeviceMotionEvent("foo")'], -}); - -idl_array.test(); -</script> diff --git a/tests/wpt/web-platform-tests/orientation-event/idlharness.window.js b/tests/wpt/web-platform-tests/orientation-event/idlharness.window.js new file mode 100644 index 00000000000..ed8309d6480 --- /dev/null +++ b/tests/wpt/web-platform-tests/orientation-event/idlharness.window.js @@ -0,0 +1,23 @@ +// META: script=/resources/WebIDLParser.js +// META: script=/resources/idlharness.js + +// https://w3c.github.io/deviceorientation/spec-source-orientation.html + +'use strict'; + +promise_test(async () => { + const idl = await fetch('/interfaces/orientation-event.idl').then(r => r.text()); + const dom = await fetch('/interfaces/dom.idl').then(r => r.text()); + const html = await fetch('/interfaces/html.idl').then(r => r.text()); + + var idl_array = new IdlArray(); + idl_array.add_idls(idl); + idl_array.add_dependency_idls(html); + idl_array.add_dependency_idls(dom); + idl_array.add_objects({ + Window: ['window'], + DeviceOrientationEvent: ['new DeviceOrientationEvent("foo")'], + DeviceMotionEvent: ['new DeviceMotionEvent("foo")'], + }); + idl_array.test(); +}, 'orientation-event interfaces'); diff --git a/tests/wpt/web-platform-tests/orientation-sensor/META.yml b/tests/wpt/web-platform-tests/orientation-sensor/META.yml index ecdfdc3852d..2eeea5b1e99 100644 --- a/tests/wpt/web-platform-tests/orientation-sensor/META.yml +++ b/tests/wpt/web-platform-tests/orientation-sensor/META.yml @@ -4,4 +4,4 @@ suggested_reviewers: - riju - Honry - alexshalamov - - pozdnyakov + - rakuco diff --git a/tests/wpt/web-platform-tests/payment-request/payment-request-canmakepayment-method-manual.https.html b/tests/wpt/web-platform-tests/payment-request/payment-request-canmakepayment-method-manual.https.html index f2883b8529e..5ea639b7073 100644 --- a/tests/wpt/web-platform-tests/payment-request/payment-request-canmakepayment-method-manual.https.html +++ b/tests/wpt/web-platform-tests/payment-request/payment-request-canmakepayment-method-manual.https.html @@ -126,9 +126,12 @@ promise_test(async t => { function manualTest1(elem){ elem.disabled = true; + + // NB: request.show has to be called outside of promise_test to ensure the + // user's click is still visible to PaymentRequest.show. + const request = new PaymentRequest(defaultMethods, defaultDetails); + const acceptPromise = request.show(); // Sets state to "interactive" promise_test(async t => { - const request = new PaymentRequest(defaultMethods, defaultDetails); - const acceptPromise = request.show(); // Sets state to "interactive" const canMakePaymentPromise = request.canMakePayment(); try { const result = await canMakePaymentPromise; @@ -148,11 +151,14 @@ function manualTest1(elem){ } function manualTest2(elem){ - elem.disabled = true; + elem.disabled = true; + + // See above for why it's important for these lines to be outside of + // promise_test. + const request = new PaymentRequest(defaultMethods, defaultDetails); + const acceptPromise = request.show(); // The state is now "interactive" + acceptPromise.catch(() => {}); // no-op, just to silence unhandled rejection in devtools. promise_test(async t => { - const request = new PaymentRequest(defaultMethods, defaultDetails); - const acceptPromise = request.show(); // The state is now "interactive" - acceptPromise.catch(() => {}); // no-op, just to silence unhandled rejection in devtools. await request.abort(); // The state is now "closed" await promise_rejects(t, "InvalidStateError", request.canMakePayment()); try { diff --git a/tests/wpt/web-platform-tests/performance-timeline/performanceentry-tojson.html b/tests/wpt/web-platform-tests/performance-timeline/performanceentry-tojson.any.js index 8576872ec75..44f0156eec1 100644 --- a/tests/wpt/web-platform-tests/performance-timeline/performanceentry-tojson.html +++ b/tests/wpt/web-platform-tests/performance-timeline/performanceentry-tojson.any.js @@ -1,12 +1,3 @@ -<!doctype html> -<html> -<head> -<script src="/resources/testharness.js"></script> -<script src="/resources/testharnessreport.js"></script> -</head> -<body> -<script> - test(() => { performance.mark('markName'); performance.measure('measureName'); @@ -28,6 +19,3 @@ test(() => { } } }, 'Test toJSON() in PerformanceEntry'); -</script> -</body> -</html>
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/performance-timeline/po-takeRecords.html b/tests/wpt/web-platform-tests/performance-timeline/po-takeRecords.any.js index eb660f7125a..86ad397b0a5 100644 --- a/tests/wpt/web-platform-tests/performance-timeline/po-takeRecords.html +++ b/tests/wpt/web-platform-tests/performance-timeline/po-takeRecords.any.js @@ -1,11 +1,7 @@ -<!DOCTYPE HTML> -<meta charset=utf-8> -<title>PerformanceObserver: takeRecords</title> -<script src="/resources/testharness.js"></script> -<script src="/resources/testharnessreport.js"></script> -<script src="performanceobservers.js"></script> -<script> - async_test(function (t) { +// META: title=PerformanceObserver: takeRecords +// META: script=performanceobservers.js + +async_test(function (t) { const observer = new PerformanceObserver(function (entryList, observer) { assert_unreached('This callback should not have been called.') }); @@ -36,4 +32,3 @@ observer.disconnect(); t.done(); }, "Test PerformanceObserver's takeRecords()"); -</script> diff --git a/tests/wpt/web-platform-tests/performance-timeline/webtiming-resolution.html b/tests/wpt/web-platform-tests/performance-timeline/webtiming-resolution.any.js index 1723c293da8..4031388a3bc 100644 --- a/tests/wpt/web-platform-tests/performance-timeline/webtiming-resolution.html +++ b/tests/wpt/web-platform-tests/performance-timeline/webtiming-resolution.any.js @@ -1,11 +1,3 @@ -<!DOCTYPE HTML> -<html> -<head> -<script src="/resources/testharness.js"></script> -<script src="/resources/testharnessreport.js"></script> -</head> -<body> -<script> function testTimeResolution(highResTimeFunc, funcString) { test(() => { const t0 = highResTimeFunc(); @@ -30,6 +22,3 @@ function timeByUserTiming() { testTimeResolution(timeByPerformanceNow, 'performance.now()'); testTimeResolution(timeByUserTiming, 'entry.startTime'); -</script> -</body> -</html> diff --git a/tests/wpt/web-platform-tests/presentation-api/controlling-ua/idlharness.https.html b/tests/wpt/web-platform-tests/presentation-api/controlling-ua/idlharness.https.html index 1077ddfd866..04d1741da0a 100644 --- a/tests/wpt/web-platform-tests/presentation-api/controlling-ua/idlharness.https.html +++ b/tests/wpt/web-platform-tests/presentation-api/controlling-ua/idlharness.https.html @@ -8,134 +8,35 @@ <script src="/resources/WebIDLParser.js"></script> <script src="/resources/idlharness.js"></script> -<script id="untested_idl" type="text/plain"> -interface Navigator { -}; -interface EventTarget { -}; -interface EventHandler { -}; -interface Event { -}; -dictionary EventInit { -}; -</script> - -<script id='idl' type="text/plain"> -partial interface Navigator { - [SecureContext, - SameObject] - readonly attribute Presentation presentation; -}; - -[SecureContext, - Exposed=Window] -interface Presentation { -}; - -partial interface Presentation { - attribute PresentationRequest? defaultRequest; -}; - -[Constructor(USVString url), - Constructor(sequence<USVString> urls), - SecureContext, - Exposed=Window] -interface PresentationRequest : EventTarget { - Promise<PresentationConnection> start(); - Promise<PresentationConnection> reconnect(USVString presentationId); - Promise<PresentationAvailability> getAvailability(); - - attribute EventHandler onconnectionavailable; -}; - -[SecureContext, - Exposed=Window] -interface PresentationAvailability : EventTarget { - readonly attribute boolean value; - attribute EventHandler onchange; -}; - -[Constructor(DOMString type, PresentationConnectionAvailableEventInit eventInitDict), - SecureContext, - Exposed=Window] -interface PresentationConnectionAvailableEvent : Event { - [SameObject] - readonly attribute PresentationConnection connection; -}; - -dictionary PresentationConnectionAvailableEventInit : EventInit { - required PresentationConnection connection; -}; - -enum PresentationConnectionState { - "connecting", - "connected", - "closed", - "terminated" -}; - -enum BinaryType { - "blob", - "arraybuffer" -}; - -[SecureContext, - Exposed=Window] -interface PresentationConnection : EventTarget { - readonly attribute USVString id; - readonly attribute USVString url; - readonly attribute PresentationConnectionState state; - void close(); - void terminate(); - attribute EventHandler onconnect; - attribute EventHandler onclose; - attribute EventHandler onterminate; - - // Communication - attribute BinaryType binaryType; - attribute EventHandler onmessage; - void send(DOMString message); - void send(Blob data); - void send(ArrayBuffer data); - void send(ArrayBufferView data); -}; - -enum PresentationConnectionCloseReason { - "error", - "closed", - "wentaway" -}; - -[Constructor(DOMString type, PresentationConnectionCloseEventInit eventInitDict), - SecureContext, - Exposed=Window] -interface PresentationConnectionCloseEvent : Event { - readonly attribute PresentationConnectionCloseReason reason; - readonly attribute DOMString message; -}; - -dictionary PresentationConnectionCloseEventInit : EventInit { - required PresentationConnectionCloseReason reason; - DOMString message = ""; -}; -</script> - <script> - (function() { - "use strict"; - var idl_array = new IdlArray(); - var idls = document.getElementById('idl').textContent; - idl_array.add_untested_idls(document.getElementById('untested_idl').textContent); - idl_array.add_idls(idls); - window.presentation_request = new PresentationRequest("/presentation-api/receiving-ua/idlharness.html"); - window.presentation_request_urls = new PresentationRequest(["/presentation-api/receiving-ua/idlharness.html", - "https://www.example.com/presentation.html"]); - navigator.presentation.defaultRequest = presentation_request; - idl_array.add_objects({ - Presentation: ['navigator.presentation'], - PresentationRequest: ['navigator.presentation.defaultRequest', 'presentation_request', 'presentation_request_urls'] - }); - idl_array.test(); - })(); + "use strict"; + + promise_test(async () => { + const srcs = ['presentation-api', 'dom', 'html']; + const [idl, dom, html] = await Promise.all( + srcs.map(i => fetch(`/interfaces/${i}.idl`).then(r => r.text()))); + + const idl_array = new IdlArray(); + idl_array.add_idls(idl, { + except: [ + 'PresentationReceiver', + 'PresentationConnectionList' + ] + }); + idl_array.add_dependency_idls(dom); + idl_array.add_dependency_idls(html); + + window.presentation_request = new PresentationRequest("/presentation-api/receiving-ua/idlharness.html"); + window.presentation_request_urls = new PresentationRequest([ + "/presentation-api/receiving-ua/idlharness.html", + "https://www.example.com/presentation.html" + ]); + navigator.presentation.defaultRequest = presentation_request; + + idl_array.add_objects({ + Presentation: ['navigator.presentation'], + PresentationRequest: ['navigator.presentation.defaultRequest', 'presentation_request', 'presentation_request_urls'] + }); + idl_array.test(); + }, "Test IDL implementation of Presentation API"); </script> diff --git a/tests/wpt/web-platform-tests/presentation-api/receiving-ua/support/idlharness_receiving-ua.html b/tests/wpt/web-platform-tests/presentation-api/receiving-ua/support/idlharness_receiving-ua.html index 32deeb49a54..2d5a5b17f14 100644 --- a/tests/wpt/web-platform-tests/presentation-api/receiving-ua/support/idlharness_receiving-ua.html +++ b/tests/wpt/web-platform-tests/presentation-api/receiving-ua/support/idlharness_receiving-ua.html @@ -11,120 +11,22 @@ <script src="../common.js"></script> <script src="stash.js"></script> -<script id="untested_idl" type="text/plain"> -interface Navigator { -}; -interface EventTarget { -}; -interface EventHandler { -}; -interface Event { -}; -dictionary EventInit { -}; -</script> - -<script id='idl' type="text/plain"> -partial interface Navigator { - [SecureContext, - SameObject] - readonly attribute Presentation presentation; -}; - -[SecureContext, - Exposed=Window] -interface Presentation { -}; - -partial interface Presentation { - readonly attribute PresentationReceiver? receiver; -}; - -[Constructor(DOMString type, PresentationConnectionAvailableEventInit eventInitDict), - SecureContext, - Exposed=Window] -interface PresentationConnectionAvailableEvent : Event { - [SameObject] - readonly attribute PresentationConnection connection; -}; - -dictionary PresentationConnectionAvailableEventInit : EventInit { - required PresentationConnection connection; -}; - -enum PresentationConnectionState { - "connecting", - "connected", - "closed", - "terminated" -}; - -enum BinaryType { - "blob", - "arraybuffer" -}; - -[SecureContext, - Exposed=Window] -interface PresentationConnection : EventTarget { - readonly attribute USVString id; - readonly attribute USVString url; - readonly attribute PresentationConnectionState state; - void close(); - void terminate(); - attribute EventHandler onconnect; - attribute EventHandler onclose; - attribute EventHandler onterminate; - - // Communication - attribute BinaryType binaryType; - attribute EventHandler onmessage; - void send(DOMString message); - void send(Blob data); - void send(ArrayBuffer data); - void send(ArrayBufferView data); -}; - -enum PresentationConnectionCloseReason { - "error", - "closed", - "wentaway" -}; - -[Constructor(DOMString type, PresentationConnectionCloseEventInit eventInitDict), - SecureContext, - Exposed=Window] -interface PresentationConnectionCloseEvent : Event { - readonly attribute PresentationConnectionCloseReason reason; - readonly attribute DOMString message; -}; - -dictionary PresentationConnectionCloseEventInit : EventInit { - required PresentationConnectionCloseReason reason; - DOMString message = ""; -}; - -[SecureContext, - Exposed=Window] -interface PresentationReceiver { - readonly attribute Promise<PresentationConnectionList> connectionList; -}; - -[SecureContext, - Exposed=Window] -interface PresentationConnectionList : EventTarget { - readonly attribute FrozenArray<PresentationConnection> connections; - attribute EventHandler onconnectionavailable; -}; -</script> - <script> - (() => { - 'use strict'; + 'use strict'; + (async () => { + const srcs = ['presentation-api', 'dom', 'html']; + const [idl, dom, html] = await Promise.all( + srcs.map(i => fetch(`/interfaces/${i}.idl`).then(r => r.text()))); + const idl_array = new IdlArray(); - const idls = document.getElementById('idl').textContent; - idl_array.add_untested_idls(document.getElementById('untested_idl').textContent); - idl_array.add_idls(idls); + idl_array.add_idls(idl, { + except: [ + 'PresentationRequest', + 'PresentationAvailability', + ] + }); + idl_array.add_dependency_idls(dom); + idl_array.add_dependency_idls(html); idl_array.add_objects({ Presentation: ['navigator.presentation'], PresentationReceiver: ['navigator.presentation.receiver'] diff --git a/tests/wpt/web-platform-tests/proximity/META.yml b/tests/wpt/web-platform-tests/proximity/META.yml index 36580a1409c..057020d72d1 100644 --- a/tests/wpt/web-platform-tests/proximity/META.yml +++ b/tests/wpt/web-platform-tests/proximity/META.yml @@ -1,3 +1,5 @@ suggested_reviewers: - zqzhang - dontcallmedom + - Honry + - rakuco diff --git a/tests/wpt/web-platform-tests/push-api/META.yml b/tests/wpt/web-platform-tests/push-api/META.yml new file mode 100644 index 00000000000..fe808bc6151 --- /dev/null +++ b/tests/wpt/web-platform-tests/push-api/META.yml @@ -0,0 +1,2 @@ +suggested_reviewers: + - beverloo diff --git a/tests/wpt/web-platform-tests/push-api/idlharness.https.any.js b/tests/wpt/web-platform-tests/push-api/idlharness.https.any.js new file mode 100644 index 00000000000..17eb6101164 --- /dev/null +++ b/tests/wpt/web-platform-tests/push-api/idlharness.https.any.js @@ -0,0 +1,17 @@ +// META: global=window,worker +// META: script=/resources/WebIDLParser.js +// META: script=/resources/idlharness.js + +// https://w3c.github.io/push-api/ + +promise_test(async () => { + const idl = await fetch('/interfaces/push-api.idl').then(r => r.text()); + const worker = await fetch('/interfaces/ServiceWorker.idl').then(r => r.text()); + const dom = await fetch('/interfaces/dom.idl').then(r => r.text()); + + const idl_array = new IdlArray(); + idl_array.add_idls(idl); + idl_array.add_dependency_idls(worker); + idl_array.add_dependency_idls(dom); + idl_array.test(); +}, 'push-api interfaces'); diff --git a/tests/wpt/web-platform-tests/resources/idlharness.js b/tests/wpt/web-platform-tests/resources/idlharness.js index b3450053ce0..773d55282c4 100644 --- a/tests/wpt/web-platform-tests/resources/idlharness.js +++ b/tests/wpt/web-platform-tests/resources/idlharness.js @@ -821,8 +821,15 @@ IdlArray.prototype.test = function() this.members[name].test(); if (name in this.objects) { - this.objects[name].forEach(function(str) + const objects = this.objects[name]; + if (!objects || !Array.isArray(objects)) { + throw new IdlHarnessError(`Invalid or empty objects for member ${name}`); + } + objects.forEach(function(str) { + if (!this.members[name] || !(this.members[name] instanceof IdlInterface)) { + throw new IdlHarnessError(`Invalid object member name ${name}`); + } this.members[name].test_object(str); }.bind(this)); } diff --git a/tests/wpt/web-platform-tests/resources/test/tests/functional/worker-dedicated.html b/tests/wpt/web-platform-tests/resources/test/tests/functional/worker-dedicated.html index 79458eee3f3..2edb60b4507 100644 --- a/tests/wpt/web-platform-tests/resources/test/tests/functional/worker-dedicated.html +++ b/tests/wpt/web-platform-tests/resources/test/tests/functional/worker-dedicated.html @@ -50,7 +50,7 @@ test(function(t) { }, { "status_string": "FAIL", - "name": "Untitled", + "name": "worker-error", "properties": {}, "message": "Error: This failure is expected." }, diff --git a/tests/wpt/web-platform-tests/resources/testharness.js b/tests/wpt/web-platform-tests/resources/testharness.js index 98897958bc4..d4bf2920616 100644 --- a/tests/wpt/web-platform-tests/resources/testharness.js +++ b/tests/wpt/web-platform-tests/resources/testharness.js @@ -213,12 +213,9 @@ policies and contribution forms [3]. } WindowTestEnvironment.prototype.next_default_test_name = function() { - //Don't use document.title to work around an Opera bug in XHTML documents - var title = document.getElementsByTagName("title")[0]; - var prefix = (title && title.firstChild && title.firstChild.data) || "Untitled"; var suffix = this.name_counter > 0 ? " " + this.name_counter : ""; this.name_counter++; - return prefix + suffix; + return get_title() + suffix; }; WindowTestEnvironment.prototype.on_new_harness_properties = function(properties) { @@ -288,7 +285,7 @@ policies and contribution forms [3]. WorkerTestEnvironment.prototype.next_default_test_name = function() { var suffix = this.name_counter > 0 ? " " + this.name_counter : ""; this.name_counter++; - return "Untitled" + suffix; + return get_title() + suffix; }; WorkerTestEnvironment.prototype.on_new_harness_properties = function() {}; @@ -2917,6 +2914,25 @@ policies and contribution forms [3]. return undefined; } + /** Returns the <title> or filename or "Untitled" */ + function get_title() + { + if ('document' in global_scope) { + //Don't use document.title to work around an Opera bug in XHTML documents + var title = document.getElementsByTagName("title")[0]; + if (title && title.firstChild && title.firstChild.data) { + return title.firstChild.data; + } + } + if ('META_TITLE' in global_scope && META_TITLE) { + return META_TITLE; + } + if ('location' in global_scope) { + return location.pathname.substring(location.pathname.lastIndexOf('/') + 1, location.pathname.indexOf('.')); + } + return "Untitled"; + } + function supports_post_message(w) { var supports; diff --git a/tests/wpt/web-platform-tests/scroll-animations/META.yml b/tests/wpt/web-platform-tests/scroll-animations/META.yml new file mode 100644 index 00000000000..1ab5f042814 --- /dev/null +++ b/tests/wpt/web-platform-tests/scroll-animations/META.yml @@ -0,0 +1,3 @@ +suggested_reviewers: + - birtles + - theres-waldo diff --git a/tests/wpt/web-platform-tests/scroll-animations/idlharness.html b/tests/wpt/web-platform-tests/scroll-animations/idlharness.html new file mode 100644 index 00000000000..82dd59c64e0 --- /dev/null +++ b/tests/wpt/web-platform-tests/scroll-animations/idlharness.html @@ -0,0 +1,38 @@ +<!DOCTYPE html> +<html> + +<head> + <meta charset="utf-8"> + <title>scroll-animations IDL tests</title> + <link rel="help" href="https://wicg.github.io/scroll-animations/"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/resources/WebIDLParser.js"></script> + <script src="/resources/idlharness.js"></script> +</head> + +<body> + + <script> + 'use strict'; + + promise_test(async () => { + const idl = await fetch('/interfaces/scroll-animations.idl').then(r => r.text()); + const web = await fetch('/interfaces/web-animations.idl').then(r => r.text()); + const dom = await fetch('/interfaces/dom.idl').then(r => r.text()); + + const idl_array = new IdlArray(); + idl_array.add_idls(idl); + idl_array.add_dependency_idls(web); + idl_array.add_dependency_idls(dom); + idl_array.add_objects({ + ScrollTimeline: ['new ScrollTimeline()'], + }); + idl_array.test(); + }, 'Test scroll-animations IDL implementation'); + </script> + + <div id="log"></div> +</body> + +</html> diff --git a/tests/wpt/web-platform-tests/secure-contexts/idlharness.any.js b/tests/wpt/web-platform-tests/secure-contexts/idlharness.any.js new file mode 100644 index 00000000000..88341f3b215 --- /dev/null +++ b/tests/wpt/web-platform-tests/secure-contexts/idlharness.any.js @@ -0,0 +1,20 @@ +// META: global=window,worker +// META: script=/resources/WebIDLParser.js +// META: script=/resources/idlharness.js + +// https://w3c.github.io/webappsec-secure-contexts/ + +'use strict'; + +promise_test(async () => { + const idl = await fetch("/interfaces/secure-contexts.idl").then(r => r.text()); + const workers = await fetch("/interfaces/dedicated-workers.idl").then(r => r.text()); + + const idl_array = new IdlArray(); + idl_array.add_idls(idl); + idl_array.add_dependency_idls(workers); + idl_array.add_objects({ + WindowOrWorkerGlobalScope: ["self"], + }); + idl_array.test(); +}, "Test IDL implementation of Secure Contexts"); diff --git a/tests/wpt/web-platform-tests/server-timing/service_worker_idl.html b/tests/wpt/web-platform-tests/server-timing/service_worker_idl.https.html index 1c1be8995b3..1c1be8995b3 100644 --- a/tests/wpt/web-platform-tests/server-timing/service_worker_idl.html +++ b/tests/wpt/web-platform-tests/server-timing/service_worker_idl.https.html diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/controller-with-no-fetch-event-handler.https.html b/tests/wpt/web-platform-tests/service-workers/service-worker/controller-with-no-fetch-event-handler.https.html new file mode 100644 index 00000000000..7147c33a048 --- /dev/null +++ b/tests/wpt/web-platform-tests/service-workers/service-worker/controller-with-no-fetch-event-handler.https.html @@ -0,0 +1,56 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>Service Worker: controller without a fetch event handler</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/common/get-host-info.sub.js"></script> +<script src="resources/test-helpers.sub.js?pipe=sub"></script> +<body> +<script> +let registration; +let frame; +const host_info = get_host_info(); +const remote_base_url = + new URL(`${host_info.HTTPS_REMOTE_ORIGIN}${base_path()}resources/`); + +promise_test(async t => { + const script = 'resources/empty.js' + const scope = 'resources/'; + + promise_test(async t => { + if (frame) + frame.remove(); + + if (registration) + await registration.unregister(); + }, 'cleanup global state'); + + registration = await + service_worker_unregister_and_register(t, script, scope); + await wait_for_state(t, registration.installing, 'activated'); + frame = await with_iframe(scope + 'blank.html'); +}, 'global setup'); + +promise_test(async t => { + const url = new URL('cors-approved.txt', remote_base_url); + const response = await frame.contentWindow.fetch(url, {mode:'no-cors'}); + const text = await response.text(); + assert_equals(text, ''); +}, 'cross-origin request, no-cors mode'); + + +promise_test(async t => { + const url = new URL('cors-denied.txt', remote_base_url); + const response = frame.contentWindow.fetch(url); + await promise_rejects(t, new TypeError(), response); +}, 'cross-origin request, cors denied'); + +promise_test(async t => { + const url = new URL('cors-approved.txt', remote_base_url); + response = await frame.contentWindow.fetch(url); + let text = await response.text(); + text = text.trim(); + assert_equals(text, 'plaintext'); +}, 'cross-origin request, cors approved'); +</script> +</body> diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/http-to-https-redirect-and-register.https.html b/tests/wpt/web-platform-tests/service-workers/service-worker/http-to-https-redirect-and-register.https.html index d1c6678faa9..5626237dccc 100644 --- a/tests/wpt/web-platform-tests/service-workers/service-worker/http-to-https-redirect-and-register.https.html +++ b/tests/wpt/web-platform-tests/service-workers/service-worker/http-to-https-redirect-and-register.https.html @@ -42,7 +42,7 @@ promise_test(function(t) { return redirect_and_register(target_url) .then(result => { - assert_equals(result, 'FAIL: SecurityError'); + assert_equals(result, 'FAIL: navigator.serviceWorker is undefined'); }); }, 'register on a non-secure page after redirect from an non-secure url'); </script> diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/navigation-redirect.https.html b/tests/wpt/web-platform-tests/service-workers/service-worker/navigation-redirect.https.html index 3f12c2fdcca..ed300faf8e6 100644 --- a/tests/wpt/web-platform-tests/service-workers/service-worker/navigation-redirect.https.html +++ b/tests/wpt/web-platform-tests/service-workers/service-worker/navigation-redirect.https.html @@ -1,5 +1,6 @@ <!DOCTYPE html> <title>Service Worker: Navigation redirection</title> +<meta name="timeout" content="long"> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/common/get-host-info.sub.js"></script> diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/cors-approved.txt b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/cors-approved.txt new file mode 100644 index 00000000000..1cd89bb14d6 --- /dev/null +++ b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/cors-approved.txt @@ -0,0 +1 @@ +plaintext diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/cors-approved.txt.headers b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/cors-approved.txt.headers new file mode 100644 index 00000000000..f7985fd9bd5 --- /dev/null +++ b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/cors-approved.txt.headers @@ -0,0 +1,3 @@ +Content-Type: text/plain +Access-Control-Allow-Origin: * + diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/cors-denied.txt b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/cors-denied.txt new file mode 100644 index 00000000000..ff333bd97da --- /dev/null +++ b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/cors-denied.txt @@ -0,0 +1,2 @@ +this file is served without Access-Control-Allow-Origin headers so it should not +be readable from cross-origin. diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/http-to-https-redirect-and-register-iframe.html b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/http-to-https-redirect-and-register-iframe.html index 8c48a18cee4..bcab35364df 100644 --- a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/http-to-https-redirect-and-register-iframe.html +++ b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/http-to-https-redirect-and-register-iframe.html @@ -4,18 +4,22 @@ <script> 'use strict'; -navigator.serviceWorker.register('empty-worker.js', {scope: 'scope-register'}) - .then( - registration => { - registration.unregister().then(() => { - window.opener.postMessage('OK', '*'); - }); - }, - error => { - window.opener.postMessage('FAIL: ' + error.name, '*'); - }) - .catch(error => { - window.opener.postMessage('ERROR: ' + error.name, '*'); - }); +if (!navigator.serviceWorker) { + window.opener.postMessage('FAIL: navigator.serviceWorker is undefined', '*'); +} else { + navigator.serviceWorker.register('empty-worker.js', {scope: 'scope-register'}) + .then( + registration => { + registration.unregister().then(() => { + window.opener.postMessage('OK', '*'); + }); + }, + error => { + window.opener.postMessage('FAIL: ' + error.name, '*'); + }) + .catch(error => { + window.opener.postMessage('ERROR: ' + error.name, '*'); + }); +} </script> </body> diff --git a/tests/wpt/web-platform-tests/shadow-dom/directionality-001-ref.html b/tests/wpt/web-platform-tests/shadow-dom/directionality-001-ref.html new file mode 100644 index 00000000000..7a2eaeb8681 --- /dev/null +++ b/tests/wpt/web-platform-tests/shadow-dom/directionality-001-ref.html @@ -0,0 +1,6 @@ +<!doctype html> +<title>CSS Test Reference</title> +<link rel="author" href="mailto:emilio@crisal.io" title="Emilio Cobos Álvarez"> +<div dir="rtl"> 123 456 <span><span> 789 101112 </span></span></div> +<div dir="rtl"> 123 456 <span dir="ltr"><span> 789 101112 </span></span></div> +<div dir="rtl"> 123 456 <span><span> 789 101112 </span></span></div> diff --git a/tests/wpt/web-platform-tests/shadow-dom/directionality-001.tentative.html b/tests/wpt/web-platform-tests/shadow-dom/directionality-001.tentative.html new file mode 100644 index 00000000000..d96926ad65f --- /dev/null +++ b/tests/wpt/web-platform-tests/shadow-dom/directionality-001.tentative.html @@ -0,0 +1,19 @@ +<!doctype html> +<title>Test: directionality propagation in Shadow DOM.</title> +<link rel="author" href="mailto:emilio@crisal.io" title="Emilio Cobos Álvarez"> +<link rel="help" href="https://html.spec.whatwg.org/#the-dir-attribute"> +<link rel="help" href="https://github.com/whatwg/html/issues/3699"> +<link rel="match" href="directionality-001-ref.html"> +<div id="host0" dir="rtl"><span> 789 101112 </span></div> +<div id="host1" dir="rtl"><span> 789 101112 </span></div> +<div id="host2" dir="rtl"><span> 789 101112 </span></div> +<script> + host0.attachShadow({mode: 'closed'}).innerHTML = + '<div> 123 456 <span><slot></slot></span></div>'; + + host1.attachShadow({mode: 'closed'}).innerHTML = + '<div> 123 456 <span dir="ltr"><slot></slot></span></div>'; + + host2.attachShadow({mode: 'closed'}).innerHTML = + '<div> 123 456 <span><slot dir="ltr"></slot></span></div>'; +</script> diff --git a/tests/wpt/web-platform-tests/shape-detection/META.yml b/tests/wpt/web-platform-tests/shape-detection/META.yml new file mode 100644 index 00000000000..95fdd2ba4f3 --- /dev/null +++ b/tests/wpt/web-platform-tests/shape-detection/META.yml @@ -0,0 +1,2 @@ +suggested_reviewers: + - yellowdoge diff --git a/tests/wpt/web-platform-tests/shape-detection/idlharness.any.js b/tests/wpt/web-platform-tests/shape-detection/idlharness.any.js new file mode 100644 index 00000000000..ea772689105 --- /dev/null +++ b/tests/wpt/web-platform-tests/shape-detection/idlharness.any.js @@ -0,0 +1,12 @@ +// META: script=/resources/WebIDLParser.js +// META: script=/resources/idlharness.js + +// See: https://wicg.github.io/shape-detection-api/ + +promise_test(async () => { + const idl = await fetch('/interfaces/shape-detection-api.idl').then(r => r.text()); + + const idl_array = new IdlArray(); + idl_array.add_idls(idl); + idl_array.test(); +}, 'Test shape-detection IDL interface'); diff --git a/tests/wpt/web-platform-tests/svg/painting/reftests/paint-context-001-ref.svg b/tests/wpt/web-platform-tests/svg/painting/reftests/paint-context-001-ref.svg new file mode 100644 index 00000000000..99bd8c44cb7 --- /dev/null +++ b/tests/wpt/web-platform-tests/svg/painting/reftests/paint-context-001-ref.svg @@ -0,0 +1,44 @@ +<svg id="svg-root" + width="100%" height="100%" viewBox="0 0 480 360" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:html="http://www.w3.org/1999/xhtml"> + <g id="testmeta"> + <title>Paint: 'paint-order'</title> + <html:link rel="author" + title="Tavmjong Bah" + href="http://tavmjong.free.fr"/> + </g> + + <style id="test-font" type="text/css"> + /* Standard Font (if needed). */ + @font-face { + font-family: FreeSans; + src: url("../fonts/FreeSans.woff") format("woff"); + } + text { + font-family: FreeSans, sans-serif; + text-anchor: middle; + fill: black; + } + #title { + font-size: 24px; + } + .label { + font-size: 18px; + } + </style> + + <defs> + <rect id="rectangle" width="2" height="2" style="fill:lime;stroke:blue" /> + <marker id="marker" style="overflow:visible" markerWidth="2" markerHeight="2" orient="auto" viewBox="0 0 2 2" refX="1" refY="1"> + <use xlink:href="#rectangle"/> + </marker> + <path id="path" d="m -25,-25 0,50 50,0 0,-50 z"/> + </defs> + + <g id="test-reference" font-size="16" style="fill:blue;stroke:lime;stroke-width:15px;marker:url(#marker)"> + <path d="m 120,220 c 120,120 120,-120 240,0"/> + </g> + +</svg> diff --git a/tests/wpt/web-platform-tests/svg/painting/reftests/paint-context-001.svg b/tests/wpt/web-platform-tests/svg/painting/reftests/paint-context-001.svg new file mode 100644 index 00000000000..fd58d9b790a --- /dev/null +++ b/tests/wpt/web-platform-tests/svg/painting/reftests/paint-context-001.svg @@ -0,0 +1,47 @@ +<svg id="svg-root" + width="100%" height="100%" viewBox="0 0 480 360" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:html="http://www.w3.org/1999/xhtml"> + <g id="testmeta"> + <title>Paint: 'context-fill' and 'context-stroke'</title> + <html:link rel="author" + title="Tavmjong Bah" + href="http://tavmjong.free.fr"/> + <html:link rel="help" + href="https://www.w3.org/TR/SVG2/painting.html#SpecifyingPaint"/> + <html:link rel="match" href="paint-context-001-ref.svg" /> + </g> + + <style id="test-font" type="text/css"> + /* Standard Font (if needed). */ + @font-face { + font-family: FreeSans; + src: url("../fonts/FreeSans.woff") format("woff"); + } + text { + font-family: FreeSans, sans-serif; + text-anchor: middle; + fill: black; + } + #title { + font-size: 24px; + } + .label { + font-size: 18px; + } + </style> + + <defs> + <rect id="rectangle" width="2" height="2" style="fill:context-stroke;stroke:context-fill" /> + <marker id="marker" style="overflow:visible" markerWidth="2" markerHeight="2" orient="auto" viewBox="0 0 2 2" refX="1" refY="1"> + <use xlink:href="#rectangle"/> + </marker> + <path id="path" d="m -25,-25 0,50 50,0 0,-50 z"/> + </defs> + + <g id="test-body-content" font-size="16" style="fill:blue;stroke:lime;stroke-width:15px;marker:url(#marker)"> + <path d="m 120,220 c 120,120 120,-120 240,0"/> + </g> + +</svg> diff --git a/tests/wpt/web-platform-tests/svg/painting/reftests/paint-context-002-ref.svg b/tests/wpt/web-platform-tests/svg/painting/reftests/paint-context-002-ref.svg new file mode 100644 index 00000000000..446e8e3fca8 --- /dev/null +++ b/tests/wpt/web-platform-tests/svg/painting/reftests/paint-context-002-ref.svg @@ -0,0 +1,41 @@ +<svg id="svg-root" + width="100%" height="100%" viewBox="0 0 480 360" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:html="http://www.w3.org/1999/xhtml"> + <g id="testmeta"> + <title>Paint: 'paint-order'</title> + <html:link rel="author" + title="Tavmjong Bah" + href="http://tavmjong.free.fr"/> + </g> + + <style id="test-font" type="text/css"> + /* Standard Font (if needed). */ + @font-face { + font-family: FreeSans; + src: url("../fonts/FreeSans.woff") format("woff"); + } + text { + font-family: FreeSans, sans-serif; + text-anchor: middle; + fill: black; + } + #title { + font-size: 24px; + } + .label { + font-size: 18px; + } + </style> + + <defs> + <rect id="rectangle" width="120" height="120" /> + </defs> + + <g id="test-reference" font-size="16" style="fill:lime;stroke:blue;stroke-width:15px"> + <use xlink:href="#rectangle" transform="translate(60,120)"/> + <use xlink:href="#rectangle" transform="translate(300,120)" style="fill:lightblue;stroke:green"/> + </g> + +</svg> diff --git a/tests/wpt/web-platform-tests/svg/painting/reftests/paint-context-002.svg b/tests/wpt/web-platform-tests/svg/painting/reftests/paint-context-002.svg new file mode 100644 index 00000000000..8a8a378488c --- /dev/null +++ b/tests/wpt/web-platform-tests/svg/painting/reftests/paint-context-002.svg @@ -0,0 +1,44 @@ +<svg id="svg-root" + width="100%" height="100%" viewBox="0 0 480 360" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:html="http://www.w3.org/1999/xhtml"> + <g id="testmeta"> + <title>Paint: 'context-fill' and 'context-stroke'</title> + <html:link rel="author" + title="Tavmjong Bah" + href="http://tavmjong.free.fr"/> + <html:link rel="help" + href="https://www.w3.org/TR/SVG2/painting.html#SpecifyingPaint"/> + <html:link rel="match" href="paint-context-002-ref.svg" /> + </g> + + <style id="test-font" type="text/css"> + /* Standard Font (if needed). */ + @font-face { + font-family: FreeSans; + src: url("../fonts/FreeSans.woff") format("woff"); + } + text { + font-family: FreeSans, sans-serif; + text-anchor: middle; + fill: black; + } + #title { + font-size: 24px; + } + .label { + font-size: 18px; + } + </style> + + <defs> + <rect id="rectangle" width="120" height="120" style="fill:context-stroke;stroke:context-fill" /> + </defs> + + <g id="test-body-content" font-size="16" style="fill:blue;stroke:lime;stroke-width:15px"> + <use xlink:href="#rectangle" transform="translate(60,120)"/> + <use xlink:href="#rectangle" transform="translate(300,120)" style="fill:green;stroke:lightblue"/> + </g> + +</svg> diff --git a/tests/wpt/web-platform-tests/svg/pservers/reftests/radialgradient-basic-002-ref.svg b/tests/wpt/web-platform-tests/svg/pservers/reftests/radialgradient-basic-002-ref.svg new file mode 100644 index 00000000000..26f4f508f35 --- /dev/null +++ b/tests/wpt/web-platform-tests/svg/pservers/reftests/radialgradient-basic-002-ref.svg @@ -0,0 +1,50 @@ +<svg id="svg-root" + width="100%" height="100%" viewBox="0 0 480 360" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:html="http://www.w3.org/1999/xhtml"> + <g id="testmeta"> + <title>Radial gradient: Basic three stop gradient with 'fr'.</title> + <html:link rel="author" + title="Tavmjong Bah" + href="http://tavmjong.free.fr"/> + </g> + + <style id="test-font" type="text/css"> + /* Standard Font (if needed). */ + @font-face { + font-family: FreeSans; + src: url("../fonts/FreeSans.woff") format("woff"); + } + text { + font-family: FreeSans, sans-serif; + text-anchor: middle; + fill: black; + } + #title { + font-size: 24px; + } + .label { + font-size: 18px; + } + </style> + + <defs> + <radialGradient id="RadialGradient1" gradientUnits="userSpaceOnUse" cx="120" cy="240" fx="120" fy="240" r="100"> + <stop style="stop-color:#0000ff" offset="50%"/> + <stop style="stop-color:#00ffff" offset="75%"/> + <stop style="stop-color:#ffff00" offset="100%"/> + </radialGradient> + <radialGradient id="RadialGradient2" gradientUnits="objectBoundingBox" cx="0.5" cy="0.5" rx="0.5" y2="0.5" r="0.5"> + <stop style="stop-color:#0000ff" offset="50%"/> + <stop style="stop-color:#00ffff" offset="75%"/> + <stop style="stop-color:#ffff00" offset="100%"/> + </radialGradient> + </defs> + + <g id="test-reference" font-size="16"> + <rect x="20" y="140" width="200" height="200" style="fill:url(#RadialGradient1)" /> + <rect x="260" y="140" width="200" height="200" style="fill:url(#RadialGradient2)" /> + </g> + +</svg> diff --git a/tests/wpt/web-platform-tests/svg/pservers/reftests/radialgradient-basic-002.svg b/tests/wpt/web-platform-tests/svg/pservers/reftests/radialgradient-basic-002.svg new file mode 100644 index 00000000000..04d8d3025ee --- /dev/null +++ b/tests/wpt/web-platform-tests/svg/pservers/reftests/radialgradient-basic-002.svg @@ -0,0 +1,53 @@ +<svg id="svg-root" + width="100%" height="100%" viewBox="0 0 480 360" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:html="http://www.w3.org/1999/xhtml"> + <g id="testmeta"> + <title>Radial gradient: Basic three stop gradient with 'fr'.</title> + <html:link rel="author" + title="Tavmjong Bah" + href="http://tavmjong.free.fr"/> + <html:link rel="help" + href="https://www.w3.org/TR/SVG2/pservers.html#RadialGradients"/> + <html:link rel="match" href="radialgradient-basic-002-ref.svg" /> + </g> + + <style id="test-font" type="text/css"> + /* Standard Font (if needed). */ + @font-face { + font-family: FreeSans; + src: url("../fonts/FreeSans.woff") format("woff"); + } + text { + font-family: FreeSans, sans-serif; + text-anchor: middle; + fill: black; + } + #title { + font-size: 24px; + } + .label { + font-size: 18px; + } + </style> + + <defs> + <radialGradient id="RadialGradient1" gradientUnits="userSpaceOnUse" cx="120" cy="240" fx="120" fy="240" r="100" fr="50"> + <stop style="stop-color:#0000ff" offset="0%"/> + <stop style="stop-color:#00ffff" offset="50%"/> + <stop style="stop-color:#ffff00" offset="100%"/> + </radialGradient> + <radialGradient id="RadialGradient2" gradientUnits="objectBoundingBox" cx="0.5" cy="0.5" rx="0.5" y2="0.5" r="0.5" fr="0.25"> + <stop style="stop-color:#0000ff" offset="0%"/> + <stop style="stop-color:#00ffff" offset="50%"/> + <stop style="stop-color:#ffff00" offset="100%"/> + </radialGradient> + </defs> + + <g id="test-body-content" font-size="16"> + <rect x="20" y="140" width="200" height="200" style="fill:url(#RadialGradient1)" /> + <rect x="260" y="140" width="200" height="200" style="fill:url(#RadialGradient2)" /> + </g> + +</svg> diff --git a/tests/wpt/web-platform-tests/svg/styling/required-properties.svg b/tests/wpt/web-platform-tests/svg/styling/required-properties.svg new file mode 100644 index 00000000000..c257254d747 --- /dev/null +++ b/tests/wpt/web-platform-tests/svg/styling/required-properties.svg @@ -0,0 +1,147 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg xmlns="http://www.w3.org/2000/svg" + xmlns:h="http://www.w3.org/1999/xhtml"> + <metadata> + <h:link rel="help" href="https://svgwg.org/svg2-draft/styling.html#RequiredProperties"/> + <h:link rel="help" href="https://svgwg.org/svg2-draft/propidx.html"/> + <h:meta name="assert" content="All required properties are supported"/> + <!-- Note: This test does not verify that the properties are actually applied to SVG rendering. --> + </metadata> + <g id="target"></g> + <h:script src="/resources/testharness.js"/> + <h:script src="/resources/testharnessreport.js"/> + <script><![CDATA[ + var properties = [ + // Properties listed in https://svgwg.org/svg2-draft/propidx.html + "alignment-baseline", + "baseline-shift", + "clip", + "clip-path", + "clip-rule", + "color", + "color-interpolation", + "color-rendering", + "cursor", + "direction", + "display", + "dominant-baseline", + "fill", + "fill-opacity", + "fill-rule", + "filter", + "flood-color", + "flood-opacity", + "font", + "font-family", + "font-size", + "font-size-adjust", + "font-stretch", + "font-style", + "font-variant", + "font-weight", + "glyph-orientation-vertical", + "image-rendering", + "letter-spacing", + "lighting-color", + "line-height", + "marker", + "marker-end", + "marker-mid", + "marker-start", + "mask", + "opacity", + "overflow", + "paint-order", + "pointer-events", + "shape-rendering", + "stop-color", + "stop-opacity", + "stroke", + "stroke-dasharray", + "stroke-dashoffset", + "stroke-linecap", + "stroke-linejoin", + "stroke-miterlimit", + "stroke-opacity", + "stroke-width", + "text-anchor", + "text-decoration", + "text-rendering", + "unicode-bidi", + "vector-effect", + "visibility", + "word-spacing", + "white-space", + "writing-mode", + + // Properties listed in https://svgwg.org/svg2-draft/styling.html#RequiredProperties + "display", + "overflow", + "visibility", + "cursor", + "text-overflow", + "clip", + "clip-path", + "clip-rule", + "mask", + "color", + "opacity", + "color-interpolation-filters", + "filter", + "flood-color", + "flood-opacity", + "isolation", + "lighting-color", + "transform", + "transform-box", + "transform-origin", + "letter-spacing", + "text-align", + "text-align-all", + "text-align-last", + "text-indent", + "word-spacing", + "white-space", + "text-space-collapse", + "vertical-align", + "dominant-baseline", + "alignment-baseline", + "baseline-shift", + "direction", + "text-orientation", + "writing-mode", + "font", + "font-family", + "font-feature-settings", + "font-kerning", + "font-size", + "font-size-adjust", + "font-stretch", + "font-style", + "font-variant", + "font-variant-position", + "font-variant-ligatures", + "font-variant-caps", + "font-variant-numeric", + "font-variant-east-asian", + "font-weight", + "text-decoration", + "text-decoration-line", + "text-decoration-style", + "text-decoration-color" + ]; + properties.sort(); + + var target = document.getElementById('target'); + var previous = null; + for (var property of properties) { + if (property === previous) + continue; // Avoid duplicate test names + previous = property; + + test(function() { + assert_true(target.style.hasOwnProperty(property)); + }, 'Property "' + property + '" is supported'); + } + ]]></script> +</svg> diff --git a/tests/wpt/web-platform-tests/tools/pywebsocket/mod_pywebsocket/_stream_base.py b/tests/wpt/web-platform-tests/tools/pywebsocket/mod_pywebsocket/_stream_base.py index 8235666bbb1..21a1254ae6d 100644 --- a/tests/wpt/web-platform-tests/tools/pywebsocket/mod_pywebsocket/_stream_base.py +++ b/tests/wpt/web-platform-tests/tools/pywebsocket/mod_pywebsocket/_stream_base.py @@ -118,7 +118,7 @@ class StreamBase(object): 'Receiving %d byte failed. Peer (%r) closed connection' % (length, (self._request.connection.remote_addr,))) return read_bytes - except socket.error, e: + except socket.error as e: # Catch a socket.error. Because it's not a child class of the # IOError prior to Python 2.6, we cannot omit this except clause. # Use %s rather than %r for the exception to use human friendly @@ -126,7 +126,7 @@ class StreamBase(object): raise ConnectionTerminatedException( 'Receiving %d byte failed. socket.error (%s) occurred' % (length, e)) - except IOError, e: + except IOError as e: # Also catch an IOError because mod_python throws it. raise ConnectionTerminatedException( 'Receiving %d byte failed. IOError (%s) occurred' % @@ -139,7 +139,7 @@ class StreamBase(object): try: self._request.connection.write(bytes_to_write) - except Exception, e: + except Exception as e: util.prepend_message_to_exception( 'Failed to send message to %r: ' % (self._request.connection.remote_addr,), diff --git a/tests/wpt/web-platform-tests/tools/pywebsocket/mod_pywebsocket/_stream_hybi.py b/tests/wpt/web-platform-tests/tools/pywebsocket/mod_pywebsocket/_stream_hybi.py index 104221b4c30..718e8ffa395 100644 --- a/tests/wpt/web-platform-tests/tools/pywebsocket/mod_pywebsocket/_stream_hybi.py +++ b/tests/wpt/web-platform-tests/tools/pywebsocket/mod_pywebsocket/_stream_hybi.py @@ -538,7 +538,7 @@ class Stream(StreamBase): # at least one frame is sent. if len(message) <= bytes_written: break - except ValueError, e: + except ValueError as e: raise BadOperationException(e) def _get_message_from_frame(self, frame): @@ -677,7 +677,7 @@ class Stream(StreamBase): if handler: handler(self._request, message) return - except AttributeError, e: + except AttributeError as e: pass self._send_pong(message) @@ -704,7 +704,7 @@ class Stream(StreamBase): break else: inflight_pings.append(expected_body) - except IndexError, e: + except IndexError as e: # The received pong was unsolicited pong. Keep the # ping queue as is. self._ping_queue = inflight_pings @@ -715,7 +715,7 @@ class Stream(StreamBase): handler = self._request.on_pong_handler if handler: handler(self._request, message) - except AttributeError, e: + except AttributeError as e: pass def receive_message(self): @@ -780,7 +780,7 @@ class Stream(StreamBase): # CHARACTER. try: return message.decode('utf-8') - except UnicodeDecodeError, e: + except UnicodeDecodeError as e: raise InvalidUTF8Exception(e) elif self._original_opcode == common.OPCODE_BINARY: return message diff --git a/tests/wpt/web-platform-tests/tools/pywebsocket/mod_pywebsocket/common.py b/tests/wpt/web-platform-tests/tools/pywebsocket/mod_pywebsocket/common.py index 6d173db933f..9f73d66560d 100644 --- a/tests/wpt/web-platform-tests/tools/pywebsocket/mod_pywebsocket/common.py +++ b/tests/wpt/web-platform-tests/tools/pywebsocket/mod_pywebsocket/common.py @@ -241,7 +241,7 @@ def _parse_extension(state): try: _parse_extension_param(state, extension) - except ExtensionParsingException, e: + except ExtensionParsingException as e: raise ExtensionParsingException( 'Failed to parse parameter for %r (%r)' % (extension_token, e)) diff --git a/tests/wpt/web-platform-tests/tools/pywebsocket/mod_pywebsocket/dispatch.py b/tests/wpt/web-platform-tests/tools/pywebsocket/mod_pywebsocket/dispatch.py index 96c91e0c90e..2591fe8b9e9 100644 --- a/tests/wpt/web-platform-tests/tools/pywebsocket/mod_pywebsocket/dispatch.py +++ b/tests/wpt/web-platform-tests/tools/pywebsocket/mod_pywebsocket/dispatch.py @@ -143,7 +143,7 @@ def _source_handler_file(handler_definition): global_dic = {} try: - exec handler_definition in global_dic + exec(handler_definition, global_dic) except Exception: raise DispatchException('Error in sourcing handler:' + util.get_stack_trace()) @@ -254,12 +254,12 @@ class Dispatcher(object): do_extra_handshake_ = handler_suite.do_extra_handshake try: do_extra_handshake_(request) - except handshake.AbortedByUserException, e: + except handshake.AbortedByUserException as e: # Re-raise to tell the caller of this function to finish this # connection without sending any error. self._logger.debug('%s', util.get_stack_trace()) raise - except Exception, e: + except Exception as e: util.prepend_message_to_exception( '%s raised exception for %s: ' % ( _DO_EXTRA_HANDSHAKE_HANDLER_NAME, @@ -296,28 +296,28 @@ class Dispatcher(object): if not request.server_terminated: request.ws_stream.close_connection() # Catch non-critical exceptions the handler didn't handle. - except handshake.AbortedByUserException, e: + except handshake.AbortedByUserException as e: self._logger.debug('%s', util.get_stack_trace()) raise - except msgutil.BadOperationException, e: + except msgutil.BadOperationException as e: self._logger.debug('%s', e) request.ws_stream.close_connection( common.STATUS_INTERNAL_ENDPOINT_ERROR) - except msgutil.InvalidFrameException, e: + except msgutil.InvalidFrameException as e: # InvalidFrameException must be caught before # ConnectionTerminatedException that catches InvalidFrameException. self._logger.debug('%s', e) request.ws_stream.close_connection(common.STATUS_PROTOCOL_ERROR) - except msgutil.UnsupportedFrameException, e: + except msgutil.UnsupportedFrameException as e: self._logger.debug('%s', e) request.ws_stream.close_connection(common.STATUS_UNSUPPORTED_DATA) - except stream.InvalidUTF8Exception, e: + except stream.InvalidUTF8Exception as e: self._logger.debug('%s', e) request.ws_stream.close_connection( common.STATUS_INVALID_FRAME_PAYLOAD_DATA) - except msgutil.ConnectionTerminatedException, e: + except msgutil.ConnectionTerminatedException as e: self._logger.debug('%s', e) - except Exception, e: + except Exception as e: # Any other exceptions are forwarded to the caller of this # function. util.prepend_message_to_exception( @@ -379,7 +379,7 @@ class Dispatcher(object): continue try: handler_suite = _source_handler_file(open(path).read()) - except DispatchException, e: + except DispatchException as e: self._source_warnings.append('%s: %s' % (path, e)) continue resource = convert(path) diff --git a/tests/wpt/web-platform-tests/tools/pywebsocket/mod_pywebsocket/extensions.py b/tests/wpt/web-platform-tests/tools/pywebsocket/mod_pywebsocket/extensions.py index b4b5eaf73f4..d1be749fff5 100644 --- a/tests/wpt/web-platform-tests/tools/pywebsocket/mod_pywebsocket/extensions.py +++ b/tests/wpt/web-platform-tests/tools/pywebsocket/mod_pywebsocket/extensions.py @@ -185,7 +185,7 @@ class DeflateFrameExtensionProcessor(ExtensionProcessorInterface): self._WINDOW_BITS_PARAM) try: window_bits = _parse_window_bits(window_bits) - except ValueError, e: + except ValueError as e: return None no_context_takeover = self._request.has_parameter( @@ -368,7 +368,7 @@ class PerMessageDeflateExtensionProcessor(ExtensionProcessorInterface): try: server_max_window_bits = _parse_window_bits( server_max_window_bits) - except ValueError, e: + except ValueError as e: self._logger.debug('Bad %s parameter: %r', self._SERVER_MAX_WINDOW_BITS_PARAM, e) @@ -703,7 +703,7 @@ class MuxExtensionProcessor(ExtensionProcessorInterface): if quota is not None: try: quota = int(quota) - except ValueError, e: + except ValueError as e: return None if quota < 0 or quota >= 2 ** 32: return None diff --git a/tests/wpt/web-platform-tests/tools/pywebsocket/mod_pywebsocket/handshake/__init__.py b/tests/wpt/web-platform-tests/tools/pywebsocket/mod_pywebsocket/handshake/__init__.py index 194f6b395ae..707263a69fe 100644 --- a/tests/wpt/web-platform-tests/tools/pywebsocket/mod_pywebsocket/handshake/__init__.py +++ b/tests/wpt/web-platform-tests/tools/pywebsocket/mod_pywebsocket/handshake/__init__.py @@ -90,15 +90,15 @@ def do_handshake(request, dispatcher, allowDraft75=False, strict=False): handshaker.do_handshake() _LOGGER.info('Established (%s protocol)', name) return - except HandshakeException, e: + except HandshakeException as e: _LOGGER.debug( 'Failed to complete opening handshake as %s protocol: %r', name, e) if e.status: raise e - except AbortedByUserException, e: + except AbortedByUserException as e: raise - except VersionException, e: + except VersionException as e: raise # TODO(toyoshim): Add a test to cover the case all handshakers fail. diff --git a/tests/wpt/web-platform-tests/tools/pywebsocket/mod_pywebsocket/handshake/_base.py b/tests/wpt/web-platform-tests/tools/pywebsocket/mod_pywebsocket/handshake/_base.py index c993a584b7b..0af05242bfc 100644 --- a/tests/wpt/web-platform-tests/tools/pywebsocket/mod_pywebsocket/handshake/_base.py +++ b/tests/wpt/web-platform-tests/tools/pywebsocket/mod_pywebsocket/handshake/_base.py @@ -111,7 +111,7 @@ def parse_host_header(request): return fields[0], get_default_port(request.is_https()) try: return fields[0], int(fields[1]) - except ValueError, e: + except ValueError as e: raise HandshakeException('Invalid port number format: %r' % e) diff --git a/tests/wpt/web-platform-tests/tools/pywebsocket/mod_pywebsocket/handshake/hybi.py b/tests/wpt/web-platform-tests/tools/pywebsocket/mod_pywebsocket/handshake/hybi.py index 1ad10ea3728..2dbf25a1dcc 100644 --- a/tests/wpt/web-platform-tests/tools/pywebsocket/mod_pywebsocket/handshake/hybi.py +++ b/tests/wpt/web-platform-tests/tools/pywebsocket/mod_pywebsocket/handshake/hybi.py @@ -112,7 +112,7 @@ class Handshaker(object): try: connection_tokens = parse_token_list(connection) - except HandshakeException, e: + except HandshakeException as e: raise HandshakeException( 'Failed to parse %s: %s' % (common.CONNECTION_HEADER, e)) @@ -273,7 +273,7 @@ class Handshaker(object): 'request any subprotocol') self._send_handshake(accept) - except HandshakeException, e: + except HandshakeException as e: if not e.status: # Fallback to 400 bad request by default. e.status = common.HTTP_STATUS_BAD_REQUEST @@ -327,7 +327,7 @@ class Handshaker(object): try: self._request.ws_requested_extensions = common.parse_extensions( extensions_header) - except common.ExtensionParsingException, e: + except common.ExtensionParsingException as e: raise HandshakeException( 'Failed to parse Sec-WebSocket-Extensions header: %r' % e) @@ -353,7 +353,7 @@ class Handshaker(object): decoded_key = base64.b64decode(key) if len(decoded_key) == 16: key_is_valid = True - except TypeError, e: + except TypeError as e: pass if not key_is_valid: diff --git a/tests/wpt/web-platform-tests/tools/pywebsocket/mod_pywebsocket/http_header_util.py b/tests/wpt/web-platform-tests/tools/pywebsocket/mod_pywebsocket/http_header_util.py index b7746539328..8e0584c5dac 100644 --- a/tests/wpt/web-platform-tests/tools/pywebsocket/mod_pywebsocket/http_header_util.py +++ b/tests/wpt/web-platform-tests/tools/pywebsocket/mod_pywebsocket/http_header_util.py @@ -33,7 +33,7 @@ in HTTP RFC http://www.ietf.org/rfc/rfc2616.txt. """ -import urlparse +from six.moves import urllib _SEPARATORS = '()<>@,;:\\"/[]?={} \t' @@ -218,7 +218,7 @@ def quote_if_necessary(s): def parse_uri(uri): """Parse absolute URI then return host, port and resource.""" - parsed = urlparse.urlsplit(uri) + parsed = urllib.parse.urlsplit(uri) if parsed.scheme != 'wss' and parsed.scheme != 'ws': # |uri| must be a relative URI. # TODO(toyoshim): Should validate |uri|. @@ -230,7 +230,7 @@ def parse_uri(uri): port = None try: port = parsed.port - except ValueError, e: + except ValueError as e: # port property cause ValueError on invalid null port description like # 'ws://host:/path'. return None, None, None @@ -253,11 +253,11 @@ def parse_uri(uri): try: - urlparse.uses_netloc.index('ws') -except ValueError, e: + urllib.parse.uses_netloc.index('ws') +except ValueError as e: # urlparse in Python2.5.1 doesn't have 'ws' and 'wss' entries. - urlparse.uses_netloc.append('ws') - urlparse.uses_netloc.append('wss') + urllib.parse.uses_netloc.append('ws') + urllib.parse.uses_netloc.append('wss') # vi:sts=4 sw=4 et diff --git a/tests/wpt/web-platform-tests/tools/pywebsocket/mod_pywebsocket/memorizingfile.py b/tests/wpt/web-platform-tests/tools/pywebsocket/mod_pywebsocket/memorizingfile.py index a24e7ee3821..07bcbd5876c 100644 --- a/tests/wpt/web-platform-tests/tools/pywebsocket/mod_pywebsocket/memorizingfile.py +++ b/tests/wpt/web-platform-tests/tools/pywebsocket/mod_pywebsocket/memorizingfile.py @@ -36,9 +36,6 @@ A memorizing file wraps a file and memorizes lines read by readline. """ -import sys - - class MemorizingFile(object): """MemorizingFile wraps a file and memorizes lines read by readline. @@ -48,7 +45,7 @@ class MemorizingFile(object): the control reaches WebSocketRequestHandler. """ - def __init__(self, file_, max_memorized_lines=sys.maxint): + def __init__(self, file_, max_memorized_lines=0x7FFFFFFF): """Construct an instance. Args: diff --git a/tests/wpt/web-platform-tests/tools/pywebsocket/mod_pywebsocket/msgutil.py b/tests/wpt/web-platform-tests/tools/pywebsocket/mod_pywebsocket/msgutil.py index 4c1a0114b4b..fc6c5b1dbce 100644 --- a/tests/wpt/web-platform-tests/tools/pywebsocket/mod_pywebsocket/msgutil.py +++ b/tests/wpt/web-platform-tests/tools/pywebsocket/mod_pywebsocket/msgutil.py @@ -38,7 +38,7 @@ bytes writing/reading. """ -import Queue +from six.moves import queue import threading @@ -124,7 +124,7 @@ class MessageReceiver(threading.Thread): threading.Thread.__init__(self) self._request = request - self._queue = Queue.Queue() + self._queue = queue.Queue() self._onmessage = onmessage self._stop_requested = False self.setDaemon(True) @@ -157,7 +157,7 @@ class MessageReceiver(threading.Thread): """ try: message = self._queue.get_nowait() - except Queue.Empty: + except queue.Empty: message = None return message @@ -190,7 +190,7 @@ class MessageSender(threading.Thread): """ threading.Thread.__init__(self) self._request = request - self._queue = Queue.Queue() + self._queue = queue.Queue() self.setDaemon(True) self.start() diff --git a/tests/wpt/web-platform-tests/tools/pywebsocket/mod_pywebsocket/mux.py b/tests/wpt/web-platform-tests/tools/pywebsocket/mod_pywebsocket/mux.py index 0b65f6ed0d3..994f8a14645 100644 --- a/tests/wpt/web-platform-tests/tools/pywebsocket/mod_pywebsocket/mux.py +++ b/tests/wpt/web-platform-tests/tools/pywebsocket/mod_pywebsocket/mux.py @@ -364,7 +364,7 @@ class _MuxFramePayloadParser(object): """ try: size = self._read_number() - except ValueError, e: + except ValueError as e: raise PhysicalConnectionError(_DROP_CODE_INVALID_MUX_CONTROL_BLOCK, str(e)) pos = self._read_position @@ -387,7 +387,7 @@ class _MuxFramePayloadParser(object): encoding = first_byte & 0x3 try: control_block.channel_id = self.read_channel_id() - except ValueError, e: + except ValueError as e: raise PhysicalConnectionError(_DROP_CODE_INVALID_MUX_CONTROL_BLOCK) control_block.encoding = encoding encoded_handshake = self._read_size_and_contents() @@ -405,7 +405,7 @@ class _MuxFramePayloadParser(object): control_block.encoding = first_byte & 0x3 try: control_block.channel_id = self.read_channel_id() - except ValueError, e: + except ValueError as e: raise PhysicalConnectionError(_DROP_CODE_INVALID_MUX_CONTROL_BLOCK) control_block.encoded_handshake = self._read_size_and_contents() return control_block @@ -420,7 +420,7 @@ class _MuxFramePayloadParser(object): try: control_block.channel_id = self.read_channel_id() control_block.send_quota = self._read_number() - except ValueError, e: + except ValueError as e: raise PhysicalConnectionError(_DROP_CODE_INVALID_MUX_CONTROL_BLOCK, str(e)) @@ -435,7 +435,7 @@ class _MuxFramePayloadParser(object): try: control_block.channel_id = self.read_channel_id() - except ValueError, e: + except ValueError as e: raise PhysicalConnectionError(_DROP_CODE_INVALID_MUX_CONTROL_BLOCK) reason = self._read_size_and_contents() if len(reason) == 0: @@ -460,7 +460,7 @@ class _MuxFramePayloadParser(object): try: control_block.slots = self._read_number() control_block.send_quota = self._read_number() - except ValueError, e: + except ValueError as e: raise PhysicalConnectionError(_DROP_CODE_INVALID_MUX_CONTROL_BLOCK, str(e)) return control_block @@ -931,7 +931,7 @@ class _LogicalStream(Stream): opcode = common.OPCODE_CONTINUATION - except ValueError, e: + except ValueError as e: raise BadOperationException(e) finally: self._write_inner_frame_semaphore.release() @@ -1032,7 +1032,7 @@ class _LogicalStream(Stream): # connection has closed gracefully. try: return Stream.receive_message(self) - except LogicalConnectionClosedException, e: + except LogicalConnectionClosedException as e: self._logger.debug('%s', e) return None @@ -1143,7 +1143,7 @@ class _PhysicalConnectionWriter(threading.Thread): try: self._mux_handler.physical_stream.send_message( message=message, end=True, binary=True) - except Exception, e: + except Exception as e: util.prepend_message_to_exception( 'Failed to send message to %r: ' % (self._mux_handler.physical_connection.remote_addr,), e) @@ -1184,7 +1184,7 @@ class _PhysicalConnectionWriter(threading.Thread): # by the reader thread. self._mux_handler.physical_stream.close_connection( self._close_code, wait_response=False) - except Exception, e: + except Exception as e: util.prepend_message_to_exception( 'Failed to close the physical connection: %r' % e) raise @@ -1231,20 +1231,20 @@ class _PhysicalConnectionReader(threading.Thread): 'Received a text message on physical connection') break - except ConnectionTerminatedException, e: + except ConnectionTerminatedException as e: self._logger.debug('%s', e) break try: self._mux_handler.dispatch_message(message) - except PhysicalConnectionError, e: + except PhysicalConnectionError as e: self._mux_handler.fail_physical_connection( e.drop_code, e.message) break - except LogicalChannelError, e: + except LogicalChannelError as e: self._mux_handler.fail_logical_channel( e.channel_id, e.drop_code, e.message) - except Exception, e: + except Exception as e: self._logger.debug(traceback.format_exc()) break @@ -1276,7 +1276,7 @@ class _Worker(threading.Thread): try: # Non-critical exceptions will be handled by dispatcher. self._mux_handler.dispatcher.transfer_data(self._request) - except LogicalChannelError, e: + except LogicalChannelError as e: self._mux_handler.fail_logical_channel( e.channel_id, e.drop_code, e.message) finally: @@ -1617,19 +1617,19 @@ class _MuxHandler(object): send_quota, receive_quota) try: handshaker.do_handshake() - except handshake.VersionException, e: + except handshake.VersionException as e: self._logger.info('%s', e) self._send_error_add_channel_response( request.channel_id, status=common.HTTP_STATUS_BAD_REQUEST) return False - except handshake.HandshakeException, e: + except handshake.HandshakeException as e: # TODO(bashi): Should we _Fail the Logical Channel_ with 3001 # instead? self._logger.info('%s', e) self._send_error_add_channel_response(request.channel_id, status=e.status) return False - except handshake.AbortedByUserException, e: + except handshake.AbortedByUserException as e: self._logger.info('%s', e) self._send_error_add_channel_response(request.channel_id) return False @@ -1656,7 +1656,7 @@ class _MuxHandler(object): def _process_add_channel_request(self, block): try: logical_request = self._create_logical_request(block) - except ValueError, e: + except ValueError as e: self._logger.debug('Failed to create logical request: %r' % e) self._send_error_add_channel_response( block.channel_id, status=common.HTTP_STATUS_BAD_REQUEST) @@ -1763,7 +1763,7 @@ class _MuxHandler(object): parser = _MuxFramePayloadParser(message) try: channel_id = parser.read_channel_id() - except ValueError, e: + except ValueError as e: raise PhysicalConnectionError(_DROP_CODE_CHANNEL_ID_TRUNCATED) if channel_id == _CONTROL_CHANNEL_ID: self._process_control_blocks(parser) diff --git a/tests/wpt/web-platform-tests/tools/pywebsocket/mod_pywebsocket/standalone.py b/tests/wpt/web-platform-tests/tools/pywebsocket/mod_pywebsocket/standalone.py index 63200e235c7..84b2470c8f9 100755 --- a/tests/wpt/web-platform-tests/tools/pywebsocket/mod_pywebsocket/standalone.py +++ b/tests/wpt/web-platform-tests/tools/pywebsocket/mod_pywebsocket/standalone.py @@ -143,7 +143,7 @@ configuration file. THREADING ========= -This server is derived from SocketServer.ThreadingMixIn. Hence a thread is +This server is derived from socketserver.ThreadingMixIn. Hence a thread is used for each request. @@ -155,13 +155,13 @@ It may execute arbitrary Python code or external programs. It should not be used outside a firewall. """ -import BaseHTTPServer -import CGIHTTPServer -import SimpleHTTPServer -import SocketServer -import ConfigParser +from six.moves import BaseHTTPServer +from six.moves import CGIHTTPServer +from six.moves import SimpleHTTPServer +from six.moves import socketserver +from six.moves import configparser import base64 -import httplib +from six.moves import http_client import logging import logging.handlers import optparse @@ -172,7 +172,7 @@ import socket import sys import threading import time -import urlparse +from six.moves import urllib from mod_pywebsocket import common from mod_pywebsocket import dispatch @@ -348,8 +348,8 @@ class _StandaloneSSLConnection(object): try: return self._connection.recv(bufsize) - except OpenSSL.SSL.SysCallError, (err, message): - if err == -1: + except OpenSSL.SSL.SysCallError as e: + if e.args[0] == -1: # Suppress "unexpected EOF" exception. See the OpenSSL document # for SSL_get_error. return '' @@ -376,22 +376,22 @@ def _alias_handlers(dispatcher, websock_handlers_map_file): try: dispatcher.add_resource_path_alias( m.group(1), m.group(2)) - except dispatch.DispatchException, e: + except dispatch.DispatchException as e: logging.error(str(e)) finally: fp.close() -class WebSocketServer(SocketServer.ThreadingMixIn, BaseHTTPServer.HTTPServer): +class WebSocketServer(socketserver.ThreadingMixIn, BaseHTTPServer.HTTPServer): """HTTPServer specialized for WebSocket.""" - # Overrides SocketServer.ThreadingMixIn.daemon_threads + # Overrides socketserver.ThreadingMixIn.daemon_threads daemon_threads = True # Overrides BaseHTTPServer.HTTPServer.allow_reuse_address allow_reuse_address = True def __init__(self, options): - """Override SocketServer.TCPServer.__init__ to set SSL enabled + """Override socketserver.TCPServer.__init__ to set SSL enabled socket object to self.socket before server_bind and server_activate, if necessary. """ @@ -416,7 +416,7 @@ class WebSocketServer(SocketServer.ThreadingMixIn, BaseHTTPServer.HTTPServer): self.__ws_is_shut_down = threading.Event() self.__ws_serving = False - SocketServer.BaseServer.__init__( + socketserver.BaseServer.__init__( self, (options.server_host, options.port), WebSocketRequestHandler) # Expose the options object to allow handler objects access it. We name @@ -452,7 +452,7 @@ class WebSocketServer(SocketServer.ThreadingMixIn, BaseHTTPServer.HTTPServer): family, socktype, proto, canonname, sockaddr = addrinfo try: socket_ = socket.socket(family, socktype) - except Exception, e: + except Exception as e: self._logger.info('Skip by failure: %r', e) continue server_options = self.websocket_server_options @@ -477,7 +477,7 @@ class WebSocketServer(SocketServer.ThreadingMixIn, BaseHTTPServer.HTTPServer): self._sockets.append((socket_, addrinfo)) def server_bind(self): - """Override SocketServer.TCPServer.server_bind to enable multiple + """Override socketserver.TCPServer.server_bind to enable multiple sockets bind. """ @@ -490,7 +490,7 @@ class WebSocketServer(SocketServer.ThreadingMixIn, BaseHTTPServer.HTTPServer): socket_.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) try: socket_.bind(self.server_address) - except Exception, e: + except Exception as e: self._logger.info('Skip by failure: %r', e) socket_.close() failed_sockets.append(socketinfo) @@ -508,7 +508,7 @@ class WebSocketServer(SocketServer.ThreadingMixIn, BaseHTTPServer.HTTPServer): self._sockets.remove(socketinfo) def server_activate(self): - """Override SocketServer.TCPServer.server_activate to enable multiple + """Override socketserver.TCPServer.server_activate to enable multiple sockets listen. """ @@ -519,7 +519,7 @@ class WebSocketServer(SocketServer.ThreadingMixIn, BaseHTTPServer.HTTPServer): self._logger.info('Listen on: %r', addrinfo) try: socket_.listen(self.request_queue_size) - except Exception, e: + except Exception as e: self._logger.info('Skip by failure: %r', e) socket_.close() failed_sockets.append(socketinfo) @@ -532,7 +532,7 @@ class WebSocketServer(SocketServer.ThreadingMixIn, BaseHTTPServer.HTTPServer): 'No sockets activated. Use info log level to see the reason.') def server_close(self): - """Override SocketServer.TCPServer.server_close to enable multiple + """Override socketserver.TCPServer.server_close to enable multiple sockets close. """ @@ -542,13 +542,13 @@ class WebSocketServer(SocketServer.ThreadingMixIn, BaseHTTPServer.HTTPServer): socket_.close() def fileno(self): - """Override SocketServer.TCPServer.fileno.""" + """Override socketserver.TCPServer.fileno.""" self._logger.critical('Not supported: fileno') return self._sockets[0][0].fileno() def handle_error(self, request, client_address): - """Override SocketServer.handle_error.""" + """Override socketserver.handle_error.""" self._logger.error( 'Exception in processing request from: %r\n%s', @@ -570,7 +570,7 @@ class WebSocketServer(SocketServer.ThreadingMixIn, BaseHTTPServer.HTTPServer): if server_options.tls_module == _TLS_BY_STANDARD_MODULE: try: accepted_socket.do_handshake() - except ssl.SSLError, e: + except ssl.SSLError as e: self._logger.debug('%r', e) raise @@ -609,7 +609,7 @@ class WebSocketServer(SocketServer.ThreadingMixIn, BaseHTTPServer.HTTPServer): # TODO(tyoshino): Convert all kinds of errors. try: accepted_socket.do_handshake() - except OpenSSL.SSL.Error, e: + except OpenSSL.SSL.Error as e: # Set errno part to 1 (SSL_ERROR_SSL) like the ssl module # does. self._logger.debug('%r', e) @@ -625,7 +625,7 @@ class WebSocketServer(SocketServer.ThreadingMixIn, BaseHTTPServer.HTTPServer): return accepted_socket, client_address def serve_forever(self, poll_interval=0.5): - """Override SocketServer.BaseServer.serve_forever.""" + """Override socketserver.BaseServer.serve_forever.""" self.__ws_serving = True self.__ws_is_shut_down.clear() @@ -647,7 +647,7 @@ class WebSocketServer(SocketServer.ThreadingMixIn, BaseHTTPServer.HTTPServer): self.__ws_is_shut_down.set() def shutdown(self): - """Override SocketServer.BaseServer.shutdown.""" + """Override socketserver.BaseServer.shutdown.""" self.__ws_serving = False self.__ws_is_shut_down.wait() @@ -656,13 +656,13 @@ class WebSocketServer(SocketServer.ThreadingMixIn, BaseHTTPServer.HTTPServer): class WebSocketRequestHandler(CGIHTTPServer.CGIHTTPRequestHandler): """CGIHTTPRequestHandler specialized for WebSocket.""" - # Use httplib.HTTPMessage instead of mimetools.Message. - MessageClass = httplib.HTTPMessage + # Use http_client.HTTPMessage instead of mimetools.Message. + MessageClass = http_client.HTTPMessage protocol_version = "HTTP/1.1" def setup(self): - """Override SocketServer.StreamRequestHandler.setup to wrap rfile + """Override socketserver.StreamRequestHandler.setup to wrap rfile with MemorizingFile. This method will be called by BaseRequestHandler's constructor @@ -673,7 +673,7 @@ class WebSocketRequestHandler(CGIHTTPServer.CGIHTTPRequestHandler): """ # Call superclass's setup to prepare rfile, wfile, etc. See setup - # definition on the root class SocketServer.StreamRequestHandler to + # definition on the root class socketserver.StreamRequestHandler to # understand what this does. CGIHTTPServer.CGIHTTPRequestHandler.setup(self) @@ -735,7 +735,7 @@ class WebSocketRequestHandler(CGIHTTPServer.CGIHTTPRequestHandler): # Special paths for XMLHttpRequest benchmark xhr_benchmark_helper_prefix = '/073be001e10950692ccbf3a2ad21c245' - parsed_path = urlparse.urlsplit(self.path) + parsed_path = urllib.parse.urlsplit(self.path) if parsed_path.path == (xhr_benchmark_helper_prefix + '_send'): xhr_benchmark_handler = XHRBenchmarkHandler( self.headers, self.rfile, self.wfile) @@ -795,7 +795,7 @@ class WebSocketRequestHandler(CGIHTTPServer.CGIHTTPRequestHandler): self.path) self._logger.info('Fallback to CGIHTTPRequestHandler') return True - except dispatch.DispatchException, e: + except dispatch.DispatchException as e: self._logger.info('Dispatch failed for error: %s', e) self.send_error(e.status) return False @@ -811,14 +811,14 @@ class WebSocketRequestHandler(CGIHTTPServer.CGIHTTPRequestHandler): self._options.dispatcher, allowDraft75=self._options.allow_draft75, strict=self._options.strict) - except handshake.VersionException, e: + except handshake.VersionException as e: self._logger.info('Handshake failed for version error: %s', e) self.send_response(common.HTTP_STATUS_BAD_REQUEST) self.send_header(common.SEC_WEBSOCKET_VERSION_HEADER, e.supported_versions) self.end_headers() return False - except handshake.HandshakeException, e: + except handshake.HandshakeException as e: # Handshake for ws(s) failed. self._logger.info('Handshake failed for error: %s', e) self.send_error(e.status) @@ -826,7 +826,7 @@ class WebSocketRequestHandler(CGIHTTPServer.CGIHTTPRequestHandler): request._dispatcher = self._options.dispatcher self._options.dispatcher.transfer_data(request) - except handshake.AbortedByUserException, e: + except handshake.AbortedByUserException as e: self._logger.info('Aborted: %s', e) return False @@ -1067,14 +1067,14 @@ def _parse_args_and_config(args): if temporary_options.config_file: try: config_fp = open(temporary_options.config_file, 'r') - except IOError, e: + except IOError as e: logging.critical( 'Failed to open configuration file %r: %r', temporary_options.config_file, e) sys.exit(1) - config_parser = ConfigParser.SafeConfigParser() + config_parser = configparser.SafeConfigParser() config_parser.readfp(config_fp) config_fp.close() @@ -1195,7 +1195,7 @@ def _main(args=None): server = WebSocketServer(options) server.serve_forever() - except Exception, e: + except Exception as e: logging.critical('mod_pywebsocket: %s' % e) logging.critical('mod_pywebsocket: %s' % util.get_stack_trace()) sys.exit(1) diff --git a/tests/wpt/web-platform-tests/tools/pywebsocket/mod_pywebsocket/util.py b/tests/wpt/web-platform-tests/tools/pywebsocket/mod_pywebsocket/util.py index 268d99e671d..6c8284cd074 100644 --- a/tests/wpt/web-platform-tests/tools/pywebsocket/mod_pywebsocket/util.py +++ b/tests/wpt/web-platform-tests/tools/pywebsocket/mod_pywebsocket/util.py @@ -47,7 +47,7 @@ except ImportError: md5_hash = md5.md5 sha1_hash = sha.sha -import StringIO +from six.moves import StringIO import logging import os import re @@ -68,7 +68,7 @@ def get_stack_trace(): TODO: Remove this when we only support Python 2.4 and above. Use traceback.format_exc instead. """ - out = StringIO.StringIO() + out = StringIO() traceback.print_exc(file=out) return out.getvalue() diff --git a/tests/wpt/web-platform-tests/tools/pywebsocket/mod_pywebsocket/xhr_benchmark_handler.py b/tests/wpt/web-platform-tests/tools/pywebsocket/mod_pywebsocket/xhr_benchmark_handler.py index c62f1540b8c..43a5b049220 100644 --- a/tests/wpt/web-platform-tests/tools/pywebsocket/mod_pywebsocket/xhr_benchmark_handler.py +++ b/tests/wpt/web-platform-tests/tools/pywebsocket/mod_pywebsocket/xhr_benchmark_handler.py @@ -61,7 +61,7 @@ class XHRBenchmarkHandler(object): bytes_to_send = request_array[0] try: bytes_to_send = int(bytes_to_send) - except ValueError, e: + except ValueError as e: self._logger.debug('Malformed size parameter: %r', bytes_to_send) return diff --git a/tests/wpt/web-platform-tests/tools/serve/serve.py b/tests/wpt/web-platform-tests/tools/serve/serve.py index 10dc3b3bd6c..5ebfa3a933d 100644 --- a/tests/wpt/web-platform-tests/tools/serve/serve.py +++ b/tests/wpt/web-platform-tests/tools/serve/serve.py @@ -65,7 +65,8 @@ class WrapperHandler(object): if query: query = "?" + query meta = "\n".join(self._get_meta(request)) - response.content = self.wrapper % {"meta": meta, "path": path, "query": query} + script = "\n".join(self._get_script(request)) + response.content = self.wrapper % {"meta": meta, "script": script, "path": path, "query": query} wrap_pipeline(path, request, response) def _get_path(self, path, resource_path): @@ -93,7 +94,7 @@ class WrapperHandler(object): return path def _get_metadata(self, request): - """Get an iterator over script metadata based on //META comments in the + """Get an iterator over script metadata based on // META comments in the associated js file. :param request: The Request being processed. @@ -105,7 +106,7 @@ class WrapperHandler(object): def _get_meta(self, request): """Get an iterator over strings to inject into the wrapper document - based on //META comments in the associated js file. + based on // META comments in the associated js file. :param request: The Request being processed. """ @@ -114,6 +115,17 @@ class WrapperHandler(object): if replacement: yield replacement + def _get_script(self, request): + """Get an iterator over strings to inject into the wrapper document + based on // META comments in the associated js file. + + :param request: The Request being processed. + """ + for key, value in self._get_metadata(request): + replacement = self._script_replacement(key, value) + if replacement: + yield replacement + @abc.abstractproperty def path_replace(self): # A list containing a mix of 2 item tuples with (input suffix, output suffix) @@ -159,14 +171,17 @@ class HtmlWrapperHandler(WrapperHandler): if key == b"timeout": if value == b"long": return '<meta name="timeout" content="long">' - if key == b"script": - attribute = value.decode('utf-8').replace("&", "&").replace('"', """) - return '<script src="%s"></script>' % attribute if key == b"title": value = value.decode('utf-8').replace("&", "&").replace("<", "<") return '<title>%s</title>' % value return None + def _script_replacement(self, key, value): + if key == b"script": + attribute = value.decode('utf-8').replace("&", "&").replace('"', """) + return '<script src="%s"></script>' % attribute + return None + class WorkersHandler(HtmlWrapperHandler): global_type = b"dedicatedworker" @@ -191,6 +206,7 @@ class WindowHandler(HtmlWrapperHandler): %(meta)s <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> +%(script)s <div id=log></div> <script src="%(path)s"></script> """ @@ -210,6 +226,7 @@ self.GLOBAL = { </script> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> +%(script)s <div id=log></div> <script src="%(path)s"></script> """ @@ -260,14 +277,21 @@ self.GLOBAL = { isWorker: function() { return true; }, }; importScripts("/resources/testharness.js"); +%(script)s importScripts("%(path)s"); done(); """ def _meta_replacement(self, key, value): + return None + + def _script_replacement(self, key, value): if key == b"script": attribute = value.decode('utf-8').replace("\\", "\\\\").replace('"', '\\"') return 'importScripts("%s")' % attribute + if key == b"title": + value = value.decode('utf-8').replace("\\", "\\\\").replace('"', '\\"') + return 'self.META_TITLE = "%s";' % value return None diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/firefox.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/firefox.py index 1707f677b81..47526da2eb8 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/firefox.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/firefox.py @@ -131,6 +131,7 @@ def env_options(): def run_info_extras(**kwargs): return {"e10s": kwargs["gecko_e10s"], + "verify": kwargs["verify"], "headless": "MOZ_HEADLESS" in os.environ} diff --git a/tests/wpt/web-platform-tests/touch-events/idlharness.window.js b/tests/wpt/web-platform-tests/touch-events/idlharness.window.js new file mode 100644 index 00000000000..6a95892794d --- /dev/null +++ b/tests/wpt/web-platform-tests/touch-events/idlharness.window.js @@ -0,0 +1,25 @@ +// META: script=/resources/WebIDLParser.js +// META: script=/resources/idlharness.js + +// https://w3c.github.io/touch-events/ + +'use strict'; + +promise_test(async () => { + const srcs = ['touch-events', 'uievents', 'dom', 'html']; + const [idl, uievents, dom, html] = await Promise.all( + srcs.map(i => fetch(`/interfaces/${i}.idl`).then(r => r.text()))); + + const idl_array = new IdlArray(); + idl_array.add_idls(idl); + idl_array.add_dependency_idls(uievents); + idl_array.add_dependency_idls(dom); + idl_array.add_dependency_idls(html); + idl_array.add_objects({ + Document: ['document'], + GlobalEventHandlers: ['window', 'document', 'document.body'], + Touch: ['new Touch({identifier: 1, target: document})'], + TouchEvent: ['new TouchEvent("name")'], + }); + idl_array.test(); +}, 'Test IDL implementation of touch-events API'); diff --git a/tests/wpt/web-platform-tests/webaudio/idlharness.https.html b/tests/wpt/web-platform-tests/webaudio/idlharness.https.html index cfdb60248c9..063e4cc955a 100644 --- a/tests/wpt/web-platform-tests/webaudio/idlharness.https.html +++ b/tests/wpt/web-platform-tests/webaudio/idlharness.https.html @@ -10,13 +10,13 @@ <script> 'use strict'; +let sample_rate, context, buffer, worklet_node; + promise_test(async t => { - const cssom = await fetch('/interfaces/cssom.idl').then(r => r.text()); - const dom = await fetch('/interfaces/dom.idl').then(r => r.text()); - const html = await fetch('/interfaces/html.idl').then(r => r.text()); - const uievents = await fetch('/interfaces/uievents.idl').then(r => r.text()); - const mediacapture = await fetch('/interfaces/mediacapture-main.idl').then(r => r.text()); - const webaudio = await fetch('/interfaces/web-audio-api.idl').then(r => r.text()); + const srcs = ['cssom', 'dom', 'html', 'uievents', 'mediacapture-main', 'webaudio']; + const [cssom, dom, html, uievents, mediacapture, webaudio] = + await Promise.all( + srcs.map(i => fetch(`/interfaces/${i}.idl`).then(r => r.text()))); const idl_array = new IdlArray(); idl_array.add_idls(webaudio); @@ -32,56 +32,63 @@ promise_test(async t => { idl_array.add_untested_idls('interface WorkletGlobalScope {};'); idl_array.add_untested_idls('interface Worklet {};'); - const sample_rate = 44100; - const context = new AudioContext; - const buffer = new AudioBuffer({length: 1, sampleRate: sample_rate}); - await context.audioWorklet.addModule( - 'the-audio-api/the-audioworklet-interface/processors/dummy-processor.js'); - const worklet_node = new AudioWorkletNode(context, 'dummy'); + try { + sample_rate = 44100; + context = new AudioContext; + buffer = new AudioBuffer({length: 1, sampleRate: sample_rate}); + await context.audioWorklet.addModule( + 'the-audio-api/the-audioworklet-interface/processors/dummy-processor.js'); + worklet_node = new AudioWorkletNode(context, 'dummy'); + } catch (e) { + // Ignore - errors will surface in each test_object below. + } idl_array.add_objects({ BaseAudioContext: [], - AudioContext: [context], - OfflineAudioContext: [new OfflineAudioContext(1, 1, sample_rate)], + AudioContext: ['context'], + OfflineAudioContext: ['new OfflineAudioContext(1, 1, sample_rate)'], OfflineAudioCompletionEvent: [ - new OfflineAudioCompletionEvent('', {renderedBuffer: buffer})], - AudioBuffer: [buffer], + 'new OfflineAudioCompletionEvent("", {renderedBuffer: buffer})'], + AudioBuffer: ['buffer'], AudioNode: [], - AudioParam: [new AudioBufferSourceNode(context).playbackRate], + AudioParam: ['new AudioBufferSourceNode(context).playbackRate'], AudioScheduledSourceNode: [], - AnalyserNode: [new AnalyserNode(context)], - AudioBufferSourceNode: [new AudioBufferSourceNode(context)], - AudioDestinationNode: [context.destination], - AudioListener: [context.listener], - AudioProcessingEvent: [new AudioProcessingEvent('', { + AnalyserNode: ['new AnalyserNode(context)'], + AudioBufferSourceNode: ['new AudioBufferSourceNode(context)'], + AudioDestinationNode: ['context.destination'], + AudioListener: ['context.listener'], + AudioProcessingEvent: [`new AudioProcessingEvent('', { playbackTime: 0, inputBuffer: buffer, outputBuffer: buffer - })], - BiquadFilterNode: [new BiquadFilterNode(context)], - ChannelMergerNode: [new ChannelMergerNode(context)], - ChannelSplitterNode: [new ChannelSplitterNode(context)], - ConstantSourceNode: [new ConstantSourceNode(context)], - ConvolverNode: [new ConvolverNode(context)], - DelayNode: [new DelayNode(context)], - DynamicsCompressorNode: [new DynamicsCompressorNode(context)], - GainNode: [new GainNode(context)], + })`], + BiquadFilterNode: ['new BiquadFilterNode(context)'], + ChannelMergerNode: ['new ChannelMergerNode(context)'], + ChannelSplitterNode: ['new ChannelSplitterNode(context)'], + ConstantSourceNode: ['new ConstantSourceNode(context)'], + ConvolverNode: ['new ConvolverNode(context)'], + DelayNode: ['new DelayNode(context)'], + DynamicsCompressorNode: ['new DynamicsCompressorNode(context)'], + GainNode: ['new GainNode(context)'], IIRFilterNode: [ - new IIRFilterNode(context, {feedforward: [1], feedback: [1]})], + 'new IIRFilterNode(context, {feedforward: [1], feedback: [1]})' + ], MediaElementAudioSourceNode: [ - new MediaElementAudioSourceNode(context, {mediaElement: new Audio})], + 'new MediaElementAudioSourceNode(context, {mediaElement: new Audio})' + ], MediaStreamAudioDestinationNode: [ - new MediaStreamAudioDestinationNode(context)], + 'new MediaStreamAudioDestinationNode(context)' + ], MediaStreamAudioSourceNode: [], MediaStreamTrackAudioSourceNode: [], - OscillatorNode: [new OscillatorNode(context)], - PannerNode: [new PannerNode(context)], - PeriodicWave: [new PeriodicWave(context)], - ScriptProcessorNode: [context.createScriptProcessor()], - StereoPannerNode: [new StereoPannerNode(context)], - WaveShaperNode: [new WaveShaperNode(context)], - AudioWorklet: [context.audioWorklet], + OscillatorNode: ['new OscillatorNode(context)'], + PannerNode: ['new PannerNode(context)'], + PeriodicWave: ['new PeriodicWave(context)'], + ScriptProcessorNode: ['context.createScriptProcessor()'], + StereoPannerNode: ['new StereoPannerNode(context)'], + WaveShaperNode: ['new WaveShaperNode(context)'], + AudioWorklet: ['context.audioWorklet'], AudioWorkletGlobalScope: [], - AudioParamMap: [worklet_node.parameters], - AudioWorkletNode: [worklet_node], + AudioParamMap: ['worklet_node.parameters'], + AudioWorkletNode: ['worklet_node'], AudioWorkletProcessor: [], }); idl_array.test(); diff --git a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audiobuffer-interface/idl-test.html b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audiobuffer-interface/idl-test.html deleted file mode 100644 index 9f5e2de5c60..00000000000 --- a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audiobuffer-interface/idl-test.html +++ /dev/null @@ -1,107 +0,0 @@ -<!DOCTYPE html> -<html class="a"> -<head> -<title>AudioBuffer IDL Test</title> -<script src="/resources/testharness.js"></script> -<script src="/resources/testharnessreport.js"></script> -<script src="/resources/idlharness.js"></script> -<script src="/resources/WebIDLParser.js"></script> -<script src="/webaudio/js/helpers.js"></script> -<style type="text/css"> - #event-target-idl, - #base-audio-context-idl - { visibility:hidden; height: 0px;} - </style> -</head> -<body class="a"> - - <pre id="event-target-idl">interface EventTarget { - void addEventListener(DOMString type, EventListener? callback, optional boolean capture = false); - void removeEventListener(DOMString type, EventListener? callback, optional boolean capture = false); - boolean dispatchEvent(Event event); -}; - -/* -callback interface EventListener { - void handleEvent(Event event); -}; -*/ -// Callback interfaces are not supported yet, but that's ok -interface EventListener {}; -</pre> - - <pre id="base-audio-context-idl">callback DecodeErrorCallback = void (DOMException error); -callback DecodeSuccessCallback = void (AudioBuffer decodedData); - -interface BaseAudioContext : EventTarget { - readonly attribute AudioDestinationNode destination; - readonly attribute float sampleRate; - readonly attribute double currentTime; - readonly attribute AudioListener listener; - readonly attribute AudioContextState state; - readonly attribute double baseLatency; - Promise<void> resume (); - attribute EventHandler onstatechange; - AudioBuffer createBuffer (unsigned long numberOfChannels, unsigned long length, float sampleRate); - Promise<AudioBuffer> decodeAudioData (ArrayBuffer audioData, optional DecodeSuccessCallback successCallback, optional DecodeErrorCallback errorCallback); - AudioBufferSourceNode createBufferSource (); - ConstantSourceNode createConstantSource (); - ScriptProcessorNode createScriptProcessor (optional unsigned long bufferSize = 0 - , optional unsigned long numberOfInputChannels = 2 - , optional unsigned long numberOfOutputChannels = 2 - ); - AnalyserNode createAnalyser (); - GainNode createGain (); - DelayNode createDelay (optional double maxDelayTime); - BiquadFilterNode createBiquadFilter (); - IIRFilterNode createIIRFilter (sequence<double> feedforward, sequence<double> feedback); - WaveShaperNode createWaveShaper (); - PannerNode createPanner (); - StereoPannerNode createStereoPanner (); - ConvolverNode createConvolver (); - ChannelSplitterNode createChannelSplitter (optional unsigned long numberOfOutputs = 6 - ); - ChannelMergerNode createChannelMerger (optional unsigned long numberOfInputs = 6 - ); - DynamicsCompressorNode createDynamicsCompressor (); - OscillatorNode createOscillator (); - PeriodicWave createPeriodicWave (Float32Array real, Float32Array imag, optional PeriodicWaveConstraints constraints); -};</pre> - - <pre id="audio-buffer-idl">dictionary AudioBufferOptions { - unsigned long numberOfChannels = 1; - required unsigned long length; - required float sampleRate; -}; - -[Constructor(AudioBufferOptions options)] -interface AudioBuffer { - readonly attribute float sampleRate; - readonly attribute unsigned long length; - readonly attribute double duration; - readonly attribute unsigned long numberOfChannels; - Float32Array getChannelData (unsigned long channel); - void copyFromChannel (Float32Array destination, unsigned long channelNumber, optional unsigned long startInChannel = 0 - ); - void copyToChannel (Float32Array source, unsigned long channelNumber, optional unsigned long startInChannel = 0 - ); -};</pre> - - <div id="log"></div> - - <script> -(function() { - var idl_array = new IdlArray(); - idl_array.add_untested_idls(document.getElementById("event-target-idl").textContent); - idl_array.add_untested_idls(document.getElementById("base-audio-context-idl").textContent); - idl_array.add_idls(document.getElementById("audio-buffer-idl").textContent); - - // For these tests the value of the arguments is unimportant. - audio_buffer = (new AudioContext).createBuffer(numberOfChannels = 1, length = 256, sampleRate = 44100); - - idl_array.add_objects({AudioBuffer: ["audio_buffer"]}); - idl_array.test(); -})(); - </script> -</body> -</html> diff --git a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audiodestinationnode-interface/idl-test.html b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audiodestinationnode-interface/idl-test.html deleted file mode 100644 index 276961127cf..00000000000 --- a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audiodestinationnode-interface/idl-test.html +++ /dev/null @@ -1,124 +0,0 @@ -<!DOCTYPE html> -<html class="a"> -<head> -<title>AudioDestinationNode IDL Test</title> -<script src="/resources/testharness.js"></script> -<script src="/resources/testharnessreport.js"></script> -<script src="/resources/idlharness.js"></script> -<script src="/resources/WebIDLParser.js"></script> -<script src="/webaudio/js/helpers.js"></script> -<style type="text/css"> - #event-target-idl, - #base-audio-context-idl, - #audio-node-idl - { visibility:hidden; height: 0px;} - </style> -</head> -<body class="a"> - - <pre id="event-target-idl">interface EventTarget { - void addEventListener(DOMString type, EventListener? callback, optional boolean capture = false); - void removeEventListener(DOMString type, EventListener? callback, optional boolean capture = false); - boolean dispatchEvent(Event event); -}; - -/* -callback interface EventListener { - void handleEvent(Event event); -}; -*/ -// Callback interfaces are not supported yet, but that's ok -interface EventListener {}; -</pre> - - <pre id="base-audio-context-idl">callback DecodeErrorCallback = void (DOMException error); - -callback DecodeSuccessCallback = void (AudioBuffer decodedData); - -interface BaseAudioContext : EventTarget { - readonly attribute AudioDestinationNode destination; - readonly attribute float sampleRate; - readonly attribute double currentTime; - readonly attribute AudioListener listener; - readonly attribute AudioContextState state; - readonly attribute double baseLatency; - Promise<void> resume (); - attribute EventHandler onstatechange; - AudioBuffer createBuffer (unsigned long numberOfChannels, unsigned long length, float sampleRate); - Promise<AudioBuffer> decodeAudioData (ArrayBuffer audioData, optional DecodeSuccessCallback successCallback, optional DecodeErrorCallback errorCallback); - AudioBufferSourceNode createBufferSource (); - ConstantSourceNode createConstantSource (); - ScriptProcessorNode createScriptProcessor (optional unsigned long bufferSize = 0 - , optional unsigned long numberOfInputChannels = 2 - , optional unsigned long numberOfOutputChannels = 2 - ); - AnalyserNode createAnalyser (); - GainNode createGain (); - DelayNode createDelay (optional double maxDelayTime); - BiquadFilterNode createBiquadFilter (); - IIRFilterNode createIIRFilter (sequence<double> feedforward, sequence<double> feedback); - WaveShaperNode createWaveShaper (); - PannerNode createPanner (); - StereoPannerNode createStereoPanner (); - ConvolverNode createConvolver (); - ChannelSplitterNode createChannelSplitter (optional unsigned long numberOfOutputs = 6 - ); - ChannelMergerNode createChannelMerger (optional unsigned long numberOfInputs = 6 - ); - DynamicsCompressorNode createDynamicsCompressor (); - OscillatorNode createOscillator (); - PeriodicWave createPeriodicWave (Float32Array real, Float32Array imag, optional PeriodicWaveConstraints constraints); -};</pre> - - <pre id="audio-node-idl">enum ChannelCountMode { - "max", - "clamped-max", - "explicit" -}; - -enum ChannelInterpretation { - "speakers", - "discrete" -}; - -interface AudioNode : EventTarget { - - void connect(AudioNode destination, optional unsigned long output = 0, optional unsigned long input = 0); - void connect(AudioParam destination, optional unsigned long output = 0); - void disconnect(optional unsigned long output = 0); - - readonly attribute BaseAudioContext context; - readonly attribute unsigned long numberOfInputs; - readonly attribute unsigned long numberOfOutputs; - - // Channel up-mixing and down-mixing rules for all inputs. - attribute unsigned long channelCount; - attribute ChannelCountMode channelCountMode; - attribute ChannelInterpretation channelInterpretation; - -};</pre> - - <pre id="audio-destination-node-idl">interface AudioDestinationNode : AudioNode { - - readonly attribute unsigned long maxChannelCount; - -};</pre> - - <div id="log"></div> - - <script> -(function() { - var idl_array = new IdlArray(); - idl_array.add_untested_idls(document.getElementById("event-target-idl").textContent); - idl_array.add_untested_idls(document.getElementById("base-audio-context-idl").textContent); - idl_array.add_untested_idls(document.getElementById("audio-node-idl").textContent); - idl_array.add_idls(document.getElementById("audio-destination-node-idl").textContent); - - audio_destination_node = (new AudioContext).destination; - - idl_array.add_objects({AudioDestinationNode: ["audio_destination_node"]}); - idl_array.test(); -})(); - </script> -</body> -</html> diff --git a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/idl-test.html b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/idl-test.html deleted file mode 100644 index 45ddad5c481..00000000000 --- a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/idl-test.html +++ /dev/null @@ -1,54 +0,0 @@ -<!DOCTYPE html> -<html class="a"> -<head> -<title>AudioParam IDL Test</title> -<script src="/resources/testharness.js"></script> -<script src="/resources/testharnessreport.js"></script> -<script src="/resources/idlharness.js"></script> -<script src="/resources/WebIDLParser.js"></script> -<style type="text/css"> - #audio-param-idl - { visibility:hidden; height: 0px;} - </style> -</head> -<body class="a"> - - <pre id="audio-param-idl">interface AudioParam { - - attribute float value; - readonly attribute float defaultValue; - readonly attribute float minValue; - readonly attribute float maxValue; - - // Parameter automation. - void setValueAtTime(float value, double startTime); - void linearRampToValueAtTime(float value, double endTime); - void exponentialRampToValueAtTime(float value, double endTime); - - // Exponentially approach the target value with a rate having the given time constant. - void setTargetAtTime(float target, double startTime, double timeConstant); - - // Sets an array of arbitrary parameter values starting at time for the given duration. - // The number of values will be scaled to fit into the desired duration. - void setValueCurveAtTime(Float32Array values, double startTime, double duration); - - // Cancels all scheduled parameter changes with times greater than or equal to startTime. - void cancelScheduledValues(double startTime); - -};</pre> - - <div id="log"></div> - - <script> -(function() { - var idl_array = new IdlArray(); - idl_array.add_idls(document.getElementById("audio-param-idl").textContent); - - delay_time = (new AudioContext).createDelay().delayTime; - - idl_array.add_objects({AudioParam: ["delay_time"]}); - idl_array.test(); -})(); - </script> -</body> -</html> diff --git a/tests/wpt/web-platform-tests/webrtc-stats/META.yml b/tests/wpt/web-platform-tests/webrtc-stats/META.yml new file mode 100644 index 00000000000..f4eb0f375c5 --- /dev/null +++ b/tests/wpt/web-platform-tests/webrtc-stats/META.yml @@ -0,0 +1,3 @@ +suggested_reviewers: + - henbos + - vr000m diff --git a/tests/wpt/web-platform-tests/webrtc-stats/README.md b/tests/wpt/web-platform-tests/webrtc-stats/README.md new file mode 100644 index 00000000000..2b693728948 --- /dev/null +++ b/tests/wpt/web-platform-tests/webrtc-stats/README.md @@ -0,0 +1,7 @@ +The following 4 test cases in the `webrtc/` directory test some of the mandatory-to-implement stats defined in WebRTC Statistics: + +* `getstats.html` +* `RTCPeerConnection-getStats.https.html` +* `RTCPeerConnection-track-stats.https.html` +* `RTCRtpReceiver-getStats.https.html` +* `RTCRtpSender-getStats.https.html` diff --git a/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-getStats.https.html b/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-getStats.https.html index d03cc83eeec..2c0170fac6d 100644 --- a/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-getStats.https.html +++ b/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-getStats.https.html @@ -244,26 +244,12 @@ }) .then(t.step_func(mediaStream => { const tracks = mediaStream.getTracks(); - assert_equals(tracks.length, 2, - 'Expect media stream to have one audio and one video track'); + const [audioTrack] = mediaStream.getAudioTracks(); + const [videoTrack] = mediaStream.getVideoTracks(); - let audioTrack; - let videoTrack; - - for (const track of tracks) { + for (const track of mediaStream.getTracks()) { t.add_cleanup(() => track.stop()); - pc1.addTrack(track, mediaStream); - - if (track.kind === 'audio') { - audioTrack = track; - } else if (track.kind === 'video') { - videoTrack = track; - } - } - - if (!audioTrack || ! videoTrack) { - assert_unreached('Expect mediaStream to have both audio and video streams'); } const testStatsReport = (pc, statsReport) => { diff --git a/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-helper.js b/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-helper.js index df91133a760..f83a590ed3a 100644 --- a/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-helper.js +++ b/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-helper.js @@ -357,10 +357,7 @@ function generateMediaStreamTrack(kind) { function getTrackFromUserMedia(kind) { return navigator.mediaDevices.getUserMedia({ [kind]: true }) .then(mediaStream => { - const tracks = mediaStream.getTracks(); - assert_greater_than(tracks.length, 0, - `Expect getUserMedia to return at least one track of kind ${kind}`); - const [ track ] = tracks; + const [track] = mediaStream.getTracks(); return [track, mediaStream]; }); } diff --git a/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-removeTrack.https.html b/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-removeTrack.https.html index 4315865be1f..c6e2d43336d 100644 --- a/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-removeTrack.https.html +++ b/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-removeTrack.https.html @@ -53,11 +53,7 @@ return navigator.mediaDevices.getUserMedia({ audio: true }) .then(mediaStream => { - const tracks = mediaStream.getTracks(); - assert_greater_than(tracks.length, 0, - 'Expect getUserMedia to return at least one audio track'); - - const track = tracks[0]; + const [track] = mediaStream.getTracks(); const sender = pc.addTrack(track, mediaStream); pc.close(); @@ -84,11 +80,7 @@ return navigator.mediaDevices.getUserMedia({ audio: true }) .then(mediaStream => { - const tracks = mediaStream.getTracks(); - assert_greater_than(tracks.length, 0, - 'Expect getUserMedia to return at least one audio track'); - - const track = tracks[0]; + const [track] = mediaStream.getTracks(); const sender = pc.addTrack(track, mediaStream); const pc2 = new RTCPeerConnection(); @@ -119,11 +111,7 @@ return navigator.mediaDevices.getUserMedia({ audio: true }) .then(mediaStream => { - const tracks = mediaStream.getTracks(); - assert_greater_than(tracks.length, 0, - 'Expect getUserMedia to return at least one audio track'); - - const track = tracks[0]; + const [track] = mediaStream.getTracks(); const sender = pc.addTrack(track, mediaStream); const pc2 = new RTCPeerConnection(); @@ -158,11 +146,7 @@ return navigator.mediaDevices.getUserMedia({ audio: true }) .then(mediaStream => { - const tracks = mediaStream.getTracks(); - assert_greater_than(tracks.length, 0, - 'Expect getUserMedia to return at least one audio track'); - - const track = tracks[0]; + const [track] = mediaStream.getTracks(); const sender = pc.addTrack(track, mediaStream); assert_equals(sender.track, track); diff --git a/tests/wpt/web-platform-tests/webrtc/interfaces.https.html b/tests/wpt/web-platform-tests/webrtc/interfaces.https.html index 2cb1ecfa3e4..5807a634981 100644 --- a/tests/wpt/web-platform-tests/webrtc/interfaces.https.html +++ b/tests/wpt/web-platform-tests/webrtc/interfaces.https.html @@ -81,11 +81,7 @@ function asyncInitMediaStreamTrack() { return navigator.mediaDevices.getUserMedia({ audio: true }) .then(mediaStream => { - const tracks = mediaStream.getTracks(); - assert_greater_than(tracks.length, 0, - 'Expect media stream to have at least one track'); - - idlTestObjects.mediaStreamTrack = tracks[0]; + idlTestObjects.mediaStreamTrack = mediaStream.getTracks()[0]; }); } diff --git a/tests/wpt/web-platform-tests/websockets/constructor/014.html b/tests/wpt/web-platform-tests/websockets/constructor/014.html index 579a5d3ed46..b0fdf36b1a0 100644 --- a/tests/wpt/web-platform-tests/websockets/constructor/014.html +++ b/tests/wpt/web-platform-tests/websockets/constructor/014.html @@ -1,6 +1,5 @@ <!doctype html> <title>WebSockets: serialize establish a connection</title> -<meta name=timeout content=long> <script src=/resources/testharness.js></script> <script src=/resources/testharnessreport.js></script> <script src=../constants.js?pipe=sub></script> @@ -14,7 +13,7 @@ async_test(function(t) { var events = 0; var prevDate; var date; - for (var i = 0; i < 4; ++i) { + for (var i = 0; i < 2; ++i) { ws[i] = new WebSocket(SCHEME_DOMAIN_PORT+'/handshake_sleep_2'); ws[i].id = i; ws[i].onopen = t.step_func(function(e) { @@ -28,7 +27,7 @@ async_test(function(t) { }.bind(ws[i])) ws[i].onclose = t.step_func(function() { events++; - if (events == 8) { + if (events == 4) { t.done(); } this.onclose = t.step_func(function() {assert_unreached()}); diff --git a/tests/wpt/web-platform-tests/webusb/resources/idlharness.dedicatedworker.sharedworker.js b/tests/wpt/web-platform-tests/webusb/idlharness.https.any.js index b2b269ac03c..10779ad513d 100644 --- a/tests/wpt/web-platform-tests/webusb/resources/idlharness.dedicatedworker.sharedworker.js +++ b/tests/wpt/web-platform-tests/webusb/idlharness.https.any.js @@ -1,9 +1,9 @@ +// META: script=/resources/WebIDLParser.js +// META: script=/resources/idlharness.js +// META: script=/webusb/resources/fake-devices.js +// META: script=/webusb/resources/usb-helpers.js +// META: global=sharedworker 'use strict'; -importScripts('/resources/testharness.js'); -importScripts('/resources/WebIDLParser.js'); -importScripts('/resources/idlharness.js'); -importScripts('/webusb/resources/fake-devices.js'); -importScripts('/webusb/resources/usb-helpers.js'); // Object instances used by the IDL test. var usbDevice; @@ -37,8 +37,13 @@ usb_test(async () => { usbConnectionEvent = new USBConnectionEvent('connect', { device: usbDevice }) + if (self.GLOBAL.isWindow()) { + idl_array.add_objects({ Navigator: ['navigator'] }); + } else if (self.GLOBAL.isWorker()) { + idl_array.add_objects({ WorkerNavigator: ['navigator'] }); + } + idl_array.add_objects({ - WorkerNavigator: ['navigator'], USB: ['navigator.usb'], USBAlternateInterface: ['usbAlternateInterface'], USBConfiguration: ['usbConfiguration'], @@ -55,6 +60,6 @@ usb_test(async () => { }); idl_array.test(); -}, 'WebUSB on Workers IDL test'); +}, 'WebUSB IDL test'); done(); diff --git a/tests/wpt/web-platform-tests/webusb/idlharness.https.html b/tests/wpt/web-platform-tests/webusb/idlharness.https.html deleted file mode 100644 index e57dd142d13..00000000000 --- a/tests/wpt/web-platform-tests/webusb/idlharness.https.html +++ /dev/null @@ -1,71 +0,0 @@ -<!DOCTYPE html> -<html> - <head> - <meta charset=utf-8> - <title>WebUSB IDL test</title> - <link rel="help" href="https://wicg.github.io/webusb/"> - <script src=/resources/testharness.js></script> - <script src=/resources/testharnessreport.js></script> - <script src=/resources/WebIDLParser.js></script> - <script src=/resources/idlharness.js></script> - <script src=resources/fake-devices.js></script> - <script src=resources/usb-helpers.js></script> - </head> - <body> - <script> - 'use strict'; - - // Object instances used by the IDL test. - var usbDevice; - var usbConfiguration; - var usbInterface; - var usbAlternateInterface; - var usbEndpoint; - var usbConnectionEvent; - - usb_test(async () => { - const idl = await fetch('/interfaces/webusb.idl').then(r => r.text()); - const html = await fetch('/interfaces/html.idl').then(r => r.text()); - const dom = await fetch('/interfaces/dom.idl').then(r => r.text()); - - const idl_array = new IdlArray(); - idl_array.add_idls(idl); - idl_array.add_dependency_idls(html); - idl_array.add_dependency_idls(dom); - - // Untested IDL interfaces - idl_array.add_untested_idls('dictionary PermissionDescriptor {};'); - idl_array.add_untested_idls('interface PermissionStatus {};'); - - let {device} = await getFakeDevice(); - - usbDevice = device; - usbConfiguration = usbDevice.configurations[0]; - usbInterface = usbConfiguration.interfaces[0]; - usbAlternateInterface = usbInterface.alternates[0]; - usbEndpoint = usbAlternateInterface.endpoints[0]; - usbConnectionEvent = - new USBConnectionEvent('connect', { device: usbDevice }) - - idl_array.add_objects({ - Navigator: ['navigator'], - USB: ['navigator.usb'], - USBAlternateInterface: ['usbAlternateInterface'], - USBConfiguration: ['usbConfiguration'], - USBConnectionEvent: ['usbConnectionEvent'], - USBDevice: ['usbDevice'], - USBEndpoint: ['usbEndpoint'], - USBInterface: ['usbInterface'], - USBInTransferResult: ['new USBInTransferResult("ok")'], - USBOutTransferResult: ['new USBOutTransferResult("ok")'], - USBIsochronousInTransferResult: ['new USBIsochronousInTransferResult([])'], - USBIsochronousOutTransferResult: ['new USBIsochronousOutTransferResult([])'], - USBIsochronousInTransferPacket: ['new USBIsochronousInTransferPacket("ok")'], - USBIsochronousOutTransferPacket: ['new USBIsochronousOutTransferPacket("ok")'], - }); - - idl_array.test(); - }, 'WebUSB IDL test'); - </script> - </body> -</html> diff --git a/tests/wpt/web-platform-tests/webusb/resources/usb.dedicatedworker.sharedworker.js b/tests/wpt/web-platform-tests/webusb/usb.https.any.js index b1b2a439e34..844cb32b183 100644 --- a/tests/wpt/web-platform-tests/webusb/resources/usb.dedicatedworker.sharedworker.js +++ b/tests/wpt/web-platform-tests/webusb/usb.https.any.js @@ -1,19 +1,10 @@ +// META: script=/webusb/resources/fake-devices.js +// META: script=/webusb/resources/usb-helpers.js +// META: global=sharedworker 'use strict'; -importScripts('/resources/testharness.js'); -importScripts('/webusb/resources/fake-devices.js'); -importScripts('/webusb/resources/usb-helpers.js'); let usbDevice, devicesFirstTime, fakeDevice, removedDevice; -test(() => { - assert_true(navigator.usb instanceof USB, - 'navigator.usb should be defined as a USB object'); - assert_true(navigator.usb.getDevices instanceof Function, - 'navigator.usb.getDevices should be defined as a function'); - assert_equals(typeof navigator.usb.requestDevice, 'undefined', - 'navigator.usb.requestDevice should not be defined'); -}, 'Web workers should have the WebUSB API exposed as defined in the spec.'); - usb_test(() => getFakeDevice() .then(_ => usbDevice = _.device) .then(() => navigator.usb.getDevices()) diff --git a/tests/wpt/web-platform-tests/webusb/usb.https.html b/tests/wpt/web-platform-tests/webusb/usb.https.window.js index 0583079852d..ee26619cf22 100644 --- a/tests/wpt/web-platform-tests/webusb/usb.https.html +++ b/tests/wpt/web-platform-tests/webusb/usb.https.window.js @@ -1,35 +1,10 @@ -<!DOCTYPE html> -<script src="/resources/testharness.js"></script> -<script src="/resources/testharnessreport.js"></script> -<script src="/resources/testdriver.js"></script> -<script src="/resources/testdriver-vendor.js"></script> -<script src="resources/fake-devices.js"></script> -<script src="resources/usb-helpers.js"></script> -<script> +// META: script=/resources/testdriver.js +// META: script=/resources/testdriver-vendor.js +// META: script=/webusb/resources/fake-devices.js +// META: script=/webusb/resources/usb-helpers.js 'use strict'; usb_test(() => { - return getFakeDevice().then(({ device }) => { - return navigator.usb.getDevices().then(devices => { - assert_equals(devices.length, 1); - assert_equals(device, devices[0]); - assertDeviceInfoEquals(devices[0], fakeDeviceInit); - }); - }); -}, 'getDevices returns devices that are connected'); - -usb_test(() => { - return getFakeDevice().then(() => { - return navigator.usb.getDevices().then(devicesFirstTime => { - assert_equals(devicesFirstTime.length, 1); - return navigator.usb.getDevices().then(devicesSecondTime => { - assert_array_equals(devicesSecondTime, devicesFirstTime); - }); - }); - }); -}, 'getDevices returns the same objects for each USB device'); - -usb_test(() => { return navigator.usb.requestDevice({ filters: [] }) .then(device => { assert_unreachable('requestDevice should reject without a user gesture'); @@ -55,7 +30,7 @@ usb_test(() => { navigator.usb.test.onrequestdevice = event => { navigator.usb.test.onrequestdevice = undefined; event.respondWith(fakeDevice); - } + }; return callWithTrustedClick(() => { return navigator.usb.requestDevice({ filters: [] }).then(chosenDevice => { assert_equals(chosenDevice, device); @@ -69,7 +44,7 @@ usb_test(() => { navigator.usb.test.onrequestdevice = event => { navigator.usb.test.onrequestdevice = undefined; event.respondWith(fakeDevice); - } + }; return callWithTrustedClick(() => { return navigator.usb.requestDevice({ filters: [] }).then(chosenDevice => { assert_equals(chosenDevice, device); @@ -97,7 +72,7 @@ usb_test(() => { } event.respondWith(null); - } + }; return callWithTrustedClick(() => { return navigator.usb.requestDevice({ filters: expectedFilters }) @@ -111,31 +86,10 @@ usb_test(() => { }, 'filters are sent correctly'); usb_test(() => { - return getFakeDevice().then(({ device }) => { - assertDeviceInfoEquals(device, fakeDeviceInit); - return device.open().then(() => device.close()); - }); -}, 'onconnect event is trigged by adding a device'); - -usb_test(usb => { - return getFakeDevice().then(({ device, fakeDevice }) => { - return waitForDisconnect(fakeDevice).then(removedDevice => { - assertDeviceInfoEquals(removedDevice, fakeDeviceInit); - assert_equals(removedDevice, device); - return removedDevice.open().then(() => { - assert_unreachable('should not be able to open a disconnected device'); - }, error => { - assert_equals(error.code, DOMException.NOT_FOUND_ERR); - }); - }); - }); -}, 'ondisconnect event is triggered by removing a device'); - -usb_test(() => { return getFakeDevice().then(({ device, fakeDevice }) => { navigator.usb.test.onrequestdevice = event => { event.respondWith(fakeDevice); - } + }; return callWithTrustedClick(() => { let first = navigator.usb.requestDevice({ filters: [] }); let second = navigator.usb.requestDevice({ filters: [] }); @@ -150,4 +104,3 @@ usb_test(() => { }); }); }, 'multiple requestDevice calls are allowed per user activation'); -</script> diff --git a/tests/wpt/web-platform-tests/webusb/worker/usb.serviceworker.https.html b/tests/wpt/web-platform-tests/webusb/usb.serviceworker.https.html index a5600e3a679..9a0b653a2ac 100644 --- a/tests/wpt/web-platform-tests/webusb/worker/usb.serviceworker.https.html +++ b/tests/wpt/web-platform-tests/webusb/usb.serviceworker.https.html @@ -6,7 +6,7 @@ <script> 'use strict'; -service_worker_test('/webusb/resources/usb.serviceworker.js', +service_worker_test('/webusb/usb.serviceworker.js', 'Ensure that WebUSB is inaccessible from a service worker.'); </script> diff --git a/tests/wpt/web-platform-tests/webusb/resources/usb.serviceworker.js b/tests/wpt/web-platform-tests/webusb/usb.serviceworker.js index c509adfef0d..c509adfef0d 100644 --- a/tests/wpt/web-platform-tests/webusb/resources/usb.serviceworker.js +++ b/tests/wpt/web-platform-tests/webusb/usb.serviceworker.js diff --git a/tests/wpt/web-platform-tests/webusb/usbConnectionEvent.https.any.js b/tests/wpt/web-platform-tests/webusb/usbConnectionEvent.https.any.js new file mode 100644 index 00000000000..62c567271d2 --- /dev/null +++ b/tests/wpt/web-platform-tests/webusb/usbConnectionEvent.https.any.js @@ -0,0 +1,22 @@ +// META: script=/webusb/resources/fake-devices.js +// META: script=/webusb/resources/usb-helpers.js +// META: global=sharedworker + +'use strict'; + +usb_test(() => getFakeDevice() + .then(({ device }) => { + let evt = new USBConnectionEvent('connect', { device: device }); + assert_equals(evt.type, 'connect'); + assert_equals(evt.device, device); + }), + 'Can construct a USBConnectionEvent with a device'); + +test(t => { + assert_throws(TypeError(), + () => new USBConnectionEvent('connect', { device: null })); + assert_throws(TypeError(), + () => new USBConnectionEvent('connect', {})); +}, 'Cannot construct a USBConnectionEvent without a device'); + +done(); diff --git a/tests/wpt/web-platform-tests/webusb/usbConnectionEvent.https.html b/tests/wpt/web-platform-tests/webusb/usbConnectionEvent.https.html deleted file mode 100644 index 90b547f94f7..00000000000 --- a/tests/wpt/web-platform-tests/webusb/usbConnectionEvent.https.html +++ /dev/null @@ -1,22 +0,0 @@ -<!DOCTYPE html> -<script src="/resources/testharness.js"></script> -<script src="/resources/testharnessreport.js"></script> -<script src="resources/fake-devices.js"></script> -<script src="resources/usb-helpers.js"></script> -<script> -'use strict'; - -usb_test(() => { - return getFakeDevice().then(({ device }) => { - let evt = new USBConnectionEvent('connect', { device: device }); - assert_equals(evt.type, 'connect'); - assert_equals(evt.device, device); - }); -}, 'Can construct a USBConnectionEvent with a device'); - -test(t => { - assert_throws(TypeError(), () => - new USBConnectionEvent('connect', { device: null })); - assert_throws(TypeError(), () => new USBConnectionEvent('connect', {})); -}, 'Cannot construct a USBConnectionEvent without a device'); -</script> diff --git a/tests/wpt/web-platform-tests/webusb/usbDevice.https.html b/tests/wpt/web-platform-tests/webusb/usbDevice.https.any.js index b167e70c353..d64fd65649e 100644 --- a/tests/wpt/web-platform-tests/webusb/usbDevice.https.html +++ b/tests/wpt/web-platform-tests/webusb/usbDevice.https.any.js @@ -1,9 +1,6 @@ -<!DOCTYPE html> -<script src="/resources/testharness.js"></script> -<script src="/resources/testharnessreport.js"></script> -<script src="resources/fake-devices.js"></script> -<script src="resources/usb-helpers.js"></script> -<script> +// META: script=/webusb/resources/fake-devices.js +// META: script=/webusb/resources/usb-helpers.js +// META: global=sharedworker 'use strict'; function assertRejectsWithNotFoundError(promise) { @@ -12,7 +9,7 @@ function assertRejectsWithNotFoundError(promise) { function assertRejectsWithNotOpenError(promise) { return assertRejectsWithError( - promise, 'InvalidStateError', 'The device must be opened first.') + promise, 'InvalidStateError', 'The device must be opened first.'); } function assertRejectsWithNotConfiguredError(promise) { @@ -340,7 +337,7 @@ usb_test(() => { assert_equals(result.status, 'ok'); assert_equals(result.bytesWritten, 8); return device.close(); - }) + }); }); }, 'can issue OUT control transfer'); @@ -651,4 +648,3 @@ usb_test(() => { .then(() => assertRejectsWithNotFoundError(device.reset())); }); }, 'resetDevice rejects when called on a disconnected device'); -</script> diff --git a/tests/wpt/web-platform-tests/webusb/usbInTransferResult.https.html b/tests/wpt/web-platform-tests/webusb/usbInTransferResult.https.any.js index c176d28108a..50f1eaa1fa0 100644 --- a/tests/wpt/web-platform-tests/webusb/usbInTransferResult.https.html +++ b/tests/wpt/web-platform-tests/webusb/usbInTransferResult.https.any.js @@ -1,7 +1,6 @@ -<!DOCTYPE html> -<script src="/resources/testharness.js"></script> -<script src="/resources/testharnessreport.js"></script> -<script> +// META: script=/webusb/resources/fake-devices.js +// META: script=/webusb/resources/usb-helpers.js +// META: global=sharedworker 'use strict'; test(t => { @@ -28,4 +27,3 @@ test(t => { test(t => { assert_throws(TypeError(), () => new USBInTransferResult()); }, 'Cannot construct USBInTransferResult without a status'); -</script> diff --git a/tests/wpt/web-platform-tests/webusb/usbIsochronousInTransferPacket.https.html b/tests/wpt/web-platform-tests/webusb/usbIsochronousInTransferPacket.https.any.js index c2aa78a0662..4a17547ff19 100644 --- a/tests/wpt/web-platform-tests/webusb/usbIsochronousInTransferPacket.https.html +++ b/tests/wpt/web-platform-tests/webusb/usbIsochronousInTransferPacket.https.any.js @@ -1,7 +1,4 @@ -<!DOCTYPE html> -<script src="/resources/testharness.js"></script> -<script src="/resources/testharnessreport.js"></script> -<script> +// META: global=sharedworker 'use strict'; test(t => { @@ -30,4 +27,3 @@ test(t => { test(t => { assert_throws(TypeError(), () => new USBIsochronousInTransferPacket()); }, 'Cannot construct USBIsochronousInTransferPacket without a status'); -</script> diff --git a/tests/wpt/web-platform-tests/webusb/usbIsochronousInTransferResult.https.html b/tests/wpt/web-platform-tests/webusb/usbIsochronousInTransferResult.https.any.js index 5cad38aff9a..8b68f13d2e1 100644 --- a/tests/wpt/web-platform-tests/webusb/usbIsochronousInTransferResult.https.html +++ b/tests/wpt/web-platform-tests/webusb/usbIsochronousInTransferResult.https.any.js @@ -1,7 +1,4 @@ -<!DOCTYPE html> -<script src="/resources/testharness.js"></script> -<script src="/resources/testharnessreport.js"></script> -<script> +// META: global=sharedworker 'use strict'; test(t => { @@ -38,4 +35,3 @@ test(t => { test(t => { assert_throws(TypeError(), () => new USBIsochronousInTransferResult()); }, 'Cannot construct a USBIsochronousInTransferResult without packets'); -</script> diff --git a/tests/wpt/web-platform-tests/webusb/usbIsochronousOutTransferPacket.https.html b/tests/wpt/web-platform-tests/webusb/usbIsochronousOutTransferPacket.https.any.js index 137d0fba6dc..edef6a64005 100644 --- a/tests/wpt/web-platform-tests/webusb/usbIsochronousOutTransferPacket.https.html +++ b/tests/wpt/web-platform-tests/webusb/usbIsochronousOutTransferPacket.https.any.js @@ -1,7 +1,4 @@ -<!DOCTYPE html> -<script src="/resources/testharness.js"></script> -<script src="/resources/testharnessreport.js"></script> -<script> +// META: global=sharedworker 'use strict'; test(t => { @@ -23,4 +20,3 @@ test(t => { test(t => { assert_throws(TypeError(), () => new USBIsochronousOutTransferPacket()); }, 'Cannot construct USBIsochronousOutTransferPacket without a status'); -</script> diff --git a/tests/wpt/web-platform-tests/webusb/usbIsochronousOutTransferResult.https.html b/tests/wpt/web-platform-tests/webusb/usbIsochronousOutTransferResult.https.any.js index ae105caa0c7..d196a2a0eaf 100644 --- a/tests/wpt/web-platform-tests/webusb/usbIsochronousOutTransferResult.https.html +++ b/tests/wpt/web-platform-tests/webusb/usbIsochronousOutTransferResult.https.any.js @@ -1,7 +1,4 @@ -<!DOCTYPE html> -<script src="/resources/testharness.js"></script> -<script src="/resources/testharnessreport.js"></script> -<script> +// META: global=sharedworker 'use strict'; test(t => { @@ -21,4 +18,3 @@ test(t => { test(t => { assert_throws(TypeError(), () => new USBIsochronousOutTransferResult()); }, 'Cannot construct a USBIsochronousOutTransferResult without packets'); -</script> diff --git a/tests/wpt/web-platform-tests/webusb/usbOutTransferResult.https.html b/tests/wpt/web-platform-tests/webusb/usbOutTransferResult.https.any.js index 7d6a63c782d..4405a00414c 100644 --- a/tests/wpt/web-platform-tests/webusb/usbOutTransferResult.https.html +++ b/tests/wpt/web-platform-tests/webusb/usbOutTransferResult.https.any.js @@ -1,7 +1,4 @@ -<!DOCTYPE html> -<script src="/resources/testharness.js"></script> -<script src="/resources/testharnessreport.js"></script> -<script> +// META: global=sharedworker 'use strict'; test(t => { @@ -21,4 +18,3 @@ test(t => { test(t => { assert_throws(TypeError(), () => new USBOutTransferResult()); }, 'Cannot construct USBOutTransferResult without a status'); -</script> diff --git a/tests/wpt/web-platform-tests/webusb/worker/idlharness.dedicatedworker.https.html b/tests/wpt/web-platform-tests/webusb/worker/idlharness.dedicatedworker.https.html deleted file mode 100644 index 9ff21839f89..00000000000 --- a/tests/wpt/web-platform-tests/webusb/worker/idlharness.dedicatedworker.https.html +++ /dev/null @@ -1,11 +0,0 @@ -<!DOCTYPE html> -<script src="/resources/testharness.js"></script> -<script src="/resources/testharnessreport.js"></script> -<div id="log"></div> -<script> -'use strict'; - -fetch_tests_from_worker(new Worker( - '/webusb/resources/idlharness.dedicatedworker.sharedworker.js')); - -</script> diff --git a/tests/wpt/web-platform-tests/webusb/worker/idlharness.sharedworker.https.html b/tests/wpt/web-platform-tests/webusb/worker/idlharness.sharedworker.https.html deleted file mode 100644 index 362e182e1ce..00000000000 --- a/tests/wpt/web-platform-tests/webusb/worker/idlharness.sharedworker.https.html +++ /dev/null @@ -1,11 +0,0 @@ -<!DOCTYPE html> -<script src="/resources/testharness.js"></script> -<script src="/resources/testharnessreport.js"></script> -<div id="log"></div> -<script> -'use strict'; - -fetch_tests_from_worker(new SharedWorker( - '/webusb/resources/idlharness.dedicatedworker.sharedworker.js')); - -</script>
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/webusb/worker/usb.dedicatedworker.https.html b/tests/wpt/web-platform-tests/webusb/worker/usb.dedicatedworker.https.html deleted file mode 100644 index e3a0f9853ef..00000000000 --- a/tests/wpt/web-platform-tests/webusb/worker/usb.dedicatedworker.https.html +++ /dev/null @@ -1,11 +0,0 @@ -<!DOCTYPE html> -<script src="/resources/testharness.js"></script> -<script src="/resources/testharnessreport.js"></script> -<div id="log"></div> -<script> -'use strict'; - -fetch_tests_from_worker(new Worker( - '/webusb/resources/usb.dedicatedworker.sharedworker.js')); - -</script> diff --git a/tests/wpt/web-platform-tests/webusb/worker/usb.sharedworker.https.html b/tests/wpt/web-platform-tests/webusb/worker/usb.sharedworker.https.html deleted file mode 100644 index 5779b7fe63f..00000000000 --- a/tests/wpt/web-platform-tests/webusb/worker/usb.sharedworker.https.html +++ /dev/null @@ -1,11 +0,0 @@ -<!DOCTYPE html> -<script src="/resources/testharness.js"></script> -<script src="/resources/testharnessreport.js"></script> -<div id="log"></div> -<script> -'use strict'; - -fetch_tests_from_worker(new SharedWorker( - '/webusb/resources/usb.dedicatedworker.sharedworker.js')); - -</script> diff --git a/tests/wpt/web-platform-tests/webxr/resources/webxr_util.js b/tests/wpt/web-platform-tests/webxr/resources/webxr_util.js index 388c7578c5e..5adf0a2ba85 100644 --- a/tests/wpt/web-platform-tests/webxr/resources/webxr_util.js +++ b/tests/wpt/web-platform-tests/webxr/resources/webxr_util.js @@ -12,7 +12,7 @@ function forEachWebxrObject(callback) { callback(window.XRSessionCreationOptions, 'XRSessionCreationOptions'); callback(window.XRFrameRequestCallback, 'XRFrameRequestCallback'); callback(window.XRPresentationContext, 'XRPresentationContext'); - callback(window.XRPresentationFrame, 'XRPresentationFrame'); + callback(window.XRFrame, 'XRFrame'); callback(window.XRView, 'XRView'); callback(window.XRViewport, 'XRViewport'); callback(window.XRDevicePose, 'XRDevicePose'); diff --git a/tests/wpt/web-platform-tests/workers/modules/dedicated-worker-import.html b/tests/wpt/web-platform-tests/workers/modules/dedicated-worker-import.any.js index a45fa9ed36f..30b48e46bab 100644 --- a/tests/wpt/web-platform-tests/workers/modules/dedicated-worker-import.html +++ b/tests/wpt/web-platform-tests/workers/modules/dedicated-worker-import.any.js @@ -1,9 +1,3 @@ -<!DOCTYPE html> -<title>DedicatedWorker: import</title> -<script src="/resources/testharness.js"></script> -<script src="/resources/testharnessreport.js"></script> -<script> - // Starts a dedicated worker for |scriptURL| and waits until the list of // imported modules is sent from the worker. Passes if the list is equal to // |expectedImportedModules|. @@ -43,5 +37,3 @@ import_test('resources/dynamic-import-and-then-static-import-worker.js', import_test('resources/eval-dynamic-import-worker.js', ['export-on-load-script.js'], 'eval(import()).'); - -</script> diff --git a/tests/wpt/web-platform-tests/workers/nested_worker_close_from_parent_worker.html b/tests/wpt/web-platform-tests/workers/nested_worker_close_from_parent_worker.html new file mode 100644 index 00000000000..57c98517cbd --- /dev/null +++ b/tests/wpt/web-platform-tests/workers/nested_worker_close_from_parent_worker.html @@ -0,0 +1,15 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>Test terminating a nested workers by calling terminate() from its parent worker</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script> +async_test(function() { + const worker = new Worker("support/parent_of_nested_worker.js"); + worker.onmessage = this.step_func_done(function(e) { + assert_equals(e.data, "Pass"); + done(); + }); + worker.postMessage("close"); +}); +</script> diff --git a/tests/wpt/web-platform-tests/workers/nested_worker_close_self.worker.js b/tests/wpt/web-platform-tests/workers/nested_worker_close_self.worker.js new file mode 100644 index 00000000000..73c87f40550 --- /dev/null +++ b/tests/wpt/web-platform-tests/workers/nested_worker_close_self.worker.js @@ -0,0 +1,12 @@ +importScripts("/resources/testharness.js"); + +async_test(function() { + if (!self.Worker) + done(); + const worker = new Worker("support/WorkerClose.js"); + worker.onmessage = this.step_func_done(function(e) { + assert_equals(e.data, "close"); + done(); + }); + worker.postMessage("close"); +}, "Nested work that closes itself"); diff --git a/tests/wpt/web-platform-tests/workers/nested_worker_importScripts.worker.js b/tests/wpt/web-platform-tests/workers/nested_worker_importScripts.worker.js new file mode 100644 index 00000000000..a671ee4e1e9 --- /dev/null +++ b/tests/wpt/web-platform-tests/workers/nested_worker_importScripts.worker.js @@ -0,0 +1,11 @@ +importScripts("/resources/testharness.js"); + +async_test(function() { + const worker = new Worker("support/ImportScripts.js"); + worker.postMessage("ping"); + worker.onmessage = this.step_func_done(function(evt) { + assert_equals(evt.data, "Pass"); + worker.terminate(); + }); +}, "Nested worker that calls importScripts()"); +done(); diff --git a/tests/wpt/web-platform-tests/workers/nested_worker_sync_xhr.worker.js b/tests/wpt/web-platform-tests/workers/nested_worker_sync_xhr.worker.js new file mode 100644 index 00000000000..609ecc49e16 --- /dev/null +++ b/tests/wpt/web-platform-tests/workers/nested_worker_sync_xhr.worker.js @@ -0,0 +1,11 @@ +importScripts("/resources/testharness.js"); + +async_test(function() { + const worker = new Worker("support/sync_xhr.js"); + worker.postMessage("ping"); + worker.onmessage = this.step_func_done(function(evt) { + assert_equals(evt.data, "Pass"); + worker.terminate(); + }); +}, "Nested worker that issues a sync XHR"); +done(); diff --git a/tests/wpt/web-platform-tests/workers/nested_worker_terminate_from_document.html b/tests/wpt/web-platform-tests/workers/nested_worker_terminate_from_document.html new file mode 100644 index 00000000000..10849b3f6ce --- /dev/null +++ b/tests/wpt/web-platform-tests/workers/nested_worker_terminate_from_document.html @@ -0,0 +1,14 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>Test terminating a chain of nested workers by calling terminate() from the owning document</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script> +async_test(function() { + const worker = new Worker("support/parent_of_nested_worker.js"); + worker.onmessage = this.step_func_done(function(e) { + assert_equals(e.data, "Pass"); + worker.terminate(); + }); +}); +</script> diff --git a/tests/wpt/web-platform-tests/workers/support/parent_of_nested_worker.js b/tests/wpt/web-platform-tests/workers/support/parent_of_nested_worker.js new file mode 100644 index 00000000000..1f14334290a --- /dev/null +++ b/tests/wpt/web-platform-tests/workers/support/parent_of_nested_worker.js @@ -0,0 +1,14 @@ +try { + var worker = new Worker("WorkerBasic.js"); + worker.onmessage = function(e) { + if (e.data == "Pass") { + postMessage("Pass"); + } else if (e.data == "close") { + close(); + postMessage("Pass"); + } + }; + worker.postMessage("start"); +} catch (e) { + postMessage("Fail: " + e); +} diff --git a/tests/wpt/web-platform-tests/workers/support/sync_xhr.js b/tests/wpt/web-platform-tests/workers/support/sync_xhr.js new file mode 100644 index 00000000000..5de74765373 --- /dev/null +++ b/tests/wpt/web-platform-tests/workers/support/sync_xhr.js @@ -0,0 +1,13 @@ +try +{ + const request = new XMLHttpRequest(); + request.open("GET", "sync_xhr_target.xml", false); + request.send(); + result = request.responseText == "<foo>sometext</foo>\n" ? "Pass" : "Fail"; + postMessage(result); +} +catch(ex) +{ + result = "Fail"; + postMessage(result); +} diff --git a/tests/wpt/web-platform-tests/workers/support/sync_xhr_target.xml b/tests/wpt/web-platform-tests/workers/support/sync_xhr_target.xml new file mode 100644 index 00000000000..d31a8c5eb46 --- /dev/null +++ b/tests/wpt/web-platform-tests/workers/support/sync_xhr_target.xml @@ -0,0 +1 @@ +<foo>sometext</foo> |