aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--tests/wpt/metadata/FileAPI/reading-data-section/filereader_readAsDataURL.html.ini4
-rw-r--r--tests/wpt/metadata/FileAPI/url/url-in-tags-revoke.window.js.ini3
-rw-r--r--tests/wpt/metadata/FileAPI/url/url-with-fetch.any.js.ini7
-rw-r--r--tests/wpt/metadata/FileAPI/url/url-with-xhr.any.js.ini7
-rw-r--r--tests/wpt/metadata/MANIFEST.json2300
-rw-r--r--tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/ecdh_bits.https.any.js.ini9
-rw-r--r--tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/ecdh_bits.https.worker.js.ini4
-rw-r--r--tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/ecdh_keys.https.any.js.ini9
-rw-r--r--tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/ecdh_keys.https.worker.js.ini4
-rw-r--r--tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/hkdf.https.any.js.ini39
-rw-r--r--tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/hkdf.https.worker.js.ini4
-rw-r--r--tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/pbkdf2.https.any.js.ini89
-rw-r--r--tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/pbkdf2.https.worker.js.ini4
-rw-r--r--tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/test_ecdh_bits.https.html.ini5
-rw-r--r--tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/test_ecdh_keys.https.html.ini5
-rw-r--r--tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/test_hkdf.https.html.ini5
-rw-r--r--tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/test_pbkdf2_empty_empty.https.html.ini5
-rw-r--r--tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/test_pbkdf2_empty_long.https.html.ini5
-rw-r--r--tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/test_pbkdf2_empty_short.https.html.ini5
-rw-r--r--tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/test_pbkdf2_long_empty.https.html.ini5
-rw-r--r--tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/test_pbkdf2_long_long.https.html.ini5
-rw-r--r--tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/test_pbkdf2_long_short.https.html.ini5
-rw-r--r--tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/test_pbkdf2_short_empty.https.html.ini5
-rw-r--r--tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/test_pbkdf2_short_long.https.html.ini5
-rw-r--r--tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/test_pbkdf2_short_short.https.html.ini5
-rw-r--r--tests/wpt/metadata/WebCryptoAPI/encrypt_decrypt/aes_cbc.https.worker.js.ini3
-rw-r--r--tests/wpt/metadata/WebCryptoAPI/encrypt_decrypt/aes_ctr.https.worker.js.ini3
-rw-r--r--tests/wpt/metadata/WebCryptoAPI/encrypt_decrypt/aes_gcm.https.worker.js.ini3
-rw-r--r--tests/wpt/metadata/WebCryptoAPI/encrypt_decrypt/rsa.https.worker.js.ini3
-rw-r--r--tests/wpt/metadata/WebCryptoAPI/generateKey/failures_AES-CBC.https.any.js.ini6
-rw-r--r--tests/wpt/metadata/WebCryptoAPI/generateKey/failures_AES-CTR.https.any.js.ini6
-rw-r--r--tests/wpt/metadata/WebCryptoAPI/generateKey/failures_AES-GCM.https.any.js.ini6
-rw-r--r--tests/wpt/metadata/WebCryptoAPI/generateKey/failures_AES-KW.https.any.js.ini6
-rw-r--r--tests/wpt/metadata/WebCryptoAPI/generateKey/failures_ECDH.https.any.js.ini6
-rw-r--r--tests/wpt/metadata/WebCryptoAPI/generateKey/failures_ECDSA.https.any.js.ini6
-rw-r--r--tests/wpt/metadata/WebCryptoAPI/generateKey/failures_HMAC.https.any.js.ini6
-rw-r--r--tests/wpt/metadata/WebCryptoAPI/generateKey/failures_RSA-OAEP.https.any.js.ini6
-rw-r--r--tests/wpt/metadata/WebCryptoAPI/generateKey/failures_RSA-PSS.https.any.js.ini6
-rw-r--r--tests/wpt/metadata/WebCryptoAPI/generateKey/failures_RSASSA-PKCS1-v1_5.https.any.js.ini6
-rw-r--r--tests/wpt/metadata/WebCryptoAPI/generateKey/successes_AES-CBC.https.any.js.ini6
-rw-r--r--tests/wpt/metadata/WebCryptoAPI/generateKey/successes_AES-CTR.https.any.js.ini6
-rw-r--r--tests/wpt/metadata/WebCryptoAPI/generateKey/successes_AES-GCM.https.any.js.ini6
-rw-r--r--tests/wpt/metadata/WebCryptoAPI/generateKey/successes_AES-KW.https.any.js.ini6
-rw-r--r--tests/wpt/metadata/WebCryptoAPI/generateKey/successes_ECDH.https.any.js.ini6
-rw-r--r--tests/wpt/metadata/WebCryptoAPI/generateKey/successes_ECDSA.https.any.js.ini6
-rw-r--r--tests/wpt/metadata/WebCryptoAPI/generateKey/successes_HMAC.https.any.js.ini6
-rw-r--r--tests/wpt/metadata/WebCryptoAPI/generateKey/successes_RSA-OAEP.https.any.js.ini96
-rw-r--r--tests/wpt/metadata/WebCryptoAPI/generateKey/successes_RSA-PSS.https.any.js.ini24
-rw-r--r--tests/wpt/metadata/WebCryptoAPI/generateKey/successes_RSASSA-PKCS1-v1_5.https.any.js.ini24
-rw-r--r--tests/wpt/metadata/WebCryptoAPI/idlharness.https.worker.js.ini3
-rw-r--r--tests/wpt/metadata/WebCryptoAPI/sign_verify/ecdsa.https.worker.js.ini3
-rw-r--r--tests/wpt/metadata/WebCryptoAPI/sign_verify/hmac.https.worker.js.ini3
-rw-r--r--tests/wpt/metadata/WebCryptoAPI/sign_verify/rsa_pkcs.https.worker.js.ini3
-rw-r--r--tests/wpt/metadata/WebCryptoAPI/sign_verify/rsa_pss.https.worker.js.ini3
-rw-r--r--tests/wpt/metadata/WebCryptoAPI/wrapKey_unwrapKey/wrapKey_unwrapKey.https.worker.js.ini3
-rw-r--r--tests/wpt/metadata/WebIDL/ecmascript-binding/no-regexp-special-casing.any.js.ini6
-rw-r--r--tests/wpt/metadata/css/compositing/parsing/background-blend-mode-valid.html.ini52
-rw-r--r--tests/wpt/metadata/css/compositing/parsing/isolation-valid.html.ini7
-rw-r--r--tests/wpt/metadata/css/css-animations/idlharness.html.ini4
-rw-r--r--tests/wpt/metadata/css/css-conditional/idlharness.html.ini4
-rw-r--r--tests/wpt/metadata/css/css-transitions/idlharness.html.ini4
-rw-r--r--tests/wpt/metadata/css/css-values/calc-rounding-001.html.ini4
-rw-r--r--tests/wpt/metadata/css/cssom-view/elementFromPoint-mixed-font-sizes.html.ini4
-rw-r--r--tests/wpt/metadata/css/cssom-view/elementsFromPoint-shadowroot.html.ini3
-rw-r--r--tests/wpt/metadata/css/cssom-view/scrollIntoView-vertical-rl-writing-mode.html.ini28
-rw-r--r--tests/wpt/metadata/css/cssom-view/window-interface.xht.ini4
-rw-r--r--tests/wpt/metadata/css/cssom/getComputedStyle-display-none-001.html.ini7
-rw-r--r--tests/wpt/metadata/css/cssom/getComputedStyle-display-none-002.html.ini4
-rw-r--r--tests/wpt/metadata/css/cssom/getComputedStyle-pseudo.html.ini3
-rw-r--r--tests/wpt/metadata/css/filter-effects/interfaces.any.js.ini7
-rw-r--r--tests/wpt/metadata/css/geometry/interfaces.worker.js.ini3
-rw-r--r--tests/wpt/metadata/custom-elements/builtin-coverage.html.ini3
-rw-r--r--tests/wpt/metadata/custom-elements/pseudo-class-defined.html.ini3
-rw-r--r--tests/wpt/metadata/dom/events/Event-timestamp-safe-resolution.html.ini3
-rw-r--r--tests/wpt/metadata/dom/events/relatedTarget.window.js.ini3
-rw-r--r--tests/wpt/metadata/dom/nodes/Element-getElementsByTagName-change-document-HTMLNess.html.ini3
-rw-r--r--tests/wpt/metadata/domparsing/interfaces.any.js.ini7
-rw-r--r--tests/wpt/metadata/encoding/idlharness.any.js.ini13
-rw-r--r--tests/wpt/metadata/fetch/api/abort/general.any.js.ini12
-rw-r--r--tests/wpt/metadata/fetch/api/basic/integrity.sub.any.js.ini3
-rw-r--r--tests/wpt/metadata/fetch/api/cors/cors-cookies-redirect.any.js.ini6
-rw-r--r--tests/wpt/metadata/fetch/api/cors/cors-preflight-cache.any.js.ini6
-rw-r--r--tests/wpt/metadata/fetch/api/idl.any.js.ini13
-rw-r--r--tests/wpt/metadata/fetch/api/request/request-reset-attributes.https.html.ini3
-rw-r--r--tests/wpt/metadata/fetch/api/response/response-stream-with-broken-then.any.js.ini6
-rw-r--r--tests/wpt/metadata/fetch/corb/preload-image-png-mislabeled-as-html-nosniff.tentative.sub.html.ini3
-rw-r--r--tests/wpt/metadata/fetch/corb/script-html-via-cross-origin-blob-url.sub.html.ini3
-rw-r--r--tests/wpt/metadata/fetch/corb/script-js-mislabeled-as-html-nosniff.sub.html.ini3
-rw-r--r--tests/wpt/metadata/fetch/cors-rfc1918/idlharness.tentative.any.js.ini9
-rw-r--r--tests/wpt/metadata/fetch/cross-origin-resource-policy/fetch-in-iframe.html.ini3
-rw-r--r--tests/wpt/metadata/fetch/cross-origin-resource-policy/fetch.html.ini3
-rw-r--r--tests/wpt/metadata/fetch/cross-origin-resource-policy/iframe-loads.html.ini3
-rw-r--r--tests/wpt/metadata/fetch/origin/no-cors.any.js.ini6
-rw-r--r--tests/wpt/metadata/fetch/range/general.any.js.ini6
-rw-r--r--tests/wpt/metadata/fetch/range/general.window.js.ini3
-rw-r--r--tests/wpt/metadata/fetch/range/sw.https.window.js.ini3
-rw-r--r--tests/wpt/metadata/fetch/security/redirect-to-url-with-credentials.https.html.ini3
-rw-r--r--tests/wpt/metadata/hr-time/performance-tojson.html.ini3
-rw-r--r--tests/wpt/metadata/html/dom/interfaces.worker.js.ini3
-rw-r--r--tests/wpt/metadata/html/infrastructure/common-dom-interfaces/collections/domstringlist-interface.worker.js.ini3
-rw-r--r--tests/wpt/metadata/html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/serialization-via-idb.any.js.ini7
-rw-r--r--tests/wpt/metadata/html/infrastructure/safe-passing-of-structured-data/transfer-errors.window.js.ini3
-rw-r--r--tests/wpt/metadata/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/parsing.html.ini295
-rw-r--r--tests/wpt/metadata/html/semantics/embedded-content/image-maps/image-map-processing-model/hash-name-reference.html.ini20
-rw-r--r--tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe-allow.html.ini4
-rw-r--r--tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe-allowfullscreen.html.ini9
-rw-r--r--tests/wpt/metadata/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-display-none.html.ini514
-rw-r--r--tests/wpt/metadata/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-quirks-mode.html.ini514
-rw-r--r--tests/wpt/metadata/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-standards-mode.html.ini514
-rw-r--r--tests/wpt/metadata/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-width-1000px.html.ini514
-rw-r--r--tests/wpt/metadata/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute.html.ini2054
-rw-r--r--tests/wpt/metadata/html/semantics/scripting-1/the-script-element/module/dynamic-import/propagate-nonce-external-classic.html.ini3
-rw-r--r--tests/wpt/metadata/html/semantics/scripting-1/the-script-element/module/dynamic-import/propagate-nonce-inline-classic.html.ini3
-rw-r--r--tests/wpt/metadata/performance-timeline/idlharness.any.js.ini13
-rw-r--r--tests/wpt/metadata/performance-timeline/performanceentry-tojson.any.js.ini9
-rw-r--r--tests/wpt/metadata/performance-timeline/performanceentry-tojson.html.ini4
-rw-r--r--tests/wpt/metadata/performance-timeline/po-takeRecords.any.js.ini9
-rw-r--r--tests/wpt/metadata/performance-timeline/po-takeRecords.html.ini4
-rw-r--r--tests/wpt/metadata/performance-timeline/webtiming-resolution.any.js.ini11
-rw-r--r--tests/wpt/metadata/performance-timeline/webtiming-resolution.html.ini2
-rw-r--r--tests/wpt/metadata/touch-events/idlharness.window.js.ini4
-rw-r--r--tests/wpt/metadata/url/interfaces.any.js.ini7
-rw-r--r--tests/wpt/metadata/websockets/Secure-Close-undefined.any.js.ini6
-rw-r--r--tests/wpt/metadata/websockets/basic-auth.any.js.ini6
-rw-r--r--tests/wpt/metadata/workers/interfaces.worker.js.ini3
-rw-r--r--tests/wpt/metadata/workers/modules/dedicated-worker-import.any.js.ini9
-rw-r--r--tests/wpt/metadata/workers/modules/dedicated-worker-import.html.ini34
-rw-r--r--tests/wpt/metadata/workers/opaque-origin.html.ini3
-rw-r--r--tests/wpt/metadata/workers/worker-from-blob-url.window.js.ini3
-rw-r--r--tests/wpt/metadata/xhr/sync-no-timeout.any.js.ini3
-rw-r--r--tests/wpt/mozilla/meta/bluetooth/interfaces.html.ini3
-rw-r--r--tests/wpt/mozilla/meta/mozilla/document_characterSet_long.html.ini3
-rw-r--r--tests/wpt/mozilla/meta/mozilla/document_characterSet_short.html.ini3
-rw-r--r--tests/wpt/mozilla/meta/mozilla/style_no_trailing_space.html.ini3
-rw-r--r--tests/wpt/mozilla/meta/webgl/conformance-1.0.3/conformance/context/context-release-upon-reload.html.ini5
-rw-r--r--tests/wpt/mozilla/meta/webgl/conformance-1.0.3/conformance/context/context-release-with-workers.html.ini5
-rw-r--r--tests/wpt/web-platform-tests/BackgroundSync/interfaces.https.any.js (renamed from tests/wpt/web-platform-tests/BackgroundSync/interfaces.any.js)0
-rw-r--r--tests/wpt/web-platform-tests/FileAPI/reading-data-section/filereader_readAsDataURL.html90
-rw-r--r--tests/wpt/web-platform-tests/FileAPI/url/url-in-tags-revoke.window.js15
-rw-r--r--tests/wpt/web-platform-tests/IndexedDB/idbdatabase-createObjectStore-exception-order.htm6
-rw-r--r--tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/ecdh_bits.https.any.js3
-rw-r--r--tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/ecdh_bits.https.worker.js4
-rw-r--r--tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/ecdh_keys.https.any.js3
-rw-r--r--tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/ecdh_keys.https.worker.js4
-rw-r--r--tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/hkdf.https.any.js9
-rw-r--r--tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/hkdf.https.worker.js5
-rw-r--r--tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/hkdf.js32
-rw-r--r--tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/pbkdf2.https.any.js15
-rw-r--r--tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/pbkdf2.https.worker.js6
-rw-r--r--tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/pbkdf2.js36
-rw-r--r--tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/test_ecdh_bits.https.html17
-rw-r--r--tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/test_ecdh_keys.https.html17
-rw-r--r--tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/test_hkdf.https.html19
-rw-r--r--tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/test_pbkdf2_empty_empty.https.html22
-rw-r--r--tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/test_pbkdf2_empty_long.https.html22
-rw-r--r--tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/test_pbkdf2_empty_short.https.html22
-rw-r--r--tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/test_pbkdf2_long_empty.https.html22
-rw-r--r--tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/test_pbkdf2_long_long.https.html22
-rw-r--r--tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/test_pbkdf2_long_short.https.html22
-rw-r--r--tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/test_pbkdf2_short_empty.https.html22
-rw-r--r--tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/test_pbkdf2_short_long.https.html22
-rw-r--r--tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/test_pbkdf2_short_short.https.html22
-rw-r--r--tests/wpt/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-CBC.https.any.js1
-rw-r--r--tests/wpt/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-CTR.https.any.js1
-rw-r--r--tests/wpt/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-GCM.https.any.js1
-rw-r--r--tests/wpt/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-KW.https.any.js1
-rw-r--r--tests/wpt/web-platform-tests/WebCryptoAPI/generateKey/failures_ECDH.https.any.js1
-rw-r--r--tests/wpt/web-platform-tests/WebCryptoAPI/generateKey/failures_ECDSA.https.any.js1
-rw-r--r--tests/wpt/web-platform-tests/WebCryptoAPI/generateKey/failures_HMAC.https.any.js1
-rw-r--r--tests/wpt/web-platform-tests/WebCryptoAPI/generateKey/failures_RSA-OAEP.https.any.js1
-rw-r--r--tests/wpt/web-platform-tests/WebCryptoAPI/generateKey/failures_RSA-PSS.https.any.js1
-rw-r--r--tests/wpt/web-platform-tests/WebCryptoAPI/generateKey/failures_RSASSA-PKCS1-v1_5.https.any.js1
-rw-r--r--tests/wpt/web-platform-tests/WebCryptoAPI/generateKey/successes_AES-CBC.https.any.js1
-rw-r--r--tests/wpt/web-platform-tests/WebCryptoAPI/generateKey/successes_AES-CTR.https.any.js1
-rw-r--r--tests/wpt/web-platform-tests/WebCryptoAPI/generateKey/successes_AES-GCM.https.any.js1
-rw-r--r--tests/wpt/web-platform-tests/WebCryptoAPI/generateKey/successes_AES-KW.https.any.js1
-rw-r--r--tests/wpt/web-platform-tests/WebCryptoAPI/generateKey/successes_ECDH.https.any.js1
-rw-r--r--tests/wpt/web-platform-tests/WebCryptoAPI/generateKey/successes_ECDSA.https.any.js1
-rw-r--r--tests/wpt/web-platform-tests/WebCryptoAPI/generateKey/successes_HMAC.https.any.js1
-rw-r--r--tests/wpt/web-platform-tests/WebCryptoAPI/generateKey/successes_RSA-OAEP.https.any.js1
-rw-r--r--tests/wpt/web-platform-tests/WebCryptoAPI/generateKey/successes_RSA-PSS.https.any.js1
-rw-r--r--tests/wpt/web-platform-tests/WebCryptoAPI/generateKey/successes_RSASSA-PKCS1-v1_5.https.any.js1
-rw-r--r--tests/wpt/web-platform-tests/accelerometer/META.yml2
-rw-r--r--tests/wpt/web-platform-tests/ambient-light/META.yml2
-rw-r--r--tests/wpt/web-platform-tests/background-fetch/interfaces-worker.https.html15
-rw-r--r--tests/wpt/web-platform-tests/background-fetch/interfaces.html28
-rw-r--r--tests/wpt/web-platform-tests/background-fetch/interfaces.https.any.js19
-rw-r--r--tests/wpt/web-platform-tests/background-fetch/interfaces.worker.js20
-rw-r--r--tests/wpt/web-platform-tests/beacon/idlharness.any.js17
-rw-r--r--tests/wpt/web-platform-tests/bluetooth/idl/idlharness.tentative.window.js19
-rw-r--r--tests/wpt/web-platform-tests/console/console-count-logging-manual.html2
-rw-r--r--tests/wpt/web-platform-tests/console/console-countReset-logging-manual.html2
-rw-r--r--tests/wpt/web-platform-tests/console/console-number-format-specifiers-symbol-manual.html2
-rw-r--r--tests/wpt/web-platform-tests/console/console-string-format-specifier-symbol-manual.html2
-rw-r--r--tests/wpt/web-platform-tests/content-security-policy/embedded-enforcement/subsumption_algorithm-unsafe_hashes.html (renamed from tests/wpt/web-platform-tests/content-security-policy/embedded-enforcement/subsumption_algorithm-unsafe_hashed_attributes.html)46
-rw-r--r--tests/wpt/web-platform-tests/content-security-policy/unsafe-hashes/javascript_src_allowed-href.html26
-rw-r--r--tests/wpt/web-platform-tests/content-security-policy/unsafe-hashes/javascript_src_allowed-href_blank.html26
-rw-r--r--tests/wpt/web-platform-tests/content-security-policy/unsafe-hashes/javascript_src_allowed-window_location.html27
-rw-r--r--tests/wpt/web-platform-tests/content-security-policy/unsafe-hashes/javascript_src_allowed-window_open.html29
-rw-r--r--tests/wpt/web-platform-tests/content-security-policy/unsafe-hashes/javascript_src_denied_missing_unsafe_hashes-href.html29
-rw-r--r--tests/wpt/web-platform-tests/content-security-policy/unsafe-hashes/javascript_src_denied_missing_unsafe_hashes-href_blank.html29
-rw-r--r--tests/wpt/web-platform-tests/content-security-policy/unsafe-hashes/javascript_src_denied_missing_unsafe_hashes-window_location.html27
-rw-r--r--tests/wpt/web-platform-tests/content-security-policy/unsafe-hashes/javascript_src_denied_missing_unsafe_hashes-window_open.html30
-rw-r--r--tests/wpt/web-platform-tests/content-security-policy/unsafe-hashes/javascript_src_denied_wrong_hash-href.html29
-rw-r--r--tests/wpt/web-platform-tests/content-security-policy/unsafe-hashes/javascript_src_denied_wrong_hash-href_blank.html29
-rw-r--r--tests/wpt/web-platform-tests/content-security-policy/unsafe-hashes/javascript_src_denied_wrong_hash-window_location.html27
-rw-r--r--tests/wpt/web-platform-tests/content-security-policy/unsafe-hashes/javascript_src_denied_wrong_hash-window_open.html30
-rw-r--r--tests/wpt/web-platform-tests/content-security-policy/unsafe-hashes/script_event_handlers_allowed.html (renamed from tests/wpt/web-platform-tests/content-security-policy/unsafe-hashed-attributes/script_event_handlers_allowed.html)4
-rw-r--r--tests/wpt/web-platform-tests/content-security-policy/unsafe-hashes/script_event_handlers_denied_missing_unsafe_hashes.html (renamed from tests/wpt/web-platform-tests/content-security-policy/unsafe-hashed-attributes/script_event_handlers_denied_matching_hash_no_unsafe_inline_attribute.html)2
-rw-r--r--tests/wpt/web-platform-tests/content-security-policy/unsafe-hashes/script_event_handlers_denied_wrong_hash.html (renamed from tests/wpt/web-platform-tests/content-security-policy/unsafe-hashed-attributes/script_event_handlers_denied_not_matching_hash.html)2
-rw-r--r--tests/wpt/web-platform-tests/content-security-policy/unsafe-hashes/style_attribute_allowed.html31
-rw-r--r--tests/wpt/web-platform-tests/content-security-policy/unsafe-hashes/style_attribute_denied_missing_unsafe_hashes.html29
-rw-r--r--tests/wpt/web-platform-tests/content-security-policy/unsafe-hashes/style_attribute_denied_wrong_hash.html29
-rw-r--r--tests/wpt/web-platform-tests/content-security-policy/unsafe-hashes/support/child_window_location_navigate.sub.html18
-rw-r--r--tests/wpt/web-platform-tests/cookie-store/META.yml2
-rw-r--r--tests/wpt/web-platform-tests/cookie-store/cookieListItem_attributes.tentative.window.js121
-rw-r--r--tests/wpt/web-platform-tests/cookie-store/cookieStore_delete_arguments.tentative.window.js47
-rw-r--r--tests/wpt/web-platform-tests/cookie-store/cookieStore_set_arguments.tentative.window.js41
-rw-r--r--tests/wpt/web-platform-tests/css/compositing/parsing/background-blend-mode-invalid.html19
-rw-r--r--tests/wpt/web-platform-tests/css/compositing/parsing/background-blend-mode-valid.html35
-rw-r--r--tests/wpt/web-platform-tests/css/compositing/parsing/isolation-invalid.html19
-rw-r--r--tests/wpt/web-platform-tests/css/compositing/parsing/isolation-valid.html19
-rw-r--r--tests/wpt/web-platform-tests/css/compositing/parsing/mix-blend-mode-invalid.html20
-rw-r--r--tests/wpt/web-platform-tests/css/compositing/parsing/mix-blend-mode-valid.html33
-rw-r--r--tests/wpt/web-platform-tests/css/compositing/parsing/resources/parsing-testcommon.js (renamed from tests/wpt/web-platform-tests/css/css-ui/parsing/resources/parsing-testcommon.js)0
-rw-r--r--tests/wpt/web-platform-tests/css/css-animations/idlharness.html36
-rw-r--r--tests/wpt/web-platform-tests/css/css-conditional/idlharness.html33
-rw-r--r--tests/wpt/web-platform-tests/css/css-contain/contain-size-013.html17
-rw-r--r--tests/wpt/web-platform-tests/css/css-display/display-contents-sharing-001-ref.html10
-rw-r--r--tests/wpt/web-platform-tests/css/css-display/display-contents-sharing-001.html14
-rw-r--r--tests/wpt/web-platform-tests/css/css-env/at-supports.tentative.html22
-rw-r--r--tests/wpt/web-platform-tests/css/css-env/env-in-custom-properties.tentative.html23
-rw-r--r--tests/wpt/web-platform-tests/css/css-env/fallback-nested-var.tentative.html23
-rw-r--r--tests/wpt/web-platform-tests/css/css-env/seralization-round-tripping.tentative.html19
-rw-r--r--tests/wpt/web-platform-tests/css/css-env/supports-script.tentative.html19
-rw-r--r--tests/wpt/web-platform-tests/css/css-env/syntax.tentative.html57
-rw-r--r--tests/wpt/web-platform-tests/css/css-env/unknown-env-names-override-previous.tentative.html17
-rw-r--r--tests/wpt/web-platform-tests/css/css-fonts/font-shorthand-serialization-font-stretch.html39
-rw-r--r--tests/wpt/web-platform-tests/css/css-fonts/test_font_feature_values_parsing.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-grid/abspos/grid-positioned-items-gaps-002-rtl.html53
-rw-r--r--tests/wpt/web-platform-tests/css/css-grid/abspos/grid-positioned-items-gaps-002.html53
-rw-r--r--tests/wpt/web-platform-tests/css/css-properties-values-api/support/alt/alt.css4
-rw-r--r--tests/wpt/web-platform-tests/css/css-properties-values-api/support/alt/alt.js11
-rw-r--r--tests/wpt/web-platform-tests/css/css-properties-values-api/support/main/main.css22
-rw-r--r--tests/wpt/web-platform-tests/css/css-properties-values-api/support/main/main.js25
-rw-r--r--tests/wpt/web-platform-tests/css/css-properties-values-api/support/main/main.utf16be.cssbin0 -> 184 bytes
-rw-r--r--tests/wpt/web-platform-tests/css/css-properties-values-api/url-resolution.tentative.html139
-rw-r--r--tests/wpt/web-platform-tests/css/css-scoping/shadow-directionality-001.tentative.html34
-rw-r--r--tests/wpt/web-platform-tests/css/css-scoping/shadow-directionality-002.tentative.html19
-rw-r--r--tests/wpt/web-platform-tests/css/css-scoping/shadow-link-rel-stylesheet-no-style-leak.html21
-rw-r--r--tests/wpt/web-platform-tests/css/css-scoping/shadow-link-rel-stylesheet.html11
-rw-r--r--tests/wpt/web-platform-tests/css/css-tables/height-distribution/percentage-sizing-of-table-cell-children-002-ref.html1
-rw-r--r--tests/wpt/web-platform-tests/css/css-tables/height-distribution/percentage-sizing-of-table-cell-children-002.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-tables/height-distribution/percentage-sizing-of-table-cell-replaced-children-001-ref.html1
-rw-r--r--tests/wpt/web-platform-tests/css/css-tables/height-distribution/percentage-sizing-of-table-cell-replaced-children-001.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-tables/height-distribution/support/scrollbars.css10
-rw-r--r--tests/wpt/web-platform-tests/css/css-transitions/idlharness.html23
-rw-r--r--tests/wpt/web-platform-tests/css/css-ui/parsing/box-sizing-invalid.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-ui/parsing/box-sizing-valid.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-ui/parsing/caret-color-invalid.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-ui/parsing/caret-color-valid.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-ui/parsing/cursor-invalid.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-ui/parsing/cursor-valid.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-ui/parsing/outline-color-invalid.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-ui/parsing/outline-color-valid-mandatory.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-ui/parsing/outline-color-valid-optional.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-ui/parsing/outline-invalid.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-ui/parsing/outline-offset-invalid.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-ui/parsing/outline-offset-valid.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-ui/parsing/outline-style-invalid.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-ui/parsing/outline-style-valid.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-ui/parsing/outline-valid-mandatory.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-ui/parsing/outline-valid-optional.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-ui/parsing/outline-width-invalid.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-ui/parsing/outline-width-valid.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-ui/parsing/resize-invalid.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-ui/parsing/resize-valid.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-ui/parsing/support/parsing-testcommon.js39
-rw-r--r--tests/wpt/web-platform-tests/css/css-ui/parsing/text-overflow-invalid.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-ui/parsing/text-overflow-valid.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-values/calc-rounding-001.html43
-rw-r--r--tests/wpt/web-platform-tests/css/cssom-view/elementFromPoint-mixed-font-sizes.html23
-rw-r--r--tests/wpt/web-platform-tests/css/cssom-view/scrollIntoView-vertical-rl-writing-mode.html107
-rw-r--r--tests/wpt/web-platform-tests/css/cssom/getComputedStyle-detached-subtree.html8
-rw-r--r--tests/wpt/web-platform-tests/css/cssom/getComputedStyle-display-none-001.html39
-rw-r--r--tests/wpt/web-platform-tests/css/cssom/getComputedStyle-display-none-002.html34
-rw-r--r--tests/wpt/web-platform-tests/css/cssom/getComputedStyle-pseudo.html27
-rw-r--r--tests/wpt/web-platform-tests/custom-elements/Document-createElement.html25
-rw-r--r--tests/wpt/web-platform-tests/docs/_writing-tests/testharness.md26
-rw-r--r--tests/wpt/web-platform-tests/dom/interfaces.html1
-rw-r--r--tests/wpt/web-platform-tests/dom/nodes/attributes.html116
-rw-r--r--tests/wpt/web-platform-tests/encrypted-media/idlharness.https.html37
-rw-r--r--tests/wpt/web-platform-tests/fetch/api/idl.any.js2
-rw-r--r--tests/wpt/web-platform-tests/fetch/cors-rfc1918/idlharness.tentative.any.js20
-rw-r--r--tests/wpt/web-platform-tests/fetch/sec-metadata/fetch.tentative.https.sub.html6
-rw-r--r--tests/wpt/web-platform-tests/fetch/sec-metadata/resources/helper.js1
-rw-r--r--tests/wpt/web-platform-tests/generic-sensor/META.yml2
-rw-r--r--tests/wpt/web-platform-tests/geolocation-sensor/META.yml1
-rw-r--r--tests/wpt/web-platform-tests/gyroscope/META.yml2
-rw-r--r--tests/wpt/web-platform-tests/html/browsers/browsing-the-web/unloading-documents/unload/006-1.html5
-rw-r--r--tests/wpt/web-platform-tests/html/browsers/browsing-the-web/unloading-documents/unload/pagehide-manual-1.html (renamed from tests/wpt/web-platform-tests/html/browsers/browsing-the-web/unloading-documents/unload/manual-001-1.html)0
-rw-r--r--tests/wpt/web-platform-tests/html/browsers/browsing-the-web/unloading-documents/unload/pagehide-manual.html (renamed from tests/wpt/web-platform-tests/html/browsers/browsing-the-web/unloading-documents/unload/manual-001.html)2
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/parsing.html18
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/embedded-content/the-iframe-element/iframe-allow.html66
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/embedded-content/the-iframe-element/iframe-allowfullscreen.html56
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-display-none.html7
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-quirks-mode.html7
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-standards-mode.html7
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-width-1000px.html7
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute.html42
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/sizes/support/parse-a-sizes-attribute.js29
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/sizes/support/sizes-iframed.sub.html (renamed from tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/sizes/sizes-iframed.sub.html)0
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/forms/the-textarea-element/textarea-maxlength.html51
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/forms/the-textarea-element/textarea-minlength.html51
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/dynamic-import/string-compilation-nonce-classic.html6
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/dynamic-import/string-compilation-nonce-module.html6
-rw-r--r--tests/wpt/web-platform-tests/infrastructure/server/order-of-metas.any.js10
-rw-r--r--tests/wpt/web-platform-tests/infrastructure/server/order-of-metas.window.js8
-rw-r--r--tests/wpt/web-platform-tests/infrastructure/server/resources/expect-global.js5
-rw-r--r--tests/wpt/web-platform-tests/infrastructure/server/resources/expect-seen-testharness.js5
-rw-r--r--tests/wpt/web-platform-tests/infrastructure/server/resources/expect-title-meta.js11
-rw-r--r--tests/wpt/web-platform-tests/infrastructure/server/title.any.js13
-rw-r--r--tests/wpt/web-platform-tests/interfaces/background-fetch.idl29
-rw-r--r--tests/wpt/web-platform-tests/interfaces/beacon.idl8
-rw-r--r--tests/wpt/web-platform-tests/interfaces/cors-rfc1918.idl14
-rw-r--r--tests/wpt/web-platform-tests/interfaces/css-animations.idl45
-rw-r--r--tests/wpt/web-platform-tests/interfaces/css-conditional.idl33
-rw-r--r--tests/wpt/web-platform-tests/interfaces/css-transitions.idl25
-rw-r--r--tests/wpt/web-platform-tests/interfaces/encrypted-media.idl138
-rw-r--r--tests/wpt/web-platform-tests/interfaces/mediacapture-depth.idl76
-rw-r--r--tests/wpt/web-platform-tests/interfaces/mediacapture-fromelement.idl16
-rw-r--r--tests/wpt/web-platform-tests/interfaces/mediacapture-image.idl150
-rw-r--r--tests/wpt/web-platform-tests/interfaces/mediacapture-main.idl277
-rw-r--r--tests/wpt/web-platform-tests/interfaces/mediacapture-record.idl60
-rw-r--r--tests/wpt/web-platform-tests/interfaces/orientation-event.idl68
-rw-r--r--tests/wpt/web-platform-tests/interfaces/presentation-api.idl111
-rw-r--r--tests/wpt/web-platform-tests/interfaces/push-api.idl96
-rw-r--r--tests/wpt/web-platform-tests/interfaces/referrer-policy.idl (renamed from tests/wpt/web-platform-tests/interfaces/webappsec-referrer-policy.idl)5
-rw-r--r--tests/wpt/web-platform-tests/interfaces/scroll-animations.idl33
-rw-r--r--tests/wpt/web-platform-tests/interfaces/secure-contexts.idl8
-rw-r--r--tests/wpt/web-platform-tests/interfaces/shape-detection-api.idl67
-rw-r--r--tests/wpt/web-platform-tests/interfaces/touch-events.idl86
-rw-r--r--tests/wpt/web-platform-tests/interfaces/web-bluetooth.idl216
-rw-r--r--tests/wpt/web-platform-tests/interfaces/webaudio.idl (renamed from tests/wpt/web-platform-tests/interfaces/web-audio-api.idl)71
-rw-r--r--tests/wpt/web-platform-tests/interfaces/webxr.idl4
-rw-r--r--tests/wpt/web-platform-tests/magnetometer/META.yml2
-rw-r--r--tests/wpt/web-platform-tests/media-source/interfaces.html1
-rw-r--r--tests/wpt/web-platform-tests/media-source/mediasource-append-buffer.html8
-rw-r--r--tests/wpt/web-platform-tests/media-source/mediasource-changetype-play.html42
-rw-r--r--tests/wpt/web-platform-tests/media-source/mediasource-changetype-util.js156
-rw-r--r--tests/wpt/web-platform-tests/media-source/mediasource-changetype.html149
-rw-r--r--tests/wpt/web-platform-tests/media-source/mp3/sound_5.mp3bin0 -> 23442 bytes
-rw-r--r--tests/wpt/web-platform-tests/media-source/webm/test-vp9.webmbin0 -> 44353 bytes
-rw-r--r--tests/wpt/web-platform-tests/mediacapture-depth/META.yml4
-rw-r--r--tests/wpt/web-platform-tests/mediacapture-depth/idlharness.html31
-rw-r--r--tests/wpt/web-platform-tests/mediacapture-fromelement/idlharness.html52
-rw-r--r--tests/wpt/web-platform-tests/mediacapture-image/idlharness.html164
-rw-r--r--tests/wpt/web-platform-tests/mediacapture-record/idlharness.html80
-rw-r--r--tests/wpt/web-platform-tests/mediacapture-streams/MediaDevices-IDL-all.html33
-rw-r--r--tests/wpt/web-platform-tests/mediacapture-streams/MediaDevices-IDL-enumerateDevices.html24
-rw-r--r--tests/wpt/web-platform-tests/mediacapture-streams/MediaStreamTrack-getSettings.https.html32
-rw-r--r--tests/wpt/web-platform-tests/orientation-event/idlharness.html101
-rw-r--r--tests/wpt/web-platform-tests/orientation-event/idlharness.window.js23
-rw-r--r--tests/wpt/web-platform-tests/orientation-sensor/META.yml2
-rw-r--r--tests/wpt/web-platform-tests/payment-request/payment-request-canmakepayment-method-manual.https.html18
-rw-r--r--tests/wpt/web-platform-tests/performance-timeline/performanceentry-tojson.any.js (renamed from tests/wpt/web-platform-tests/performance-timeline/performanceentry-tojson.html)12
-rw-r--r--tests/wpt/web-platform-tests/performance-timeline/po-takeRecords.any.js (renamed from tests/wpt/web-platform-tests/performance-timeline/po-takeRecords.html)13
-rw-r--r--tests/wpt/web-platform-tests/performance-timeline/webtiming-resolution.any.js (renamed from tests/wpt/web-platform-tests/performance-timeline/webtiming-resolution.html)11
-rw-r--r--tests/wpt/web-platform-tests/presentation-api/controlling-ua/idlharness.https.html159
-rw-r--r--tests/wpt/web-platform-tests/presentation-api/receiving-ua/support/idlharness_receiving-ua.html126
-rw-r--r--tests/wpt/web-platform-tests/proximity/META.yml2
-rw-r--r--tests/wpt/web-platform-tests/push-api/META.yml2
-rw-r--r--tests/wpt/web-platform-tests/push-api/idlharness.https.any.js17
-rw-r--r--tests/wpt/web-platform-tests/resources/idlharness.js9
-rw-r--r--tests/wpt/web-platform-tests/resources/test/tests/functional/worker-dedicated.html2
-rw-r--r--tests/wpt/web-platform-tests/resources/testharness.js26
-rw-r--r--tests/wpt/web-platform-tests/scroll-animations/META.yml3
-rw-r--r--tests/wpt/web-platform-tests/scroll-animations/idlharness.html38
-rw-r--r--tests/wpt/web-platform-tests/secure-contexts/idlharness.any.js20
-rw-r--r--tests/wpt/web-platform-tests/server-timing/service_worker_idl.https.html (renamed from tests/wpt/web-platform-tests/server-timing/service_worker_idl.html)0
-rw-r--r--tests/wpt/web-platform-tests/service-workers/service-worker/controller-with-no-fetch-event-handler.https.html56
-rw-r--r--tests/wpt/web-platform-tests/service-workers/service-worker/http-to-https-redirect-and-register.https.html2
-rw-r--r--tests/wpt/web-platform-tests/service-workers/service-worker/navigation-redirect.https.html1
-rw-r--r--tests/wpt/web-platform-tests/service-workers/service-worker/resources/cors-approved.txt1
-rw-r--r--tests/wpt/web-platform-tests/service-workers/service-worker/resources/cors-approved.txt.headers3
-rw-r--r--tests/wpt/web-platform-tests/service-workers/service-worker/resources/cors-denied.txt2
-rw-r--r--tests/wpt/web-platform-tests/service-workers/service-worker/resources/http-to-https-redirect-and-register-iframe.html30
-rw-r--r--tests/wpt/web-platform-tests/shadow-dom/directionality-001-ref.html6
-rw-r--r--tests/wpt/web-platform-tests/shadow-dom/directionality-001.tentative.html19
-rw-r--r--tests/wpt/web-platform-tests/shape-detection/META.yml2
-rw-r--r--tests/wpt/web-platform-tests/shape-detection/idlharness.any.js12
-rw-r--r--tests/wpt/web-platform-tests/svg/painting/reftests/paint-context-001-ref.svg44
-rw-r--r--tests/wpt/web-platform-tests/svg/painting/reftests/paint-context-001.svg47
-rw-r--r--tests/wpt/web-platform-tests/svg/painting/reftests/paint-context-002-ref.svg41
-rw-r--r--tests/wpt/web-platform-tests/svg/painting/reftests/paint-context-002.svg44
-rw-r--r--tests/wpt/web-platform-tests/svg/pservers/reftests/radialgradient-basic-002-ref.svg50
-rw-r--r--tests/wpt/web-platform-tests/svg/pservers/reftests/radialgradient-basic-002.svg53
-rw-r--r--tests/wpt/web-platform-tests/svg/styling/required-properties.svg147
-rw-r--r--tests/wpt/web-platform-tests/tools/pywebsocket/mod_pywebsocket/_stream_base.py6
-rw-r--r--tests/wpt/web-platform-tests/tools/pywebsocket/mod_pywebsocket/_stream_hybi.py10
-rw-r--r--tests/wpt/web-platform-tests/tools/pywebsocket/mod_pywebsocket/common.py2
-rw-r--r--tests/wpt/web-platform-tests/tools/pywebsocket/mod_pywebsocket/dispatch.py22
-rw-r--r--tests/wpt/web-platform-tests/tools/pywebsocket/mod_pywebsocket/extensions.py6
-rw-r--r--tests/wpt/web-platform-tests/tools/pywebsocket/mod_pywebsocket/handshake/__init__.py6
-rw-r--r--tests/wpt/web-platform-tests/tools/pywebsocket/mod_pywebsocket/handshake/_base.py2
-rw-r--r--tests/wpt/web-platform-tests/tools/pywebsocket/mod_pywebsocket/handshake/hybi.py8
-rw-r--r--tests/wpt/web-platform-tests/tools/pywebsocket/mod_pywebsocket/http_header_util.py14
-rw-r--r--tests/wpt/web-platform-tests/tools/pywebsocket/mod_pywebsocket/memorizingfile.py5
-rw-r--r--tests/wpt/web-platform-tests/tools/pywebsocket/mod_pywebsocket/msgutil.py8
-rw-r--r--tests/wpt/web-platform-tests/tools/pywebsocket/mod_pywebsocket/mux.py40
-rwxr-xr-xtests/wpt/web-platform-tests/tools/pywebsocket/mod_pywebsocket/standalone.py78
-rw-r--r--tests/wpt/web-platform-tests/tools/pywebsocket/mod_pywebsocket/util.py4
-rw-r--r--tests/wpt/web-platform-tests/tools/pywebsocket/mod_pywebsocket/xhr_benchmark_handler.py2
-rw-r--r--tests/wpt/web-platform-tests/tools/serve/serve.py36
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/firefox.py1
-rw-r--r--tests/wpt/web-platform-tests/touch-events/idlharness.window.js25
-rw-r--r--tests/wpt/web-platform-tests/webaudio/idlharness.https.html93
-rw-r--r--tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audiobuffer-interface/idl-test.html107
-rw-r--r--tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audiodestinationnode-interface/idl-test.html124
-rw-r--r--tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/idl-test.html54
-rw-r--r--tests/wpt/web-platform-tests/webrtc-stats/META.yml3
-rw-r--r--tests/wpt/web-platform-tests/webrtc-stats/README.md7
-rw-r--r--tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-getStats.https.html20
-rw-r--r--tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-helper.js5
-rw-r--r--tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-removeTrack.https.html24
-rw-r--r--tests/wpt/web-platform-tests/webrtc/interfaces.https.html6
-rw-r--r--tests/wpt/web-platform-tests/websockets/constructor/014.html5
-rw-r--r--tests/wpt/web-platform-tests/webusb/idlharness.https.any.js (renamed from tests/wpt/web-platform-tests/webusb/resources/idlharness.dedicatedworker.sharedworker.js)19
-rw-r--r--tests/wpt/web-platform-tests/webusb/idlharness.https.html71
-rw-r--r--tests/wpt/web-platform-tests/webusb/usb.https.any.js (renamed from tests/wpt/web-platform-tests/webusb/resources/usb.dedicatedworker.sharedworker.js)15
-rw-r--r--tests/wpt/web-platform-tests/webusb/usb.https.window.js (renamed from tests/wpt/web-platform-tests/webusb/usb.https.html)63
-rw-r--r--tests/wpt/web-platform-tests/webusb/usb.serviceworker.https.html (renamed from tests/wpt/web-platform-tests/webusb/worker/usb.serviceworker.https.html)2
-rw-r--r--tests/wpt/web-platform-tests/webusb/usb.serviceworker.js (renamed from tests/wpt/web-platform-tests/webusb/resources/usb.serviceworker.js)0
-rw-r--r--tests/wpt/web-platform-tests/webusb/usbConnectionEvent.https.any.js22
-rw-r--r--tests/wpt/web-platform-tests/webusb/usbConnectionEvent.https.html22
-rw-r--r--tests/wpt/web-platform-tests/webusb/usbDevice.https.any.js (renamed from tests/wpt/web-platform-tests/webusb/usbDevice.https.html)14
-rw-r--r--tests/wpt/web-platform-tests/webusb/usbInTransferResult.https.any.js (renamed from tests/wpt/web-platform-tests/webusb/usbInTransferResult.https.html)8
-rw-r--r--tests/wpt/web-platform-tests/webusb/usbIsochronousInTransferPacket.https.any.js (renamed from tests/wpt/web-platform-tests/webusb/usbIsochronousInTransferPacket.https.html)6
-rw-r--r--tests/wpt/web-platform-tests/webusb/usbIsochronousInTransferResult.https.any.js (renamed from tests/wpt/web-platform-tests/webusb/usbIsochronousInTransferResult.https.html)6
-rw-r--r--tests/wpt/web-platform-tests/webusb/usbIsochronousOutTransferPacket.https.any.js (renamed from tests/wpt/web-platform-tests/webusb/usbIsochronousOutTransferPacket.https.html)6
-rw-r--r--tests/wpt/web-platform-tests/webusb/usbIsochronousOutTransferResult.https.any.js (renamed from tests/wpt/web-platform-tests/webusb/usbIsochronousOutTransferResult.https.html)6
-rw-r--r--tests/wpt/web-platform-tests/webusb/usbOutTransferResult.https.any.js (renamed from tests/wpt/web-platform-tests/webusb/usbOutTransferResult.https.html)6
-rw-r--r--tests/wpt/web-platform-tests/webusb/worker/idlharness.dedicatedworker.https.html11
-rw-r--r--tests/wpt/web-platform-tests/webusb/worker/idlharness.sharedworker.https.html11
-rw-r--r--tests/wpt/web-platform-tests/webusb/worker/usb.dedicatedworker.https.html11
-rw-r--r--tests/wpt/web-platform-tests/webusb/worker/usb.sharedworker.https.html11
-rw-r--r--tests/wpt/web-platform-tests/webxr/resources/webxr_util.js2
-rw-r--r--tests/wpt/web-platform-tests/workers/modules/dedicated-worker-import.any.js (renamed from tests/wpt/web-platform-tests/workers/modules/dedicated-worker-import.html)8
-rw-r--r--tests/wpt/web-platform-tests/workers/nested_worker_close_from_parent_worker.html15
-rw-r--r--tests/wpt/web-platform-tests/workers/nested_worker_close_self.worker.js12
-rw-r--r--tests/wpt/web-platform-tests/workers/nested_worker_importScripts.worker.js11
-rw-r--r--tests/wpt/web-platform-tests/workers/nested_worker_sync_xhr.worker.js11
-rw-r--r--tests/wpt/web-platform-tests/workers/nested_worker_terminate_from_document.html14
-rw-r--r--tests/wpt/web-platform-tests/workers/support/parent_of_nested_worker.js14
-rw-r--r--tests/wpt/web-platform-tests/workers/support/sync_xhr.js13
-rw-r--r--tests/wpt/web-platform-tests/workers/support/sync_xhr_target.xml1
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 &quot;general-enclosed&quot;) 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 &quot;general-enclosed&quot;) 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 &quot;general-enclosed&quot;) 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="(&quot;grammar does not match&quot;) 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 (&quot;grammar does not match&quot;) 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 &quot;general-enclosed&quot;)) 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 &quot;general-enclosed&quot;)) 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 &quot;general-enclosed&quot;) 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 &quot;general-enclosed&quot;) 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 &quot;general-enclosed&quot;) 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="(&quot;grammar does not match&quot;) 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 (&quot;grammar does not match&quot;) 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 &quot;general-enclosed&quot;)) 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 &quot;general-enclosed&quot;)) 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 &quot;general-enclosed&quot;) 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 &quot;general-enclosed&quot;) 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 &quot;general-enclosed&quot;) 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="(&quot;grammar does not match&quot;) 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 (&quot;grammar does not match&quot;) 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 &quot;general-enclosed&quot;)) 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 &quot;general-enclosed&quot;)) 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 &quot;general-enclosed&quot;) 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 &quot;general-enclosed&quot;) 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 &quot;general-enclosed&quot;) 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="(&quot;grammar does not match&quot;) 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 (&quot;grammar does not match&quot;) 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 &quot;general-enclosed&quot;)) 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 &quot;general-enclosed&quot;)) 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 &quot;general-enclosed&quot;) 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 &quot;general-enclosed&quot;) 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 &quot;general-enclosed&quot;) 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="(&quot;grammar does not match&quot;) 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 (&quot;grammar does not match&quot;) 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 &quot;general-enclosed&quot;)) 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 &quot;general-enclosed&quot;)) 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 &quot;general-enclosed&quot;) 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 &quot;general-enclosed&quot;) 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 &quot;general-enclosed&quot;) 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="(&quot;grammar does not match&quot;) 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 (&quot;grammar does not match&quot;) 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 &quot;general-enclosed&quot;)) 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 &quot;general-enclosed&quot;)) 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 &quot;general-enclosed&quot;) 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 &quot;general-enclosed&quot;) 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 &quot;general-enclosed&quot;) 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="(&quot;grammar does not match&quot;) 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 (&quot;grammar does not match&quot;) 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 &quot;general-enclosed&quot;)) 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 &quot;general-enclosed&quot;)) 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 &quot;general-enclosed&quot;) 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 &quot;general-enclosed&quot;) 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 &quot;general-enclosed&quot;) 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="(&quot;grammar does not match&quot;) 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 (&quot;grammar does not match&quot;) 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 &quot;general-enclosed&quot;)) 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 &quot;general-enclosed&quot;)) 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
new file mode 100644
index 00000000000..26485da32b7
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-properties-values-api/support/main/main.utf16be.css
Binary files differ
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: &lt;link rel="stylesheet"&gt; 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: &lt;link rel="stylesheet"&gt; 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
new file mode 100644
index 00000000000..bd202919899
--- /dev/null
+++ b/tests/wpt/web-platform-tests/media-source/mp3/sound_5.mp3
Binary files differ
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
new file mode 100644
index 00000000000..d63dfdaac71
--- /dev/null
+++ b/tests/wpt/web-platform-tests/media-source/webm/test-vp9.webm
Binary files differ
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("&", "&amp;").replace('"', "&quot;")
- return '<script src="%s"></script>' % attribute
if key == b"title":
value = value.decode('utf-8').replace("&", "&amp;").replace("<", "&lt;")
return '<title>%s</title>' % value
return None
+ def _script_replacement(self, key, value):
+ if key == b"script":
+ attribute = value.decode('utf-8').replace("&", "&amp;").replace('"', "&quot;")
+ 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&lt;void&gt; resume ();
- attribute EventHandler onstatechange;
- AudioBuffer createBuffer (unsigned long numberOfChannels, unsigned long length, float sampleRate);
- Promise&lt;AudioBuffer&gt; 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&lt;double&gt; feedforward, sequence&lt;double&gt; 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&lt;void&gt; resume ();
- attribute EventHandler onstatechange;
- AudioBuffer createBuffer (unsigned long numberOfChannels, unsigned long length, float sampleRate);
- Promise&lt;AudioBuffer&gt; 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&lt;double&gt; feedforward, sequence&lt;double&gt; 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>