From 4fadf9b0b613f4e9673defedf26a81eea4217d8b Mon Sep 17 00:00:00 2001 From: Ms2ger Date: Mon, 20 Feb 2017 11:44:42 +0100 Subject: [PATCH 1/2] Update web-platform-tests to revision 7a767a52741f628430ffbbed46e7f3df68ba3534 Fixes #15648. --- .../wpt/metadata/FileAPI/historical.html.ini | 5 + .../url/blob-url-in-sandboxed-iframe.html.ini | 9 + ...i-global-origin-serialization.sub.html.ini | 5 + tests/wpt/metadata/MANIFEST.json | 4016 +++++++++++++---- .../derive_bits_keys/ecdh_bits.worker.js.ini | 4 +- .../derive_bits_keys/ecdh_keys.worker.js.ini | 4 +- .../derive_bits_keys/hkdf.worker.js.ini | 4 +- .../derive_bits_keys/pbkdf2.worker.js.ini | 4 +- .../derive_bits_keys/test_ecdh_bits.html.ini | 4 +- .../derive_bits_keys/test_ecdh_keys.html.ini | 4 +- .../derive_bits_keys/test_hkdf.html.ini | 4 +- .../derive_bits_keys/test_pbkdf2.html.ini | 4 +- .../encrypt_decrypt/aes_cbc.worker.js.ini | 4 +- .../encrypt_decrypt/aes_ctr.worker.js.ini | 4 +- .../encrypt_decrypt/aes_gcm.worker.js.ini | 4 +- .../encrypt_decrypt/rsa.worker.js.ini | 4 +- .../encrypt_decrypt/test_aes_cbc.html.ini | 4 +- .../encrypt_decrypt/test_aes_ctr.html.ini | 4 +- .../encrypt_decrypt/test_aes_gcm.html.ini | 4 +- .../encrypt_decrypt/test_rsa_oaep.html.ini | 4 +- .../generateKey/failures.worker.js.ini | 4 +- .../failures_AES-CBC.worker.js.ini | 4 +- .../failures_AES-CTR.worker.js.ini | 4 +- .../failures_AES-GCM.worker.js.ini | 4 +- .../generateKey/failures_AES-KW.worker.js.ini | 4 +- .../generateKey/failures_ECDH.worker.js.ini | 4 +- .../generateKey/failures_ECDSA.worker.js.ini | 4 +- .../generateKey/failures_HMAC.worker.js.ini | 4 +- .../failures_RSA-OAEP.worker.js.ini | 4 +- .../failures_RSA-PSS.worker.js.ini | 4 +- .../failures_RSASSA-PKCS1-v1_5.worker.js.ini | 4 +- .../generateKey/successes.worker.js.ini | 4 +- .../successes_AES-CBC.worker.js.ini | 4 +- .../successes_AES-CTR.worker.js.ini | 4 +- .../successes_AES-GCM.worker.js.ini | 4 +- .../successes_AES-KW.worker.js.ini | 4 +- .../generateKey/successes_ECDH.worker.js.ini | 4 +- .../generateKey/successes_ECDSA.worker.js.ini | 4 +- .../generateKey/successes_HMAC.worker.js.ini | 4 +- .../successes_RSA-OAEP.worker.js.ini | 4 +- .../successes_RSA-PSS.worker.js.ini | 4 +- .../successes_RSASSA-PKCS1-v1_5.worker.js.ini | 4 +- .../generateKey/test_aes-cbc.html.ini | 4 +- .../generateKey/test_aes-ctr.html.ini | 4 +- .../generateKey/test_failures.html.ini | 4 +- .../test_failures_AES-CBC.html.ini | 4 +- .../test_failures_AES-CTR.html.ini | 4 +- .../test_failures_AES-GCM.html.ini | 4 +- .../generateKey/test_failures_AES-KW.html.ini | 4 +- .../generateKey/test_failures_ECDH.html.ini | 4 +- .../generateKey/test_failures_ECDSA.html.ini | 4 +- .../generateKey/test_failures_HMAC.html.ini | 4 +- .../test_failures_RSA-OAEP.html.ini | 4 +- .../test_failures_RSA-PSS.html.ini | 4 +- .../test_failures_RSASSA-PKCS1-v1_5.html.ini | 4 +- .../generateKey/test_successes.html.ini | 4 +- .../test_successes_AES-CBC.html.ini | 4 +- .../test_successes_AES-CTR.html.ini | 4 +- .../test_successes_AES-GCM.html.ini | 4 +- .../test_successes_AES-KW.html.ini | 4 +- .../generateKey/test_successes_ECDH.html.ini | 4 +- .../generateKey/test_successes_ECDSA.html.ini | 4 +- .../generateKey/test_successes_HMAC.html.ini | 4 +- .../test_successes_RSA-OAEP.html.ini | 4 +- .../test_successes_RSA-PSS.html.ini | 4 +- .../test_successes_RSASSA-PKCS1-v1_5.html.ini | 4 +- .../sign_verify/ecdsa.worker.js.ini | 4 +- .../sign_verify/hmac.worker.js.ini | 4 +- .../sign_verify/rsa_pkcs.worker.js.ini | 4 +- .../sign_verify/rsa_pss.worker.js.ini | 4 +- .../sign_verify/test_ecdsa.html.ini | 4 +- .../sign_verify/test_hmac.html.ini | 4 +- .../sign_verify/test_rsa_pkcs.html.ini | 4 +- .../sign_verify/test_rsa_pss.html.ini | 4 +- .../test_wrapKey_unwrapKey.html.ini | 4 +- .../wrapKey_unwrapKey.worker.js.ini | 4 +- ...send-after-setting-document-domain.htm.ini | 4 +- .../EventListener-invoke-legacy.html.ini | 9 + .../api/basic/integrity-sharedworker.html.ini | 4 +- .../fetch/api/headers/headers-record.html.ini | 26 + .../navigation_unload_same_origin.html.ini | 5 - .../location-symbol-toprimitive.html.ini | 5 + .../location-valueof.html.ini | 5 + .../reload_document_open_write.html.ini | 4 +- .../reload_document_write.html.ini | 4 +- .../reload_document_write_onload.html.ini | 4 +- .../reload_post_1.html.ini | 4 +- ...ross-origin-objects-on-new-window.html.ini | 4 +- .../wpt/metadata/html/dom/interfaces.html.ini | 45 + .../html/dom/interfaces.worker.js.ini | 257 ++ .../html/dom/reflection-misc.html.ini | 30 + .../metadata/html/dom/self-origin.any.js.ini | 11 + .../html/dom/self-origin.sub.html.ini | 33 + .../allow-scripts-flag-changing-1.html.ini | 4 +- .../allow-scripts-flag-changing-2.html.ini | 4 +- .../autoplay-with-slow-text-tracks.html.ini | 5 + .../the-canvas-element/toBlob.null.html.ini | 5 + .../embed-in-object-fallback-2.html.ini | 5 + .../the-img-element/data-url.html.ini | 4 +- .../the-object-element/object-events.html.ini | 6 + .../object-in-object-fallback-2.html.ini | 5 + .../button-menu-historical.html.ini | 5 + .../the-input-element/selection.html.ini | 24 + .../the-input-element/valueMode.html.ini | 42 - .../labelable-elements.html.ini | 3 + .../the-script-element/data-url.html.ini | 5 + .../module/crossorigin.html.ini | 27 + .../module/errorhandling.html.ini | 18 + .../module/execorder.html.ini | 21 + .../module/imports.html.ini | 9 + ...ument-open-same-origin-domain.sub.html.ini | 5 + .../callback-suspended.html.ini | 5 + .../idle-callbacks/cancel-invoked.html.ini | 3 + .../events/event-handler-onauxclick.html.ini | 10 +- .../allow-crossorigin.html.ini | 6 + ...omise-rejection-event-constructor.html.ini | 5 + ...ejection-events-attached-in-event.html.ini | 6 + .../promise-rejection-events-onerror.html.ini | 6 + ...-rejection-events.dedicatedworker.html.ini | 60 + .../promise-rejection-events.html.ini | 72 + ...ection-events.serviceworker.https.html.ini | 3 + ...ise-rejection-events.sharedworker.html.ini | 5 + tests/wpt/metadata/mozilla-sync | 4 +- .../nav2_test_document_open.html.ini | 4 +- ...av2_test_navigate_within_document.html.ini | 4 +- ..._test_navigation_type_backforward.html.ini | 4 +- .../nav2_test_navigation_type_reload.html.ini | 4 +- .../nav2_test_open_blank_page.html.ini | 4 +- .../nav2_test_redirect_server.html.ini | 4 +- .../nav2_test_redirect_xserver.html.ini | 4 +- ...nav2_test_redirect_xserver_opt_in.html.ini | 4 +- ...unloadEvents_no_previous_document.html.ini | 4 +- ...revious_document_cross_origin.sub.html.ini | 4 +- ...vents_with_cross_origin_redirects.html.ini | 4 +- ...loadEvents_with_previous_document.html.ini | 4 +- .../Opera/script_scheduling/083.html.ini | 1 - .../Opera/script_scheduling/084.html.ini | 1 - ...ndboxed-iframe-with-opaque-origin.html.ini | 9 + .../touch-events/touch-retargeting.html.ini | 4 +- .../url/a-element-origin-xhtml.xhtml.ini | 3 + .../metadata/url/a-element-origin.html.ini | 3 + .../metadata/url/a-element-xhtml.xhtml.ini | 18 + tests/wpt/metadata/url/a-element.html.ini | 18 + tests/wpt/metadata/url/interfaces.html.ini | 6 + .../wpt/metadata/url/url-constructor.html.ini | 21 +- tests/wpt/metadata/url/url-origin.html.ini | 3 + tests/wpt/metadata/url/url-setters.html.ini | 159 + tests/wpt/metadata/url/url-tojson.html.ini | 5 + .../ogles/GL/abs/abs_001_to_006.html.ini | 4 +- .../ogles/GL/acos/acos_001_to_006.html.ini | 4 +- .../ogles/GL/all/all_001_to_004.html.ini | 4 +- .../ogles/GL/any/any_001_to_004.html.ini | 4 +- .../ogles/GL/array/array_001_to_006.html.ini | 4 +- .../ogles/GL/asin/asin_001_to_006.html.ini | 4 +- .../ogles/GL/atan/atan_001_to_008.html.ini | 4 +- .../ogles/GL/atan/atan_009_to_012.html.ini | 4 +- .../biConstants_001_to_008.html.ini | 4 +- .../biConstants_009_to_016.html.ini | 4 +- .../biuDepthRange_001_to_002.html.ini | 4 +- .../ogles/GL/ceil/ceil_001_to_006.html.ini | 4 +- .../ogles/GL/clamp/clamp_001_to_006.html.ini | 4 +- .../control_flow_001_to_008.html.ini | 4 +- .../control_flow_009_to_010.html.ini | 4 +- .../ogles/GL/cos/cos_001_to_006.html.ini | 4 +- .../ogles/GL/cross/cross_001_to_002.html.ini | 4 +- .../GL/default/default_001_to_001.html.ini | 4 +- .../GL/degrees/degrees_001_to_006.html.ini | 4 +- .../GL/discard/discard_001_to_002.html.ini | 4 +- .../GL/distance/distance_001_to_006.html.ini | 4 +- .../ogles/GL/dot/dot_001_to_006.html.ini | 4 +- .../ogles/GL/equal/equal_001_to_008.html.ini | 4 +- .../ogles/GL/equal/equal_009_to_012.html.ini | 4 +- .../ogles/GL/exp/exp_001_to_008.html.ini | 4 +- .../ogles/GL/exp/exp_009_to_012.html.ini | 4 +- .../ogles/GL/exp2/exp2_001_to_008.html.ini | 4 +- .../ogles/GL/exp2/exp2_009_to_012.html.ini | 4 +- .../faceforward_001_to_006.html.ini | 4 +- .../ogles/GL/floor/floor_001_to_006.html.ini | 4 +- .../ogles/GL/fract/fract_001_to_006.html.ini | 4 +- .../gl_FragCoord_001_to_003.html.ini | 4 +- .../gl_FrontFacing_001_to_001.html.ini | 4 +- .../greaterThan_001_to_008.html.ini | 4 +- .../greaterThanEqual_001_to_008.html.ini | 4 +- .../inversesqrt_001_to_006.html.ini | 4 +- .../GL/length/length_001_to_006.html.ini | 4 +- .../GL/lessThan/lessThan_001_to_008.html.ini | 4 +- .../lessThanEqual_001_to_008.html.ini | 4 +- .../ogles/GL/log/log_001_to_008.html.ini | 4 +- .../ogles/GL/log/log_009_to_012.html.ini | 4 +- .../ogles/GL/log2/log2_001_to_008.html.ini | 4 +- .../ogles/GL/log2/log2_009_to_012.html.ini | 4 +- .../ogles/GL/mat/mat_001_to_008.html.ini | 4 +- .../ogles/GL/mat/mat_009_to_016.html.ini | 4 +- .../ogles/GL/mat/mat_017_to_024.html.ini | 4 +- .../ogles/GL/mat/mat_025_to_032.html.ini | 4 +- .../ogles/GL/mat/mat_033_to_040.html.ini | 4 +- .../ogles/GL/mat/mat_041_to_046.html.ini | 4 +- .../ogles/GL/mat3/mat3_001_to_006.html.ini | 4 +- .../matrixCompMult_001_to_004.html.ini | 4 +- .../ogles/GL/max/max_001_to_006.html.ini | 4 +- .../ogles/GL/min/min_001_to_006.html.ini | 4 +- .../ogles/GL/mix/mix_001_to_006.html.ini | 4 +- .../ogles/GL/mod/mod_001_to_008.html.ini | 4 +- .../normalize/normalize_001_to_006.html.ini | 4 +- .../ogles/GL/not/not_001_to_004.html.ini | 4 +- .../GL/notEqual/notEqual_001_to_008.html.ini | 4 +- .../GL/notEqual/notEqual_009_to_012.html.ini | 4 +- .../operators/operators_001_to_008.html.ini | 4 +- .../operators/operators_009_to_016.html.ini | 4 +- .../operators/operators_017_to_024.html.ini | 4 +- .../operators/operators_025_to_026.html.ini | 4 +- .../ogles/GL/pow/pow_001_to_008.html.ini | 4 +- .../ogles/GL/pow/pow_009_to_016.html.ini | 4 +- .../ogles/GL/pow/pow_017_to_024.html.ini | 4 +- .../GL/radians/radians_001_to_006.html.ini | 4 +- .../GL/reflect/reflect_001_to_006.html.ini | 4 +- .../GL/refract/refract_001_to_006.html.ini | 4 +- .../ogles/GL/sign/sign_001_to_006.html.ini | 4 +- .../ogles/GL/sin/sin_001_to_006.html.ini | 4 +- .../smoothstep/smoothstep_001_to_006.html.ini | 4 +- .../ogles/GL/sqrt/sqrt_001_to_006.html.ini | 4 +- .../ogles/GL/step/step_001_to_006.html.ini | 4 +- .../GL/struct/struct_001_to_008.html.ini | 4 +- .../GL/struct/struct_009_to_016.html.ini | 4 +- .../GL/struct/struct_017_to_024.html.ini | 4 +- .../GL/struct/struct_025_to_032.html.ini | 4 +- .../GL/struct/struct_033_to_040.html.ini | 4 +- .../GL/struct/struct_041_to_048.html.ini | 4 +- .../GL/struct/struct_049_to_056.html.ini | 4 +- .../swizzlers/swizzlers_001_to_008.html.ini | 4 +- .../swizzlers/swizzlers_009_to_016.html.ini | 4 +- .../swizzlers/swizzlers_017_to_024.html.ini | 4 +- .../swizzlers/swizzlers_025_to_032.html.ini | 4 +- .../swizzlers/swizzlers_033_to_040.html.ini | 4 +- .../swizzlers/swizzlers_041_to_048.html.ini | 4 +- .../swizzlers/swizzlers_049_to_056.html.ini | 4 +- .../swizzlers/swizzlers_057_to_064.html.ini | 4 +- .../swizzlers/swizzlers_065_to_072.html.ini | 4 +- .../swizzlers/swizzlers_073_to_080.html.ini | 4 +- .../swizzlers/swizzlers_081_to_088.html.ini | 4 +- .../swizzlers/swizzlers_089_to_096.html.ini | 4 +- .../swizzlers/swizzlers_097_to_104.html.ini | 4 +- .../swizzlers/swizzlers_105_to_112.html.ini | 4 +- .../swizzlers/swizzlers_113_to_120.html.ini | 4 +- .../ogles/GL/tan/tan_001_to_006.html.ini | 4 +- .../ogles/GL/vec/vec_001_to_008.html.ini | 4 +- .../ogles/GL/vec/vec_009_to_016.html.ini | 4 +- .../ogles/GL/vec/vec_017_to_018.html.ini | 4 +- .../ogles/GL/vec3/vec3_001_to_008.html.ini | 4 +- .../rendering/framebuffer-switch.html.ini | 4 +- .../framebuffer-texture-switch.html.ini | 4 +- ...-gl-pointcoord-in-fragment-shader.html.ini | 4 +- .../state/gl-object-get-calls.html.ini | 4 +- .../textures/gl-pixelstorei.html.ini | 4 +- .../uniforms/gl-uniformmatrix4fv.html.ini | 4 +- .../uniforms/uniform-default-values.html.ini | 4 +- .../webstorage/event_no_duplicates.html.ini | 21 + .../workers/SharedWorker_blobUrl.html.ini | 5 + ...obalScope_importScripts_NosniffErr.htm.ini | 5 + .../workers/Worker_NosniffErr.htm.ini | 6 + .../Worker_cross_origin_security_err.htm.ini | 5 - .../metadata/workers/data-url-shared.html.ini | 24 + tests/wpt/metadata/workers/data-url.html.ini | 6 + .../metadata/workers/opaque-origin.html.ini | 4 +- .../semantics/multiple-workers/004.html.ini | 4 +- .../cross-origin-objects.html.ini | 2 +- .../web-platform-tests/2dcontext/tools/OWNERS | 1 + .../2dcontext/tools/tests.yaml | 18 - .../FileAPI/blob/Blob-close.html | 39 - .../FileAPI/historical.html | 8 + .../FileAPI/idlharness-manual.html | 5 +- .../web-platform-tests/FileAPI/idlharness.idl | 5 +- .../filereader_abort.html | 45 +- .../support/document-domain-setter.sub.html | 7 + .../FileAPI/support/incumbent.sub.html | 22 + .../url/blob-url-in-sandboxed-iframe.html | 66 + ...multi-global-origin-serialization.sub.html | 25 + .../abort-in-initial-upgradeneeded.html | 2 +- .../IndexedDB/clone-before-keypath-eval.html | 135 + .../IndexedDB/close-in-upgradeneeded.html | 1 + .../IndexedDB/idb-binary-key-detached.htm | 51 + .../IndexedDB/idb-binary-key-roundtrip.htm | 115 + .../idbcursor_continue_objectstore.htm | 2 +- ...bfactory-deleteDatabase-opaque-origin.html | 66 + .../idbfactory-open-opaque-origin.html | 68 + .../IndexedDB/idbfactory_deleteDatabase4.htm | 5 +- .../IndexedDB/idbindex_get.htm | 2 +- .../idbobjectstore_createIndex13.htm | 2 +- .../IndexedDB/idbversionchangeevent.htm | 18 + .../IndexedDB/key-conversion-exceptions.htm | 194 + .../IndexedDB/keypath_invalid.htm | 2 +- .../web-platform-tests/IndexedDB/support.js | 4 +- tests/wpt/web-platform-tests/README.md | 6 +- .../xmlhttprequest-timeout-reused.html | 48 + .../wpt/web-platform-tests/assumptions/OWNERS | 1 + .../assumptions/canvas-background-ref.html | 8 + .../assumptions/canvas-background.html | 4 + .../assumptions/html-elements.html | 131 + .../assumptions/initial-color-ref.html | 12 + .../assumptions/initial-color.html | 9 + .../assumptions/medium-font-size-ref.html | 8 + .../assumptions/medium-font-size.html | 9 + .../assumptions/min-font-size-ref.html | 8 + .../assumptions/min-font-size.html | 9 + .../wpt/web-platform-tests/check_stability.py | 93 +- tests/wpt/web-platform-tests/ci_stability.sh | 2 +- tests/wpt/web-platform-tests/common/OWNERS | 1 + .../common/get-host-info.sub.js | 3 + .../reactions/DOMTokenList.html | 9 - tests/wpt/web-platform-tests/docs/.gitignore | 6 + .../wpt/web-platform-tests/docs/.ruby-version | 1 + tests/wpt/web-platform-tests/docs/CNAME | 1 + tests/wpt/web-platform-tests/docs/Gemfile | 7 + tests/wpt/web-platform-tests/docs/OWNERS | 1 + .../github-intro.md} | 171 +- .../docs/_appendix/index.md | 10 + .../docs/_appendix/test-templates.md | 77 + tests/wpt/web-platform-tests/docs/_config.yml | 43 + .../.gitkeep => docs/_includes/footer.html} | 0 .../docs/_includes/head.html | 14 + .../docs/_includes/header.html | 76 + .../docs/_includes/svg/octicons/LICENSE | 21 + .../svg/octicons/git-pull-request.svg | 11 + .../docs/_includes/svg/octicons/package.svg | 11 + .../docs/_includes/svg/octicons/pencil.svg | 11 + .../docs/_includes/svg/octicons/tools.svg | 11 + .../docs/_includes/svg/triangle-right.svg | 3 + .../docs/_reviewing-tests/checklist.md | 196 + .../docs/_reviewing-tests/index.md | 38 + .../docs/_running-tests/index.md | 63 + .../docs/_writing-tests/ahem.md | 89 + .../docs/_writing-tests/assumptions.md | 40 + .../docs/{ => _writing-tests}/css-metadata.md | 66 +- .../{ => _writing-tests}/css-user-styles.md | 5 + .../docs/_writing-tests/general-guidelines.md | 180 + .../docs/_writing-tests/idlharness.html | 11 + .../docs/_writing-tests/index.md | 61 + .../docs/{ => _writing-tests}/lint-tool.md | 29 +- .../docs/_writing-tests/manual.md | 80 + .../docs/_writing-tests/reftests.md | 172 + .../docs/_writing-tests/rendering.md | 91 + .../docs/_writing-tests/server-features.md | 87 + .../submission-process.md | 27 +- .../docs/_writing-tests/testharness-api.html | 11 + .../docs/_writing-tests/testharness.md | 76 + .../docs/_writing-tests/visual.md | 32 + .../docs/assets/_reftest_graph_example.dot | 6 + .../docs/assets/commit-directly.png | Bin 0 -> 8546 bytes .../docs/assets/commitbtn.png | Bin 0 -> 5642 bytes .../docs/assets/createprlink.png | Bin 0 -> 9172 bytes .../docs/assets/editbtn.png | Bin 0 -> 2022 bytes .../docs/assets/files-changed.png | Bin 0 -> 2585 bytes .../docs/assets/forkbtn.png | Bin 0 -> 631 bytes .../web-platform-tests/docs/assets/main.scss | 177 + .../web-platform-tests/docs/assets/menu.js | 20 + .../docs/assets/more-commits.png | Bin 0 -> 10927 bytes .../docs/assets/pencil-icon.png | Bin 0 -> 178 bytes .../docs/assets/praccepteddelete.png | Bin 0 -> 18087 bytes .../docs/assets/pullrequestbtn.png | Bin 0 -> 6505 bytes .../docs/assets/pullrequestlink.png | Bin 0 -> 2935 bytes .../docs/assets/reftest_graph_example.svg | 71 + .../docs/assets/sendpullrequest.png | Bin 0 -> 2436 bytes .../web-platform-tests/docs/configuration.md | 97 - .../wpt/web-platform-tests/docs/css-naming.md | 77 - tests/wpt/web-platform-tests/docs/index.html | 65 + .../web-platform-tests/docs/introduction.md | 206 + .../web-platform-tests/docs/manual-test.md | 72 - tests/wpt/web-platform-tests/docs/reftests.md | 152 - .../docs/review-checklist.md | 128 - .../web-platform-tests/docs/review-process.md | 39 - .../web-platform-tests/docs/running_tests.md | 34 - .../docs/test-format-guidelines.md | 346 -- .../docs/test-style-guidelines.md | 437 -- .../web-platform-tests/docs/test-templates.md | 135 - .../events/EventListener-invoke-legacy.html | 72 + .../DOMImplementation-createDocument.html | 1 - .../dom/nodes/Document-createElementNS.html | 2 - .../dom/nodes/Document-createElementNS.js | 1 - .../dom/ranges/Range-selectNode.html | 24 +- .../domxpath/interfaces.html | 80 + .../eventsource-onmessage-trusted.htm | 21 + .../fetch/api/headers/headers-record.html | 311 ++ .../request-cache-default-conditional.html | 20 +- tests/wpt/web-platform-tests/fonts/OWNERS | 1 + .../fullscreen/api/blank.html | 10 - .../api/document-fullscreen-enabled.html | 18 +- tests/wpt/web-platform-tests/html/OWNERS | 2 - .../history-traversal/MANIFEST | 16 - .../navigating-across-documents/MANIFEST | 42 - .../navigation-unload-form-submit-1.html | 23 + .../navigation-unload-form-submit-2.html | 7 + .../navigation-unload-form-submit.html | 24 + ...igation-unload-same-origin-fragment-1.html | 9 + ...igation-unload-same-origin-fragment-2.html | 9 + ...avigation-unload-same-origin-fragment.html | 29 + .../navigation_unload_same_origin.html | 2 +- .../scroll-to-fragid/MANIFEST | 7 - .../unloading-documents/MANIFEST | 33 - .../beforeunload-canceling-1.html | 31 + .../beforeunload-canceling.html | 142 + .../unloading-documents/prompt/MANIFEST | 14 - .../unloading-documents/unload/MANIFEST | 21 - ...cation-protocol-setter-with-colon.sub.html | 54 + .../location-stringifier.html | 13 + .../location-symbol-toprimitive.html | 14 + .../location-tojson.html | 13 + .../location-valueof.html | 15 + .../resources/post-your-protocol.html | 4 + .../windows/browsing-context-names/MANIFEST | 4 - .../windows/nested-browsing-contexts/MANIFEST | 1 - .../html/dom/elements-forms.js | 3 +- .../html/dom/elements-misc.js | 4 +- .../html/dom/interfaces.html | 3150 +------------ .../html/dom/interfaces.worker.js | 33 + .../html/dom/resources/interfaces.idl | 2282 ++++++++++ .../dom/resources/self-origin-subframe.html | 22 + .../dom/resources/untested-interfaces.idl | 830 ++++ .../html/dom/self-origin.any.js | 5 + .../html/dom/self-origin.sub.html | 93 + .../button-type-menu-historical-ref.html | 7 + .../button-type-menu-historical.html | 8 + .../autoplay-with-slow-text-tracks.html | 45 + .../resources/should-load.html | 3 + .../resources/should-not-load.html | 5 + .../the-area-element/area-download-click.html | 27 + .../the-canvas-element/toBlob.jpeg.html | 34 +- .../the-canvas-element/toBlob.null.html | 33 + .../the-canvas-element/toBlob.png.html | 34 +- .../embed-ignored-in-media-element.html | 16 +- .../embed-in-object-fallback-2.html | 56 + .../the-object-element/object-events.html | 4 +- .../object-ignored-in-media-element.html | 22 + .../object-in-object-fallback-2.html | 56 + .../form-data-set-usv-form.html | 27 + .../form-submission-0/form-data-set-usv.html | 40 + .../forms/form-submission-0/form-echo.py | 7 + .../button-menu-historical.html | 25 + .../forms/the-input-element/selection.html | 13 +- .../forms/the-input-element/valueMode.html | 357 +- .../the-label-element/labelable-elements.html | 22 +- ...grouping-li-reftest-no-list-owner-ref.html | 29 - .../grouping-li-reftest-no-list-owner.html | 31 - .../the-script-element/data-url.html | 22 +- .../module/crossorigin-common.js | 8 + .../crossorigin-import-different.sub.html | 15 + .../crossorigin-import-missingheader.sub.html | 15 + .../module/crossorigin-import-same.sub.html | 15 + .../crossorigin-import-wrongheader.sub.html | 15 + .../crossorigin-root-different.sub.html | 11 + .../crossorigin-root-missingheader.sub.html | 11 + .../module/crossorigin-root-same.sub.html | 11 + .../crossorigin-root-wrongheader.sub.html | 11 + .../module/crossorigin-scripterror.js | 8 + .../module/crossorigin.html | 43 + .../module/errorhandling-parseerror-common.js | 10 + .../errorhandling-parseerror-dependent.html | 16 + .../errorhandling-parseerror-dependent.js | 2 + ...handling-parseerror-dependentmultiple.html | 31 + ...orhandling-parseerror-dependentmultiple.js | 2 + .../module/errorhandling-parseerror-root.html | 15 + .../errorhandling-wrongMimetype-import.js | 8 + .../module/errorhandling-wrongMimetype.js | 7 + .../module/errorhandling.html | 61 + .../module/execorder-dynamicordered2.js | 3 + .../module/execorder-dynamicordered3.js | 3 + .../module/execorder-dynamicordered4.js | 3 + .../module/execorder-dynamicunordered1.js | 3 + .../module/execorder-dynamicunordered2.js | 3 + .../module/execorder-parsedordered2.js | 3 + .../module/execorder-parsedordered4.js | 3 + .../module/execorder-parsedunordered1.js | 3 + .../module/execorder-parsedunordered2.js | 3 + .../the-script-element/module/execorder.html | 105 + .../the-script-element/module/imports-a.js | 2 + .../the-script-element/module/imports-b.js | 1 + .../module/imports-cycle-a.js | 2 + .../module/imports-cycle-b.js | 2 + .../module/imports-cycle.js | 5 + .../module/imports-inc-a.js | 2 + .../module/imports-inc-ab.js | 5 + .../module/imports-inc-b.js | 2 + .../module/imports-self-inner.js | 2 + .../the-script-element/module/imports-self.js | 5 + .../the-script-element/module/imports.html | 64 + .../the-a-element/a-download-click.html | 24 + .../wpt/web-platform-tests/html/syntax/OWNERS | 1 + .../the-input-byte-stream-015.html | 1 + .../wpt/web-platform-tests/html/tools/OWNERS | 1 + .../origin-check-in-document-open-basic.html | 18 + ...-document-open-same-origin-domain.sub.html | 16 + .../resources/set-document-domain.html | 4 + .../idle-callbacks/callback-suspended.html | 93 + .../idle-callbacks/cancel-invoked.html | 6 + .../resources/post_name_on_load.html | 7 + .../body-exposed-window-event-handlers.html | 1 - .../events/event-handler-onauxclick.html | 4 +- .../event-handler-processing-algorithm.html | 16 +- .../allow-crossorigin.html | 30 + .../disallow-crossorigin.html | 34 + .../promise-rejection-event-constructor.html | 44 + ...se-rejection-events-attached-in-event.html | 31 + .../promise-rejection-events-onerror.html | 35 + ...mise-rejection-events.dedicatedworker.html | 11 + .../promise-rejection-events.html | 8 + ...-rejection-events.serviceworker.https.html | 12 + ...promise-rejection-events.sharedworker.html | 11 + .../support/promise-access-control.py | 10 + .../support/promise-rejection-events.js | 900 ++++ tests/wpt/web-platform-tests/images/OWNERS | 1 + .../media-capabilities/README.md | 14 + .../media-capabilities/idlharness.html | 85 + .../media-capabilities/query.html | 35 + .../web-platform-tests/mediasession/README.md | 20 + .../mediasession/idlharness.html | 89 + .../mediasession/mediametadata.html | 192 + .../mediasession/playbackstate.html | 27 + .../mediasession/setactionhandler.html | 24 + .../nav2_test_attributes_values.html | 7 +- .../nav2_test_instance_accessors.html | 4 +- .../offscreen-canvas/tools/OWNERS | 1 + ...rcapture_for_disconnected_node-manual.html | 9 +- .../pointerevent_on_event_handlers.html | 2 +- .../pointerevent_pointerout_pen-manual.html | 2 +- ...ture_events_to_original_target-manual.html | 38 +- ...> avoid-delaying-onload-link-preload.html} | 4 +- ...-onload-link-preload-after-discovery.html} | 5 +- ...resources.html => download-resources.html} | 13 +- ...eload.html => dynamic-adding-preload.html} | 5 +- ...ttps.html => fetch-destination.https.html} | 2 + ... => link-header-preload-delay-onload.html} | 8 +- ...-header-preload-delay-onload.html.headers} | 0 ..._preload.html => link-header-preload.html} | 7 +- ...aders => link-header-preload.html.headers} | 0 ...{onerror_event.html => onerror-event.html} | 2 + .../{onload_event.html => onload-event.html} | 2 + .../preload/preload-csp.sub.html | 22 +- .../preload/preload-default-csp.sub.html | 22 +- ..._with_type.html => preload-with-type.html} | 2 + .../preload/resources/preload_helper.js | 16 + ...=> single-download-late-used-preload.html} | 6 +- ...load.html => single-download-preload.html} | 17 +- ...Presentation_displaynotallowed-manual.html | 2 +- .../startNewPresentation_success-manual.html | 2 +- .../web-platform-tests/referrer-policy/OWNERS | 2 + .../referrer-policy/README.md | 2 +- .../sandboxed-iframe-with-opaque-origin.html | 44 + .../subresource-test/image-decoding.html | 2 +- .../unsupported-csp-referrer-directive.html | 2 +- .../remote-playback/README.md | 19 + .../cancel-watch-availability.html | 44 + ...back-cancel-watch-availability-throws.html | 29 + ...disable-remote-playback-prompt-throws.html | 16 + ...te-playback-watch-availability-throws.html | 17 + .../watch-availability-initial-callback.html | 22 + .../resources/idlharness.js | 91 +- .../resources/testharness.js | 17 +- .../web-platform-tests/selection/collapse.js | 7 + .../web-platform-tests/selection/common.js | 19 + .../web-platform-tests/selection/extend.js | 9 + .../selection/selectAllChildren.html | 11 + .../selection/setBaseAndExtent.html | 10 + .../service-worker/client-navigate.https.html | 2 +- .../clients-get-cross-origin.https.html | 2 +- .../service-worker/clients-get.https.html | 2 +- .../fetch-canvas-tainting-cache.https.html | 2 +- .../fetch-canvas-tainting.https.html | 2 +- .../service-worker/fetch-cors-xhr.https.html | 2 +- .../service-worker/fetch-csp.https.html | 2 +- .../fetch-event-redirect.https.html | 2 +- .../fetch-event-within-sw-manual.html | 122 + .../service-worker/fetch-event-within-sw.html | 79 + .../service-worker/fetch-event.https.html | 2 +- .../fetch-frame-resource.https.html | 2 +- .../fetch-header-visibility.https.html | 2 +- .../fetch-mixed-content-to-inscope.https.html | 2 +- ...fetch-mixed-content-to-outscope.https.html | 2 +- .../fetch-request-css-base-url.https.html | 2 +- .../fetch-request-css-images.https.html | 2 +- .../fetch-request-fallback.https.html | 2 +- .../fetch-request-redirect.https.html | 2 +- .../fetch-request-resources.https.html | 2 +- .../fetch-request-xhr.https.html | 2 +- .../fetch-response-xhr.https.html | 2 +- .../fetch-waits-for-activate.https.html | 2 +- .../foreign-fetch-basics.https.html | 241 + .../foreign-fetch-cors.https.html | 306 ++ .../foreign-fetch-event.https.html | 9 + .../foreign-fetch-workers.https.html | 88 + .../getregistrations.https.html | 2 +- .../invalid-blobtype.https.html | 2 +- .../service-worker/invalid-header.https.html | 2 +- .../multi-globals/current/current.https.html | 2 + .../multi-globals/current/test-sw.js | 1 + .../incumbent/incumbent.https.html | 20 + .../multi-globals/incumbent/test-sw.js | 1 + .../relevant/relevant.https.html | 2 + .../multi-globals/relevant/test-sw.js | 1 + .../service-worker/multi-globals/test-sw.js | 1 + .../multi-globals/url-parsing.https.html | 73 + .../service-worker/navigate-window.https.html | 2 +- .../navigation-redirect.https.html | 2 +- .../performance-timeline.https.html | 16 +- .../postmessage-blob-url.https.html | 33 + .../postmessage-to-client.https.html | 2 +- .../service-worker/referer.https.html | 2 +- .../register-closed-window.https.html | 2 +- .../register-link-element.https.html | 25 + .../register-link-header.https.html | 73 + .../service-worker/registration.https.html | 363 +- .../service-worker/resource-timing.https.html | 2 +- .../resources/client-navigate-worker.js | 2 +- .../resources/clients-get-other-origin.html | 2 +- .../resources/dummy-worker-interceptor.js | 2 +- .../resources/fetch-access-control.py | 2 +- .../fetch-canvas-tainting-iframe.html | 2 +- .../resources/fetch-cors-xhr-iframe.html | 2 +- .../resources/fetch-csp-iframe.html | 2 +- .../resources/fetch-event-within-sw-worker.js | 48 + .../fetch-header-visibility-iframe.html | 2 +- ...xed-content-iframe-inscope-to-inscope.html | 2 +- ...ed-content-iframe-inscope-to-outscope.html | 2 +- .../resources/fetch-mixed-content-iframe.html | 2 +- .../fetch-request-css-base-url-worker.js | 2 +- .../fetch-request-xhr-iframe.https.html | 2 +- .../fetch-response-xhr-iframe.https.html | 2 +- .../resources/foreign-fetch-cors-worker.js | 30 + .../resources/foreign-fetch-event-worker.js | 31 + .../foreign-fetch-helper-iframe.html | 17 + .../resources/foreign-fetch-helper-script.js | 11 + .../resources/foreign-fetch-helper-worker.js | 8 + .../resources/foreign-fetch-helpers.js | 44 + .../resources/foreign-fetch-worker.js | 78 + .../resources/get-host-info.sub.js | 26 - .../resources/install-worker-helper.html | 21 + .../service-worker/resources/link-header.py | 4 + .../navigation-redirect-other-origin.html | 2 +- .../resources/notification_icon.py | 9 + .../resources/postmessage-blob-url.js | 5 + .../resources/referer-iframe.html | 2 +- .../resources/registration-tests.js | 396 ++ .../resources/reply-to-message.html | 7 + .../resources/service-worker-csp-worker.py | 6 +- .../resources/test-helpers.sub.js | 1 + .../worker-interception-iframe.https.html | 2 +- .../resources/worker-load-interceptor.js | 2 +- .../service-worker/websocket.https.html | 2 +- .../service-worker/xhr.https.html | 2 +- .../shadow-dom/HTMLSlotElement-interface.html | 4 +- .../shadow-dom/event-inside-slotted-node.html | 4 +- .../shadow-dom/event-with-related-target.html | 6 +- tests/wpt/web-platform-tests/storage/OWNERS | 2 + .../wpt/web-platform-tests/storage/README.md | 7 + .../storage/interfaces.html | 30 + .../web-platform-tests/storage/interfaces.idl | 22 + .../storage/interfaces.worker.js | 26 + .../streams/readable-byte-streams/general.js | 662 ++- ...oint-total-queue-size.dedicatedworker.html | 11 + .../floating-point-total-queue-size.html | 10 + .../floating-point-total-queue-size.js | 119 + ...-total-queue-size.serviceworker.https.html | 12 + ...g-point-total-queue-size.sharedworker.html | 11 + .../streams/readable-streams/general.js | 24 + .../writable-streams/bad-strategies.js | 2 +- ...oint-total-queue-size.dedicatedworker.html | 11 + .../floating-point-total-queue-size.html | 10 + .../floating-point-total-queue-size.js | 90 + ...-total-queue-size.serviceworker.https.html | 12 + ...g-point-total-queue-size.sharedworker.html | 11 + .../streams/writable-streams/general.js | 11 + .../reentrant-strategy.dedicatedworker.html | 11 + .../writable-streams/reentrant-strategy.html | 11 + .../writable-streams/reentrant-strategy.js | 179 + ...eentrant-strategy.serviceworker.https.html | 12 + .../reentrant-strategy.sharedworker.html | 11 + .../web-platform-tests/tools/runner/runner.js | 13 +- .../tools/sslutils/openssl.py | 14 +- tests/wpt/web-platform-tests/url/OWNERS | 1 - .../web-platform-tests/url/interfaces.html | 2 + .../web-platform-tests/url/setters_tests.json | 191 + .../web-platform-tests/url/url-tojson.html | 12 + .../web-platform-tests/url/urltestdata.json | 396 +- .../addition-per-property.html | 3 +- .../interpolation-per-property.html | 3 +- .../spacing-keyframes-filters.html | 4 +- ...> effect-value-overlapping-keyframes.html} | 43 +- .../effect-value-transformed-distance.html | 417 ++ .../effect-value-visibility.html | 55 + .../interfaces/Animatable/animate.html | 10 + .../interfaces/Animatable/getAnimations.html | 70 + .../interfaces/Animation/finished.html | 50 + .../interfaces/Animation/ready.html | 2 +- .../AnimationEffectTiming/delay.html | 18 + .../AnimationEffectTiming/direction.html | 5 + .../AnimationEffectTiming/duration.html | 5 + .../AnimationEffectTiming/easing.html | 15 +- .../AnimationEffectTiming/endDelay.html | 5 + .../AnimationEffectTiming/fill.html | 5 + .../getComputedStyle.html | 2 +- .../AnimationEffectTiming/iterationStart.html | 26 +- .../AnimationEffectTiming/iterations.html | 5 + .../KeyframeEffect/constructor.html | 21 +- .../KeyframeEffect/effect-easing.html | 683 --- .../processing-a-keyframes-argument.html | 1 + .../KeyframeEffectReadOnly/spacing.html | 6 +- ...effect-easing-tests.js => easing-tests.js} | 41 +- .../animation-effects/local-time.html | 26 + .../timing-model/animations/current-time.html | 12 + .../transformed-progress.html | 272 ++ .../web-platform-tests/webauthn/helpers.js | 209 + .../webauthn/interfaces.https.html | 56 +- .../webauthn/interfaces.idl | 84 +- ...tial-badargs-accountinformation.https.html | 34 + ...al-badargs-attestationchallenge.https.html | 20 + ...ential-badargs-cryptoparameters.https.html | 33 + .../web-platform-tests/webdriver/conftest.py | 4 +- .../web-platform-tests/webdriver/contexts.py | 37 +- .../webdriver/navigation.py | 8 +- .../MessageEvent-trusted-worker.js | 4 + .../webmessaging/MessageEvent-trusted.html | 45 + .../web-platform-tests/websockets/Close-0.htm | 25 - .../websockets/Close-NaN.htm | 25 - .../websockets/Close-clamp.htm | 14 - .../websockets/Close-null.htm | 25 - .../websockets/Close-string.htm | 25 - .../websockets/Secure-Close-0.htm | 25 - .../websockets/Secure-Close-NaN.htm | 25 - .../websockets/Secure-Close-null.htm | 25 - .../websockets/Secure-Close-string.htm | 25 - .../websockets/close-invalid.any.js | 20 + .../webstorage/event_no_duplicates.html | 111 + ...es_overlapping_completely_move_up-ref.html | 12 +- ...2_cues_overlapping_completely_move_up.html | 2 +- ...s_overlapping_partially_move_down-ref.html | 12 +- ..._cues_overlapping_partially_move_down.html | 2 +- ...ues_overlapping_partially_move_up-ref.html | 12 +- .../2_cues_overlapping_partially_move_up.html | 2 +- .../processing-model/2_tracks-ref.html | 8 +- .../processing-model/2_tracks.html | 2 +- .../processing-model/3_tracks-ref.html | 8 +- .../processing-model/3_tracks.html | 2 +- .../processing-model/align_end-ref.html | 8 +- .../processing-model/align_end.html | 2 +- .../align_end_wrapped-ref.html | 8 +- .../processing-model/align_end_wrapped.html | 2 +- .../processing-model/align_middle-ref.html | 8 +- .../processing-model/align_middle.html | 2 +- .../align_middle_position_50-ref.html | 8 +- .../align_middle_position_50.html | 2 +- .../align_middle_position_gt_50-ref.html | 12 +- .../align_middle_position_gt_50.html | 2 +- .../align_middle_position_lt_50-ref.html | 12 +- .../align_middle_position_lt_50.html | 2 +- ...sition_lt_50_size_gt_maximum_size-ref.html | 12 +- ...e_position_lt_50_size_gt_maximum_size.html | 2 +- .../align_middle_wrapped-ref.html | 8 +- .../align_middle_wrapped.html | 2 +- .../processing-model/align_start-ref.html | 8 +- .../processing-model/align_start.html | 2 +- .../align_start_wrapped-ref.html | 8 +- .../processing-model/align_start_wrapped.html | 2 +- .../audio_has_no_subtitles-ref.html | 6 +- .../audio_has_no_subtitles.html | 6 +- .../processing-model/basic-ref.html | 8 +- .../processing-model/basic.html | 2 +- .../processing-model/bidi/bidi_ruby-ref.html | 8 +- .../processing-model/bidi/bidi_ruby.html | 4 +- .../bidi/u002E_LF_u05D0-ref.html | 8 +- .../processing-model/bidi/u002E_LF_u05D0.html | 4 +- .../bidi/u002E_u2028_u05D0-ref.html | 8 +- .../bidi/u002E_u2028_u05D0.html | 4 +- .../bidi/u002E_u2029_u05D0-ref.html | 8 +- .../bidi/u002E_u2029_u05D0.html | 4 +- .../bidi/u0041_first-ref.html | 8 +- .../processing-model/bidi/u0041_first.html | 4 +- .../bidi/u05D0_first-ref.html | 8 +- .../processing-model/bidi/u05D0_first.html | 4 +- .../bidi/u0628_first-ref.html | 8 +- .../processing-model/bidi/u0628_first.html | 4 +- .../bidi/u06E9_no_strong_dir-ref.html | 8 +- .../bidi/u06E9_no_strong_dir.html | 4 +- .../processing-model/cue_too_long-ref.html | 8 +- .../processing-model/cue_too_long.html | 2 +- .../decode_escaped_entities-ref.html | 8 +- .../decode_escaped_entities.html | 2 +- .../disable_controls_reposition.html | 11 +- ...ride_cue_align_position_line_size-ref.html | 12 +- ...override_cue_align_position_line_size.html | 11 +- ...n_position_line_size_while_paused-ref.html | 12 +- ...align_position_line_size_while_paused.html | 11 +- .../dom_override_cue_line-ref.html | 8 +- .../dom_override_cue_line.html | 11 +- .../dom_override_cue_text-ref.html | 8 +- .../dom_override_cue_text.html | 11 +- ...om_override_cue_text_while_paused-ref.html | 8 +- .../dom_override_cue_text_while_paused.html | 11 +- ..._override_remove_cue_while_paused-ref.html | 7 +- .../dom_override_remove_cue_while_paused.html | 17 +- .../enable_controls_reposition-ref.html | 4 +- .../enable_controls_reposition.html | 11 +- .../9_cues_overlapping_completely-ref.html | 46 +- .../evil/9_cues_overlapping_completely.html | 4 +- ...tely_all_cues_have_same_timestamp-ref.html | 46 +- ...mpletely_all_cues_have_same_timestamp.html | 4 +- .../evil/media_404_omit_subtitles-ref.html | 7 +- .../evil/media_404_omit_subtitles.html | 12 +- .../evil/media_height_19-ref.html | 6 +- .../evil/media_height_19.html | 4 +- .../evil/single_quote-ref.html | 8 +- .../processing-model/evil/single_quote.html | 4 +- .../processing-model/evil/size_90-ref.html | 8 +- .../processing-model/evil/size_90.html | 4 +- .../processing-model/evil/size_99-ref.html | 8 +- .../processing-model/evil/size_99.html | 4 +- .../line_-2_wrapped_cue_grow_upwards-ref.html | 14 +- .../line_-2_wrapped_cue_grow_upwards.html | 2 +- .../processing-model/line_0_is_top-ref.html | 8 +- .../processing-model/line_0_is_top.html | 2 +- ...line_1_wrapped_cue_grow_downwards-ref.html | 14 +- .../line_1_wrapped_cue_grow_downwards.html | 2 +- .../processing-model/line_50_percent-ref.html | 10 +- .../processing-model/line_50_percent.html | 2 +- ...integer_and_percent_mixed_overlap-ref.html | 12 +- ...ine_integer_and_percent_mixed_overlap.html | 2 +- ...and_percent_mixed_overlap_move_up-ref.html | 12 +- ...ger_and_percent_mixed_overlap_move_up.html | 2 +- ...percent_and_integer_mixed_overlap-ref.html | 12 +- ...ine_percent_and_integer_mixed_overlap.html | 2 +- ...and_integer_mixed_overlap_move_up-ref.html | 12 +- ...ent_and_integer_mixed_overlap_move_up.html | 2 +- .../media_height400_with_controls-ref.html | 10 +- .../media_height400_with_controls.html | 2 +- .../media_with_controls-ref.html | 12 +- .../processing-model/media_with_controls.html | 2 +- .../navigate_cue_position-1.html | 11 +- .../navigate_cue_position-ref-1.html | 10 +- .../navigate_cue_position.html | 2 +- .../one_line_cue_plus_wrapped_cue-ref.html | 8 +- .../one_line_cue_plus_wrapped_cue.html | 2 +- .../processing-model/repaint-ref.html | 4 +- .../cue/background_properties-ref.html | 9 +- .../selectors/cue/background_properties.html | 4 +- .../cue/background_shorthand-ref.html | 9 +- .../selectors/cue/background_shorthand.html | 4 +- ...ground_shorthand_css_relative_url-ref.html | 9 +- ...background_shorthand_css_relative_url.html | 4 +- .../selectors/cue/color_hex-ref.html | 9 +- .../selectors/cue/color_hex.html | 4 +- .../selectors/cue/color_hsla-ref.html | 9 +- .../selectors/cue/color_hsla.html | 4 +- .../selectors/cue/color_rgba-ref.html | 9 +- .../selectors/cue/color_rgba.html | 4 +- .../cue/cue_selector_single_colon-ref.html | 8 +- .../cue/cue_selector_single_colon.html | 4 +- .../selectors/cue/font_properties-ref.html | 9 +- .../selectors/cue/font_properties.html | 8 +- .../selectors/cue/font_shorthand-ref.html | 9 +- .../selectors/cue/font_shorthand.html | 6 +- ...inherit_values_from_media_element-ref.html | 13 +- .../inherit_values_from_media_element.html | 6 +- .../selectors/cue/outline_properties-ref.html | 9 +- .../selectors/cue/outline_properties.html | 4 +- .../selectors/cue/outline_shorthand-ref.html | 9 +- .../selectors/cue/outline_shorthand.html | 4 +- .../cue/text-decoration_line-through-ref.html | 9 +- .../cue/text-decoration_line-through.html | 4 +- .../cue/text-decoration_overline-ref.html | 9 +- .../cue/text-decoration_overline.html | 4 +- ...n_overline_underline_line-through-ref.html | 9 +- ...ation_overline_underline_line-through.html | 4 +- .../cue/text-decoration_underline-ref.html | 9 +- .../cue/text-decoration_underline.html | 4 +- .../selectors/cue/text-shadow-ref.html | 9 +- .../selectors/cue/text-shadow.html | 4 +- .../cue/white-space_normal_wrapped-ref.html | 6 +- .../cue/white-space_normal_wrapped.html | 4 +- .../cue/white-space_nowrap_wrapped-ref.html | 6 +- .../cue/white-space_nowrap_wrapped.html | 4 +- .../cue/white-space_pre-line_wrapped-ref.html | 6 +- .../cue/white-space_pre-line_wrapped.html | 4 +- .../selectors/cue/white-space_pre-ref.html | 6 +- .../cue/white-space_pre-wrap_wrapped-ref.html | 6 +- .../cue/white-space_pre-wrap_wrapped.html | 4 +- .../selectors/cue/white-space_pre.html | 4 +- .../cue/white-space_pre_wrapped-ref.html | 6 +- .../cue/white-space_pre_wrapped.html | 4 +- .../cue_function/background_box-ref.html | 8 +- .../cue_function/background_box.html | 4 +- .../background_properties-ref.html | 9 +- .../cue_function/background_properties.html | 4 +- .../background_shorthand-ref.html | 9 +- .../cue_function/background_shorthand.html | 4 +- ...ground_shorthand_css_relative_url-ref.html | 9 +- ...background_shorthand_css_relative_url.html | 4 +- .../bold_animation_with_timestamp-ref.html | 8 +- .../bold_animation_with_timestamp.html | 4 +- .../bold_background_properties-ref.html | 8 +- .../bold_background_properties.html | 4 +- .../bold_background_shorthand-ref.html | 8 +- .../bold_background_shorthand.html | 4 +- .../bold_object/bold_color-ref.html | 8 +- .../cue_function/bold_object/bold_color.html | 4 +- .../bold_object/bold_font_properties-ref.html | 10 +- .../bold_object/bold_font_properties.html | 8 +- .../bold_object/bold_font_shorthand-ref.html | 10 +- .../bold_object/bold_font_shorthand.html | 6 +- .../bold_object/bold_namespace-ref.html | 8 +- .../bold_object/bold_namespace.html | 4 +- .../bold_outline_properties-ref.html | 8 +- .../bold_object/bold_outline_properties.html | 4 +- .../bold_outline_shorthand-ref.html | 8 +- .../bold_object/bold_outline_shorthand.html | 4 +- ...bold_text-decoration_line-through-ref.html | 8 +- .../bold_text-decoration_line-through.html | 4 +- .../bold_object/bold_text-shadow-ref.html | 8 +- .../bold_object/bold_text-shadow.html | 4 +- .../bold_timestamp_future-ref.html | 8 +- .../bold_object/bold_timestamp_future.html | 4 +- .../bold_object/bold_timestamp_past-ref.html | 8 +- .../bold_object/bold_timestamp_past.html | 4 +- .../bold_transition_with_timestamp-ref.html | 8 +- .../bold_transition_with_timestamp.html | 4 +- .../bold_white-space_normal_wrapped-ref.html | 6 +- .../bold_white-space_normal_wrapped.html | 4 +- .../bold_white-space_nowrap-ref.html | 6 +- .../bold_object/bold_white-space_nowrap.html | 4 +- ...bold_white-space_pre-line_wrapped-ref.html | 6 +- .../bold_white-space_pre-line_wrapped.html | 4 +- ...bold_white-space_pre-wrap_wrapped-ref.html | 6 +- .../bold_white-space_pre-wrap_wrapped.html | 4 +- .../bold_white-space_pre_wrapped-ref.html | 6 +- .../bold_white-space_pre_wrapped.html | 4 +- .../bold_object/bold_with_class-ref.html | 8 +- .../bold_object/bold_with_class.html | 4 +- ...th_class_object_specific_selector-ref.html | 8 +- ...d_with_class_object_specific_selector.html | 4 +- .../class_animation_with_timestamp-ref.html | 8 +- .../class_animation_with_timestamp.html | 4 +- .../class_background_properties-ref.html | 8 +- .../class_background_properties.html | 4 +- .../class_background_shorthand-ref.html | 8 +- .../class_background_shorthand.html | 4 +- .../class_object/class_color-ref.html | 8 +- .../class_object/class_color.html | 4 +- .../class_font_properties-ref.html | 10 +- .../class_object/class_font_properties.html | 8 +- .../class_font_shorthand-ref.html | 10 +- .../class_object/class_font_shorthand.html | 6 +- .../class_object/class_namespace-ref.html | 8 +- .../class_object/class_namespace.html | 4 +- .../class_outline_properties-ref.html | 8 +- .../class_outline_properties.html | 4 +- .../class_outline_shorthand-ref.html | 8 +- .../class_object/class_outline_shorthand.html | 4 +- ...lass_text-decoration_line-through-ref.html | 8 +- .../class_text-decoration_line-through.html | 4 +- .../class_object/class_text-shadow-ref.html | 8 +- .../class_object/class_text-shadow.html | 4 +- .../class_timestamp_future-ref.html | 8 +- .../class_object/class_timestamp_future.html | 4 +- .../class_timestamp_past-ref.html | 8 +- .../class_object/class_timestamp_past.html | 4 +- .../class_transition_with_timestamp-ref.html | 8 +- .../class_transition_with_timestamp.html | 4 +- .../class_white-space_normal_wrapped-ref.html | 6 +- .../class_white-space_normal_wrapped.html | 4 +- .../class_white-space_nowrap-ref.html | 6 +- .../class_white-space_nowrap.html | 4 +- ...lass_white-space_pre-line_wrapped-ref.html | 6 +- .../class_white-space_pre-line_wrapped.html | 4 +- ...lass_white-space_pre-wrap_wrapped-ref.html | 6 +- .../class_white-space_pre-wrap_wrapped.html | 4 +- .../class_white-space_pre_wrapped-ref.html | 6 +- .../class_white-space_pre_wrapped.html | 4 +- .../class_object/class_with_class-ref.html | 8 +- .../class_object/class_with_class.html | 4 +- ...th_class_object_specific_selector-ref.html | 8 +- ...s_with_class_object_specific_selector.html | 4 +- .../selectors/cue_function/color_hex-ref.html | 8 +- .../selectors/cue_function/color_hex.html | 4 +- .../cue_function/color_hsla-ref.html | 8 +- .../selectors/cue_function/color_hsla.html | 4 +- .../cue_function/color_rgba-ref.html | 8 +- .../selectors/cue_function/color_rgba.html | 4 +- .../cue_func_selector_single_colon-ref.html | 8 +- .../cue_func_selector_single_colon.html | 4 +- .../cue_function/font_properties-ref.html | 9 +- .../cue_function/font_properties.html | 8 +- .../cue_function/font_shorthand-ref.html | 9 +- .../cue_function/font_shorthand.html | 6 +- .../selectors/cue_function/id_color-ref.html | 9 +- .../selectors/cue_function/id_color.html | 4 +- ...inherit_values_from_media_element-ref.html | 9 +- .../inherit_values_from_media_element.html | 6 +- .../italic_animation_with_timestamp-ref.html | 8 +- .../italic_animation_with_timestamp.html | 4 +- .../italic_background_properties-ref.html | 8 +- .../italic_background_properties.html | 4 +- .../italic_background_shorthand-ref.html | 8 +- .../italic_background_shorthand.html | 4 +- .../italic_object/italic_color-ref.html | 8 +- .../italic_object/italic_color.html | 4 +- .../italic_font_properties-ref.html | 10 +- .../italic_object/italic_font_properties.html | 8 +- .../italic_font_shorthand-ref.html | 10 +- .../italic_object/italic_font_shorthand.html | 6 +- .../italic_object/italic_namespace-ref.html | 8 +- .../italic_object/italic_namespace.html | 4 +- .../italic_outline_properties-ref.html | 8 +- .../italic_outline_properties.html | 4 +- .../italic_outline_shorthand-ref.html | 8 +- .../italic_outline_shorthand.html | 4 +- ...alic_text-decoration_line-through-ref.html | 8 +- .../italic_text-decoration_line-through.html | 4 +- .../italic_object/italic_text-shadow-ref.html | 8 +- .../italic_object/italic_text-shadow.html | 4 +- .../italic_timestamp_future-ref.html | 8 +- .../italic_timestamp_future.html | 4 +- .../italic_timestamp_past-ref.html | 8 +- .../italic_object/italic_timestamp_past.html | 4 +- .../italic_transition_with_timestamp-ref.html | 8 +- .../italic_transition_with_timestamp.html | 4 +- ...italic_white-space_normal_wrapped-ref.html | 6 +- .../italic_white-space_normal_wrapped.html | 4 +- .../italic_white-space_nowrap-ref.html | 6 +- .../italic_white-space_nowrap.html | 4 +- ...alic_white-space_pre-line_wrapped-ref.html | 6 +- .../italic_white-space_pre-line_wrapped.html | 4 +- ...alic_white-space_pre-wrap_wrapped-ref.html | 6 +- .../italic_white-space_pre-wrap_wrapped.html | 4 +- .../italic_white-space_pre_wrapped-ref.html | 6 +- .../italic_white-space_pre_wrapped.html | 4 +- .../italic_object/italic_with_class-ref.html | 8 +- .../italic_object/italic_with_class.html | 4 +- ...th_class_object_specific_selector-ref.html | 8 +- ...c_with_class_object_specific_selector.html | 4 +- .../not_allowed_properties-ref.html | 8 +- .../cue_function/not_allowed_properties.html | 4 +- .../cue_function/not_root_selector-ref.html | 8 +- .../cue_function/not_root_selector.html | 4 +- .../cue_function/outline_properties-ref.html | 8 +- .../cue_function/outline_properties.html | 4 +- .../cue_function/outline_shorthand-ref.html | 8 +- .../cue_function/outline_shorthand.html | 4 +- .../cue_function/root_namespace-ref.html | 8 +- .../cue_function/root_namespace.html | 4 +- .../cue_function/root_selector-ref.html | 8 +- .../selectors/cue_function/root_selector.html | 4 +- .../text-decoration_line-through-ref.html | 8 +- .../text-decoration_line-through.html | 4 +- .../text-decoration_overline-ref.html | 8 +- .../text-decoration_overline.html | 4 +- ...n_overline_underline_line-through-ref.html | 8 +- ...ation_overline_underline_line-through.html | 4 +- .../text-decoration_underline-ref.html | 8 +- .../text-decoration_underline.html | 4 +- .../cue_function/text-shadow-ref.html | 8 +- .../selectors/cue_function/text-shadow.html | 4 +- .../cue_function/type_selector_root-ref.html | 8 +- .../cue_function/type_selector_root.html | 4 +- ...nderline_animation_with_timestamp-ref.html | 8 +- .../underline_animation_with_timestamp.html | 4 +- .../underline_background_properties-ref.html | 8 +- .../underline_background_properties.html | 4 +- .../underline_background_shorthand-ref.html | 8 +- .../underline_background_shorthand.html | 4 +- .../underline_object/underline_color-ref.html | 8 +- .../underline_object/underline_color.html | 4 +- .../underline_font_properties-ref.html | 10 +- .../underline_font_properties.html | 8 +- .../underline_font_shorthand-ref.html | 10 +- .../underline_font_shorthand.html | 6 +- .../underline_namespace-ref.html | 8 +- .../underline_object/underline_namespace.html | 4 +- .../underline_outline_properties-ref.html | 8 +- .../underline_outline_properties.html | 4 +- .../underline_outline_shorthand-ref.html | 8 +- .../underline_outline_shorthand.html | 4 +- ...line_text-decoration_line-through-ref.html | 8 +- ...nderline_text-decoration_line-through.html | 4 +- .../underline_text-shadow-ref.html | 8 +- .../underline_text-shadow.html | 4 +- .../underline_timestamp_future-ref.html | 8 +- .../underline_timestamp_future.html | 4 +- .../underline_timestamp_past-ref.html | 8 +- .../underline_timestamp_past.html | 4 +- ...derline_transition_with_timestamp-ref.html | 8 +- .../underline_transition_with_timestamp.html | 4 +- ...erline_white-space_normal_wrapped-ref.html | 6 +- .../underline_white-space_normal_wrapped.html | 4 +- .../underline_white-space_nowrap-ref.html | 6 +- .../underline_white-space_nowrap.html | 4 +- ...line_white-space_pre-line_wrapped-ref.html | 6 +- ...nderline_white-space_pre-line_wrapped.html | 4 +- ...line_white-space_pre-wrap_wrapped-ref.html | 6 +- ...nderline_white-space_pre-wrap_wrapped.html | 4 +- ...underline_white-space_pre_wrapped-ref.html | 6 +- .../underline_white-space_pre_wrapped.html | 4 +- .../underline_with_class-ref.html | 8 +- .../underline_with_class.html | 4 +- ...th_class_object_specific_selector-ref.html | 8 +- ...e_with_class_object_specific_selector.html | 4 +- .../voice_animation_with_timestamp-ref.html | 8 +- .../voice_animation_with_timestamp.html | 4 +- .../voice_background_properties-ref.html | 8 +- .../voice_background_properties.html | 4 +- .../voice_background_shorthand-ref.html | 8 +- .../voice_background_shorthand.html | 4 +- .../voice_object/voice_color-ref.html | 8 +- .../voice_object/voice_color.html | 4 +- .../voice_font_properties-ref.html | 10 +- .../voice_object/voice_font_properties.html | 8 +- .../voice_font_shorthand-ref.html | 10 +- .../voice_object/voice_font_shorthand.html | 6 +- .../voice_object/voice_namespace-ref.html | 8 +- .../voice_object/voice_namespace.html | 4 +- .../voice_outline_properties-ref.html | 8 +- .../voice_outline_properties.html | 4 +- .../voice_outline_shorthand-ref.html | 8 +- .../voice_object/voice_outline_shorthand.html | 4 +- ...oice_text-decoration_line-through-ref.html | 8 +- .../voice_text-decoration_line-through.html | 4 +- .../voice_object/voice_text-shadow-ref.html | 8 +- .../voice_object/voice_text-shadow.html | 4 +- .../voice_timestamp_future-ref.html | 8 +- .../voice_object/voice_timestamp_future.html | 4 +- .../voice_timestamp_past-ref.html | 8 +- .../voice_object/voice_timestamp_past.html | 4 +- .../voice_transition_with_timestamp-ref.html | 8 +- .../voice_transition_with_timestamp.html | 4 +- .../voice_voice_attribute-ref.html | 8 +- .../voice_object/voice_voice_attribute.html | 4 +- .../voice_white-space_normal_wrapped-ref.html | 6 +- .../voice_white-space_normal_wrapped.html | 4 +- .../voice_white-space_nowrap-ref.html | 6 +- .../voice_white-space_nowrap.html | 4 +- ...oice_white-space_pre-line_wrapped-ref.html | 6 +- .../voice_white-space_pre-line_wrapped.html | 4 +- ...oice_white-space_pre-wrap_wrapped-ref.html | 6 +- .../voice_white-space_pre-wrap_wrapped.html | 4 +- .../voice_white-space_pre_wrapped-ref.html | 6 +- .../voice_white-space_pre_wrapped.html | 4 +- .../voice_object/voice_with_class-ref.html | 8 +- .../voice_object/voice_with_class.html | 4 +- ...th_class_object_specific_selector-ref.html | 8 +- ...e_with_class_object_specific_selector.html | 4 +- .../white-space_normal_wrapped-ref.html | 6 +- .../white-space_normal_wrapped.html | 4 +- .../white-space_nowrap_wrapped-ref.html | 6 +- .../white-space_nowrap_wrapped.html | 4 +- .../white-space_pre-line_wrapped-ref.html | 6 +- .../white-space_pre-line_wrapped.html | 4 +- .../cue_function/white-space_pre-ref.html | 6 +- .../white-space_pre-wrap_wrapped-ref.html | 6 +- .../white-space_pre-wrap_wrapped.html | 4 +- .../cue_function/white-space_pre.html | 4 +- .../white-space_pre_wrapped-ref.html | 6 +- .../cue_function/white-space_pre_wrapped.html | 4 +- .../bold_object_default_font-style-ref.html | 8 +- .../bold_object_default_font-style.html | 4 +- ...nherits_values_from_media_element-ref.html | 9 +- ...ue_inherits_values_from_media_element.html | 6 +- .../italic_object_default_font-style-ref.html | 8 +- .../italic_object_default_font-style.html | 4 +- ...derline_object_default_font-style-ref.html | 8 +- .../underline_object_default_font-style.html | 4 +- .../processing-model/size_50-ref.html | 8 +- .../processing-model/size_50.html | 2 +- .../processing-model/too_many_cues-ref.html | 8 +- .../processing-model/too_many_cues.html | 2 +- .../too_many_cues_wrapped-ref.html | 8 +- .../too_many_cues_wrapped.html | 2 +- .../tests/timestamps.html | 2 +- .../workers/SharedWorker_blobUrl.html | 30 + ...erGlobalScope_importScripts_NosniffErr.htm | 8 + .../workers/Worker_NosniffErr.htm | 13 + .../Worker_cross_origin_security_err.htm | 2 +- .../SharedWorker/same-origin.html | 2 +- .../constructors/Worker/same-origin.html | 2 +- .../workers/data-url-shared.html | 37 +- .../web-platform-tests/workers/data-url.html | 62 +- .../web-platform-tests/workers/interfaces.idl | 12 +- .../support/ImportScriptsNosniffErr.js | 9 + .../workers/support/WorkerFetchURL.js | 8 + .../workers/support/nosiniff-error-worker.py | 3 + 1184 files changed, 22551 insertions(+), 9856 deletions(-) create mode 100644 tests/wpt/metadata/FileAPI/historical.html.ini create mode 100644 tests/wpt/metadata/FileAPI/url/blob-url-in-sandboxed-iframe.html.ini create mode 100644 tests/wpt/metadata/FileAPI/url/multi-global-origin-serialization.sub.html.ini create mode 100644 tests/wpt/metadata/dom/events/EventListener-invoke-legacy.html.ini create mode 100644 tests/wpt/metadata/fetch/api/headers/headers-record.html.ini delete mode 100644 tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/navigation_unload_same_origin.html.ini create mode 100644 tests/wpt/metadata/html/browsers/history/the-location-interface/location-symbol-toprimitive.html.ini create mode 100644 tests/wpt/metadata/html/browsers/history/the-location-interface/location-valueof.html.ini create mode 100644 tests/wpt/metadata/html/dom/interfaces.worker.js.ini create mode 100644 tests/wpt/metadata/html/dom/self-origin.any.js.ini create mode 100644 tests/wpt/metadata/html/dom/self-origin.sub.html.ini create mode 100644 tests/wpt/metadata/html/semantics/embedded-content/media-elements/ready-states/autoplay-with-slow-text-tracks.html.ini create mode 100644 tests/wpt/metadata/html/semantics/embedded-content/the-canvas-element/toBlob.null.html.ini create mode 100644 tests/wpt/metadata/html/semantics/embedded-content/the-embed-element/embed-in-object-fallback-2.html.ini create mode 100644 tests/wpt/metadata/html/semantics/embedded-content/the-object-element/object-in-object-fallback-2.html.ini create mode 100644 tests/wpt/metadata/html/semantics/forms/the-button-element/button-menu-historical.html.ini create mode 100644 tests/wpt/metadata/html/semantics/scripting-1/the-script-element/data-url.html.ini create mode 100644 tests/wpt/metadata/html/semantics/scripting-1/the-script-element/module/crossorigin.html.ini create mode 100644 tests/wpt/metadata/html/semantics/scripting-1/the-script-element/module/errorhandling.html.ini create mode 100644 tests/wpt/metadata/html/semantics/scripting-1/the-script-element/module/execorder.html.ini create mode 100644 tests/wpt/metadata/html/semantics/scripting-1/the-script-element/module/imports.html.ini create mode 100644 tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/origin-check-in-document-open-same-origin-domain.sub.html.ini create mode 100644 tests/wpt/metadata/html/webappapis/idle-callbacks/callback-suspended.html.ini create mode 100644 tests/wpt/metadata/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/allow-crossorigin.html.ini create mode 100644 tests/wpt/metadata/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-event-constructor.html.ini create mode 100644 tests/wpt/metadata/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events-attached-in-event.html.ini create mode 100644 tests/wpt/metadata/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events-onerror.html.ini create mode 100644 tests/wpt/metadata/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.dedicatedworker.html.ini create mode 100644 tests/wpt/metadata/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.html.ini create mode 100644 tests/wpt/metadata/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.serviceworker.https.html.ini create mode 100644 tests/wpt/metadata/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.sharedworker.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/generic/sandboxed-iframe-with-opaque-origin.html.ini create mode 100644 tests/wpt/metadata/url/url-tojson.html.ini create mode 100644 tests/wpt/metadata/webstorage/event_no_duplicates.html.ini create mode 100644 tests/wpt/metadata/workers/SharedWorker_blobUrl.html.ini create mode 100644 tests/wpt/metadata/workers/WorkerGlobalScope_importScripts_NosniffErr.htm.ini create mode 100644 tests/wpt/metadata/workers/Worker_NosniffErr.htm.ini delete mode 100644 tests/wpt/metadata/workers/Worker_cross_origin_security_err.htm.ini create mode 100644 tests/wpt/metadata/workers/data-url.html.ini create mode 100644 tests/wpt/web-platform-tests/2dcontext/tools/OWNERS delete mode 100644 tests/wpt/web-platform-tests/FileAPI/blob/Blob-close.html create mode 100644 tests/wpt/web-platform-tests/FileAPI/support/document-domain-setter.sub.html create mode 100644 tests/wpt/web-platform-tests/FileAPI/support/incumbent.sub.html create mode 100644 tests/wpt/web-platform-tests/FileAPI/url/blob-url-in-sandboxed-iframe.html create mode 100644 tests/wpt/web-platform-tests/FileAPI/url/multi-global-origin-serialization.sub.html create mode 100644 tests/wpt/web-platform-tests/IndexedDB/clone-before-keypath-eval.html create mode 100644 tests/wpt/web-platform-tests/IndexedDB/idb-binary-key-detached.htm create mode 100644 tests/wpt/web-platform-tests/IndexedDB/idb-binary-key-roundtrip.htm create mode 100644 tests/wpt/web-platform-tests/IndexedDB/idbfactory-deleteDatabase-opaque-origin.html create mode 100644 tests/wpt/web-platform-tests/IndexedDB/idbfactory-open-opaque-origin.html create mode 100644 tests/wpt/web-platform-tests/IndexedDB/key-conversion-exceptions.htm create mode 100644 tests/wpt/web-platform-tests/XMLHttpRequest/xmlhttprequest-timeout-reused.html create mode 100644 tests/wpt/web-platform-tests/assumptions/OWNERS create mode 100644 tests/wpt/web-platform-tests/assumptions/canvas-background-ref.html create mode 100644 tests/wpt/web-platform-tests/assumptions/canvas-background.html create mode 100644 tests/wpt/web-platform-tests/assumptions/html-elements.html create mode 100644 tests/wpt/web-platform-tests/assumptions/initial-color-ref.html create mode 100644 tests/wpt/web-platform-tests/assumptions/initial-color.html create mode 100644 tests/wpt/web-platform-tests/assumptions/medium-font-size-ref.html create mode 100644 tests/wpt/web-platform-tests/assumptions/medium-font-size.html create mode 100644 tests/wpt/web-platform-tests/assumptions/min-font-size-ref.html create mode 100644 tests/wpt/web-platform-tests/assumptions/min-font-size.html create mode 100644 tests/wpt/web-platform-tests/docs/.gitignore create mode 100644 tests/wpt/web-platform-tests/docs/.ruby-version create mode 100644 tests/wpt/web-platform-tests/docs/CNAME create mode 100644 tests/wpt/web-platform-tests/docs/Gemfile rename tests/wpt/web-platform-tests/docs/{github-101.md => _appendix/github-intro.md} (64%) create mode 100644 tests/wpt/web-platform-tests/docs/_appendix/index.md create mode 100644 tests/wpt/web-platform-tests/docs/_appendix/test-templates.md create mode 100644 tests/wpt/web-platform-tests/docs/_config.yml rename tests/wpt/web-platform-tests/{html/rendering/bindings/the-button-element-0/.gitkeep => docs/_includes/footer.html} (100%) create mode 100644 tests/wpt/web-platform-tests/docs/_includes/head.html create mode 100644 tests/wpt/web-platform-tests/docs/_includes/header.html create mode 100644 tests/wpt/web-platform-tests/docs/_includes/svg/octicons/LICENSE create mode 100644 tests/wpt/web-platform-tests/docs/_includes/svg/octicons/git-pull-request.svg create mode 100644 tests/wpt/web-platform-tests/docs/_includes/svg/octicons/package.svg create mode 100644 tests/wpt/web-platform-tests/docs/_includes/svg/octicons/pencil.svg create mode 100644 tests/wpt/web-platform-tests/docs/_includes/svg/octicons/tools.svg create mode 100644 tests/wpt/web-platform-tests/docs/_includes/svg/triangle-right.svg create mode 100644 tests/wpt/web-platform-tests/docs/_reviewing-tests/checklist.md create mode 100644 tests/wpt/web-platform-tests/docs/_reviewing-tests/index.md create mode 100644 tests/wpt/web-platform-tests/docs/_running-tests/index.md create mode 100644 tests/wpt/web-platform-tests/docs/_writing-tests/ahem.md create mode 100644 tests/wpt/web-platform-tests/docs/_writing-tests/assumptions.md rename tests/wpt/web-platform-tests/docs/{ => _writing-tests}/css-metadata.md (74%) rename tests/wpt/web-platform-tests/docs/{ => _writing-tests}/css-user-styles.md (97%) create mode 100644 tests/wpt/web-platform-tests/docs/_writing-tests/general-guidelines.md create mode 100644 tests/wpt/web-platform-tests/docs/_writing-tests/idlharness.html create mode 100644 tests/wpt/web-platform-tests/docs/_writing-tests/index.md rename tests/wpt/web-platform-tests/docs/{ => _writing-tests}/lint-tool.md (89%) create mode 100644 tests/wpt/web-platform-tests/docs/_writing-tests/manual.md create mode 100644 tests/wpt/web-platform-tests/docs/_writing-tests/reftests.md create mode 100644 tests/wpt/web-platform-tests/docs/_writing-tests/rendering.md create mode 100644 tests/wpt/web-platform-tests/docs/_writing-tests/server-features.md rename tests/wpt/web-platform-tests/docs/{ => _writing-tests}/submission-process.md (62%) create mode 100644 tests/wpt/web-platform-tests/docs/_writing-tests/testharness-api.html create mode 100644 tests/wpt/web-platform-tests/docs/_writing-tests/testharness.md create mode 100644 tests/wpt/web-platform-tests/docs/_writing-tests/visual.md create mode 100644 tests/wpt/web-platform-tests/docs/assets/_reftest_graph_example.dot create mode 100644 tests/wpt/web-platform-tests/docs/assets/commit-directly.png create mode 100644 tests/wpt/web-platform-tests/docs/assets/commitbtn.png create mode 100644 tests/wpt/web-platform-tests/docs/assets/createprlink.png create mode 100644 tests/wpt/web-platform-tests/docs/assets/editbtn.png create mode 100644 tests/wpt/web-platform-tests/docs/assets/files-changed.png create mode 100644 tests/wpt/web-platform-tests/docs/assets/forkbtn.png create mode 100644 tests/wpt/web-platform-tests/docs/assets/main.scss create mode 100644 tests/wpt/web-platform-tests/docs/assets/menu.js create mode 100644 tests/wpt/web-platform-tests/docs/assets/more-commits.png create mode 100644 tests/wpt/web-platform-tests/docs/assets/pencil-icon.png create mode 100644 tests/wpt/web-platform-tests/docs/assets/praccepteddelete.png create mode 100644 tests/wpt/web-platform-tests/docs/assets/pullrequestbtn.png create mode 100644 tests/wpt/web-platform-tests/docs/assets/pullrequestlink.png create mode 100644 tests/wpt/web-platform-tests/docs/assets/reftest_graph_example.svg create mode 100644 tests/wpt/web-platform-tests/docs/assets/sendpullrequest.png delete mode 100644 tests/wpt/web-platform-tests/docs/configuration.md delete mode 100644 tests/wpt/web-platform-tests/docs/css-naming.md create mode 100644 tests/wpt/web-platform-tests/docs/index.html create mode 100644 tests/wpt/web-platform-tests/docs/introduction.md delete mode 100644 tests/wpt/web-platform-tests/docs/manual-test.md delete mode 100644 tests/wpt/web-platform-tests/docs/reftests.md delete mode 100644 tests/wpt/web-platform-tests/docs/review-checklist.md delete mode 100644 tests/wpt/web-platform-tests/docs/review-process.md delete mode 100644 tests/wpt/web-platform-tests/docs/running_tests.md delete mode 100644 tests/wpt/web-platform-tests/docs/test-format-guidelines.md delete mode 100644 tests/wpt/web-platform-tests/docs/test-style-guidelines.md delete mode 100644 tests/wpt/web-platform-tests/docs/test-templates.md create mode 100644 tests/wpt/web-platform-tests/dom/events/EventListener-invoke-legacy.html create mode 100644 tests/wpt/web-platform-tests/domxpath/interfaces.html create mode 100644 tests/wpt/web-platform-tests/eventsource/eventsource-onmessage-trusted.htm create mode 100644 tests/wpt/web-platform-tests/fetch/api/headers/headers-record.html create mode 100644 tests/wpt/web-platform-tests/fonts/OWNERS delete mode 100644 tests/wpt/web-platform-tests/fullscreen/api/blank.html delete mode 100644 tests/wpt/web-platform-tests/html/browsers/browsing-the-web/history-traversal/MANIFEST delete mode 100644 tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/MANIFEST create mode 100644 tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-form-submit-1.html create mode 100644 tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-form-submit-2.html create mode 100644 tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-form-submit.html create mode 100644 tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-same-origin-fragment-1.html create mode 100644 tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-same-origin-fragment-2.html create mode 100644 tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-same-origin-fragment.html delete mode 100644 tests/wpt/web-platform-tests/html/browsers/browsing-the-web/scroll-to-fragid/MANIFEST delete mode 100644 tests/wpt/web-platform-tests/html/browsers/browsing-the-web/unloading-documents/MANIFEST create mode 100644 tests/wpt/web-platform-tests/html/browsers/browsing-the-web/unloading-documents/beforeunload-canceling-1.html create mode 100644 tests/wpt/web-platform-tests/html/browsers/browsing-the-web/unloading-documents/beforeunload-canceling.html delete mode 100644 tests/wpt/web-platform-tests/html/browsers/browsing-the-web/unloading-documents/prompt/MANIFEST delete mode 100644 tests/wpt/web-platform-tests/html/browsers/browsing-the-web/unloading-documents/unload/MANIFEST create mode 100644 tests/wpt/web-platform-tests/html/browsers/history/the-location-interface/location-protocol-setter-with-colon.sub.html create mode 100644 tests/wpt/web-platform-tests/html/browsers/history/the-location-interface/location-symbol-toprimitive.html create mode 100644 tests/wpt/web-platform-tests/html/browsers/history/the-location-interface/location-tojson.html create mode 100644 tests/wpt/web-platform-tests/html/browsers/history/the-location-interface/location-valueof.html create mode 100644 tests/wpt/web-platform-tests/html/browsers/history/the-location-interface/resources/post-your-protocol.html delete mode 100644 tests/wpt/web-platform-tests/html/browsers/windows/browsing-context-names/MANIFEST delete mode 100644 tests/wpt/web-platform-tests/html/browsers/windows/nested-browsing-contexts/MANIFEST create mode 100644 tests/wpt/web-platform-tests/html/dom/interfaces.worker.js create mode 100644 tests/wpt/web-platform-tests/html/dom/resources/interfaces.idl create mode 100644 tests/wpt/web-platform-tests/html/dom/resources/self-origin-subframe.html create mode 100644 tests/wpt/web-platform-tests/html/dom/resources/untested-interfaces.idl create mode 100644 tests/wpt/web-platform-tests/html/dom/self-origin.any.js create mode 100644 tests/wpt/web-platform-tests/html/dom/self-origin.sub.html create mode 100644 tests/wpt/web-platform-tests/html/rendering/bindings/the-button-element/button-type-menu-historical-ref.html create mode 100644 tests/wpt/web-platform-tests/html/rendering/bindings/the-button-element/button-type-menu-historical.html create mode 100644 tests/wpt/web-platform-tests/html/semantics/embedded-content/media-elements/ready-states/autoplay-with-slow-text-tracks.html create mode 100644 tests/wpt/web-platform-tests/html/semantics/embedded-content/resources/should-load.html create mode 100644 tests/wpt/web-platform-tests/html/semantics/embedded-content/resources/should-not-load.html create mode 100644 tests/wpt/web-platform-tests/html/semantics/embedded-content/the-area-element/area-download-click.html create mode 100644 tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/toBlob.null.html create mode 100644 tests/wpt/web-platform-tests/html/semantics/embedded-content/the-embed-element/embed-in-object-fallback-2.html create mode 100644 tests/wpt/web-platform-tests/html/semantics/embedded-content/the-object-element/object-ignored-in-media-element.html create mode 100644 tests/wpt/web-platform-tests/html/semantics/embedded-content/the-object-element/object-in-object-fallback-2.html create mode 100644 tests/wpt/web-platform-tests/html/semantics/forms/form-submission-0/form-data-set-usv-form.html create mode 100644 tests/wpt/web-platform-tests/html/semantics/forms/form-submission-0/form-data-set-usv.html create mode 100644 tests/wpt/web-platform-tests/html/semantics/forms/form-submission-0/form-echo.py create mode 100644 tests/wpt/web-platform-tests/html/semantics/forms/the-button-element/button-menu-historical.html delete mode 100644 tests/wpt/web-platform-tests/html/semantics/grouping-content/the-li-element/grouping-li-reftest-no-list-owner-ref.html delete mode 100644 tests/wpt/web-platform-tests/html/semantics/grouping-content/the-li-element/grouping-li-reftest-no-list-owner.html create mode 100644 tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/crossorigin-common.js create mode 100644 tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/crossorigin-import-different.sub.html create mode 100644 tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/crossorigin-import-missingheader.sub.html create mode 100644 tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/crossorigin-import-same.sub.html create mode 100644 tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/crossorigin-import-wrongheader.sub.html create mode 100644 tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/crossorigin-root-different.sub.html create mode 100644 tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/crossorigin-root-missingheader.sub.html create mode 100644 tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/crossorigin-root-same.sub.html create mode 100644 tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/crossorigin-root-wrongheader.sub.html create mode 100644 tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/crossorigin-scripterror.js create mode 100644 tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/crossorigin.html create mode 100644 tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/errorhandling-parseerror-common.js create mode 100644 tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/errorhandling-parseerror-dependent.html create mode 100644 tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/errorhandling-parseerror-dependent.js create mode 100644 tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/errorhandling-parseerror-dependentmultiple.html create mode 100644 tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/errorhandling-parseerror-dependentmultiple.js create mode 100644 tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/errorhandling-parseerror-root.html create mode 100644 tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/errorhandling-wrongMimetype-import.js create mode 100644 tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/errorhandling-wrongMimetype.js create mode 100644 tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/errorhandling.html create mode 100644 tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/execorder-dynamicordered2.js create mode 100644 tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/execorder-dynamicordered3.js create mode 100644 tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/execorder-dynamicordered4.js create mode 100644 tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/execorder-dynamicunordered1.js create mode 100644 tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/execorder-dynamicunordered2.js create mode 100644 tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/execorder-parsedordered2.js create mode 100644 tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/execorder-parsedordered4.js create mode 100644 tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/execorder-parsedunordered1.js create mode 100644 tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/execorder-parsedunordered2.js create mode 100644 tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/execorder.html create mode 100644 tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/imports-a.js create mode 100644 tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/imports-b.js create mode 100644 tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/imports-cycle-a.js create mode 100644 tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/imports-cycle-b.js create mode 100644 tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/imports-cycle.js create mode 100644 tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/imports-inc-a.js create mode 100644 tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/imports-inc-ab.js create mode 100644 tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/imports-inc-b.js create mode 100644 tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/imports-self-inner.js create mode 100644 tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/imports-self.js create mode 100644 tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/imports.html create mode 100644 tests/wpt/web-platform-tests/html/semantics/text-level-semantics/the-a-element/a-download-click.html create mode 100644 tests/wpt/web-platform-tests/html/syntax/OWNERS create mode 100644 tests/wpt/web-platform-tests/html/tools/OWNERS create mode 100644 tests/wpt/web-platform-tests/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/origin-check-in-document-open-basic.html create mode 100644 tests/wpt/web-platform-tests/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/origin-check-in-document-open-same-origin-domain.sub.html create mode 100644 tests/wpt/web-platform-tests/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/resources/set-document-domain.html create mode 100644 tests/wpt/web-platform-tests/html/webappapis/idle-callbacks/callback-suspended.html create mode 100644 tests/wpt/web-platform-tests/html/webappapis/idle-callbacks/resources/post_name_on_load.html create mode 100644 tests/wpt/web-platform-tests/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/allow-crossorigin.html create mode 100644 tests/wpt/web-platform-tests/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/disallow-crossorigin.html create mode 100644 tests/wpt/web-platform-tests/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-event-constructor.html create mode 100644 tests/wpt/web-platform-tests/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events-attached-in-event.html create mode 100644 tests/wpt/web-platform-tests/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events-onerror.html create mode 100644 tests/wpt/web-platform-tests/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.dedicatedworker.html create mode 100644 tests/wpt/web-platform-tests/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.html create mode 100644 tests/wpt/web-platform-tests/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.serviceworker.https.html create mode 100644 tests/wpt/web-platform-tests/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.sharedworker.html create mode 100644 tests/wpt/web-platform-tests/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/support/promise-access-control.py create mode 100644 tests/wpt/web-platform-tests/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/support/promise-rejection-events.js create mode 100644 tests/wpt/web-platform-tests/media-capabilities/README.md create mode 100644 tests/wpt/web-platform-tests/media-capabilities/idlharness.html create mode 100644 tests/wpt/web-platform-tests/media-capabilities/query.html create mode 100644 tests/wpt/web-platform-tests/mediasession/README.md create mode 100644 tests/wpt/web-platform-tests/mediasession/idlharness.html create mode 100644 tests/wpt/web-platform-tests/mediasession/mediametadata.html create mode 100644 tests/wpt/web-platform-tests/mediasession/playbackstate.html create mode 100644 tests/wpt/web-platform-tests/mediasession/setactionhandler.html create mode 100644 tests/wpt/web-platform-tests/offscreen-canvas/tools/OWNERS rename tests/wpt/web-platform-tests/preload/{avoid_delaying_onload_link_preload.html => avoid-delaying-onload-link-preload.html} (70%) rename tests/wpt/web-platform-tests/preload/{delaying_onload_link_preload_after_discovery.html => delaying-onload-link-preload-after-discovery.html} (74%) rename tests/wpt/web-platform-tests/preload/{download_resources.html => download-resources.html} (61%) rename tests/wpt/web-platform-tests/preload/{dynamic_adding_preload.html => dynamic-adding-preload.html} (72%) rename tests/wpt/web-platform-tests/preload/{fetch_destination.https.html => fetch-destination.https.html} (93%) rename tests/wpt/web-platform-tests/preload/{link_header_preload_delay_onload.html => link-header-preload-delay-onload.html} (75%) rename tests/wpt/web-platform-tests/preload/{link_header_preload_delay_onload.html.headers => link-header-preload-delay-onload.html.headers} (100%) rename tests/wpt/web-platform-tests/preload/{link_header_preload.html => link-header-preload.html} (59%) rename tests/wpt/web-platform-tests/preload/{link_header_preload.html.headers => link-header-preload.html.headers} (100%) rename tests/wpt/web-platform-tests/preload/{onerror_event.html => onerror-event.html} (95%) rename tests/wpt/web-platform-tests/preload/{onload_event.html => onload-event.html} (95%) rename tests/wpt/web-platform-tests/preload/{preload_with_type.html => preload-with-type.html} (97%) create mode 100644 tests/wpt/web-platform-tests/preload/resources/preload_helper.js rename tests/wpt/web-platform-tests/preload/{single_download_late_used_preload.html => single-download-late-used-preload.html} (71%) rename tests/wpt/web-platform-tests/preload/{single_download_preload.html => single-download-preload.html} (67%) create mode 100644 tests/wpt/web-platform-tests/referrer-policy/generic/sandboxed-iframe-with-opaque-origin.html create mode 100644 tests/wpt/web-platform-tests/remote-playback/README.md create mode 100644 tests/wpt/web-platform-tests/remote-playback/cancel-watch-availability.html create mode 100644 tests/wpt/web-platform-tests/remote-playback/disable-remote-playback-cancel-watch-availability-throws.html create mode 100644 tests/wpt/web-platform-tests/remote-playback/disable-remote-playback-prompt-throws.html create mode 100644 tests/wpt/web-platform-tests/remote-playback/disable-remote-playback-watch-availability-throws.html create mode 100644 tests/wpt/web-platform-tests/remote-playback/watch-availability-initial-callback.html create mode 100644 tests/wpt/web-platform-tests/service-workers/service-worker/fetch-event-within-sw-manual.html create mode 100644 tests/wpt/web-platform-tests/service-workers/service-worker/fetch-event-within-sw.html create mode 100644 tests/wpt/web-platform-tests/service-workers/service-worker/foreign-fetch-basics.https.html create mode 100644 tests/wpt/web-platform-tests/service-workers/service-worker/foreign-fetch-cors.https.html create mode 100644 tests/wpt/web-platform-tests/service-workers/service-worker/foreign-fetch-event.https.html create mode 100644 tests/wpt/web-platform-tests/service-workers/service-worker/foreign-fetch-workers.https.html create mode 100644 tests/wpt/web-platform-tests/service-workers/service-worker/multi-globals/current/current.https.html create mode 100644 tests/wpt/web-platform-tests/service-workers/service-worker/multi-globals/current/test-sw.js create mode 100644 tests/wpt/web-platform-tests/service-workers/service-worker/multi-globals/incumbent/incumbent.https.html create mode 100644 tests/wpt/web-platform-tests/service-workers/service-worker/multi-globals/incumbent/test-sw.js create mode 100644 tests/wpt/web-platform-tests/service-workers/service-worker/multi-globals/relevant/relevant.https.html create mode 100644 tests/wpt/web-platform-tests/service-workers/service-worker/multi-globals/relevant/test-sw.js create mode 100644 tests/wpt/web-platform-tests/service-workers/service-worker/multi-globals/test-sw.js create mode 100644 tests/wpt/web-platform-tests/service-workers/service-worker/multi-globals/url-parsing.https.html create mode 100644 tests/wpt/web-platform-tests/service-workers/service-worker/postmessage-blob-url.https.html create mode 100644 tests/wpt/web-platform-tests/service-workers/service-worker/register-link-element.https.html create mode 100644 tests/wpt/web-platform-tests/service-workers/service-worker/register-link-header.https.html create mode 100644 tests/wpt/web-platform-tests/service-workers/service-worker/resources/fetch-event-within-sw-worker.js create mode 100644 tests/wpt/web-platform-tests/service-workers/service-worker/resources/foreign-fetch-cors-worker.js create mode 100644 tests/wpt/web-platform-tests/service-workers/service-worker/resources/foreign-fetch-event-worker.js create mode 100644 tests/wpt/web-platform-tests/service-workers/service-worker/resources/foreign-fetch-helper-iframe.html create mode 100644 tests/wpt/web-platform-tests/service-workers/service-worker/resources/foreign-fetch-helper-script.js create mode 100644 tests/wpt/web-platform-tests/service-workers/service-worker/resources/foreign-fetch-helper-worker.js create mode 100644 tests/wpt/web-platform-tests/service-workers/service-worker/resources/foreign-fetch-helpers.js create mode 100644 tests/wpt/web-platform-tests/service-workers/service-worker/resources/foreign-fetch-worker.js delete mode 100644 tests/wpt/web-platform-tests/service-workers/service-worker/resources/get-host-info.sub.js create mode 100644 tests/wpt/web-platform-tests/service-workers/service-worker/resources/install-worker-helper.html create mode 100644 tests/wpt/web-platform-tests/service-workers/service-worker/resources/link-header.py create mode 100644 tests/wpt/web-platform-tests/service-workers/service-worker/resources/notification_icon.py create mode 100644 tests/wpt/web-platform-tests/service-workers/service-worker/resources/postmessage-blob-url.js create mode 100644 tests/wpt/web-platform-tests/service-workers/service-worker/resources/registration-tests.js create mode 100644 tests/wpt/web-platform-tests/service-workers/service-worker/resources/reply-to-message.html create mode 100644 tests/wpt/web-platform-tests/storage/OWNERS create mode 100644 tests/wpt/web-platform-tests/storage/README.md create mode 100644 tests/wpt/web-platform-tests/storage/interfaces.html create mode 100644 tests/wpt/web-platform-tests/storage/interfaces.idl create mode 100644 tests/wpt/web-platform-tests/storage/interfaces.worker.js create mode 100644 tests/wpt/web-platform-tests/streams/readable-streams/floating-point-total-queue-size.dedicatedworker.html create mode 100644 tests/wpt/web-platform-tests/streams/readable-streams/floating-point-total-queue-size.html create mode 100644 tests/wpt/web-platform-tests/streams/readable-streams/floating-point-total-queue-size.js create mode 100644 tests/wpt/web-platform-tests/streams/readable-streams/floating-point-total-queue-size.serviceworker.https.html create mode 100644 tests/wpt/web-platform-tests/streams/readable-streams/floating-point-total-queue-size.sharedworker.html create mode 100644 tests/wpt/web-platform-tests/streams/writable-streams/floating-point-total-queue-size.dedicatedworker.html create mode 100644 tests/wpt/web-platform-tests/streams/writable-streams/floating-point-total-queue-size.html create mode 100644 tests/wpt/web-platform-tests/streams/writable-streams/floating-point-total-queue-size.js create mode 100644 tests/wpt/web-platform-tests/streams/writable-streams/floating-point-total-queue-size.serviceworker.https.html create mode 100644 tests/wpt/web-platform-tests/streams/writable-streams/floating-point-total-queue-size.sharedworker.html create mode 100644 tests/wpt/web-platform-tests/streams/writable-streams/reentrant-strategy.dedicatedworker.html create mode 100644 tests/wpt/web-platform-tests/streams/writable-streams/reentrant-strategy.html create mode 100644 tests/wpt/web-platform-tests/streams/writable-streams/reentrant-strategy.js create mode 100644 tests/wpt/web-platform-tests/streams/writable-streams/reentrant-strategy.serviceworker.https.html create mode 100644 tests/wpt/web-platform-tests/streams/writable-streams/reentrant-strategy.sharedworker.html create mode 100644 tests/wpt/web-platform-tests/url/url-tojson.html rename tests/wpt/web-platform-tests/web-animations/animation-model/keyframe-effects/{the-effect-value-of-a-keyframe-effect.html => effect-value-overlapping-keyframes.html} (67%) create mode 100644 tests/wpt/web-platform-tests/web-animations/animation-model/keyframe-effects/effect-value-transformed-distance.html create mode 100644 tests/wpt/web-platform-tests/web-animations/animation-model/keyframe-effects/effect-value-visibility.html create mode 100644 tests/wpt/web-platform-tests/web-animations/interfaces/Animatable/getAnimations.html delete mode 100644 tests/wpt/web-platform-tests/web-animations/interfaces/KeyframeEffect/effect-easing.html rename tests/wpt/web-platform-tests/web-animations/resources/{effect-easing-tests.js => easing-tests.js} (81%) create mode 100644 tests/wpt/web-platform-tests/web-animations/timing-model/animation-effects/local-time.html create mode 100644 tests/wpt/web-platform-tests/web-animations/timing-model/time-transformations/transformed-progress.html create mode 100644 tests/wpt/web-platform-tests/webauthn/helpers.js create mode 100644 tests/wpt/web-platform-tests/webauthn/makecredential-badargs-accountinformation.https.html create mode 100644 tests/wpt/web-platform-tests/webauthn/makecredential-badargs-attestationchallenge.https.html create mode 100644 tests/wpt/web-platform-tests/webauthn/makecredential-badargs-cryptoparameters.https.html create mode 100644 tests/wpt/web-platform-tests/webmessaging/MessageEvent-trusted-worker.js create mode 100644 tests/wpt/web-platform-tests/webmessaging/MessageEvent-trusted.html delete mode 100644 tests/wpt/web-platform-tests/websockets/Close-0.htm delete mode 100644 tests/wpt/web-platform-tests/websockets/Close-NaN.htm delete mode 100644 tests/wpt/web-platform-tests/websockets/Close-clamp.htm delete mode 100644 tests/wpt/web-platform-tests/websockets/Close-null.htm delete mode 100644 tests/wpt/web-platform-tests/websockets/Close-string.htm delete mode 100644 tests/wpt/web-platform-tests/websockets/Secure-Close-0.htm delete mode 100644 tests/wpt/web-platform-tests/websockets/Secure-Close-NaN.htm delete mode 100644 tests/wpt/web-platform-tests/websockets/Secure-Close-null.htm delete mode 100644 tests/wpt/web-platform-tests/websockets/Secure-Close-string.htm create mode 100644 tests/wpt/web-platform-tests/websockets/close-invalid.any.js create mode 100644 tests/wpt/web-platform-tests/webstorage/event_no_duplicates.html create mode 100644 tests/wpt/web-platform-tests/workers/SharedWorker_blobUrl.html create mode 100644 tests/wpt/web-platform-tests/workers/WorkerGlobalScope_importScripts_NosniffErr.htm create mode 100644 tests/wpt/web-platform-tests/workers/Worker_NosniffErr.htm create mode 100644 tests/wpt/web-platform-tests/workers/support/ImportScriptsNosniffErr.js create mode 100644 tests/wpt/web-platform-tests/workers/support/WorkerFetchURL.js create mode 100644 tests/wpt/web-platform-tests/workers/support/nosiniff-error-worker.py diff --git a/tests/wpt/metadata/FileAPI/historical.html.ini b/tests/wpt/metadata/FileAPI/historical.html.ini new file mode 100644 index 00000000000..f28e3f85232 --- /dev/null +++ b/tests/wpt/metadata/FileAPI/historical.html.ini @@ -0,0 +1,5 @@ +[historical.html] + type: testharness + [Blob.close() should not be supported] + expected: FAIL + diff --git a/tests/wpt/metadata/FileAPI/url/blob-url-in-sandboxed-iframe.html.ini b/tests/wpt/metadata/FileAPI/url/blob-url-in-sandboxed-iframe.html.ini new file mode 100644 index 00000000000..03e2b1f8598 --- /dev/null +++ b/tests/wpt/metadata/FileAPI/url/blob-url-in-sandboxed-iframe.html.ini @@ -0,0 +1,9 @@ +[blob-url-in-sandboxed-iframe.html] + type: testharness + expected: TIMEOUT + [reading a Blob URL in an unconstrained iframe] + expected: TIMEOUT + + [reading a Blob URL in a sandboxed iframe without the same-origin flag] + expected: NOTRUN + diff --git a/tests/wpt/metadata/FileAPI/url/multi-global-origin-serialization.sub.html.ini b/tests/wpt/metadata/FileAPI/url/multi-global-origin-serialization.sub.html.ini new file mode 100644 index 00000000000..1dcce78d004 --- /dev/null +++ b/tests/wpt/metadata/FileAPI/url/multi-global-origin-serialization.sub.html.ini @@ -0,0 +1,5 @@ +[multi-global-origin-serialization.sub.html] + type: testharness + [Blob URL serialization (specifically the origin) in multi-global situations] + expected: FAIL + diff --git a/tests/wpt/metadata/MANIFEST.json b/tests/wpt/metadata/MANIFEST.json index 8d94376b643..f93d826ee26 100644 --- a/tests/wpt/metadata/MANIFEST.json +++ b/tests/wpt/metadata/MANIFEST.json @@ -2473,6 +2473,12 @@ {} ] ], + "service-workers/service-worker/fetch-event-within-sw-manual.html": [ + [ + "/service-workers/service-worker/fetch-event-within-sw-manual.html", + {} + ] + ], "svg/import/animate-dom-01-f-manual.svg": [ [ "/svg/import/animate-dom-01-f-manual.svg", @@ -6231,6 +6237,54 @@ {} ] ], + "assumptions/canvas-background.html": [ + [ + "/assumptions/canvas-background.html", + [ + [ + "/assumptions/canvas-background-ref.html", + "==" + ] + ], + {} + ] + ], + "assumptions/initial-color.html": [ + [ + "/assumptions/initial-color.html", + [ + [ + "/assumptions/initial-color-ref.html", + "==" + ] + ], + {} + ] + ], + "assumptions/medium-font-size.html": [ + [ + "/assumptions/medium-font-size.html", + [ + [ + "/assumptions/medium-font-size-ref.html", + "==" + ] + ], + {} + ] + ], + "assumptions/min-font-size.html": [ + [ + "/assumptions/min-font-size.html", + [ + [ + "/assumptions/min-font-size-ref.html", + "!=" + ] + ], + {} + ] + ], "compat/webkit-text-fill-color-property-001a.html": [ [ "/compat/webkit-text-fill-color-property-001a.html", @@ -7431,6 +7485,18 @@ {} ] ], + "html/rendering/bindings/the-button-element/button-type-menu-historical.html": [ + [ + "/html/rendering/bindings/the-button-element/button-type-menu-historical.html", + [ + [ + "/html/rendering/bindings/the-button-element/button-type-menu-historical-ref.html", + "==" + ] + ], + {} + ] + ], "html/rendering/bindings/the-input-element-as-a-text-entry-widget/unrecognized-type-should-fallback-as-text-type.html": [ [ "/html/rendering/bindings/the-input-element-as-a-text-entry-widget/unrecognized-type-should-fallback-as-text-type.html", @@ -8511,18 +8577,6 @@ {} ] ], - "html/semantics/grouping-content/the-li-element/grouping-li-reftest-no-list-owner.html": [ - [ - "/html/semantics/grouping-content/the-li-element/grouping-li-reftest-no-list-owner.html", - [ - [ - "/html/semantics/grouping-content/the-li-element/grouping-li-reftest-no-list-owner-ref.html", - "==" - ] - ], - {} - ] - ], "html/semantics/grouping-content/the-li-element/grouping-li-reftest-not-being-rendered.html": [ [ "/html/semantics/grouping-content/the-li-element/grouping-li-reftest-not-being-rendered.html", @@ -13884,6 +13938,11 @@ {} ] ], + "2dcontext/tools/OWNERS": [ + [ + {} + ] + ], "2dcontext/tools/build.sh": [ [ {} @@ -14014,6 +14073,16 @@ {} ] ], + "FileAPI/support/document-domain-setter.sub.html": [ + [ + {} + ] + ], + "FileAPI/support/incumbent.sub.html": [ + [ + {} + ] + ], "FileAPI/support/upload.txt": [ [ {} @@ -17604,6 +17673,31 @@ {} ] ], + "assumptions/OWNERS": [ + [ + {} + ] + ], + "assumptions/canvas-background-ref.html": [ + [ + {} + ] + ], + "assumptions/initial-color-ref.html": [ + [ + {} + ] + ], + "assumptions/medium-font-size-ref.html": [ + [ + {} + ] + ], + "assumptions/min-font-size-ref.html": [ + [ + {} + ] + ], "auxclick/OWNERS": [ [ {} @@ -41374,82 +41468,277 @@ {} ] ], + "docs/.gitignore": [ + [ + {} + ] + ], + "docs/.ruby-version": [ + [ + {} + ] + ], + "docs/CNAME": [ + [ + {} + ] + ], + "docs/Gemfile": [ + [ + {} + ] + ], "docs/OWNERS": [ [ {} ] ], - "docs/configuration.md": [ + "docs/_appendix/github-intro.md": [ [ {} ] ], - "docs/css-metadata.md": [ + "docs/_appendix/index.md": [ [ {} ] ], - "docs/css-naming.md": [ + "docs/_appendix/test-templates.md": [ [ {} ] ], - "docs/css-user-styles.md": [ + "docs/_config.yml": [ [ {} ] ], - "docs/github-101.md": [ + "docs/_includes/footer.html": [ [ {} ] ], - "docs/lint-tool.md": [ + "docs/_includes/head.html": [ [ {} ] ], - "docs/manual-test.md": [ + "docs/_includes/header.html": [ [ {} ] ], - "docs/reftests.md": [ + "docs/_includes/svg/octicons/LICENSE": [ [ {} ] ], - "docs/review-checklist.md": [ + "docs/_includes/svg/octicons/git-pull-request.svg": [ [ {} ] ], - "docs/review-process.md": [ + "docs/_includes/svg/octicons/package.svg": [ [ {} ] ], - "docs/running_tests.md": [ + "docs/_includes/svg/octicons/pencil.svg": [ [ {} ] ], - "docs/submission-process.md": [ + "docs/_includes/svg/octicons/tools.svg": [ [ {} ] ], - "docs/test-format-guidelines.md": [ + "docs/_includes/svg/triangle-right.svg": [ [ {} ] ], - "docs/test-style-guidelines.md": [ + "docs/_reviewing-tests/checklist.md": [ [ {} ] ], - "docs/test-templates.md": [ + "docs/_reviewing-tests/index.md": [ + [ + {} + ] + ], + "docs/_running-tests/index.md": [ + [ + {} + ] + ], + "docs/_writing-tests/ahem.md": [ + [ + {} + ] + ], + "docs/_writing-tests/assumptions.md": [ + [ + {} + ] + ], + "docs/_writing-tests/css-metadata.md": [ + [ + {} + ] + ], + "docs/_writing-tests/css-user-styles.md": [ + [ + {} + ] + ], + "docs/_writing-tests/general-guidelines.md": [ + [ + {} + ] + ], + "docs/_writing-tests/idlharness.html": [ + [ + {} + ] + ], + "docs/_writing-tests/index.md": [ + [ + {} + ] + ], + "docs/_writing-tests/lint-tool.md": [ + [ + {} + ] + ], + "docs/_writing-tests/manual.md": [ + [ + {} + ] + ], + "docs/_writing-tests/reftests.md": [ + [ + {} + ] + ], + "docs/_writing-tests/rendering.md": [ + [ + {} + ] + ], + "docs/_writing-tests/server-features.md": [ + [ + {} + ] + ], + "docs/_writing-tests/submission-process.md": [ + [ + {} + ] + ], + "docs/_writing-tests/testharness-api.html": [ + [ + {} + ] + ], + "docs/_writing-tests/testharness.md": [ + [ + {} + ] + ], + "docs/_writing-tests/visual.md": [ + [ + {} + ] + ], + "docs/assets/_reftest_graph_example.dot": [ + [ + {} + ] + ], + "docs/assets/commit-directly.png": [ + [ + {} + ] + ], + "docs/assets/commitbtn.png": [ + [ + {} + ] + ], + "docs/assets/createprlink.png": [ + [ + {} + ] + ], + "docs/assets/editbtn.png": [ + [ + {} + ] + ], + "docs/assets/files-changed.png": [ + [ + {} + ] + ], + "docs/assets/forkbtn.png": [ + [ + {} + ] + ], + "docs/assets/main.scss": [ + [ + {} + ] + ], + "docs/assets/menu.js": [ + [ + {} + ] + ], + "docs/assets/more-commits.png": [ + [ + {} + ] + ], + "docs/assets/pencil-icon.png": [ + [ + {} + ] + ], + "docs/assets/praccepteddelete.png": [ + [ + {} + ] + ], + "docs/assets/pullrequestbtn.png": [ + [ + {} + ] + ], + "docs/assets/pullrequestlink.png": [ + [ + {} + ] + ], + "docs/assets/reftest_graph_example.svg": [ + [ + {} + ] + ], + "docs/assets/sendpullrequest.png": [ + [ + {} + ] + ], + "docs/index.html": [ + [ + {} + ] + ], + "docs/introduction.md": [ [ {} ] @@ -43359,6 +43648,11 @@ {} ] ], + "fonts/OWNERS": [ + [ + {} + ] + ], "fonts/math/axisheight5000-verticalarrow14000.woff": [ [ {} @@ -43699,11 +43993,6 @@ {} ] ], - "fullscreen/api/blank.html": [ - [ - {} - ] - ], "fullscreen/trusted-click.js": [ [ {} @@ -43889,11 +44178,6 @@ {} ] ], - "html/browsers/browsing-the-web/history-traversal/MANIFEST": [ - [ - {} - ] - ], "html/browsers/browsing-the-web/history-traversal/browsing_context_name-0.html": [ [ {} @@ -44024,11 +44308,6 @@ {} ] ], - "html/browsers/browsing-the-web/navigating-across-documents/MANIFEST": [ - [ - {} - ] - ], "html/browsers/browsing-the-web/navigating-across-documents/blank.html": [ [ {} @@ -44079,6 +44358,26 @@ {} ] ], + "html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-form-submit-1.html": [ + [ + {} + ] + ], + "html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-form-submit-2.html": [ + [ + {} + ] + ], + "html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-same-origin-fragment-1.html": [ + [ + {} + ] + ], + "html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-same-origin-fragment-2.html": [ + [ + {} + ] + ], "html/browsers/browsing-the-web/navigating-across-documents/navigation_unload_data_url-1.html": [ [ {} @@ -44144,22 +44443,17 @@ {} ] ], - "html/browsers/browsing-the-web/scroll-to-fragid/MANIFEST": [ - [ - {} - ] - ], "html/browsers/browsing-the-web/unloading-documents/.gitkeep": [ [ {} ] ], - "html/browsers/browsing-the-web/unloading-documents/MANIFEST": [ + "html/browsers/browsing-the-web/unloading-documents/base.html": [ [ {} ] ], - "html/browsers/browsing-the-web/unloading-documents/base.html": [ + "html/browsers/browsing-the-web/unloading-documents/beforeunload-canceling-1.html": [ [ {} ] @@ -44214,11 +44508,6 @@ {} ] ], - "html/browsers/browsing-the-web/unloading-documents/prompt/MANIFEST": [ - [ - {} - ] - ], "html/browsers/browsing-the-web/unloading-documents/prompt/manual-001.html": [ [ {} @@ -44384,11 +44673,6 @@ {} ] ], - "html/browsers/browsing-the-web/unloading-documents/unload/MANIFEST": [ - [ - {} - ] - ], "html/browsers/browsing-the-web/unloading-documents/unload/manual-001-1.html": [ [ {} @@ -44719,6 +45003,11 @@ {} ] ], + "html/browsers/history/the-location-interface/resources/post-your-protocol.html": [ + [ + {} + ] + ], "html/browsers/history/the-location-interface/same_origin_frame.html": [ [ {} @@ -45129,11 +45418,6 @@ {} ] ], - "html/browsers/windows/browsing-context-names/MANIFEST": [ - [ - {} - ] - ], "html/browsers/windows/browsing-context-names/existing.html": [ [ {} @@ -45174,11 +45458,6 @@ {} ] ], - "html/browsers/windows/nested-browsing-contexts/MANIFEST": [ - [ - {} - ] - ], "html/browsers/windows/nested-browsing-contexts/contains.json": [ [ {} @@ -45944,6 +46223,21 @@ {} ] ], + "html/dom/resources/interfaces.idl": [ + [ + {} + ] + ], + "html/dom/resources/self-origin-subframe.html": [ + [ + {} + ] + ], + "html/dom/resources/untested-interfaces.idl": [ + [ + {} + ] + ], "html/editing/.gitkeep": [ [ {} @@ -50969,7 +51263,7 @@ {} ] ], - "html/rendering/bindings/the-button-element-0/.gitkeep": [ + "html/rendering/bindings/the-button-element/button-type-menu-historical-ref.html": [ [ {} ] @@ -51734,6 +52028,16 @@ {} ] ], + "html/semantics/embedded-content/resources/should-load.html": [ + [ + {} + ] + ], + "html/semantics/embedded-content/resources/should-not-load.html": [ + [ + {} + ] + ], "html/semantics/embedded-content/svg/.gitkeep": [ [ {} @@ -52254,6 +52558,16 @@ {} ] ], + "html/semantics/forms/form-submission-0/form-data-set-usv-form.html": [ + [ + {} + ] + ], + "html/semantics/forms/form-submission-0/form-echo.py": [ + [ + {} + ] + ], "html/semantics/forms/introduction-1/.gitkeep": [ [ {} @@ -52484,11 +52798,6 @@ {} ] ], - "html/semantics/grouping-content/the-li-element/grouping-li-reftest-no-list-owner-ref.html": [ - [ - {} - ] - ], "html/semantics/grouping-content/the-li-element/grouping-li-reftest-not-being-rendered-ref.html": [ [ {} @@ -52739,6 +53048,191 @@ {} ] ], + "html/semantics/scripting-1/the-script-element/module/crossorigin-common.js": [ + [ + {} + ] + ], + "html/semantics/scripting-1/the-script-element/module/crossorigin-import-different.sub.html": [ + [ + {} + ] + ], + "html/semantics/scripting-1/the-script-element/module/crossorigin-import-missingheader.sub.html": [ + [ + {} + ] + ], + "html/semantics/scripting-1/the-script-element/module/crossorigin-import-same.sub.html": [ + [ + {} + ] + ], + "html/semantics/scripting-1/the-script-element/module/crossorigin-import-wrongheader.sub.html": [ + [ + {} + ] + ], + "html/semantics/scripting-1/the-script-element/module/crossorigin-root-different.sub.html": [ + [ + {} + ] + ], + "html/semantics/scripting-1/the-script-element/module/crossorigin-root-missingheader.sub.html": [ + [ + {} + ] + ], + "html/semantics/scripting-1/the-script-element/module/crossorigin-root-same.sub.html": [ + [ + {} + ] + ], + "html/semantics/scripting-1/the-script-element/module/crossorigin-root-wrongheader.sub.html": [ + [ + {} + ] + ], + "html/semantics/scripting-1/the-script-element/module/crossorigin-scripterror.js": [ + [ + {} + ] + ], + "html/semantics/scripting-1/the-script-element/module/errorhandling-parseerror-common.js": [ + [ + {} + ] + ], + "html/semantics/scripting-1/the-script-element/module/errorhandling-parseerror-dependent.html": [ + [ + {} + ] + ], + "html/semantics/scripting-1/the-script-element/module/errorhandling-parseerror-dependent.js": [ + [ + {} + ] + ], + "html/semantics/scripting-1/the-script-element/module/errorhandling-parseerror-dependentmultiple.html": [ + [ + {} + ] + ], + "html/semantics/scripting-1/the-script-element/module/errorhandling-parseerror-dependentmultiple.js": [ + [ + {} + ] + ], + "html/semantics/scripting-1/the-script-element/module/errorhandling-parseerror-root.html": [ + [ + {} + ] + ], + "html/semantics/scripting-1/the-script-element/module/errorhandling-wrongMimetype-import.js": [ + [ + {} + ] + ], + "html/semantics/scripting-1/the-script-element/module/errorhandling-wrongMimetype.js": [ + [ + {} + ] + ], + "html/semantics/scripting-1/the-script-element/module/execorder-dynamicordered2.js": [ + [ + {} + ] + ], + "html/semantics/scripting-1/the-script-element/module/execorder-dynamicordered3.js": [ + [ + {} + ] + ], + "html/semantics/scripting-1/the-script-element/module/execorder-dynamicordered4.js": [ + [ + {} + ] + ], + "html/semantics/scripting-1/the-script-element/module/execorder-dynamicunordered1.js": [ + [ + {} + ] + ], + "html/semantics/scripting-1/the-script-element/module/execorder-dynamicunordered2.js": [ + [ + {} + ] + ], + "html/semantics/scripting-1/the-script-element/module/execorder-parsedordered2.js": [ + [ + {} + ] + ], + "html/semantics/scripting-1/the-script-element/module/execorder-parsedordered4.js": [ + [ + {} + ] + ], + "html/semantics/scripting-1/the-script-element/module/execorder-parsedunordered1.js": [ + [ + {} + ] + ], + "html/semantics/scripting-1/the-script-element/module/execorder-parsedunordered2.js": [ + [ + {} + ] + ], + "html/semantics/scripting-1/the-script-element/module/imports-a.js": [ + [ + {} + ] + ], + "html/semantics/scripting-1/the-script-element/module/imports-b.js": [ + [ + {} + ] + ], + "html/semantics/scripting-1/the-script-element/module/imports-cycle-a.js": [ + [ + {} + ] + ], + "html/semantics/scripting-1/the-script-element/module/imports-cycle-b.js": [ + [ + {} + ] + ], + "html/semantics/scripting-1/the-script-element/module/imports-cycle.js": [ + [ + {} + ] + ], + "html/semantics/scripting-1/the-script-element/module/imports-inc-a.js": [ + [ + {} + ] + ], + "html/semantics/scripting-1/the-script-element/module/imports-inc-ab.js": [ + [ + {} + ] + ], + "html/semantics/scripting-1/the-script-element/module/imports-inc-b.js": [ + [ + {} + ] + ], + "html/semantics/scripting-1/the-script-element/module/imports-self-inner.js": [ + [ + {} + ] + ], + "html/semantics/scripting-1/the-script-element/module/imports-self.js": [ + [ + {} + ] + ], "html/semantics/scripting-1/the-script-element/resources/cocoa-module.js": [ [ {} @@ -53359,6 +53853,11 @@ {} ] ], + "html/syntax/OWNERS": [ + [ + {} + ] + ], "html/syntax/html-element-list.js": [ [ {} @@ -53604,6 +54103,11 @@ {} ] ], + "html/tools/OWNERS": [ + [ + {} + ] + ], "html/tools/build.sh": [ [ {} @@ -53634,6 +54138,16 @@ {} ] ], + "html/webappapis/dynamic-markup-insertion/opening-the-input-stream/resources/set-document-domain.html": [ + [ + {} + ] + ], + "html/webappapis/idle-callbacks/resources/post_name_on_load.html": [ + [ + {} + ] + ], "html/webappapis/scripting/.gitkeep": [ [ {} @@ -53724,6 +54238,16 @@ {} ] ], + "html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/support/promise-access-control.py": [ + [ + {} + ] + ], + "html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/support/promise-rejection-events.js": [ + [ + {} + ] + ], "html/webappapis/system-state-and-capabilities/.gitkeep": [ [ {} @@ -54274,6 +54798,11 @@ {} ] ], + "media-capabilities/README.md": [ + [ + {} + ] + ], "media-source/OWNERS": [ [ {} @@ -54609,6 +55138,11 @@ {} ] ], + "mediasession/README.md": [ + [ + {} + ] + ], "microdata/conformance-requirements/.gitkeep": [ [ {} @@ -55439,6 +55973,11 @@ {} ] ], + "offscreen-canvas/tools/OWNERS": [ + [ + {} + ] + ], "offscreen-canvas/tools/build.sh": [ [ {} @@ -56699,12 +57238,12 @@ {} ] ], - "preload/link_header_preload.html.headers": [ + "preload/link-header-preload-delay-onload.html.headers": [ [ {} ] ], - "preload/link_header_preload_delay_onload.html.headers": [ + "preload/link-header-preload.html.headers": [ [ {} ] @@ -56734,6 +57273,11 @@ {} ] ], + "preload/resources/preload_helper.js": [ + [ + {} + ] + ], "preload/resources/square.png": [ [ {} @@ -59394,6 +59938,11 @@ {} ] ], + "remote-playback/README.md": [ + [ + {} + ] + ], "resource-timing/OWNERS": [ [ {} @@ -59714,6 +60263,41 @@ {} ] ], + "service-workers/service-worker/multi-globals/current/current.https.html": [ + [ + {} + ] + ], + "service-workers/service-worker/multi-globals/current/test-sw.js": [ + [ + {} + ] + ], + "service-workers/service-worker/multi-globals/incumbent/incumbent.https.html": [ + [ + {} + ] + ], + "service-workers/service-worker/multi-globals/incumbent/test-sw.js": [ + [ + {} + ] + ], + "service-workers/service-worker/multi-globals/relevant/relevant.https.html": [ + [ + {} + ] + ], + "service-workers/service-worker/multi-globals/relevant/test-sw.js": [ + [ + {} + ] + ], + "service-workers/service-worker/multi-globals/test-sw.js": [ + [ + {} + ] + ], "service-workers/service-worker/resources/404.py": [ [ {} @@ -59924,6 +60508,11 @@ {} ] ], + "service-workers/service-worker/resources/fetch-event-within-sw-worker.js": [ + [ + {} + ] + ], "service-workers/service-worker/resources/fetch-header-visibility-iframe.html": [ [ {} @@ -60024,12 +60613,42 @@ {} ] ], - "service-workers/service-worker/resources/frame-for-getregistrations.html": [ + "service-workers/service-worker/resources/foreign-fetch-cors-worker.js": [ [ {} ] ], - "service-workers/service-worker/resources/get-host-info.sub.js": [ + "service-workers/service-worker/resources/foreign-fetch-event-worker.js": [ + [ + {} + ] + ], + "service-workers/service-worker/resources/foreign-fetch-helper-iframe.html": [ + [ + {} + ] + ], + "service-workers/service-worker/resources/foreign-fetch-helper-script.js": [ + [ + {} + ] + ], + "service-workers/service-worker/resources/foreign-fetch-helper-worker.js": [ + [ + {} + ] + ], + "service-workers/service-worker/resources/foreign-fetch-helpers.js": [ + [ + {} + ] + ], + "service-workers/service-worker/resources/foreign-fetch-worker.js": [ + [ + {} + ] + ], + "service-workers/service-worker/resources/frame-for-getregistrations.html": [ [ {} ] @@ -60044,6 +60663,11 @@ {} ] ], + "service-workers/service-worker/resources/install-worker-helper.html": [ + [ + {} + ] + ], "service-workers/service-worker/resources/interfaces-worker.sub.js": [ [ {} @@ -60084,6 +60708,11 @@ {} ] ], + "service-workers/service-worker/resources/link-header.py": [ + [ + {} + ] + ], "service-workers/service-worker/resources/load_worker.js": [ [ {} @@ -60139,6 +60768,11 @@ {} ] ], + "service-workers/service-worker/resources/notification_icon.py": [ + [ + {} + ] + ], "service-workers/service-worker/resources/onactivate-throw-error-from-nested-event-worker.js": [ [ {} @@ -60209,6 +60843,11 @@ {} ] ], + "service-workers/service-worker/resources/postmessage-blob-url.js": [ + [ + {} + ] + ], "service-workers/service-worker/resources/postmessage-msgport-to-client-worker.js": [ [ {} @@ -60239,6 +60878,11 @@ {} ] ], + "service-workers/service-worker/resources/registration-tests.js": [ + [ + {} + ] + ], "service-workers/service-worker/resources/registration-worker.js": [ [ {} @@ -60249,6 +60893,11 @@ {} ] ], + "service-workers/service-worker/resources/reply-to-message.html": [ + [ + {} + ] + ], "service-workers/service-worker/resources/request-end-to-end-worker.js": [ [ {} @@ -60484,6 +61133,21 @@ {} ] ], + "storage/OWNERS": [ + [ + {} + ] + ], + "storage/README.md": [ + [ + {} + ] + ], + "storage/interfaces.idl": [ + [ + {} + ] + ], "streams/OWNERS": [ [ {} @@ -60584,6 +61248,11 @@ {} ] ], + "streams/readable-streams/floating-point-total-queue-size.js": [ + [ + {} + ] + ], "streams/readable-streams/garbage-collection.js": [ [ {} @@ -60674,11 +61343,21 @@ {} ] ], + "streams/writable-streams/floating-point-total-queue-size.js": [ + [ + {} + ] + ], "streams/writable-streams/general.js": [ [ {} ] ], + "streams/writable-streams/reentrant-strategy.js": [ + [ + {} + ] + ], "streams/writable-streams/start.js": [ [ {} @@ -61494,7 +62173,7 @@ {} ] ], - "web-animations/resources/effect-easing-tests.js": [ + "web-animations/resources/easing-tests.js": [ [ {} ] @@ -61694,6 +62373,11 @@ {} ] ], + "webauthn/helpers.js": [ + [ + {} + ] + ], "webauthn/interfaces.idl": [ [ {} @@ -70029,6 +70713,11 @@ {} ] ], + "webmessaging/MessageEvent-trusted-worker.js": [ + [ + {} + ] + ], "webmessaging/OWNERS": [ [ {} @@ -72394,6 +73083,11 @@ {} ] ], + "workers/support/ImportScriptsNosniffErr.js": [ + [ + {} + ] + ], "workers/support/Timer.js": [ [ {} @@ -72414,6 +73108,11 @@ {} ] ], + "workers/support/WorkerFetchURL.js": [ + [ + {} + ] + ], "workers/support/WorkerLocation.js": [ [ {} @@ -72434,6 +73133,11 @@ {} ] ], + "workers/support/nosiniff-error-worker.py": [ + [ + {} + ] + ], "workers/support/sandboxed-tests.html": [ [ {} @@ -77109,12 +77813,6 @@ {} ] ], - "FileAPI/blob/Blob-close.html": [ - [ - "/FileAPI/blob/Blob-close.html", - {} - ] - ], "FileAPI/blob/Blob-constructor.html": [ [ "/FileAPI/blob/Blob-constructor.html", @@ -77241,6 +77939,18 @@ {} ] ], + "FileAPI/url/blob-url-in-sandboxed-iframe.html": [ + [ + "/FileAPI/url/blob-url-in-sandboxed-iframe.html", + {} + ] + ], + "FileAPI/url/multi-global-origin-serialization.sub.html": [ + [ + "/FileAPI/url/multi-global-origin-serialization.sub.html", + {} + ] + ], "FileAPI/url/origin.sub.html": [ [ "/FileAPI/url/origin.sub.html", @@ -77271,6 +77981,12 @@ {} ] ], + "IndexedDB/clone-before-keypath-eval.html": [ + [ + "/IndexedDB/clone-before-keypath-eval.html", + {} + ] + ], "IndexedDB/close-in-upgradeneeded.html": [ [ "/IndexedDB/close-in-upgradeneeded.html", @@ -77301,6 +78017,18 @@ {} ] ], + "IndexedDB/idb-binary-key-detached.htm": [ + [ + "/IndexedDB/idb-binary-key-detached.htm", + {} + ] + ], + "IndexedDB/idb-binary-key-roundtrip.htm": [ + [ + "/IndexedDB/idb-binary-key-roundtrip.htm", + {} + ] + ], "IndexedDB/idb_binary_key_conversion.htm": [ [ "/IndexedDB/idb_binary_key_conversion.htm", @@ -77961,6 +78689,18 @@ {} ] ], + "IndexedDB/idbfactory-deleteDatabase-opaque-origin.html": [ + [ + "/IndexedDB/idbfactory-deleteDatabase-opaque-origin.html", + {} + ] + ], + "IndexedDB/idbfactory-open-opaque-origin.html": [ + [ + "/IndexedDB/idbfactory-open-opaque-origin.html", + {} + ] + ], "IndexedDB/idbfactory_cmp.htm": [ [ "/IndexedDB/idbfactory_cmp.htm", @@ -78935,6 +79675,12 @@ {} ] ], + "IndexedDB/key-conversion-exceptions.htm": [ + [ + "/IndexedDB/key-conversion-exceptions.htm", + {} + ] + ], "IndexedDB/key_invalid.htm": [ [ "/IndexedDB/key_invalid.htm", @@ -81009,6 +81755,14 @@ } ] ], + "XMLHttpRequest/xmlhttprequest-timeout-reused.html": [ + [ + "/XMLHttpRequest/xmlhttprequest-timeout-reused.html", + { + "timeout": "long" + } + ] + ], "XMLHttpRequest/xmlhttprequest-timeout-simple.html": [ [ "/XMLHttpRequest/xmlhttprequest-timeout-simple.html", @@ -81149,6 +81903,12 @@ {} ] ], + "assumptions/html-elements.html": [ + [ + "/assumptions/html-elements.html", + {} + ] + ], "battery-status/battery-interface-idlharness.html": [ [ "/battery-status/battery-interface-idlharness.html", @@ -83347,6 +84107,12 @@ {} ] ], + "dom/events/EventListener-invoke-legacy.html": [ + [ + "/dom/events/EventListener-invoke-legacy.html", + {} + ] + ], "dom/events/EventListenerOptions-capture.html": [ [ "/dom/events/EventListenerOptions-capture.html", @@ -84995,6 +85761,12 @@ {} ] ], + "domxpath/interfaces.html": [ + [ + "/domxpath/interfaces.html", + {} + ] + ], "domxpath/xml_xpath_runner.html": [ [ "/domxpath/xml_xpath_runner.html", @@ -86127,6 +86899,12 @@ {} ] ], + "eventsource/eventsource-onmessage-trusted.htm": [ + [ + "/eventsource/eventsource-onmessage-trusted.htm", + {} + ] + ], "eventsource/eventsource-onmessage.htm": [ [ "/eventsource/eventsource-onmessage.htm", @@ -86823,6 +87601,12 @@ {} ] ], + "fetch/api/headers/headers-record.html": [ + [ + "/fetch/api/headers/headers-record.html", + {} + ] + ], "fetch/api/headers/headers-structure.html": [ [ "/fetch/api/headers/headers-structure.html", @@ -87647,6 +88431,18 @@ {} ] ], + "html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-form-submit.html": [ + [ + "/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-form-submit.html", + {} + ] + ], + "html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-same-origin-fragment.html": [ + [ + "/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-same-origin-fragment.html", + {} + ] + ], "html/browsers/browsing-the-web/navigating-across-documents/navigation_unload_data_url.html": [ [ "/html/browsers/browsing-the-web/navigating-across-documents/navigation_unload_data_url.html", @@ -87807,6 +88603,12 @@ {} ] ], + "html/browsers/browsing-the-web/unloading-documents/beforeunload-canceling.html": [ + [ + "/html/browsers/browsing-the-web/unloading-documents/beforeunload-canceling.html", + {} + ] + ], "html/browsers/browsing-the-web/unloading-documents/beforeunload-on-history-back.html": [ [ "/html/browsers/browsing-the-web/unloading-documents/beforeunload-on-history-back.html", @@ -88229,6 +89031,12 @@ {} ] ], + "html/browsers/history/the-location-interface/location-protocol-setter-with-colon.sub.html": [ + [ + "/html/browsers/history/the-location-interface/location-protocol-setter-with-colon.sub.html", + {} + ] + ], "html/browsers/history/the-location-interface/location-protocol-setter.html": [ [ "/html/browsers/history/the-location-interface/location-protocol-setter.html", @@ -88247,6 +89055,24 @@ {} ] ], + "html/browsers/history/the-location-interface/location-symbol-toprimitive.html": [ + [ + "/html/browsers/history/the-location-interface/location-symbol-toprimitive.html", + {} + ] + ], + "html/browsers/history/the-location-interface/location-tojson.html": [ + [ + "/html/browsers/history/the-location-interface/location-tojson.html", + {} + ] + ], + "html/browsers/history/the-location-interface/location-valueof.html": [ + [ + "/html/browsers/history/the-location-interface/location-valueof.html", + {} + ] + ], "html/browsers/history/the-location-interface/location_assign.html": [ [ "/html/browsers/history/the-location-interface/location_assign.html", @@ -89803,6 +90629,12 @@ } ] ], + "html/dom/interfaces.worker.js": [ + [ + "/html/dom/interfaces.worker.html", + {} + ] + ], "html/dom/reflection-embedded.html": [ [ "/html/dom/reflection-embedded.html", @@ -89875,6 +90707,22 @@ } ] ], + "html/dom/self-origin.any.js": [ + [ + "/html/dom/self-origin.any.html", + {} + ], + [ + "/html/dom/self-origin.any.worker.html", + {} + ] + ], + "html/dom/self-origin.sub.html": [ + [ + "/html/dom/self-origin.sub.html", + {} + ] + ], "html/editing/activation/click.html": [ [ "/html/editing/activation/click.html", @@ -91183,6 +92031,12 @@ {} ] ], + "html/semantics/embedded-content/media-elements/ready-states/autoplay-with-slow-text-tracks.html": [ + [ + "/html/semantics/embedded-content/media-elements/ready-states/autoplay-with-slow-text-tracks.html", + {} + ] + ], "html/semantics/embedded-content/media-elements/ready-states/autoplay.html": [ [ "/html/semantics/embedded-content/media-elements/ready-states/autoplay.html", @@ -91569,6 +92423,12 @@ {} ] ], + "html/semantics/embedded-content/the-area-element/area-download-click.html": [ + [ + "/html/semantics/embedded-content/the-area-element/area-download-click.html", + {} + ] + ], "html/semantics/embedded-content/the-area-element/area-processing.html": [ [ "/html/semantics/embedded-content/the-area-element/area-processing.html", @@ -92073,6 +92933,12 @@ {} ] ], + "html/semantics/embedded-content/the-canvas-element/toBlob.null.html": [ + [ + "/html/semantics/embedded-content/the-canvas-element/toBlob.null.html", + {} + ] + ], "html/semantics/embedded-content/the-canvas-element/toBlob.png.html": [ [ "/html/semantics/embedded-content/the-canvas-element/toBlob.png.html", @@ -92259,6 +93125,12 @@ {} ] ], + "html/semantics/embedded-content/the-embed-element/embed-in-object-fallback-2.html": [ + [ + "/html/semantics/embedded-content/the-embed-element/embed-in-object-fallback-2.html", + {} + ] + ], "html/semantics/embedded-content/the-embed-element/embed-in-object-fallback.html": [ [ "/html/semantics/embedded-content/the-embed-element/embed-in-object-fallback.html", @@ -92531,6 +93403,18 @@ {} ] ], + "html/semantics/embedded-content/the-object-element/object-ignored-in-media-element.html": [ + [ + "/html/semantics/embedded-content/the-object-element/object-ignored-in-media-element.html", + {} + ] + ], + "html/semantics/embedded-content/the-object-element/object-in-object-fallback-2.html": [ + [ + "/html/semantics/embedded-content/the-object-element/object-in-object-fallback-2.html", + {} + ] + ], "html/semantics/embedded-content/the-object-element/usemap-casing.html": [ [ "/html/semantics/embedded-content/the-object-element/usemap-casing.html", @@ -92669,6 +93553,12 @@ {} ] ], + "html/semantics/forms/form-submission-0/form-data-set-usv.html": [ + [ + "/html/semantics/forms/form-submission-0/form-data-set-usv.html", + {} + ] + ], "html/semantics/forms/form-submission-0/getactionurl.html": [ [ "/html/semantics/forms/form-submission-0/getactionurl.html", @@ -92769,6 +93659,12 @@ {} ] ], + "html/semantics/forms/the-button-element/button-menu-historical.html": [ + [ + "/html/semantics/forms/the-button-element/button-menu-historical.html", + {} + ] + ], "html/semantics/forms/the-button-element/button-validation.html": [ [ "/html/semantics/forms/the-button-element/button-validation.html", @@ -93477,6 +94373,30 @@ {} ] ], + "html/semantics/scripting-1/the-script-element/module/crossorigin.html": [ + [ + "/html/semantics/scripting-1/the-script-element/module/crossorigin.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/module/errorhandling.html": [ + [ + "/html/semantics/scripting-1/the-script-element/module/errorhandling.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/module/execorder.html": [ + [ + "/html/semantics/scripting-1/the-script-element/module/execorder.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/module/imports.html": [ + [ + "/html/semantics/scripting-1/the-script-element/module/imports.html", + {} + ] + ], "html/semantics/scripting-1/the-script-element/nomodule-reflect.html": [ [ "/html/semantics/scripting-1/the-script-element/nomodule-reflect.html", @@ -93993,6 +94913,12 @@ {} ] ], + "html/semantics/text-level-semantics/the-a-element/a-download-click.html": [ + [ + "/html/semantics/text-level-semantics/the-a-element/a-download-click.html", + {} + ] + ], "html/semantics/text-level-semantics/the-a-element/a-stringifier.html": [ [ "/html/semantics/text-level-semantics/the-a-element/a-stringifier.html", @@ -95399,6 +96325,18 @@ {} ] ], + "html/webappapis/dynamic-markup-insertion/opening-the-input-stream/origin-check-in-document-open-basic.html": [ + [ + "/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/origin-check-in-document-open-basic.html", + {} + ] + ], + "html/webappapis/dynamic-markup-insertion/opening-the-input-stream/origin-check-in-document-open-same-origin-domain.sub.html": [ + [ + "/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/origin-check-in-document-open-same-origin-domain.sub.html", + {} + ] + ], "html/webappapis/idle-callbacks/basic.html": [ [ "/html/webappapis/idle-callbacks/basic.html", @@ -95435,6 +96373,12 @@ {} ] ], + "html/webappapis/idle-callbacks/callback-suspended.html": [ + [ + "/html/webappapis/idle-callbacks/callback-suspended.html", + {} + ] + ], "html/webappapis/idle-callbacks/callback-timeout-with-raf.html": [ [ "/html/webappapis/idle-callbacks/callback-timeout-with-raf.html", @@ -95729,6 +96673,60 @@ {} ] ], + "html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/allow-crossorigin.html": [ + [ + "/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/allow-crossorigin.html", + {} + ] + ], + "html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/disallow-crossorigin.html": [ + [ + "/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/disallow-crossorigin.html", + {} + ] + ], + "html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-event-constructor.html": [ + [ + "/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-event-constructor.html", + {} + ] + ], + "html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events-attached-in-event.html": [ + [ + "/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events-attached-in-event.html", + {} + ] + ], + "html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events-onerror.html": [ + [ + "/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events-onerror.html", + {} + ] + ], + "html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.dedicatedworker.html": [ + [ + "/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.dedicatedworker.html", + {} + ] + ], + "html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.html": [ + [ + "/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.html", + {} + ] + ], + "html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.serviceworker.https.html": [ + [ + "/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.serviceworker.https.html", + {} + ] + ], + "html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.sharedworker.html": [ + [ + "/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.sharedworker.html", + {} + ] + ], "html/webappapis/scripting/processing-model-2/window-onerror-parse-error.html": [ [ "/html/webappapis/scripting/processing-model-2/window-onerror-parse-error.html", @@ -96185,6 +97183,18 @@ {} ] ], + "media-capabilities/idlharness.html": [ + [ + "/media-capabilities/idlharness.html", + {} + ] + ], + "media-capabilities/query.html": [ + [ + "/media-capabilities/query.html", + {} + ] + ], "media-source/SourceBuffer-abort-readyState.html": [ [ "/media-source/SourceBuffer-abort-readyState.html", @@ -96695,6 +97705,30 @@ {} ] ], + "mediasession/idlharness.html": [ + [ + "/mediasession/idlharness.html", + {} + ] + ], + "mediasession/mediametadata.html": [ + [ + "/mediasession/mediametadata.html", + {} + ] + ], + "mediasession/playbackstate.html": [ + [ + "/mediasession/playbackstate.html", + {} + ] + ], + "mediasession/setactionhandler.html": [ + [ + "/mediasession/setactionhandler.html", + {} + ] + ], "mixed-content/allowed/http-csp/same-host-https/audio-tag/top-level/keep-scheme-redirect/allowed.https.html": [ [ "/mixed-content/allowed/http-csp/same-host-https/audio-tag/top-level/keep-scheme-redirect/allowed.https.html", @@ -108817,57 +109851,57 @@ {} ] ], - "preload/avoid_delaying_onload_link_preload.html": [ + "preload/avoid-delaying-onload-link-preload.html": [ [ - "/preload/avoid_delaying_onload_link_preload.html", + "/preload/avoid-delaying-onload-link-preload.html", {} ] ], - "preload/delaying_onload_link_preload_after_discovery.html": [ + "preload/delaying-onload-link-preload-after-discovery.html": [ [ - "/preload/delaying_onload_link_preload_after_discovery.html", + "/preload/delaying-onload-link-preload-after-discovery.html", {} ] ], - "preload/download_resources.html": [ + "preload/download-resources.html": [ [ - "/preload/download_resources.html", + "/preload/download-resources.html", {} ] ], - "preload/dynamic_adding_preload.html": [ + "preload/dynamic-adding-preload.html": [ [ - "/preload/dynamic_adding_preload.html", + "/preload/dynamic-adding-preload.html", {} ] ], - "preload/fetch_destination.https.html": [ + "preload/fetch-destination.https.html": [ [ - "/preload/fetch_destination.https.html", + "/preload/fetch-destination.https.html", {} ] ], - "preload/link_header_preload.html": [ + "preload/link-header-preload-delay-onload.html": [ [ - "/preload/link_header_preload.html", + "/preload/link-header-preload-delay-onload.html", {} ] ], - "preload/link_header_preload_delay_onload.html": [ + "preload/link-header-preload.html": [ [ - "/preload/link_header_preload_delay_onload.html", + "/preload/link-header-preload.html", {} ] ], - "preload/onerror_event.html": [ + "preload/onerror-event.html": [ [ - "/preload/onerror_event.html", + "/preload/onerror-event.html", {} ] ], - "preload/onload_event.html": [ + "preload/onload-event.html": [ [ - "/preload/onload_event.html", + "/preload/onload-event.html", {} ] ], @@ -108883,21 +109917,21 @@ {} ] ], - "preload/preload_with_type.html": [ + "preload/preload-with-type.html": [ [ - "/preload/preload_with_type.html", + "/preload/preload-with-type.html", {} ] ], - "preload/single_download_late_used_preload.html": [ + "preload/single-download-late-used-preload.html": [ [ - "/preload/single_download_late_used_preload.html", + "/preload/single-download-late-used-preload.html", {} ] ], - "preload/single_download_preload.html": [ + "preload/single-download-preload.html": [ [ - "/preload/single_download_preload.html", + "/preload/single-download-preload.html", {} ] ], @@ -109071,6 +110105,12 @@ {} ] ], + "referrer-policy/generic/sandboxed-iframe-with-opaque-origin.html": [ + [ + "/referrer-policy/generic/sandboxed-iframe-with-opaque-origin.html", + {} + ] + ], "referrer-policy/generic/subresource-test/area-navigate.html": [ [ "/referrer-policy/generic/subresource-test/area-navigate.html", @@ -117051,6 +118091,36 @@ {} ] ], + "remote-playback/cancel-watch-availability.html": [ + [ + "/remote-playback/cancel-watch-availability.html", + {} + ] + ], + "remote-playback/disable-remote-playback-cancel-watch-availability-throws.html": [ + [ + "/remote-playback/disable-remote-playback-cancel-watch-availability-throws.html", + {} + ] + ], + "remote-playback/disable-remote-playback-prompt-throws.html": [ + [ + "/remote-playback/disable-remote-playback-prompt-throws.html", + {} + ] + ], + "remote-playback/disable-remote-playback-watch-availability-throws.html": [ + [ + "/remote-playback/disable-remote-playback-watch-availability-throws.html", + {} + ] + ], + "remote-playback/watch-availability-initial-callback.html": [ + [ + "/remote-playback/watch-availability-initial-callback.html", + {} + ] + ], "resource-timing/idlharness.html": [ [ "/resource-timing/idlharness.html", @@ -117388,7 +118458,9 @@ "selection/selectAllChildren.html": [ [ "/selection/selectAllChildren.html", - {} + { + "timeout": "long" + } ] ], "selection/setBaseAndExtent.html": [ @@ -117823,6 +118895,12 @@ {} ] ], + "service-workers/service-worker/fetch-event-within-sw.html": [ + [ + "/service-workers/service-worker/fetch-event-within-sw.html", + {} + ] + ], "service-workers/service-worker/fetch-event.https.html": [ [ "/service-workers/service-worker/fetch-event.https.html", @@ -117917,6 +118995,30 @@ } ] ], + "service-workers/service-worker/foreign-fetch-basics.https.html": [ + [ + "/service-workers/service-worker/foreign-fetch-basics.https.html", + {} + ] + ], + "service-workers/service-worker/foreign-fetch-cors.https.html": [ + [ + "/service-workers/service-worker/foreign-fetch-cors.https.html", + {} + ] + ], + "service-workers/service-worker/foreign-fetch-event.https.html": [ + [ + "/service-workers/service-worker/foreign-fetch-event.https.html", + {} + ] + ], + "service-workers/service-worker/foreign-fetch-workers.https.html": [ + [ + "/service-workers/service-worker/foreign-fetch-workers.https.html", + {} + ] + ], "service-workers/service-worker/getregistration.https.html": [ [ "/service-workers/service-worker/getregistration.https.html", @@ -117965,6 +119067,12 @@ {} ] ], + "service-workers/service-worker/multi-globals/url-parsing.https.html": [ + [ + "/service-workers/service-worker/multi-globals/url-parsing.https.html", + {} + ] + ], "service-workers/service-worker/multiple-register.https.html": [ [ "/service-workers/service-worker/multiple-register.https.html", @@ -118007,6 +119115,12 @@ {} ] ], + "service-workers/service-worker/postmessage-blob-url.https.html": [ + [ + "/service-workers/service-worker/postmessage-blob-url.https.html", + {} + ] + ], "service-workers/service-worker/postmessage-msgport-to-client.https.html": [ [ "/service-workers/service-worker/postmessage-msgport-to-client.https.html", @@ -118051,6 +119165,18 @@ {} ] ], + "service-workers/service-worker/register-link-element.https.html": [ + [ + "/service-workers/service-worker/register-link-element.https.html", + {} + ] + ], + "service-workers/service-worker/register-link-header.https.html": [ + [ + "/service-workers/service-worker/register-link-header.https.html", + {} + ] + ], "service-workers/service-worker/register-same-scope-different-script-url.https.html": [ [ "/service-workers/service-worker/register-same-scope-different-script-url.https.html", @@ -118753,6 +119879,18 @@ {} ] ], + "storage/interfaces.html": [ + [ + "/storage/interfaces.html", + {} + ] + ], + "storage/interfaces.worker.js": [ + [ + "/storage/interfaces.worker.html", + {} + ] + ], "streams/byte-length-queuing-strategy.dedicatedworker.html": [ [ "/streams/byte-length-queuing-strategy.dedicatedworker.html", @@ -119161,6 +120299,30 @@ {} ] ], + "streams/readable-streams/floating-point-total-queue-size.dedicatedworker.html": [ + [ + "/streams/readable-streams/floating-point-total-queue-size.dedicatedworker.html", + {} + ] + ], + "streams/readable-streams/floating-point-total-queue-size.html": [ + [ + "/streams/readable-streams/floating-point-total-queue-size.html", + {} + ] + ], + "streams/readable-streams/floating-point-total-queue-size.serviceworker.https.html": [ + [ + "/streams/readable-streams/floating-point-total-queue-size.serviceworker.https.html", + {} + ] + ], + "streams/readable-streams/floating-point-total-queue-size.sharedworker.html": [ + [ + "/streams/readable-streams/floating-point-total-queue-size.sharedworker.html", + {} + ] + ], "streams/readable-streams/garbage-collection.dedicatedworker.html": [ [ "/streams/readable-streams/garbage-collection.dedicatedworker.html", @@ -119497,6 +120659,30 @@ {} ] ], + "streams/writable-streams/floating-point-total-queue-size.dedicatedworker.html": [ + [ + "/streams/writable-streams/floating-point-total-queue-size.dedicatedworker.html", + {} + ] + ], + "streams/writable-streams/floating-point-total-queue-size.html": [ + [ + "/streams/writable-streams/floating-point-total-queue-size.html", + {} + ] + ], + "streams/writable-streams/floating-point-total-queue-size.serviceworker.https.html": [ + [ + "/streams/writable-streams/floating-point-total-queue-size.serviceworker.https.html", + {} + ] + ], + "streams/writable-streams/floating-point-total-queue-size.sharedworker.html": [ + [ + "/streams/writable-streams/floating-point-total-queue-size.sharedworker.html", + {} + ] + ], "streams/writable-streams/general.dedicatedworker.html": [ [ "/streams/writable-streams/general.dedicatedworker.html", @@ -119521,6 +120707,30 @@ {} ] ], + "streams/writable-streams/reentrant-strategy.dedicatedworker.html": [ + [ + "/streams/writable-streams/reentrant-strategy.dedicatedworker.html", + {} + ] + ], + "streams/writable-streams/reentrant-strategy.html": [ + [ + "/streams/writable-streams/reentrant-strategy.html", + {} + ] + ], + "streams/writable-streams/reentrant-strategy.serviceworker.https.html": [ + [ + "/streams/writable-streams/reentrant-strategy.serviceworker.https.html", + {} + ] + ], + "streams/writable-streams/reentrant-strategy.sharedworker.html": [ + [ + "/streams/writable-streams/reentrant-strategy.sharedworker.html", + {} + ] + ], "streams/writable-streams/start.dedicatedworker.html": [ [ "/streams/writable-streams/start.dedicatedworker.html", @@ -119821,6 +121031,12 @@ {} ] ], + "url/url-tojson.html": [ + [ + "/url/url-tojson.html", + {} + ] + ], "url/urlencoded-parser.html": [ [ "/url/urlencoded-parser.html", @@ -120037,24 +121253,42 @@ {} ] ], + "web-animations/animation-model/keyframe-effects/effect-value-overlapping-keyframes.html": [ + [ + "/web-animations/animation-model/keyframe-effects/effect-value-overlapping-keyframes.html", + {} + ] + ], + "web-animations/animation-model/keyframe-effects/effect-value-transformed-distance.html": [ + [ + "/web-animations/animation-model/keyframe-effects/effect-value-transformed-distance.html", + {} + ] + ], + "web-animations/animation-model/keyframe-effects/effect-value-visibility.html": [ + [ + "/web-animations/animation-model/keyframe-effects/effect-value-visibility.html", + {} + ] + ], "web-animations/animation-model/keyframe-effects/spacing-keyframes.html": [ [ "/web-animations/animation-model/keyframe-effects/spacing-keyframes.html", {} ] ], - "web-animations/animation-model/keyframe-effects/the-effect-value-of-a-keyframe-effect.html": [ - [ - "/web-animations/animation-model/keyframe-effects/the-effect-value-of-a-keyframe-effect.html", - {} - ] - ], "web-animations/interfaces/Animatable/animate.html": [ [ "/web-animations/interfaces/Animatable/animate.html", {} ] ], + "web-animations/interfaces/Animatable/getAnimations.html": [ + [ + "/web-animations/interfaces/Animatable/getAnimations.html", + {} + ] + ], "web-animations/interfaces/Animation/cancel.html": [ [ "/web-animations/interfaces/Animation/cancel.html", @@ -120247,12 +121481,6 @@ {} ] ], - "web-animations/interfaces/KeyframeEffect/effect-easing.html": [ - [ - "/web-animations/interfaces/KeyframeEffect/effect-easing.html", - {} - ] - ], "web-animations/interfaces/KeyframeEffect/getComputedTiming.html": [ [ "/web-animations/interfaces/KeyframeEffect/getComputedTiming.html", @@ -120313,6 +121541,12 @@ {} ] ], + "web-animations/timing-model/animation-effects/local-time.html": [ + [ + "/web-animations/timing-model/animation-effects/local-time.html", + {} + ] + ], "web-animations/timing-model/animation-effects/phases-and-states.html": [ [ "/web-animations/timing-model/animation-effects/phases-and-states.html", @@ -120355,6 +121589,12 @@ {} ] ], + "web-animations/timing-model/time-transformations/transformed-progress.html": [ + [ + "/web-animations/timing-model/time-transformations/transformed-progress.html", + {} + ] + ], "webaudio/the-audio-api/the-audiobuffer-interface/idl-test.html": [ [ "/webaudio/the-audio-api/the-audiobuffer-interface/idl-test.html", @@ -120481,6 +121721,24 @@ {} ] ], + "webauthn/makecredential-badargs-accountinformation.https.html": [ + [ + "/webauthn/makecredential-badargs-accountinformation.https.html", + {} + ] + ], + "webauthn/makecredential-badargs-attestationchallenge.https.html": [ + [ + "/webauthn/makecredential-badargs-attestationchallenge.https.html", + {} + ] + ], + "webauthn/makecredential-badargs-cryptoparameters.https.html": [ + [ + "/webauthn/makecredential-badargs-cryptoparameters.https.html", + {} + ] + ], "webdriver/interface.html": [ [ "/webdriver/interface.html", @@ -124627,6 +125885,12 @@ {} ] ], + "webmessaging/MessageEvent-trusted.html": [ + [ + "/webmessaging/MessageEvent-trusted.html", + {} + ] + ], "webmessaging/MessageEvent.html": [ [ "/webmessaging/MessageEvent.html", @@ -125197,12 +126461,6 @@ {} ] ], - "websockets/Close-0.htm": [ - [ - "/websockets/Close-0.htm", - {} - ] - ], "websockets/Close-1000-reason.htm": [ [ "/websockets/Close-1000-reason.htm", @@ -125215,42 +126473,18 @@ {} ] ], - "websockets/Close-NaN.htm": [ - [ - "/websockets/Close-NaN.htm", - {} - ] - ], "websockets/Close-Reason-124Bytes.htm": [ [ "/websockets/Close-Reason-124Bytes.htm", {} ] ], - "websockets/Close-clamp.htm": [ - [ - "/websockets/Close-clamp.htm", - {} - ] - ], - "websockets/Close-null.htm": [ - [ - "/websockets/Close-null.htm", - {} - ] - ], "websockets/Close-reason-unpaired-surrogates.htm": [ [ "/websockets/Close-reason-unpaired-surrogates.htm", {} ] ], - "websockets/Close-string.htm": [ - [ - "/websockets/Close-string.htm", - {} - ] - ], "websockets/Close-undefined.htm": [ [ "/websockets/Close-undefined.htm", @@ -125389,12 +126623,6 @@ {} ] ], - "websockets/Secure-Close-0.htm": [ - [ - "/websockets/Secure-Close-0.htm", - {} - ] - ], "websockets/Secure-Close-1000-reason.htm": [ [ "/websockets/Secure-Close-1000-reason.htm", @@ -125449,12 +126677,6 @@ {} ] ], - "websockets/Secure-Close-NaN.htm": [ - [ - "/websockets/Secure-Close-NaN.htm", - {} - ] - ], "websockets/Secure-Close-Reason-124Bytes.htm": [ [ "/websockets/Secure-Close-Reason-124Bytes.htm", @@ -125467,12 +126689,6 @@ {} ] ], - "websockets/Secure-Close-null.htm": [ - [ - "/websockets/Secure-Close-null.htm", - {} - ] - ], "websockets/Secure-Close-onlyReason.htm": [ [ "/websockets/Secure-Close-onlyReason.htm", @@ -125497,12 +126713,6 @@ {} ] ], - "websockets/Secure-Close-string.htm": [ - [ - "/websockets/Secure-Close-string.htm", - {} - ] - ], "websockets/Secure-Close-undefined.htm": [ [ "/websockets/Secure-Close-undefined.htm", @@ -125743,6 +126953,16 @@ {} ] ], + "websockets/close-invalid.any.js": [ + [ + "/websockets/close-invalid.any.html", + {} + ], + [ + "/websockets/close-invalid.any.worker.html", + {} + ] + ], "websockets/closing-handshake/002.html": [ [ "/websockets/closing-handshake/002.html", @@ -127041,6 +128261,12 @@ {} ] ], + "webstorage/event_no_duplicates.html": [ + [ + "/webstorage/event_no_duplicates.html", + {} + ] + ], "webstorage/event_session_key.html": [ [ "/webstorage/event_session_key.html", @@ -127299,6 +128525,12 @@ {} ] ], + "workers/SharedWorker_blobUrl.html": [ + [ + "/workers/SharedWorker_blobUrl.html", + {} + ] + ], "workers/WorkerGlobalScope_ErrorEvent_colno.htm": [ [ "/workers/WorkerGlobalScope_ErrorEvent_colno.htm", @@ -127341,6 +128573,12 @@ {} ] ], + "workers/WorkerGlobalScope_importScripts_NosniffErr.htm": [ + [ + "/workers/WorkerGlobalScope_importScripts_NosniffErr.htm", + {} + ] + ], "workers/WorkerGlobalScope_setInterval.htm": [ [ "/workers/WorkerGlobalScope_setInterval.htm", @@ -127503,6 +128741,12 @@ {} ] ], + "workers/Worker_NosniffErr.htm": [ + [ + "/workers/Worker_NosniffErr.htm", + {} + ] + ], "workers/Worker_basic.htm": [ [ "/workers/Worker_basic.htm", @@ -128403,11 +129647,11 @@ "support" ], "./README.md": [ - "47d52ff4a87b49dec2fb5ceb98211fb1b9af34fb", + "f7f7d6a2bc0bc23e1c5fa3e812f710dc29ed6711", "support" ], "./check_stability.py": [ - "1f1090e0caffce4acb4cd151a7841ec2b0c2ab12", + "0a0ea60b590564b4099d05d82131da247ee63c33", "support" ], "./ci_built_diff.sh": [ @@ -128419,7 +129663,7 @@ "support" ], "./ci_stability.sh": [ - "4980fd066b8beb14b0bd55fd62375ee628c30e26", + "2d54d770ed8439a93e98961b3105b3248684744d", "support" ], "./config.default.json": [ @@ -132530,6 +133774,10 @@ "f0866a8c60bf7016987deeb329da99d619eee4f1", "support" ], + "2dcontext/tools/OWNERS": [ + "946f23f945163bf9f9da080291b21473f6e1cbd0", + "support" + ], "2dcontext/tools/build.sh": [ "e4f65db6a439972ed7a83f4cc2c9bae792ec2d27", "support" @@ -132563,7 +133811,7 @@ "support" ], "2dcontext/tools/tests.yaml": [ - "7de242c4a5386a5119c2437c55e67de13bc4d2bc", + "8d5dfd4ca705fa4051b2fd0e6d12bd963a2a2330", "support" ], "2dcontext/tools/tests2d.yaml": [ @@ -132742,10 +133990,6 @@ "3db9200582a45806ecfae1d0f10bbd6f934de448", "testharness" ], - "FileAPI/blob/Blob-close.html": [ - "15511e35a4717b7743e0a56d996d1ef3ce1ad946", - "testharness" - ], "FileAPI/blob/Blob-constructor.html": [ "fc5f5ef1deff60ceb2e2db86b511cdc03f19072f", "testharness" @@ -132795,11 +134039,11 @@ "support" ], "FileAPI/historical.html": [ - "d810a76f4209a5a580652988a355863c2b807e59", + "81ca35372343646dc700b7b903c01ac4650f0b21", "testharness" ], "FileAPI/idlharness-manual.html": [ - "e3ff8e1be5497951e7db6fe3a69550a616e05278", + "df5170b0704955d185dfd7e3e3c44516cdc4292a", "manual" ], "FileAPI/idlharness.html": [ @@ -132807,7 +134051,7 @@ "testharness" ], "FileAPI/idlharness.idl": [ - "061ce6ec6d0e7b8ceebeee53e7d49ff083fdd778", + "2a12d457a38d00109c0f6423bf3e3f16fcc700c9", "support" ], "FileAPI/idlharness.worker.js": [ @@ -132831,7 +134075,7 @@ "testharness" ], "FileAPI/reading-data-section/filereader_abort.html": [ - "24891122dd1a2aea40bfa59a2e19431c449122a9", + "b1a3335d10f661aee31df179e5e81d2071b38edd", "testharness" ], "FileAPI/reading-data-section/filereader_error.html": [ @@ -132874,6 +134118,14 @@ "a06e828e4a420e90fcc3971bd37aef0af6f2210b", "support" ], + "FileAPI/support/document-domain-setter.sub.html": [ + "c05b818b341e8ae4ecd65da8d17aff0365a3387b", + "support" + ], + "FileAPI/support/incumbent.sub.html": [ + "36ccc5cb2de09589d02430b1c0582280d3240f32", + "support" + ], "FileAPI/support/upload.txt": [ "f7ff9e8b7bb2e09b70935a5d785e0cc5d9d0abf0", "support" @@ -132882,6 +134134,14 @@ "18972f4ed024eb5e1494ac466426ae32b3f5525f", "support" ], + "FileAPI/url/blob-url-in-sandboxed-iframe.html": [ + "59188b2e679f56d5eb7ea01428ce06ff0068111a", + "testharness" + ], + "FileAPI/url/multi-global-origin-serialization.sub.html": [ + "7b3cc737b53e7d7dadc3848fca7e7456e59a8635", + "testharness" + ], "FileAPI/url/origin.sub.html": [ "427ede39094dacc910250495bc39ae5ad5826279", "testharness" @@ -132919,15 +134179,19 @@ "support" ], "IndexedDB/abort-in-initial-upgradeneeded.html": [ - "efc9c2476e812f1bb378665f397f71c590439006", + "4cd712bd5fed3581ed770c4dbc4200f3a50c5299", "testharness" ], "IndexedDB/bindings-inject-key.html": [ "95f44900d9565baf718be23bafd33e48e6f4fc52", "testharness" ], + "IndexedDB/clone-before-keypath-eval.html": [ + "9191c591c5c820c0e6c91c21ba339b98ffc42b5a", + "testharness" + ], "IndexedDB/close-in-upgradeneeded.html": [ - "949f5e8a429a7524c9a68ef0d19baf04dadbd84a", + "835c1e1a408e9a6a2c5347eb3a98ba4b40571bb1", "testharness" ], "IndexedDB/cursor-overloads.htm": [ @@ -132946,6 +134210,14 @@ "0c4584e1b021a286445a2a9d3388ff011a1b933e", "testharness" ], + "IndexedDB/idb-binary-key-detached.htm": [ + "e7ed8b831bce3a06d21d629cd0112480dfc0f6a5", + "testharness" + ], + "IndexedDB/idb-binary-key-roundtrip.htm": [ + "ed1e8ae0ca73fdc6fd4d15fcd7623f8f15b7f296", + "testharness" + ], "IndexedDB/idb_binary_key_conversion.htm": [ "7af8d37d63bbef60a973082f7b9fde99d5dcfca6", "testharness" @@ -133123,7 +134395,7 @@ "testharness" ], "IndexedDB/idbcursor_continue_objectstore.htm": [ - "10ae006680c7963f0b09dcfcf26eaf5d62aed3cc", + "d494e8553d1ff8c72cd3b39cbf32b55d4d299710", "testharness" ], "IndexedDB/idbcursor_continue_objectstore2.htm": [ @@ -133382,6 +134654,14 @@ "6a20bae0d687ff41608e222d1f477606831e2164", "testharness" ], + "IndexedDB/idbfactory-deleteDatabase-opaque-origin.html": [ + "faebbda16f92e9d993086578e12fd5ccdb794749", + "testharness" + ], + "IndexedDB/idbfactory-open-opaque-origin.html": [ + "f29edb81b7c6cf534d48e1485f219d51c047c02e", + "testharness" + ], "IndexedDB/idbfactory_cmp.htm": [ "6a00456a5f0011cf389d2f327f370b21829713cd", "testharness" @@ -133411,7 +134691,7 @@ "testharness" ], "IndexedDB/idbfactory_deleteDatabase4.htm": [ - "bdd320c4530d4ec4c9aa92d7283e5458ea92ec25", + "10109da5b09ab80f71c69422662840c8b637c560", "testharness" ], "IndexedDB/idbfactory_open.htm": [ @@ -133515,7 +134795,7 @@ "testharness" ], "IndexedDB/idbindex_get.htm": [ - "32d6d204c0d52f2e4ebf4649ddb1482d2ca2bbf7", + "fe9ff4b4c3d8ea03ace7ff6dd9cec91ed9b6e118", "testharness" ], "IndexedDB/idbindex_get2.htm": [ @@ -133783,7 +135063,7 @@ "testharness" ], "IndexedDB/idbobjectstore_createIndex13.htm": [ - "180c2699b841636a3bec5a857ad1690af2e7d729", + "04af5554d0a8f1c8d4ffce81662ba8b69501b011", "testharness" ], "IndexedDB/idbobjectstore_createIndex14-exception_order.htm": [ @@ -134011,7 +135291,7 @@ "testharness" ], "IndexedDB/idbversionchangeevent.htm": [ - "0db27a811017a52b05dd669f99b2accdeecb5c0d", + "1c84321376076ef84257aaa6d05306c005484f2d", "testharness" ], "IndexedDB/idbworker.js": [ @@ -134034,6 +135314,10 @@ "7edbb0cce85708e4b578ceae18a833fd623cd976", "testharness" ], + "IndexedDB/key-conversion-exceptions.htm": [ + "66c9ee49f2689e8917e5206f1bd2b9759b755d53", + "testharness" + ], "IndexedDB/key_invalid.htm": [ "8c0257c4231c413dde10c6f541f17f57634bff1c", "testharness" @@ -134071,7 +135355,7 @@ "testharness" ], "IndexedDB/keypath_invalid.htm": [ - "d5ac98199a0ab7a4e05c88d9480613d9d34f4181", + "7d6bf2f7cf77bdafd5b3b5e3f82299f844bd7225", "testharness" ], "IndexedDB/keypath_maxsize.htm": [ @@ -134107,7 +135391,7 @@ "support" ], "IndexedDB/support.js": [ - "d419c2daaafebb732e83c0810be816393fdb14f7", + "a236eaf6599ad94f26166144a7afe21fafcc5770", "support" ], "IndexedDB/transaction-abort-generator-revert.html": [ @@ -136178,6 +137462,10 @@ "62d637e636a998a9da3245f6afc6b17782870929", "testharness" ], + "XMLHttpRequest/xmlhttprequest-timeout-reused.html": [ + "b5bc16063a204db539de49df0a7515f9baa8778c", + "testharness" + ], "XMLHttpRequest/xmlhttprequest-timeout-simple.html": [ "6d774362fc2bd235b272e163c5872fa632dbb80f", "testharness" @@ -138318,6 +139606,46 @@ "53c2735980b4d1b4ea30f47d79ac353df0242028", "support" ], + "assumptions/OWNERS": [ + "946f23f945163bf9f9da080291b21473f6e1cbd0", + "support" + ], + "assumptions/canvas-background-ref.html": [ + "0868a5443b1aacb8fd95327bc7c71d071158b0f1", + "support" + ], + "assumptions/canvas-background.html": [ + "2f1a763d3e15a27a9220b1f084847f33092003d0", + "reftest" + ], + "assumptions/html-elements.html": [ + "dacd5dc7e1d723046d5e9eea0a0eb8046d501fca", + "testharness" + ], + "assumptions/initial-color-ref.html": [ + "23bd9bc50c23f6bdbe2c63bbd652a28e1a222586", + "support" + ], + "assumptions/initial-color.html": [ + "14b5a61881546831e2b2733ae9592b2f932f86c4", + "reftest" + ], + "assumptions/medium-font-size-ref.html": [ + "49f1b97b20c6ef7b0452e078fcfc56d8f3c14f77", + "support" + ], + "assumptions/medium-font-size.html": [ + "011f54dc11a955ac173621651c67b2282d046dd9", + "reftest" + ], + "assumptions/min-font-size-ref.html": [ + "5a0be668075cd811b2dc28267210c4cfdd692397", + "support" + ], + "assumptions/min-font-size.html": [ + "df47a9a9342da260175776c3406856be096d0012", + "reftest" + ], "auxclick/OWNERS": [ "314d421a5544db277664bb55bd04b87e9ed2fdba", "support" @@ -138399,7 +139727,7 @@ "support" ], "common/OWNERS": [ - "2b7563c023ca23579b7d9a2077b3bdb5ed135bcb", + "13fbb201f77b9929d7f5693b70855c9b68abc70b", "support" ], "common/blank.html": [ @@ -138447,7 +139775,7 @@ "support" ], "common/get-host-info.sub.js": [ - "4feb5667d2093736391c71b8f0224f6d868c8cf4", + "4175d0fff3555e25a646b0673a082fefdc113fe0", "support" ], "common/large.py": [ @@ -158591,7 +159919,7 @@ "testharness" ], "custom-elements/reactions/DOMTokenList.html": [ - "9540fa3ee34ab1fd4b79eeb822e0b297ce13019f", + "7482fa56e7f4d95cfe8b8f337a9b5e63a83a6e9d", "testharness" ], "custom-elements/reactions/Document.html": [ @@ -158698,68 +160026,224 @@ "2ec52a6baa7490478ec61e72bf89b2ec09d453b5", "testharness" ], + "docs/.gitignore": [ + "e74984773578df84decce0bfd0db831220a2b008", + "support" + ], + "docs/.ruby-version": [ + "6a53a60564f3c6b4956718496467be313e77067d", + "support" + ], + "docs/CNAME": [ + "107ba21d88f427ac417717e9082a26f2c024afb8", + "support" + ], + "docs/Gemfile": [ + "aeebae31cec9dcf7a29f11858f6e67e03366e876", + "support" + ], "docs/OWNERS": [ - "7041582513b6075de0f00e4f1e8cfb7f82d50696", + "78ba9cafd318b9c08381bde3275eac6899987888", "support" ], - "docs/configuration.md": [ - "374af514ce3a2115695c8ddd01f06a8a7a3ff6ca", + "docs/_appendix/github-intro.md": [ + "afa22cb6d3764b184a04cb2e8df4bfb1768bfb19", "support" ], - "docs/css-metadata.md": [ - "0cbaadb4304de1a8da62f8b4c0250cf9892c4421", + "docs/_appendix/index.md": [ + "eb9d13a352bcecf35ce0e78f593eecac33f858cd", "support" ], - "docs/css-naming.md": [ - "4a188b3ea9901fbaf5161b5475fd2faad4d0e847", + "docs/_appendix/test-templates.md": [ + "7dd354e2935ae85d867a069eac4a1ca4225d4140", "support" ], - "docs/css-user-styles.md": [ - "a66da98c2249852ee09397615fe6baa1cd1ba5e0", + "docs/_config.yml": [ + "55b531a735fbcfb21fab226717b140ba4b3f5486", "support" ], - "docs/github-101.md": [ - "1831752f01fb5046357ac618d2d987cadc0b7c15", + "docs/_includes/footer.html": [ + "da39a3ee5e6b4b0d3255bfef95601890afd80709", "support" ], - "docs/lint-tool.md": [ - "495810d6843c5cb4089806cb0c003c0484725661", + "docs/_includes/head.html": [ + "cf56bf94617badf479be3946ed1026f501623c6e", "support" ], - "docs/manual-test.md": [ - "69b5db5e6a34a558fec9499bc17c17632f5d1ac7", + "docs/_includes/header.html": [ + "e0306c4de5f406a7b5198d6d729ea1e14c2d91cf", "support" ], - "docs/reftests.md": [ - "5962fa836245887f85e72f286da5f89cceeef0ed", + "docs/_includes/svg/octicons/LICENSE": [ + "b575eaf3c174e2406fca94f232f1a6048b905878", "support" ], - "docs/review-checklist.md": [ - "e7b7ec5f225b59a9f4bbefc49e5844571e3bf8b0", + "docs/_includes/svg/octicons/git-pull-request.svg": [ + "24da0c5d055b4b75290f1debdbeecac2d14334ef", "support" ], - "docs/review-process.md": [ - "d0067809d01c361949ad3acca51fec777cc71fae", + "docs/_includes/svg/octicons/package.svg": [ + "a8d1b8e66489b67c027b40891db67cd6e2844715", "support" ], - "docs/running_tests.md": [ - "df41c1d242dc418e06f3d442994e5ea3884a825b", + "docs/_includes/svg/octicons/pencil.svg": [ + "ace6ea5f1addcd42c843aa5a6f11f1ed85e5de53", "support" ], - "docs/submission-process.md": [ - "5615ed91292109ee62e28427a940b4bdfe98be68", + "docs/_includes/svg/octicons/tools.svg": [ + "d9eae8adc1d2bd34a51177d4de466b6ea777eb3d", "support" ], - "docs/test-format-guidelines.md": [ - "c3cbe125e713eec060171a4dbf940f9557bdae92", + "docs/_includes/svg/triangle-right.svg": [ + "9a22b3a576af7f6058284ad46448e54d4615c6c4", "support" ], - "docs/test-style-guidelines.md": [ - "c80b13887a6b913880bb768cebdf744ae54dcf04", + "docs/_reviewing-tests/checklist.md": [ + "c3f14eb28a73ec65fe80396c89fe94cd49a698ed", "support" ], - "docs/test-templates.md": [ - "15bf60a5bc7b044a867e4dc3dd9b7b9d6d0de885", + "docs/_reviewing-tests/index.md": [ + "e1b4b49cbd7ea1fd703c7ab3814deee0669e9336", + "support" + ], + "docs/_running-tests/index.md": [ + "8c996a7b797bec83c579f5fd643fdfca32a30cc6", + "support" + ], + "docs/_writing-tests/ahem.md": [ + "f3c2b3315367f25f4b29900a4ff37c7b82979e19", + "support" + ], + "docs/_writing-tests/assumptions.md": [ + "8bb7a1cda9084f179e1373b8600d597d1072c08c", + "support" + ], + "docs/_writing-tests/css-metadata.md": [ + "64bee512bd4382925d6b87ab60e3756110fe30f2", + "support" + ], + "docs/_writing-tests/css-user-styles.md": [ + "05dbc66f5b2a1a590432d4669753d16b9d2b5da2", + "support" + ], + "docs/_writing-tests/general-guidelines.md": [ + "99ef5a8156c526e22e0e06c0f5ccfc2b3176e7e7", + "support" + ], + "docs/_writing-tests/idlharness.html": [ + "2d127308c9dbb03c3e4a69964511b5e1a0e12030", + "support" + ], + "docs/_writing-tests/index.md": [ + "0001b10cca68edee0d438bc99fea3b7599f7666f", + "support" + ], + "docs/_writing-tests/lint-tool.md": [ + "76bb45b6385e589efcfadd523dac8babd07b16d6", + "support" + ], + "docs/_writing-tests/manual.md": [ + "2c2ba2b257c7705a5b1f98f259fc0bc5df4bce17", + "support" + ], + "docs/_writing-tests/reftests.md": [ + "19c5c75eb5d2a09f8ba61f94900f4e80a2d6b1bf", + "support" + ], + "docs/_writing-tests/rendering.md": [ + "ec1533df5a1bc5a13b9ceaac1265c0784ccd0a27", + "support" + ], + "docs/_writing-tests/server-features.md": [ + "b99519a3280770fb339c31237f1d90fa523e3644", + "support" + ], + "docs/_writing-tests/submission-process.md": [ + "62747b6d0328445778050f3e4d6ec46dbdc3a18c", + "support" + ], + "docs/_writing-tests/testharness-api.html": [ + "fad99e6c6946066568e605a8ac6de7e2e49ac148", + "support" + ], + "docs/_writing-tests/testharness.md": [ + "6f48119051f5d4a31f104244db92a93714e9e3d0", + "support" + ], + "docs/_writing-tests/visual.md": [ + "43ab66e46d0a59851c3ad9d11cc0e2d5dd3ca8c5", + "support" + ], + "docs/assets/_reftest_graph_example.dot": [ + "5fb97d276ed847bc271376dc6c068f57c067d790", + "support" + ], + "docs/assets/commit-directly.png": [ + "87969530ca6be9e6892b922a43d273ecf380cff0", + "support" + ], + "docs/assets/commitbtn.png": [ + "1a754511eee4e6a7e9866e5783f12b4d3a4b9c42", + "support" + ], + "docs/assets/createprlink.png": [ + "703e82b7e934f8f71ffe649bd885e6801efd7be8", + "support" + ], + "docs/assets/editbtn.png": [ + "ba920e057883a03b25311d2825b62574aac30798", + "support" + ], + "docs/assets/files-changed.png": [ + "b905e6ddabf65b1ab0019b8d94d4a9264e8d025d", + "support" + ], + "docs/assets/forkbtn.png": [ + "429836f3ca93ff4896eb5d942a09e7eafad1fb02", + "support" + ], + "docs/assets/main.scss": [ + "76e880eca5a3480076a4863d10caceb77eba376e", + "support" + ], + "docs/assets/menu.js": [ + "68fae1bc00fd7a2e3651035e6daffdd8193183e0", + "support" + ], + "docs/assets/more-commits.png": [ + "26227b779d2fe0ad84c27911c4a744e0a0f01ce2", + "support" + ], + "docs/assets/pencil-icon.png": [ + "a5c1df9b9c744ec4a61e9e390ae81fab25573562", + "support" + ], + "docs/assets/praccepteddelete.png": [ + "6adf9e6d9aad3f65fd25c7e5cfc2d3f6395beeab", + "support" + ], + "docs/assets/pullrequestbtn.png": [ + "41213000ac1fb6ab53c6a1199744ecde452eef55", + "support" + ], + "docs/assets/pullrequestlink.png": [ + "9fa2614865eb9fb6a396a453d749ef2b37114842", + "support" + ], + "docs/assets/reftest_graph_example.svg": [ + "eae9457e309f47c0236944ab2d778f2fbc32f158", + "support" + ], + "docs/assets/sendpullrequest.png": [ + "8a28f329253f3293cd8798d53672bd5a85c260ce", + "support" + ], + "docs/index.html": [ + "12c7175a4d6c486ca9ebea4c6a43d2aec9845d8b", + "support" + ], + "docs/introduction.md": [ + "2b572bb672d9b50151d984485360e2060ab29806", "support" ], "dom/OWNERS": [ @@ -158946,6 +160430,10 @@ "35ffc948502021b3367ae759b5f5ac362fd7acaa", "support" ], + "dom/events/EventListener-invoke-legacy.html": [ + "5c047e994f2bcb971918b42760c70cea7176abcb", + "testharness" + ], "dom/events/EventListenerOptions-capture.html": [ "cebd60a18add5403d4f0bd68e88e05daacfd241a", "testharness" @@ -159059,7 +160547,7 @@ "testharness" ], "dom/nodes/DOMImplementation-createDocument.html": [ - "bcf609bb6fa12bf7b8b82afbc1866652afe0253a", + "b03938e18d60802ba8ba3c0c7e8fd7714dd72768", "testharness" ], "dom/nodes/DOMImplementation-createDocumentType.html": [ @@ -159391,11 +160879,11 @@ "testharness" ], "dom/nodes/Document-createElementNS.html": [ - "2495d79aaf322aeedf3135960ea33a6e1a913a29", + "6a08de4ca3515d9e59043642c0654dc9a8fc310e", "testharness" ], "dom/nodes/Document-createElementNS.js": [ - "1047cfa1e428b3e60bd230a663dd0dcbd88ecd01", + "9b6cf141da4b259fd2a032d47082b70ccfe4a59b", "support" ], "dom/nodes/Document-createEvent.html": [ @@ -160159,7 +161647,7 @@ "support" ], "dom/ranges/Range-selectNode.html": [ - "5d6e75b9ee7692bfac16bf2aba99c0b62c3f1e0e", + "5e13a6aeaa11750bafcdac4a5845b6e1dd772238", "testharness" ], "dom/ranges/Range-set.html": [ @@ -160374,6 +161862,10 @@ "4842d40e22e25ee72536946d785a3cd03bc6a11d", "testharness" ], + "domxpath/interfaces.html": [ + "6848bd27f62d93fa527684c5625a42f4dc6470c2", + "testharness" + ], "domxpath/xml_xpath_runner.html": [ "63bb2439149f9fafbfeea5e17028823496f02fd2", "testharness" @@ -161786,6 +163278,10 @@ "5b6b6a404b32e6feeda50994e847a51e8d05f37e", "testharness" ], + "eventsource/eventsource-onmessage-trusted.htm": [ + "2e1db82bd52328761053868053e64b891c329a99", + "testharness" + ], "eventsource/eventsource-onmessage.htm": [ "df7317125e36f62825d915f0bc156b24e1f473a9", "testharness" @@ -162434,6 +163930,10 @@ "6ccdfba06f9a8692029d72ef81aee16a1996ca01", "testharness" ], + "fetch/api/headers/headers-record.html": [ + "26b2eb6cb1836f6431f16b1e60256919d9427f2b", + "testharness" + ], "fetch/api/headers/headers-structure.html": [ "226fd13f37c7c45b7ab6d64eb12f0b7e049f3032", "testharness" @@ -162643,7 +164143,7 @@ "testharness" ], "fetch/api/request/request-cache-default-conditional.html": [ - "f0c955522ab61946185dd90a22b770f69ed71bfc", + "1248501140945b8ace6997b856b584fdac4a1d04", "testharness" ], "fetch/api/request/request-cache-default.html": [ @@ -162934,6 +164434,10 @@ "10a7017b4caead6817aa08b25f14950e6402dd95", "support" ], + "fonts/OWNERS": [ + "946f23f945163bf9f9da080291b21473f6e1cbd0", + "support" + ], "fonts/math/axisheight5000-verticalarrow14000.woff": [ "5dbb41e35c4d0676c528c5be029ea90319fc200a", "support" @@ -163206,10 +164710,6 @@ "3203d8a2c2311d855f926425c6941dc4dd5f81ea", "support" ], - "fullscreen/api/blank.html": [ - "fd575582a4ef049a3203a9440a173fed8e6b218d", - "support" - ], "fullscreen/api/document-exit-fullscreen-active-document.html": [ "b4010cb68f5fa7f97e8d405e67977335e6a00795", "testharness" @@ -163235,7 +164735,7 @@ "testharness" ], "fullscreen/api/document-fullscreen-enabled.html": [ - "8bf7d3bd5abeb5291bfbca105d13619492c08acf", + "dd76a7198bdc882285bbc01e8ee6379c52237350", "testharness" ], "fullscreen/api/document-onfullscreenchange-manual.html": [ @@ -163727,7 +165227,7 @@ "support" ], "html/OWNERS": [ - "42ccbcd92825fcb6bf6efd11a2985f9cd90cdb08", + "4d636c70623f93b0673ac7d6dd00f9ab41da38e6", "support" ], "html/browsers/.gitkeep": [ @@ -163758,10 +165258,6 @@ "d58a0434f7fdb7025532496da5e9b2db6679d600", "testharness" ], - "html/browsers/browsing-the-web/history-traversal/MANIFEST": [ - "77f7e6de345d8645865225173f5d6f403a80dee3", - "support" - ], "html/browsers/browsing-the-web/history-traversal/PopStateEvent.html": [ "2a7ed0827fc61af7b3bdd238577887aff1902ea7", "testharness" @@ -163990,10 +165486,6 @@ "c36313c07b7de95c8f3a72fa9952a3e3f719975f", "testharness" ], - "html/browsers/browsing-the-web/navigating-across-documents/MANIFEST": [ - "afc8104d354fd806e92e5e3e57278795036b179d", - "support" - ], "html/browsers/browsing-the-web/navigating-across-documents/blank.html": [ "448f6f9971f92c4b9b7b7a536be353793f6147d6", "support" @@ -164054,6 +165546,30 @@ "a30db313246ebd786edcc062aed486a954f6f27f", "testharness" ], + "html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-form-submit-1.html": [ + "d0d0239f4fb20c10503820336f9d3dc2d8a42479", + "support" + ], + "html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-form-submit-2.html": [ + "dbd6c49dea5841cfa77c4201d423efdb040ce554", + "support" + ], + "html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-form-submit.html": [ + "dd5bef9b7b09f01c2ef73b8d8e0d0dfb9e157ede", + "testharness" + ], + "html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-same-origin-fragment-1.html": [ + "9afad1c6877099686e4e804352afe27bfd87413c", + "support" + ], + "html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-same-origin-fragment-2.html": [ + "daeb676215a64b7bfd24c189af2c94f8e16ab1d3", + "support" + ], + "html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-same-origin-fragment.html": [ + "125c68ae2e3e83b4da17fd0ade6c3571b49eca0d", + "testharness" + ], "html/browsers/browsing-the-web/navigating-across-documents/navigation_unload_data_url-1.html": [ "1faff37879c39aa8b9957801b71c607610af37c9", "support" @@ -164067,7 +165583,7 @@ "support" ], "html/browsers/browsing-the-web/navigating-across-documents/navigation_unload_same_origin.html": [ - "439d821e0baaebe8034287f78c84450e9622746b", + "272d9e767599cd6215770cb9f6286c54458f3215", "testharness" ], "html/browsers/browsing-the-web/navigating-across-documents/source/navigate-child-function-parent.html": [ @@ -164170,10 +165686,6 @@ "7e24cd47a4ae882b40f7f8798a44faf05f034c3d", "testharness" ], - "html/browsers/browsing-the-web/scroll-to-fragid/MANIFEST": [ - "f86e15c066d8f0c782746c8b00a84d08cca22f60", - "support" - ], "html/browsers/browsing-the-web/scroll-to-fragid/scroll-frag-percent-encoded.html": [ "0af4162b8729fa5a8db73b24469fa91cc012fef8", "testharness" @@ -164214,14 +165726,18 @@ "0e70b1856103d4b635f133ae3a19865b4bbfb8c9", "testharness" ], - "html/browsers/browsing-the-web/unloading-documents/MANIFEST": [ - "1bfc6e77691d63a79b5ab41c63ab69d1a600411d", - "support" - ], "html/browsers/browsing-the-web/unloading-documents/base.html": [ "a1a1effc33aad51d006fce3f406edaf6c65bfc0a", "support" ], + "html/browsers/browsing-the-web/unloading-documents/beforeunload-canceling-1.html": [ + "a80c64c5fc7755e2f332e0383b13f5ef4af44f18", + "support" + ], + "html/browsers/browsing-the-web/unloading-documents/beforeunload-canceling.html": [ + "3164df75ba277feef3b5c9a1ff6021f3e51d48de", + "testharness" + ], "html/browsers/browsing-the-web/unloading-documents/beforeunload-on-history-back-1.html": [ "0d23c9bac35bfdcd967ad099f1b0b62f16ac7d60", "support" @@ -164290,10 +165806,6 @@ "c37ad1ea3a1c8e389f6066c95c7b2745648e9e7e", "testharness" ], - "html/browsers/browsing-the-web/unloading-documents/prompt/MANIFEST": [ - "21581330547a33c8ffc532d918f1f73f19e51a23", - "support" - ], "html/browsers/browsing-the-web/unloading-documents/prompt/manual-001.html": [ "895580cf70904918397da755527c5dda3f227b8a", "support" @@ -164458,10 +165970,6 @@ "97d775ccd5a50fe561100794417c7c7eb97939e7", "testharness" ], - "html/browsers/browsing-the-web/unloading-documents/unload/MANIFEST": [ - "8054c9fea0f79b5a190b5a299f62c72cc86eb931", - "support" - ], "html/browsers/browsing-the-web/unloading-documents/unload/manual-001-1.html": [ "ff9aaf41f253012553868cc998e0b97ab6fe2970", "support" @@ -164906,6 +166414,10 @@ "bc622cdff29f6d8369d7bd07036bb220ea5774de", "testharness" ], + "html/browsers/history/the-location-interface/location-protocol-setter-with-colon.sub.html": [ + "fe8356bed0dc28851cf8cfb606d72cb71c018190", + "testharness" + ], "html/browsers/history/the-location-interface/location-protocol-setter.html": [ "70f3c81ddfe58e8751543513fbd8ea44a6b122a1", "testharness" @@ -164915,7 +166427,19 @@ "testharness" ], "html/browsers/history/the-location-interface/location-stringifier.html": [ - "d7cea275e734051c77e820488ae04742dc073c26", + "25cf5b1fabfc32bdfed8803a07f4498aa764d148", + "testharness" + ], + "html/browsers/history/the-location-interface/location-symbol-toprimitive.html": [ + "f1216c7e9375e855e4e57d5396eee58c1eac0950", + "testharness" + ], + "html/browsers/history/the-location-interface/location-tojson.html": [ + "caeb36aec042ae39289becc4250f941822973fdb", + "testharness" + ], + "html/browsers/history/the-location-interface/location-valueof.html": [ + "f192bc7f3ab76ba77002a00086a62088e46ad777", "testharness" ], "html/browsers/history/the-location-interface/location_assign.html": [ @@ -165058,6 +166582,10 @@ "3f86c065f9ea20c9b9a0c6fd2f0fd94ae73f3088", "testharness" ], + "html/browsers/history/the-location-interface/resources/post-your-protocol.html": [ + "d6a54e137ca516d16fb64bed157b0ac3ceaab99c", + "support" + ], "html/browsers/history/the-location-interface/same_origin_frame.html": [ "ffabc8fb608c6dad4e7d1d148a4d77cdc4231e68", "support" @@ -165690,10 +167218,6 @@ "ed586ee147452ba6cb8d90782b266807f8b7975e", "testharness" ], - "html/browsers/windows/browsing-context-names/MANIFEST": [ - "1c482b955fabc947249be53f31407e947ff8a9c8", - "support" - ], "html/browsers/windows/browsing-context-names/browsing-context-choose-existing.html": [ "381a1a09c09e8c43849a7b8f4d120507b2196aeb", "testharness" @@ -165746,10 +167270,6 @@ "da39a3ee5e6b4b0d3255bfef95601890afd80709", "support" ], - "html/browsers/windows/nested-browsing-contexts/MANIFEST": [ - "3ec731d9752fe6648d2ed4ad1d2254b0d0b7d0a8", - "support" - ], "html/browsers/windows/nested-browsing-contexts/contains.json": [ "0f2e164f656015ba43e2b3471af67a5d16fb97ea", "support" @@ -166599,7 +168119,7 @@ "support" ], "html/dom/elements-forms.js": [ - "32a72219fa5b41843e5c9bc3e1c5286c95bd81e2", + "a8b9288119430a636870a095c7fc2de686808490", "support" ], "html/dom/elements-grouping.js": [ @@ -166611,7 +168131,7 @@ "support" ], "html/dom/elements-misc.js": [ - "c0d89d2884a9d27f2417f10f2ebc9c40192d1a5f", + "ec0bd7b81c0d0fe1c525380eafd2a04a0a0fb219", "support" ], "html/dom/elements-obsolete.js": [ @@ -167427,7 +168947,11 @@ "support" ], "html/dom/interfaces.html": [ - "4042910564836d6861e285f56ccb4a95f80d2604", + "1f34a3ba45166c0d0c14cebb7846408ec120b9f1", + "testharness" + ], + "html/dom/interfaces.worker.js": [ + "9e91d411453d4fdbcead08ad9daccbe2d9d7a975", "testharness" ], "html/dom/new-harness.js": [ @@ -167482,6 +169006,26 @@ "7675f0b4e2b364d84cc878edf0608cf563267e6c", "support" ], + "html/dom/resources/interfaces.idl": [ + "4319380dff6b1b48a5a8b75efdf6819fc34542fb", + "support" + ], + "html/dom/resources/self-origin-subframe.html": [ + "a94fee503c6ad28fdedf1f62fcd96465f7b88e71", + "support" + ], + "html/dom/resources/untested-interfaces.idl": [ + "5aef136a29dace7a43fd70958428bba4304f4502", + "support" + ], + "html/dom/self-origin.any.js": [ + "187b3657775b815f9360c01d2ddb358a53e1f920", + "testharness" + ], + "html/dom/self-origin.sub.html": [ + "d821d4b41ac8517d345f86a9f8298f67284d1967", + "testharness" + ], "html/editing/.gitkeep": [ "da39a3ee5e6b4b0d3255bfef95601890afd80709", "support" @@ -172018,10 +173562,14 @@ "da39a3ee5e6b4b0d3255bfef95601890afd80709", "support" ], - "html/rendering/bindings/the-button-element-0/.gitkeep": [ - "da39a3ee5e6b4b0d3255bfef95601890afd80709", + "html/rendering/bindings/the-button-element/button-type-menu-historical-ref.html": [ + "95f61bd62a89467229aac48744a2ccefd62e81c6", "support" ], + "html/rendering/bindings/the-button-element/button-type-menu-historical.html": [ + "0e4bb72d2be50b4c08acdc23692d6187afb7c160", + "reftest" + ], "html/rendering/bindings/the-details-element-0/.gitkeep": [ "da39a3ee5e6b4b0d3255bfef95601890afd80709", "support" @@ -173546,6 +175094,10 @@ "c5c83f849ab7a1cb6a0c1e829207ca7320b68677", "testharness" ], + "html/semantics/embedded-content/media-elements/ready-states/autoplay-with-slow-text-tracks.html": [ + "ff9cdde226ae066001108c2237345a5fe3a0b3a4", + "testharness" + ], "html/semantics/embedded-content/media-elements/ready-states/autoplay.html": [ "6ca8c7a50317c932254cf8254c7638d61f8bb00a", "testharness" @@ -173850,6 +175402,14 @@ "8840fa9072d9367f358721ed757bd3d23dd64967", "testharness" ], + "html/semantics/embedded-content/resources/should-load.html": [ + "7cc95b9b2eb8c3f2d89278d22db271b9ae42e107", + "support" + ], + "html/semantics/embedded-content/resources/should-not-load.html": [ + "a1657fc9e655ad0a30ced47a1412b6c34ba964b9", + "support" + ], "html/semantics/embedded-content/svg/.gitkeep": [ "da39a3ee5e6b4b0d3255bfef95601890afd80709", "support" @@ -173862,6 +175422,10 @@ "88f44bcf9beb7329b001b1c1a56b7fb0c7363f1a", "testharness" ], + "html/semantics/embedded-content/the-area-element/area-download-click.html": [ + "b3172223ac173b65870f5d061cc8600a67956e10", + "testharness" + ], "html/semantics/embedded-content/the-area-element/area-processing.html": [ "52d24573a44e98a360212c80151227fc131754a8", "testharness" @@ -174379,11 +175943,15 @@ "support" ], "html/semantics/embedded-content/the-canvas-element/toBlob.jpeg.html": [ - "d7e7c17c306c8e7dd60e2199255b20d6bc871f6e", + "6ac7096aa4c4db6206e212a6e229419d1f35bf2e", + "testharness" + ], + "html/semantics/embedded-content/the-canvas-element/toBlob.null.html": [ + "932034c2b0172b26a800aebaa5eb3a19e2034c93", "testharness" ], "html/semantics/embedded-content/the-canvas-element/toBlob.png.html": [ - "bfd114af336758effac1c29d202abd0775ab5b2e", + "cb8667e2238b2e5b8bb703436e1dc766ba8600ae", "testharness" ], "html/semantics/embedded-content/the-canvas-element/toDataURL.arguments.1.html": [ @@ -174531,7 +176099,11 @@ "support" ], "html/semantics/embedded-content/the-embed-element/embed-ignored-in-media-element.html": [ - "94a08a7a5b5ec5c26f1974d5e5d8b4381a60baf5", + "cb57cbe52e4f586006461b8eae6bc233b5ed5ad5", + "testharness" + ], + "html/semantics/embedded-content/the-embed-element/embed-in-object-fallback-2.html": [ + "a7da1fefb2403084205bf1ead77b422e69dc33b6", "testharness" ], "html/semantics/embedded-content/the-embed-element/embed-in-object-fallback-subdocument.html": [ @@ -174847,7 +176419,7 @@ "testharness" ], "html/semantics/embedded-content/the-object-element/object-events.html": [ - "608ed62917c18d711e22d3f9c310f8e8491cd046", + "fcced7c858d527f7c0d4e792c683c21a68c2711b", "testharness" ], "html/semantics/embedded-content/the-object-element/object-fallback.html": [ @@ -174858,6 +176430,14 @@ "bf051d12a045698b2f9c3870ad4236f65bb85f51", "testharness" ], + "html/semantics/embedded-content/the-object-element/object-ignored-in-media-element.html": [ + "62a6c079bc00ae6ebeca363fd42d8701c4791222", + "testharness" + ], + "html/semantics/embedded-content/the-object-element/object-in-object-fallback-2.html": [ + "a5bb885111ac7ea02241957ee7233491c2277516", + "testharness" + ], "html/semantics/embedded-content/the-object-element/test0.html": [ "04319dea2f1e0b00e8db1703f2072ec22f1a82ad", "support" @@ -175118,6 +176698,18 @@ "5cb7e225df89561a1137933615b93c9912444006", "support" ], + "html/semantics/forms/form-submission-0/form-data-set-usv-form.html": [ + "82386590b55a9028e47d16d6a8c67cd0e44e919e", + "support" + ], + "html/semantics/forms/form-submission-0/form-data-set-usv.html": [ + "6c089d542437cbd969ec76959344d9209c54f5ea", + "testharness" + ], + "html/semantics/forms/form-submission-0/form-echo.py": [ + "80edbee4a41bb05c1b71e60cc6cce363f764b108", + "support" + ], "html/semantics/forms/form-submission-0/getactionurl.html": [ "92c8c30e186f0a94a962bb5c4be7acf0860b943e", "testharness" @@ -175214,6 +176806,10 @@ "322fc4a9f013595a9ac2550401a2743b2ab85b07", "testharness" ], + "html/semantics/forms/the-button-element/button-menu-historical.html": [ + "61d2efc186cc8124ca884dbb8f5b74ef6ca339e8", + "testharness" + ], "html/semantics/forms/the-button-element/button-validation.html": [ "a4bb6a1e45b5b92e170e87d153a44f2027ff3717", "testharness" @@ -175423,7 +177019,7 @@ "testharness" ], "html/semantics/forms/the-input-element/selection.html": [ - "9a37a4f941d9c3688c0f4d3e86ca6fa5986b789c", + "0ebcacbae26e48abf51d30410c490da698b087dc", "testharness" ], "html/semantics/forms/the-input-element/telephone.html": [ @@ -175451,7 +177047,7 @@ "testharness" ], "html/semantics/forms/the-input-element/valueMode.html": [ - "ee58fbca9963dee22a2572eecf8fa9b047e7a837", + "1446be6aa4ad1b3baee156a332d56989ebd88d3f", "testharness" ], "html/semantics/forms/the-input-element/week.html": [ @@ -175467,7 +177063,7 @@ "testharness" ], "html/semantics/forms/the-label-element/labelable-elements.html": [ - "fcb095273778268e18f45ae4bfb831ebdabde738", + "421328f898fb2487152f6fd8df315fc22ddea61a", "testharness" ], "html/semantics/forms/the-legend-element/.gitkeep": [ @@ -175786,14 +177382,6 @@ "680ef0dbfea0bcb7ca12905c4d6ccf5a65b29707", "reftest" ], - "html/semantics/grouping-content/the-li-element/grouping-li-reftest-no-list-owner-ref.html": [ - "3d09b34aee7f995c2e77673602443b1d9bc1a940", - "support" - ], - "html/semantics/grouping-content/the-li-element/grouping-li-reftest-no-list-owner.html": [ - "829a238ff1da7b16a7ee0d39df51147f7a5882fd", - "reftest" - ], "html/semantics/grouping-content/the-li-element/grouping-li-reftest-not-being-rendered-ref.html": [ "2547d6ce7e7a8062fae3381b8e3098641dfb0b77", "support" @@ -176147,7 +177735,7 @@ "support" ], "html/semantics/scripting-1/the-script-element/data-url.html": [ - "77882c90bfdaffd912fda1eeb1d274136c4d93bd", + "1fe7fe27c3680b24fbbb9c09c849ecb007637d3f", "testharness" ], "html/semantics/scripting-1/the-script-element/external-script-utf8.js": [ @@ -176198,6 +177786,170 @@ "12842b6e600ac2fc737718d8a9ba3385ed8b678b", "support" ], + "html/semantics/scripting-1/the-script-element/module/crossorigin-common.js": [ + "a58804b6e2495f99ec3f8b7894ff52186a49a427", + "support" + ], + "html/semantics/scripting-1/the-script-element/module/crossorigin-import-different.sub.html": [ + "eac09ab0af026a54e327d2677e5ce59b357e4f87", + "support" + ], + "html/semantics/scripting-1/the-script-element/module/crossorigin-import-missingheader.sub.html": [ + "d1b1f4ee9c3cedc0ccc5feeac4ffc0fd1aa5ee1f", + "support" + ], + "html/semantics/scripting-1/the-script-element/module/crossorigin-import-same.sub.html": [ + "f8eee428042146ee9e0ad54a3c4dea0ba0aa3c4e", + "support" + ], + "html/semantics/scripting-1/the-script-element/module/crossorigin-import-wrongheader.sub.html": [ + "c28a19ced0695d63ae15c4999ac9098c56e8bdc4", + "support" + ], + "html/semantics/scripting-1/the-script-element/module/crossorigin-root-different.sub.html": [ + "e49b493849c6dd9475415ffe3a2605a1cf3d8bbc", + "support" + ], + "html/semantics/scripting-1/the-script-element/module/crossorigin-root-missingheader.sub.html": [ + "7f4acc369b1d8da4ac88475ed6641e7333a415ac", + "support" + ], + "html/semantics/scripting-1/the-script-element/module/crossorigin-root-same.sub.html": [ + "9207cb7eb434044c7f0a8641942548f40c1a7d97", + "support" + ], + "html/semantics/scripting-1/the-script-element/module/crossorigin-root-wrongheader.sub.html": [ + "2bc22bf8953b59e32922e3a70dc37739ddc36e3a", + "support" + ], + "html/semantics/scripting-1/the-script-element/module/crossorigin-scripterror.js": [ + "e4fbb9e49271757f06e1f55d45a4e0d354e82463", + "support" + ], + "html/semantics/scripting-1/the-script-element/module/crossorigin.html": [ + "d18faac90e11617824f0a2bc2ead29ad14de3622", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/module/errorhandling-parseerror-common.js": [ + "ff9af4e5253db096cd5de8d2e7ed74cd05ed2561", + "support" + ], + "html/semantics/scripting-1/the-script-element/module/errorhandling-parseerror-dependent.html": [ + "ac1683bed4b147a291d9a6d50a7a67d8e8ccc080", + "support" + ], + "html/semantics/scripting-1/the-script-element/module/errorhandling-parseerror-dependent.js": [ + "f71f5200f0c4cda56b6db0993958cbf992ed8bc3", + "support" + ], + "html/semantics/scripting-1/the-script-element/module/errorhandling-parseerror-dependentmultiple.html": [ + "956e41c3916bdf33307cd8c6e76fd48079433807", + "support" + ], + "html/semantics/scripting-1/the-script-element/module/errorhandling-parseerror-dependentmultiple.js": [ + "f71f5200f0c4cda56b6db0993958cbf992ed8bc3", + "support" + ], + "html/semantics/scripting-1/the-script-element/module/errorhandling-parseerror-root.html": [ + "2146cfa35d1127991e435e01ba2016e239c541cc", + "support" + ], + "html/semantics/scripting-1/the-script-element/module/errorhandling-wrongMimetype-import.js": [ + "20e11dd83dec0b7e06abdb50fb1c87d12ec65f88", + "support" + ], + "html/semantics/scripting-1/the-script-element/module/errorhandling-wrongMimetype.js": [ + "18d5352143f159db085e948cda19b4130fa77576", + "support" + ], + "html/semantics/scripting-1/the-script-element/module/errorhandling.html": [ + "ffd411f153c55abf313fba5ab349b6a0cc50ba0f", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/module/execorder-dynamicordered2.js": [ + "9a7d69437d3dda9d5f5de30cf917365d660b85ac", + "support" + ], + "html/semantics/scripting-1/the-script-element/module/execorder-dynamicordered3.js": [ + "ac0a029ab4c5f81ea6ec25ec61c7d6d4fdd5dc88", + "support" + ], + "html/semantics/scripting-1/the-script-element/module/execorder-dynamicordered4.js": [ + "c7c721d1e5ee00aee1e058185e6d29c4006e5b7d", + "support" + ], + "html/semantics/scripting-1/the-script-element/module/execorder-dynamicunordered1.js": [ + "ffd469b582c18993119475e6cb3a47cfb34f49b0", + "support" + ], + "html/semantics/scripting-1/the-script-element/module/execorder-dynamicunordered2.js": [ + "6c182afdedd7375b913a17e41b66f5e498ea2ff5", + "support" + ], + "html/semantics/scripting-1/the-script-element/module/execorder-parsedordered2.js": [ + "fd738beae746d319cfd2dedc71b38b37a26d4c82", + "support" + ], + "html/semantics/scripting-1/the-script-element/module/execorder-parsedordered4.js": [ + "4a76a45756de836cf2861910264bd6fe0b0fb497", + "support" + ], + "html/semantics/scripting-1/the-script-element/module/execorder-parsedunordered1.js": [ + "49bf3814facc423e5706937ca7db8a861eac7118", + "support" + ], + "html/semantics/scripting-1/the-script-element/module/execorder-parsedunordered2.js": [ + "104ef1252bb01f2532f5445f1cac38d2a32ac42f", + "support" + ], + "html/semantics/scripting-1/the-script-element/module/execorder.html": [ + "66a5dcd461023501ed125402aa5393c168031614", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/module/imports-a.js": [ + "8188ade38a674e3ac9d4a404f318d499713d4801", + "support" + ], + "html/semantics/scripting-1/the-script-element/module/imports-b.js": [ + "53af00f3687e585a236de084d453fb1f13117872", + "support" + ], + "html/semantics/scripting-1/the-script-element/module/imports-cycle-a.js": [ + "2d94b89df2a1bb5d96c717ba95fa5e0574ebe74d", + "support" + ], + "html/semantics/scripting-1/the-script-element/module/imports-cycle-b.js": [ + "e58cb6040ad4272406be3090fe5bc2b365fec1ab", + "support" + ], + "html/semantics/scripting-1/the-script-element/module/imports-cycle.js": [ + "462fe462bf92e1df232228cc1ce338ff522febbd", + "support" + ], + "html/semantics/scripting-1/the-script-element/module/imports-inc-a.js": [ + "3d77b53d9fdb992ff731a28537469c61b7e5634b", + "support" + ], + "html/semantics/scripting-1/the-script-element/module/imports-inc-ab.js": [ + "ea38bf882dd909d6270018cad300796ddac0141a", + "support" + ], + "html/semantics/scripting-1/the-script-element/module/imports-inc-b.js": [ + "66142c159e6e3d0bbf9ec303368bcd2476539125", + "support" + ], + "html/semantics/scripting-1/the-script-element/module/imports-self-inner.js": [ + "690a1d3dd7f4b189121c6d04e736de5afe45cd48", + "support" + ], + "html/semantics/scripting-1/the-script-element/module/imports-self.js": [ + "26b832413187999e45c0520e171f5fc61a911b20", + "support" + ], + "html/semantics/scripting-1/the-script-element/module/imports.html": [ + "997cee37dcd202498196e63e0f66035979121b7f", + "testharness" + ], "html/semantics/scripting-1/the-script-element/nomodule-reflect.html": [ "ac2b3c16e9e9263cd4c14de205b63709c14ec2e3", "testharness" @@ -176858,6 +178610,10 @@ "da39a3ee5e6b4b0d3255bfef95601890afd80709", "support" ], + "html/semantics/text-level-semantics/the-a-element/a-download-click.html": [ + "64cd3f544c42f21c33456e000788aeaab2fed3eb", + "testharness" + ], "html/semantics/text-level-semantics/the-a-element/a-stringifier.html": [ "93f820588f813b3e340188c88be1532d6e549757", "testharness" @@ -177166,6 +178922,10 @@ "da39a3ee5e6b4b0d3255bfef95601890afd80709", "support" ], + "html/syntax/OWNERS": [ + "946f23f945163bf9f9da080291b21473f6e1cbd0", + "support" + ], "html/syntax/html-element-list.js": [ "948b02875b01db1deb841d7362d9487a853c2563", "support" @@ -177223,7 +178983,7 @@ "support" ], "html/syntax/parsing-html-fragments/the-input-byte-stream-015.html": [ - "6564a6f963fdccf6156287f0acd6c20eaacbd48a", + "3189757330f3abc8d209f9c75827d6ea616800b8", "testharness" ], "html/syntax/parsing-html-fragments/the-input-byte-stream-015.html.headers": [ @@ -177774,6 +179534,10 @@ "da39a3ee5e6b4b0d3255bfef95601890afd80709", "support" ], + "html/tools/OWNERS": [ + "946f23f945163bf9f9da080291b21473f6e1cbd0", + "support" + ], "html/tools/build.sh": [ "a1c84e96bdd1719cc57f72343eff80783e7eca73", "support" @@ -177826,6 +179590,18 @@ "5ee9005c14491a0c33f3fdba4771a8a491f43d8c", "testharness" ], + "html/webappapis/dynamic-markup-insertion/opening-the-input-stream/origin-check-in-document-open-basic.html": [ + "8544d006dcbad6142d31c81adcba3528435a8b3b", + "testharness" + ], + "html/webappapis/dynamic-markup-insertion/opening-the-input-stream/origin-check-in-document-open-same-origin-domain.sub.html": [ + "4549cb718f2e4a1e22a561ef0eb0718c1ed6b05c", + "testharness" + ], + "html/webappapis/dynamic-markup-insertion/opening-the-input-stream/resources/set-document-domain.html": [ + "f777c3f2ce746d415814083dc932f4a25a82c34f", + "support" + ], "html/webappapis/idle-callbacks/basic.html": [ "1349f9f3bc645fc999dcd2da6e53aa46779053c6", "testharness" @@ -177850,6 +179626,10 @@ "6375309c43a1e7c9fafdc95f01fcccb4c92f8afc", "testharness" ], + "html/webappapis/idle-callbacks/callback-suspended.html": [ + "f3f9eeda9e2d47825c77eaf278be6e976a8e1715", + "testharness" + ], "html/webappapis/idle-callbacks/callback-timeout-with-raf.html": [ "febb81c38f530c81d9e9837df2c6d603225ecfd1", "testharness" @@ -177859,13 +179639,17 @@ "testharness" ], "html/webappapis/idle-callbacks/cancel-invoked.html": [ - "d0128b4d4b805a58926ad895f35b341321cf56ec", + "30787d765fa435c1392bd852559042bf3c2e2553", "testharness" ], "html/webappapis/idle-callbacks/idlharness.html": [ "520ee58982b43875f3caa08d7f46b9c6311be0b6", "testharness" ], + "html/webappapis/idle-callbacks/resources/post_name_on_load.html": [ + "4c2db9979bcf68c61e62a805d59d95b7d164d9af", + "support" + ], "html/webappapis/scripting/.gitkeep": [ "da39a3ee5e6b4b0d3255bfef95601890afd80709", "support" @@ -177907,7 +179691,7 @@ "support" ], "html/webappapis/scripting/events/body-exposed-window-event-handlers.html": [ - "d5c9f5ddded8fa916f7e63a90d45fc9e01aa34a6", + "11dc83c2b4c817e1eed694ed199d327e15abcfa6", "testharness" ], "html/webappapis/scripting/events/body-onload.html": [ @@ -177927,7 +179711,7 @@ "testharness" ], "html/webappapis/scripting/events/event-handler-onauxclick.html": [ - "0ed8fb35fb68922fcbfbd4ce9c5fbc520113fb7d", + "0f882828f5cc321992ab9265fe632e55c6d6760b", "testharness" ], "html/webappapis/scripting/events/event-handler-onresize.html": [ @@ -177935,7 +179719,7 @@ "testharness" ], "html/webappapis/scripting/events/event-handler-processing-algorithm.html": [ - "33144e67a681a2f868628f7926efd60d5b078aba", + "a7c163d53eb559ea710527cace404ed88e9c4d0a", "testharness" ], "html/webappapis/scripting/events/event-handler-spec-example.html": [ @@ -178122,6 +179906,50 @@ "fe6fe8532d128af0e39adba576ac28a72c227684", "support" ], + "html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/allow-crossorigin.html": [ + "c6aab5c8b004d56b9bfd2113c147ed4243990b03", + "testharness" + ], + "html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/disallow-crossorigin.html": [ + "0d1ff0e1ba10e41d8252d30287a36f95aa14d35a", + "testharness" + ], + "html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-event-constructor.html": [ + "8bbb29655a28bc76708e802d617a5a6046b4e4b0", + "testharness" + ], + "html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events-attached-in-event.html": [ + "1681b994a1f1573f5705ddc14a601d99c228abb1", + "testharness" + ], + "html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events-onerror.html": [ + "be6f591b06b633d7a4e04003bd6b79788c146c16", + "testharness" + ], + "html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.dedicatedworker.html": [ + "ad80abc53e43e842e578433e272818ad28267b3c", + "testharness" + ], + "html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.html": [ + "fc81dcbe8eb1c714363475d3c63f30d0dee3c8a5", + "testharness" + ], + "html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.serviceworker.https.html": [ + "831766740d8f2e7ef10fa3ada49e1560ec7288c3", + "testharness" + ], + "html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.sharedworker.html": [ + "f333e8b05918b1be8a6639d502c1eb3167e57915", + "testharness" + ], + "html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/support/promise-access-control.py": [ + "60cc5d8acb00fc9dbe591045f3800b9aac765921", + "support" + ], + "html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/support/promise-rejection-events.js": [ + "c0b190fc6cca74b7f21c1a3c91c0ac40ce66fd61", + "support" + ], "html/webappapis/scripting/processing-model-2/window-onerror-parse-error.html": [ "601d4362c924a17b7a9c5ee7dc8183d9b71de94d", "testharness" @@ -178315,7 +180143,7 @@ "testharness" ], "images/OWNERS": [ - "58ed5b9aa2e4b4d0ac198774c40e02baf4d648dd", + "d710128bbddabb931b340bd29478e5998fad9090", "support" ], "images/anim-gr.gif": [ @@ -179018,6 +180846,18 @@ "b1f21c6a67c048f668ee6bd826fcfd903544ad41", "support" ], + "media-capabilities/README.md": [ + "7d6ceec9a74d5485a6f7d51504f22e5eaf81bfee", + "support" + ], + "media-capabilities/idlharness.html": [ + "4ee7d3eb90c352a0888468578e49bbd49f91b789", + "testharness" + ], + "media-capabilities/query.html": [ + "11afd4ba4eb40a5ff89c06ecf375eb16df65faaa", + "testharness" + ], "media-source/OWNERS": [ "90e737b8379ed92920c5f9f37ec653c758b93d9c", "support" @@ -179626,6 +181466,26 @@ "2ef6c1440dc82da13537af344dfa6a2c84cc0808", "support" ], + "mediasession/README.md": [ + "5ceecb2611837e6c52a303cec32d8cb9fabe93a6", + "support" + ], + "mediasession/idlharness.html": [ + "9aa84a0143daf03d9a95108d0407fda2443c9849", + "testharness" + ], + "mediasession/mediametadata.html": [ + "0f0c1f7e3b58321a76229fa5a93e80b6863f181f", + "testharness" + ], + "mediasession/playbackstate.html": [ + "e9edd18778d437b039bc45f2e3f35db725528447", + "testharness" + ], + "mediasession/setactionhandler.html": [ + "70a1f9e81faa3dbbe320a71a008e4594a29878a8", + "testharness" + ], "microdata/conformance-requirements/.gitkeep": [ "da39a3ee5e6b4b0d3255bfef95601890afd80709", "support" @@ -181323,7 +183183,7 @@ "testharness" ], "navigation-timing/nav2_test_attributes_values.html": [ - "75e8c32b7ed8c25742fe6a4358fd2abe1af813f6", + "f13d01f6c6cfa90b2bd92312b3c2e1c1b3aeed59", "testharness" ], "navigation-timing/nav2_test_document_open.html": [ @@ -181331,7 +183191,7 @@ "testharness" ], "navigation-timing/nav2_test_instance_accessors.html": [ - "49311fe1f5609f84eeb5fbcd6118f769a5c4a65e", + "c4960ce93c9379763845fb2cae9249d4e4c18376", "testharness" ], "navigation-timing/nav2_test_navigate_within_document.html": [ @@ -187266,6 +189126,10 @@ "bf2ff60a9730540a913b8008cb1d8d3a30e1998c", "testharness" ], + "offscreen-canvas/tools/OWNERS": [ + "946f23f945163bf9f9da080291b21473f6e1cbd0", + "support" + ], "offscreen-canvas/tools/build.sh": [ "e4f65db6a439972ed7a83f4cc2c9bae792ec2d27", "support" @@ -189599,7 +191463,7 @@ "manual" ], "pointerevents/pointerevent_lostpointercapture_for_disconnected_node-manual.html": [ - "04281aadb5dc8700ea999317090273113539ca49", + "be37ae30b37e73c9281757bc4a7bbe296f3ed76b", "manual" ], "pointerevents/pointerevent_lostpointercapture_is_first-manual.html": [ @@ -189611,7 +191475,7 @@ "manual" ], "pointerevents/pointerevent_on_event_handlers.html": [ - "59d5ba4367bc6fdcc017655076f79487cda2664f", + "1e73f3e89cde0f9aa4146a9609ce7a943e39ecb6", "testharness" ], "pointerevents/pointerevent_pointerId_scope-manual.html": [ @@ -189663,7 +191527,7 @@ "manual" ], "pointerevents/pointerevent_pointerout_pen-manual.html": [ - "ef35cf5e02ab60c05f8013b14d8c55b004dc4777", + "291ae96aa3292c950dc6671b796efb5e0c1689e3", "manual" ], "pointerevents/pointerevent_pointerout_received_once-manual.html": [ @@ -189671,7 +191535,7 @@ "manual" ], "pointerevents/pointerevent_releasepointercapture_events_to_original_target-manual.html": [ - "b2de73875ec86676b22a6b6b77f5837dbc47271d", + "72e098fbfe60563a467676f652d51f61b9b11f1e", "manual" ], "pointerevents/pointerevent_releasepointercapture_invalid_pointerid-manual.html": [ @@ -189898,60 +191762,60 @@ "9e687345acc5b9966172bab7da04e3e7019e34c5", "manual" ], - "preload/avoid_delaying_onload_link_preload.html": [ - "96dcf3f2878c59dbd6b60534217396e7dc2032b6", + "preload/avoid-delaying-onload-link-preload.html": [ + "7f7c89ffad6f9bc2909d56e36b238ffcba260849", "testharness" ], - "preload/delaying_onload_link_preload_after_discovery.html": [ - "132be92fcb8d57d62317224366a9d9ae6ad16545", + "preload/delaying-onload-link-preload-after-discovery.html": [ + "f51c4e4894751ae3555a44cf02f28c6b918cdab8", "testharness" ], - "preload/download_resources.html": [ - "4a997cc5a9e9e9aa507c27c0e05eba4de063811d", + "preload/download-resources.html": [ + "fea098d865e90bd3f8f2f5405f822aadcfad5b07", "testharness" ], - "preload/dynamic_adding_preload.html": [ - "aa0f8f3623826fc6daeab5fd90ba01c4b192b3dd", + "preload/dynamic-adding-preload.html": [ + "9f952dc438559f60028e09bc47d4a88722a56408", "testharness" ], - "preload/fetch_destination.https.html": [ - "d14c2c6ba05f42797fa08b2d0fd37165cee18779", + "preload/fetch-destination.https.html": [ + "d24a50f1f0a52371f84ec35ccc1d99df63c7da44", "testharness" ], - "preload/link_header_preload.html": [ - "f1950e0ac49ab61690d25c0f7f6209ceddf6a57c", + "preload/link-header-preload-delay-onload.html": [ + "636fd33d632c5d3dfeacd0e3d479ebbba1d0a436", "testharness" ], - "preload/link_header_preload.html.headers": [ - "d30ac6e50fb6d6b996814f9e98d88262d715c16e", - "support" - ], - "preload/link_header_preload_delay_onload.html": [ - "81fa2dda43274af41a8e2169cbffe60a1fe74342", - "testharness" - ], - "preload/link_header_preload_delay_onload.html.headers": [ + "preload/link-header-preload-delay-onload.html.headers": [ "a1c0a4f2f25e358784567be95cc02edc03173f45", "support" ], - "preload/onerror_event.html": [ - "af4ec5f71362fde7fc2ca38b081a5ea4c8789ee3", + "preload/link-header-preload.html": [ + "93d80aee2daf5434d78484a412213f17fa92886f", "testharness" ], - "preload/onload_event.html": [ - "c06c6b1c051046f7bda6fde61b54b65ad312a726", + "preload/link-header-preload.html.headers": [ + "d30ac6e50fb6d6b996814f9e98d88262d715c16e", + "support" + ], + "preload/onerror-event.html": [ + "3c7ad9853f296438af51a48dbeb0d3554c7e69fc", + "testharness" + ], + "preload/onload-event.html": [ + "e7e49848d7d8a77323801b1a8ef750585a11b3f6", "testharness" ], "preload/preload-csp.sub.html": [ - "b5c1591086b0b4e834048147c301c3b8754f3ae9", + "171151dace92c82412d086bf3a3f93b90edd1744", "testharness" ], "preload/preload-default-csp.sub.html": [ - "dc0729d4c4f0262fd8a4177940ba5869c3adac87", + "9a3eb4d9f73417bc57ca0128d97fe2c154f26204", "testharness" ], - "preload/preload_with_type.html": [ - "7f999849e244342dbeea1bd12d46d8dc93b7456c", + "preload/preload-with-type.html": [ + "e1635e40dd3b920c3c4738771a06ddc8761970d2", "testharness" ], "preload/resources/dummy.css": [ @@ -189974,16 +191838,20 @@ "04e1fd5f1b1829ab9df389f9497681c585b42b78", "support" ], + "preload/resources/preload_helper.js": [ + "bb0ed5216594759b2f0f0aa0cf3e9d2f072950d9", + "support" + ], "preload/resources/square.png": [ "fa547a180b73a5422d52c1702c9d1e43b1083f9c", "support" ], - "preload/single_download_late_used_preload.html": [ - "863539685e8b22800f0307249c23e6e0d277f878", + "preload/single-download-late-used-preload.html": [ + "8476855931b0148754287ca5674000a1b6a9bca2", "testharness" ], - "preload/single_download_preload.html": [ - "5d250f6164bec2482bbfa005dae7605a96fe8958", + "preload/single-download-preload.html": [ + "7f968cf3a8538ca99e353a3e47e120fb7833c8e7", "testharness" ], "presentation-api/OWNERS": [ @@ -190071,7 +191939,7 @@ "manual" ], "presentation-api/controlling-ua/startNewPresentation_displaynotallowed-manual.html": [ - "1c05dff80da9340114e271d7d91d2a703d9b3240", + "9627211be87c6da771efb4110add0d97abd67c95", "manual" ], "presentation-api/controlling-ua/startNewPresentation_displaynotfound-manual.html": [ @@ -190087,7 +191955,7 @@ "manual" ], "presentation-api/controlling-ua/startNewPresentation_success-manual.html": [ - "277583dac933e05fe9efdbc5171aa4f0d2453f75", + "e342bc0d8582b4d73bdac8ad8c703742b3eb6e83", "manual" ], "presentation-api/controlling-ua/startNewPresentation_unsettledpromise-manual.html": [ @@ -190203,11 +192071,11 @@ "testharness" ], "referrer-policy/OWNERS": [ - "167112f19752c9c180831820b6e348427606b63b", + "f87103278641394f49c7e36acc9ff1ef60bacb79", "support" ], "referrer-policy/README.md": [ - "74a9b42995a0bf224f538b6ae7b82fc14cc851ee", + "a908472f8b8c083f37da8feb38a198363f75376c", "support" ], "referrer-policy/generic/common.js": [ @@ -190218,6 +192086,10 @@ "20c8273fd2a2cad07d3a607717d69d6ae94cf27e", "support" ], + "referrer-policy/generic/sandboxed-iframe-with-opaque-origin.html": [ + "7c2be55288d3e3a7524aa537d1e88314857b7827", + "testharness" + ], "referrer-policy/generic/sanity-checker.js": [ "1ff719209d37a7a6adc1df63247a5d3642fbf4c8", "support" @@ -190239,7 +192111,7 @@ "testharness" ], "referrer-policy/generic/subresource-test/image-decoding.html": [ - "c07c47f83c1e752e98073acab72764afeea82f68", + "b2435f8008480f65e142f6ffc1e8b4097c72def3", "testharness" ], "referrer-policy/generic/subresource-test/link-navigate.html": [ @@ -190347,7 +192219,7 @@ "support" ], "referrer-policy/generic/unsupported-csp-referrer-directive.html": [ - "080afde20af3f6f8aa4e214fc0f0ef70f2e71527", + "31f6bbe5c3320e2338dae74e85aff31e714fec2c", "testharness" ], "referrer-policy/no-referrer-when-downgrade/attr-referrer/cross-origin/http-http/iframe-tag/insecure-protocol.keep-origin-redirect.http.html": [ @@ -197598,6 +199470,30 @@ "23c8725d3585fcfbe17fb2125f82c3146668ff3a", "testharness" ], + "remote-playback/README.md": [ + "f76a7ece018ba65d920c5df4b6e287521254399f", + "support" + ], + "remote-playback/cancel-watch-availability.html": [ + "f74aa07eec9e1e47915a7165518429c78c9af28a", + "testharness" + ], + "remote-playback/disable-remote-playback-cancel-watch-availability-throws.html": [ + "3e58b314ce06d2070036930f08147fece491d877", + "testharness" + ], + "remote-playback/disable-remote-playback-prompt-throws.html": [ + "d61b27d43d1f01f4964be312ad38f249bc89c05e", + "testharness" + ], + "remote-playback/disable-remote-playback-watch-availability-throws.html": [ + "2779fd2a3bd27a011e8ba20dd6fb214978d8a54c", + "testharness" + ], + "remote-playback/watch-availability-initial-callback.html": [ + "3d220a3cc0e6a05fbc40c0ab0e46a2e60162b2be", + "testharness" + ], "resource-timing/OWNERS": [ "8fd9729d4d10437b0a46b5c0c00729b37f17b361", "support" @@ -197887,7 +199783,7 @@ "testharness" ], "selection/collapse.js": [ - "41ae670c54b9141b065659a751f8495ded80ac1b", + "4cd755764b43e348b2dcf23d1c800953ee28f059", "support" ], "selection/collapseToStartEnd.html": [ @@ -197895,7 +199791,7 @@ "testharness" ], "selection/common.js": [ - "ffb4fe96df8ae290cb35574f751bafcc00805b4d", + "5c8f81d534759a0fa20a78f9643168a6d84d80b3", "support" ], "selection/deleteFromDocument.html": [ @@ -197919,7 +199815,7 @@ "testharness" ], "selection/extend.js": [ - "e5982a39ff7d36cd893bbe0bba19a7078a4096dd", + "6da1fb629a8323f7d45c952e7ff3ce5554f7d722", "support" ], "selection/getRangeAt.html": [ @@ -197943,11 +199839,11 @@ "testharness" ], "selection/selectAllChildren.html": [ - "dab92b0a124b9be2b1c2c26f022b8933e09f1d66", + "1951e6d34c7959c038146efde2d49a7898eaee29", "testharness" ], "selection/setBaseAndExtent.html": [ - "e94649b448dc998b8c353ca8e28814c1e13e11ae", + "856ba9771d2c1e2eaae00dcf6b8378a42003cc7a", "testharness" ], "selection/test-iframe.html": [ @@ -198235,15 +200131,15 @@ "testharness" ], "service-workers/service-worker/client-navigate.https.html": [ - "79904ed11a3c53c4559c8f44603fcc1cf0a05844", + "e0c704605ec008a29662e1804d512284899ddd6f", "testharness" ], "service-workers/service-worker/clients-get-cross-origin.https.html": [ - "7e9d0cd022aa70a0f38b2f15f05919e9ff185728", + "21ed1eab21bb6f0b342895c8185ecb92afe93b79", "testharness" ], "service-workers/service-worker/clients-get.https.html": [ - "54c7ac17c93881644c202dbacf36de2fc507a3f5", + "32ccf7734a7d0d40205c4fd30b393b175e6507bd", "testharness" ], "service-workers/service-worker/clients-matchall-client-types.https.html": [ @@ -198279,19 +200175,19 @@ "testharness" ], "service-workers/service-worker/fetch-canvas-tainting-cache.https.html": [ - "3401c0848a63c619c618d4a2cf3c59f3928ff162", + "b3f8375bc412c99099ac886673fd80f6cb0a312b", "testharness" ], "service-workers/service-worker/fetch-canvas-tainting.https.html": [ - "1f2d87f214450395472fe3dffcb2783e71ec0d52", + "9c2e160f95d2915a961bd7da840ac53779c9387d", "testharness" ], "service-workers/service-worker/fetch-cors-xhr.https.html": [ - "5a35a77eb5575e181aee035ffa103f51152fda54", + "448c071ddeaaaf828800d8fad20d8ce672e56590", "testharness" ], "service-workers/service-worker/fetch-csp.https.html": [ - "b9ff203833b7af8b0181eea9a1778b9e4d20ccb1", + "97fff975592937acda3e8f363685dc9a835c12be", "testharness" ], "service-workers/service-worker/fetch-event-after-navigation-within-page.https.html": [ @@ -198307,43 +200203,51 @@ "testharness" ], "service-workers/service-worker/fetch-event-redirect.https.html": [ - "5d4efd3504c37f5b728eef4941266b3d1d8842e7", + "e322139b14149fe9b3f3aff76a9af8a58437e715", "testharness" ], "service-workers/service-worker/fetch-event-respond-with-stops-propagation.https.html": [ "2feaa5022ee31fb980f97075d932b0d87d6efe75", "testharness" ], + "service-workers/service-worker/fetch-event-within-sw-manual.html": [ + "6bdea01ca619a894d07364a0485f717b46afe585", + "manual" + ], + "service-workers/service-worker/fetch-event-within-sw.html": [ + "0dfff8289762988423eb8fda40ef47884c243427", + "testharness" + ], "service-workers/service-worker/fetch-event.https.html": [ - "09024c86ce36bb31e96077acaa3609d16d424785", + "f735a11ce8f722bc72d601b1bd346d2489552394", "testharness" ], "service-workers/service-worker/fetch-frame-resource.https.html": [ - "e5996d90c4c383eda2947cc2bc39e734448b3bde", + "77709ff94cfaeec0b01e157714244d1b568c6b18", "testharness" ], "service-workers/service-worker/fetch-header-visibility.https.html": [ - "c12941b5e391a520b20f227fd515089ac922f50e", + "054a581d2585cf34e4f0626870c2a093d53dc09b", "testharness" ], "service-workers/service-worker/fetch-mixed-content-to-inscope.https.html": [ - "16bf962ab092624da480de9a75ac767cdc00c2c7", + "e3035bdf8cec65bb0322b5dfce10a3a827bd415e", "testharness" ], "service-workers/service-worker/fetch-mixed-content-to-outscope.https.html": [ - "431348eba25f6db93684b39dcdc9eb29071e27f1", + "45a83eeeb922301fc399a4808bb4d1014a541733", "testharness" ], "service-workers/service-worker/fetch-request-css-base-url.https.html": [ - "e9e6bc4ecfe69bf5f1c8fa718f15fe19ca612143", + "01a5220ff2abe5735d7b03c2ee3ccbe21c9a260e", "testharness" ], "service-workers/service-worker/fetch-request-css-images.https.html": [ - "14c5ad1b9e3971c994ec9134989f03ff4a01962c", + "ca776bff1f106f9a1e2dfe4d25ff3618d99758b7", "testharness" ], "service-workers/service-worker/fetch-request-fallback.https.html": [ - "11b3e5fe92d27ea1058f725a904a4ed8e448a2dd", + "60dcb3a4c3b3ca2e79adfc7b779724cbe3ffa1c4", "testharness" ], "service-workers/service-worker/fetch-request-no-freshness-headers.https.html": [ @@ -198351,23 +200255,39 @@ "testharness" ], "service-workers/service-worker/fetch-request-redirect.https.html": [ - "ffe217a363c6db265aaa2f45661bdc3a4289c9a0", + "e0c2c7752674bd8bb65ce09bc1d49b2f5d458d54", "testharness" ], "service-workers/service-worker/fetch-request-resources.https.html": [ - "6676e514ba04f2759346eaa94f1c87c8290e44cd", + "5ae2d1ae4eec846002635d6ff8d9d7c9a2aebd3f", "testharness" ], "service-workers/service-worker/fetch-request-xhr.https.html": [ - "760037db448b32b146c51ba8e7c453dd9c734a6e", + "840aafe30e5a0c8129c05e3b311084b8c00267a6", "testharness" ], "service-workers/service-worker/fetch-response-xhr.https.html": [ - "b6fa000865a6961afabb592a09bbf686ee4302df", + "6d50c69d78a1eb077108209b94fdf0efe540883d", "testharness" ], "service-workers/service-worker/fetch-waits-for-activate.https.html": [ - "9be9d969099e27be5edc15f6014ac2f06f81674c", + "04eeedc3f074aff32281a438acda62b7a6d86e2d", + "testharness" + ], + "service-workers/service-worker/foreign-fetch-basics.https.html": [ + "6600d201f205fe3586cbfab088cf9f2be7d96b87", + "testharness" + ], + "service-workers/service-worker/foreign-fetch-cors.https.html": [ + "aac5e2b6b096af5fb5edd9b8c5193774089afac2", + "testharness" + ], + "service-workers/service-worker/foreign-fetch-event.https.html": [ + "8fbf910205f175a457846100deb34a01c02b00ab", + "testharness" + ], + "service-workers/service-worker/foreign-fetch-workers.https.html": [ + "4838204f935a89eccb333e347dd56f30846460fe", "testharness" ], "service-workers/service-worker/getregistration.https.html": [ @@ -198375,7 +200295,7 @@ "testharness" ], "service-workers/service-worker/getregistrations.https.html": [ - "8b66990c80dfb44f43a053829005dbca2264106c", + "d76c66c08bd5c1addbdb149447f2268ac52ffcb2", "testharness" ], "service-workers/service-worker/indexeddb.https.html": [ @@ -198395,11 +200315,43 @@ "testharness" ], "service-workers/service-worker/invalid-blobtype.https.html": [ - "ff9dca8c16a3635b74a7dfbff8ae5061b89a86e5", + "ca29ab7c214d2fa4973cf7be633a7fb8507ae897", "testharness" ], "service-workers/service-worker/invalid-header.https.html": [ - "559a924fa530f4a4082c306d5821d88f9d2ba064", + "393c3b3c393b58e74f82affecdd06c4e7be1787a", + "testharness" + ], + "service-workers/service-worker/multi-globals/current/current.https.html": [ + "2f7a23c1a4dfa7feb121e55d13ff8a0980165b37", + "support" + ], + "service-workers/service-worker/multi-globals/current/test-sw.js": [ + "ca4f933ef6be99526541dbecde4fd6c2155544af", + "support" + ], + "service-workers/service-worker/multi-globals/incumbent/incumbent.https.html": [ + "acf96ec2dc725b32ca6c0e4d252e3fc256d829a8", + "support" + ], + "service-workers/service-worker/multi-globals/incumbent/test-sw.js": [ + "490e5af3f6faef75c3d52acd61b43b2c1a6c55d3", + "support" + ], + "service-workers/service-worker/multi-globals/relevant/relevant.https.html": [ + "38946a76b98b46be5edf2031a16c3c4cfb4caab1", + "support" + ], + "service-workers/service-worker/multi-globals/relevant/test-sw.js": [ + "7f6f7e4440cd2fc8620c830d6ce983803c23f971", + "support" + ], + "service-workers/service-worker/multi-globals/test-sw.js": [ + "dac89a5658bdfac4df0600647d1fbf82602c4d0b", + "support" + ], + "service-workers/service-worker/multi-globals/url-parsing.https.html": [ + "eac6d03a6baa43a8f326abc30a5e1244da2d0e55", "testharness" ], "service-workers/service-worker/multiple-register.https.html": [ @@ -198411,11 +200363,11 @@ "testharness" ], "service-workers/service-worker/navigate-window.https.html": [ - "fe503981bd965d0d424f4c2e404ab940a2d6db0b", + "669507683c98d99aa5dcfbddd71c23f8464b7c21", "testharness" ], "service-workers/service-worker/navigation-redirect.https.html": [ - "919eb3d5d1203626cc6e23a5200033cb8a756347", + "7d9f8501624e1832170d427657d6dbf19253c989", "testharness" ], "service-workers/service-worker/onactivate-script-error.https.html": [ @@ -198427,7 +200379,11 @@ "testharness" ], "service-workers/service-worker/performance-timeline.https.html": [ - "bb5f72f8ec9194689d1a77a1d2d3e902233bb2d3", + "23d9e3dc830b83370875387cd5d6e1d5e913452f", + "testharness" + ], + "service-workers/service-worker/postmessage-blob-url.https.html": [ + "4ffd522eacbd5ecee11b921d4acc3442ef296514", "testharness" ], "service-workers/service-worker/postmessage-msgport-to-client.https.html": [ @@ -198435,7 +200391,7 @@ "testharness" ], "service-workers/service-worker/postmessage-to-client.https.html": [ - "8a96689891c9e49456c48e47a09405fe2edb4cce", + "4f91d302091df45ca72567c2cedc1584ad9045a9", "testharness" ], "service-workers/service-worker/postmessage.https.html": [ @@ -198447,17 +200403,25 @@ "testharness" ], "service-workers/service-worker/referer.https.html": [ - "3a78997f47e3f53bcb94f871032b0d6099361f10", + "a9e4073192f5b69984624ad7376ec7787101dfea", "testharness" ], "service-workers/service-worker/register-closed-window.https.html": [ - "bc6e9bb358fdd6b66d49eaf99e9d5f2e111c874b", + "2e24c6664881449ab67f04b860a701c8b8ef93c1", "testharness" ], "service-workers/service-worker/register-default-scope.https.html": [ "864f5435fc40124dbe2c1ffb0e1942fee58228d2", "testharness" ], + "service-workers/service-worker/register-link-element.https.html": [ + "fcd2a244ad1f12c954c231c479f89beaa3c145e6", + "testharness" + ], + "service-workers/service-worker/register-link-header.https.html": [ + "fa97635d3a16a0f2a0a0bae8e4b81c8b5100d9cd", + "testharness" + ], "service-workers/service-worker/register-same-scope-different-script-url.https.html": [ "7c32948fe5ff738a38b08ff2d2497ddb63f0a8ef", "testharness" @@ -198487,7 +200451,7 @@ "testharness" ], "service-workers/service-worker/registration.https.html": [ - "9e21fc312a4aae93fcaf6013d20bd38c2cefc9cf", + "0a06c368a14c008c385c9df3cde35f090d96d58b", "testharness" ], "service-workers/service-worker/rejections.https.html": [ @@ -198499,7 +200463,7 @@ "testharness" ], "service-workers/service-worker/resource-timing.https.html": [ - "003956c17576fa4e0f1c7a5cc7aaf6bb211510ff", + "587060940cb25ff8072fa83cb41d538a73320ca6", "testharness" ], "service-workers/service-worker/resources/404.py": [ @@ -198535,7 +200499,7 @@ "support" ], "service-workers/service-worker/resources/client-navigate-worker.js": [ - "28442dc3f2bb1b2761a17ae599b1300c50327a56", + "6b277e1dcde40babec32046f9e637a47830bf29b", "support" ], "service-workers/service-worker/resources/client-navigated-frame.html": [ @@ -198547,7 +200511,7 @@ "support" ], "service-workers/service-worker/resources/clients-get-other-origin.html": [ - "2bcea64745be9b6aab7d91eb2c54774b8110bb6f", + "1b495621d4024d18579626cc5fd6049789bce115", "support" ], "service-workers/service-worker/resources/clients-get-worker.js": [ @@ -198571,7 +200535,7 @@ "support" ], "service-workers/service-worker/resources/dummy-worker-interceptor.js": [ - "5bad22ca85e049d9ccd1228cef98f58bbf21a16a", + "f631d35c4eed6be4a8e6d2cdc5258ac0b169e177", "support" ], "service-workers/service-worker/resources/dummy-worker-script.py": [ @@ -198623,19 +200587,19 @@ "support" ], "service-workers/service-worker/resources/fetch-access-control.py": [ - "fb2235ce343b51e958f73f7fc8d7ab7dbcc8f71e", + "e612c0f7457c8d15ff7d0e2515d8e967a8bb81b5", "support" ], "service-workers/service-worker/resources/fetch-canvas-tainting-iframe.html": [ - "238c7a5082169f5a96160aa298d0450c9e1ed60b", + "04c234d3cc210d24962ce2b7cbbefcbd16d335e8", "support" ], "service-workers/service-worker/resources/fetch-cors-xhr-iframe.html": [ - "a95c7def61681468026031380425f03d3020d66a", + "bbed4c0dcae12d91bcda4241103e674a6ffc73b1", "support" ], "service-workers/service-worker/resources/fetch-csp-iframe.html": [ - "b84cb08bd5e4504dc5509f78ca3a4c07be702814", + "0c82ccc773dc644bac0cef39faadcb3280c0c6f4", "support" ], "service-workers/service-worker/resources/fetch-csp-iframe.html.sub.headers": [ @@ -198670,20 +200634,24 @@ "ca79da139169762737411cb6cffb66b55b901d04", "support" ], + "service-workers/service-worker/resources/fetch-event-within-sw-worker.js": [ + "3389a6ce1435fe1f16488c58b3545169a1afcad3", + "support" + ], "service-workers/service-worker/resources/fetch-header-visibility-iframe.html": [ - "99c91098d8df9e0b840699770d240bb0aa2ee715", + "f5975491b4c516cdfc62eaaba019ab546451d6e7", "support" ], "service-workers/service-worker/resources/fetch-mixed-content-iframe-inscope-to-inscope.html": [ - "7cf39eebde4a25c1af8690c28db50ef0a4b147cd", + "7485fa9c96fbbc4af9de634e0738957dd6ab2aa0", "support" ], "service-workers/service-worker/resources/fetch-mixed-content-iframe-inscope-to-outscope.html": [ - "623898c5d5975ae661f8b2375af2a1aaf2859c23", + "c9a7ec401f8db3416e73694370be0b711f04110e", "support" ], "service-workers/service-worker/resources/fetch-mixed-content-iframe.html": [ - "bb8ade5c70097997726faf2624b11581e4cfe2f1", + "1b7a67809f06e5a14ca77da10d9c43e94f5dc1f0", "support" ], "service-workers/service-worker/resources/fetch-request-css-base-url-iframe.html": [ @@ -198695,7 +200663,7 @@ "support" ], "service-workers/service-worker/resources/fetch-request-css-base-url-worker.js": [ - "4536000808809f0354c6b206380d92f4e2fddd0e", + "30e4285e144a5c9caa0dd48224cefc4b41973de1", "support" ], "service-workers/service-worker/resources/fetch-request-fallback-iframe.html": [ @@ -198727,7 +200695,7 @@ "support" ], "service-workers/service-worker/resources/fetch-request-xhr-iframe.https.html": [ - "2a1cb00d377b6a3460daf9727828af0040756420", + "e28b416c027c2ed1a633c0804ef826cad99509ff", "support" ], "service-workers/service-worker/resources/fetch-request-xhr-worker.js": [ @@ -198735,7 +200703,7 @@ "support" ], "service-workers/service-worker/resources/fetch-response-xhr-iframe.https.html": [ - "bdba81b06c43907a879b992ea20a77526a0e8810", + "8bef6d586f438fa912c7e40ac82a5aa73e05706a", "support" ], "service-workers/service-worker/resources/fetch-response-xhr-worker.js": [ @@ -198750,12 +200718,36 @@ "a557b92d3119f43bbbe10d46effc240d7f11c784", "support" ], - "service-workers/service-worker/resources/frame-for-getregistrations.html": [ - "c5f88c11333ff1faba5d57812a36553d174ab711", + "service-workers/service-worker/resources/foreign-fetch-cors-worker.js": [ + "de8574422145b4c5385e34312b323201bbc35518", "support" ], - "service-workers/service-worker/resources/get-host-info.sub.js": [ - "b9310fbd533b9382c3413bbcf2d49f778d4737dd", + "service-workers/service-worker/resources/foreign-fetch-event-worker.js": [ + "7e9998ebcf657391c041d2904c06048214602ac2", + "support" + ], + "service-workers/service-worker/resources/foreign-fetch-helper-iframe.html": [ + "42af5ea03adf25de9d5237a75e913ac726d72c3b", + "support" + ], + "service-workers/service-worker/resources/foreign-fetch-helper-script.js": [ + "6c1d3bdec7490bec2581fb8936170be95cb3e692", + "support" + ], + "service-workers/service-worker/resources/foreign-fetch-helper-worker.js": [ + "750ddd06ccb14b662e64be7faa54552bc04e9358", + "support" + ], + "service-workers/service-worker/resources/foreign-fetch-helpers.js": [ + "ce8886f4e8b8e97155c76f7b4e69f1b872c1e7dd", + "support" + ], + "service-workers/service-worker/resources/foreign-fetch-worker.js": [ + "1464189c2e0ab1344227c69363aef9d44df98848", + "support" + ], + "service-workers/service-worker/resources/frame-for-getregistrations.html": [ + "c5f88c11333ff1faba5d57812a36553d174ab711", "support" ], "service-workers/service-worker/resources/indexeddb-worker.js": [ @@ -198766,6 +200758,10 @@ "b6949fcd3d82a99595356448fce6ac830366200e", "support" ], + "service-workers/service-worker/resources/install-worker-helper.html": [ + "9682ae01719d07e5713307a26b1b825087c4cf65", + "support" + ], "service-workers/service-worker/resources/interfaces-worker.sub.js": [ "67190b30c485fe743de1515fe5c593aad584fcb3", "support" @@ -198798,6 +200794,10 @@ "eaa7fd4f6d2d92af8c27895fc9060296804ece21", "support" ], + "service-workers/service-worker/resources/link-header.py": [ + "5717930bd579b9a63f1b3619195d65b46aa044cf", + "support" + ], "service-workers/service-worker/resources/load_worker.js": [ "08525451705224fd78993adaed33a345d514c9a1", "support" @@ -198823,7 +200823,7 @@ "support" ], "service-workers/service-worker/resources/navigation-redirect-other-origin.html": [ - "a43dcad198cad8b1589de1963342c75a0b70d1e9", + "8c51024d8e369bc5ae21e94c486c59690df2de3e", "support" ], "service-workers/service-worker/resources/navigation-redirect-out-scope.py": [ @@ -198842,6 +200842,10 @@ "6e888f77393e13e7be042fa6559ce90a66a4d8a9", "support" ], + "service-workers/service-worker/resources/notification_icon.py": [ + "ec72a4c120ccfac3a165576f59a0e02b945343b3", + "support" + ], "service-workers/service-worker/resources/onactivate-throw-error-from-nested-event-worker.js": [ "5e7bd3fc11e1f72c91d756e04a5e1e25e565143a", "support" @@ -198898,6 +200902,10 @@ "fc275abc58d82c338ff369ba62994bd3d5609a67", "support" ], + "service-workers/service-worker/resources/postmessage-blob-url.js": [ + "728244e7f0b717aec29c3057bde7a6ba12768587", + "support" + ], "service-workers/service-worker/resources/postmessage-msgport-to-client-worker.js": [ "df0abb63c5c63fa97adb914e4281364bf1f82657", "support" @@ -198915,13 +200923,17 @@ "support" ], "service-workers/service-worker/resources/referer-iframe.html": [ - "f7dc2c960e0bbe78ea14d66d9ee76e7876c29b90", + "6b549d0a185a0fb76c230274a672ef4843d33a90", "support" ], "service-workers/service-worker/resources/register-closed-window-iframe.html": [ "18ee27c8d6a5497bf16b3315ba9eee2b474154b5", "support" ], + "service-workers/service-worker/resources/registration-tests.js": [ + "5588535a80930c1d526d3b94ec7930a191d729db", + "support" + ], "service-workers/service-worker/resources/registration-worker.js": [ "048f75fc0d193765d6264e7be132c29e56dd7bcb", "support" @@ -198930,6 +200942,10 @@ "856419e5aa34cb3654ce7baf2908781347fe2de7", "support" ], + "service-workers/service-worker/resources/reply-to-message.html": [ + "7fb39d9609893a0fbcada161c92dc3df40721f90", + "support" + ], "service-workers/service-worker/resources/request-end-to-end-worker.js": [ "90e12e47594d86ca558d755880c80c1fba257a87", "support" @@ -198947,7 +200963,7 @@ "support" ], "service-workers/service-worker/resources/service-worker-csp-worker.py": [ - "f91ff42d4a88961aeb4c29cce61db8ad32261f4e", + "f7c6bb3ba222dc35a09ef806a7c6d145339f9eb2", "support" ], "service-workers/service-worker/resources/shared-worker-controlled.js": [ @@ -198991,7 +201007,7 @@ "support" ], "service-workers/service-worker/resources/test-helpers.sub.js": [ - "33bd2908a3e1916e78b4cb9b81a9f108d203a022", + "113528ec940b15e9d7b6b982b6301c762a22b345", "support" ], "service-workers/service-worker/resources/testharness-helpers.js": [ @@ -199035,11 +201051,11 @@ "support" ], "service-workers/service-worker/resources/worker-interception-iframe.https.html": [ - "06594aaad28018acf9e670b23eb97e8b0b7e1b98", + "b9fd4ea281b328c1f21573d1563c968dac52cf22", "support" ], "service-workers/service-worker/resources/worker-load-interceptor.js": [ - "8e92e777917d2e39558a7609d34ec839f24e5fac", + "de9cfcbef6528a4b5e6b2552f260501e4d165ea4", "support" ], "service-workers/service-worker/resources/worker-testharness.js": [ @@ -199143,7 +201159,7 @@ "testharness" ], "service-workers/service-worker/websocket.https.html": [ - "41a6008966629c84ffba592e038adae1050c947a", + "40ec7850c61a3ee7578f055d3eef87293cfad482", "testharness" ], "service-workers/service-worker/worker-interception.https.html": [ @@ -199151,7 +201167,7 @@ "testharness" ], "service-workers/service-worker/xhr.https.html": [ - "e306f2662c779b7fe2b3727e6ee9a27c7c95a151", + "f5d565c95c7a08da139b0f3b95bb0cfb0ae2b936", "testharness" ], "service-workers/specgen.json": [ @@ -199387,7 +201403,7 @@ "testharness" ], "shadow-dom/HTMLSlotElement-interface.html": [ - "efd365e95825ad31af0ff8c9a11941a71071e99c", + "f30eff6f08f3680d8640aa5df2612f0fbd98dc50", "testharness" ], "shadow-dom/MouseEvent-prototype-offsetX-offsetY.html": [ @@ -199427,11 +201443,11 @@ "testharness" ], "shadow-dom/event-inside-slotted-node.html": [ - "f5ff2b5a5b3311371362dea1b146d71849160736", + "d8b41c5d5bd80cb9a680506d5c3170f30b10cae1", "testharness" ], "shadow-dom/event-with-related-target.html": [ - "50583e233a39dc066146c77552d0e350e8826409", + "d5e800955038a9998d9ce7db7405d3c6b1c15903", "testharness" ], "shadow-dom/leaktests/get-elements.html": [ @@ -199766,6 +201782,26 @@ "bc28599cea839c13daf4739168f8c1ea42526050", "testharness" ], + "storage/OWNERS": [ + "2c585ecaee5e62118d3cb98c98e12d959ebcbd50", + "support" + ], + "storage/README.md": [ + "5ce835b9c17e0cd61830abdd4f4e7aa5d5a47d8d", + "support" + ], + "storage/interfaces.html": [ + "76fa61c3a87485266a7f9d6f66e5d08bb7881ff7", + "testharness" + ], + "storage/interfaces.idl": [ + "d3ac8afefe85ca580a514349060b8019f6fccc36", + "support" + ], + "storage/interfaces.worker.js": [ + "da11cf56486fe08214f91d181b3a19775f6aa59c", + "testharness" + ], "streams/OWNERS": [ "5ed27d1c21178be00e972816933945e094a0e170", "support" @@ -200007,7 +202043,7 @@ "testharness" ], "streams/readable-byte-streams/general.js": [ - "6c213279d772e7087f35f8a19157f092bd77f90c", + "4a7d7a12437ad4c3ad39411c8fddffeca664dab7", "support" ], "streams/readable-byte-streams/general.serviceworker.https.html": [ @@ -200118,6 +202154,26 @@ "42cf0e2dd45eae0311c210cced7d9c9c83620501", "testharness" ], + "streams/readable-streams/floating-point-total-queue-size.dedicatedworker.html": [ + "e07b6c46f7975b76a309ac9b728e4215d5e7fe9d", + "testharness" + ], + "streams/readable-streams/floating-point-total-queue-size.html": [ + "43c8de999ccfcbaa0c8dc78f8d2f64ca05fba5de", + "testharness" + ], + "streams/readable-streams/floating-point-total-queue-size.js": [ + "9e6ba92e9b69437c23f04c80fff47c951e509db1", + "support" + ], + "streams/readable-streams/floating-point-total-queue-size.serviceworker.https.html": [ + "3817418bce8608ad6305acf0119fb0f2694e5531", + "testharness" + ], + "streams/readable-streams/floating-point-total-queue-size.sharedworker.html": [ + "00af09f46d126d6d2944d13831896e648094d1a8", + "testharness" + ], "streams/readable-streams/garbage-collection.dedicatedworker.html": [ "0c774ff797fda7a5b5a828a4600a39dae72cac0c", "testharness" @@ -200147,7 +202203,7 @@ "testharness" ], "streams/readable-streams/general.js": [ - "21bc74e707c6faa045ffee6211065e3f8d32b211", + "655cd8df67e0ef1c7f14e60bfb1584631e3291b5", "support" ], "streams/readable-streams/general.serviceworker.https.html": [ @@ -200283,7 +202339,7 @@ "testharness" ], "streams/writable-streams/bad-strategies.js": [ - "58cf46e9e07c61e2a7d170cb93837b9e16aa66e3", + "a7a30fd91bba81c332a3447c99a5a0354dda04b4", "support" ], "streams/writable-streams/bad-strategies.serviceworker.https.html": [ @@ -200414,6 +202470,26 @@ "875e0dffe7710c21bfcb8f554c2216626c2eb013", "testharness" ], + "streams/writable-streams/floating-point-total-queue-size.dedicatedworker.html": [ + "e07b6c46f7975b76a309ac9b728e4215d5e7fe9d", + "testharness" + ], + "streams/writable-streams/floating-point-total-queue-size.html": [ + "43c8de999ccfcbaa0c8dc78f8d2f64ca05fba5de", + "testharness" + ], + "streams/writable-streams/floating-point-total-queue-size.js": [ + "14d4a8f5559831fb266061e75177339ba0073edb", + "support" + ], + "streams/writable-streams/floating-point-total-queue-size.serviceworker.https.html": [ + "3817418bce8608ad6305acf0119fb0f2694e5531", + "testharness" + ], + "streams/writable-streams/floating-point-total-queue-size.sharedworker.html": [ + "00af09f46d126d6d2944d13831896e648094d1a8", + "testharness" + ], "streams/writable-streams/general.dedicatedworker.html": [ "8583d80450b090c16ed0795170340d040449bbc1", "testharness" @@ -200423,7 +202499,7 @@ "testharness" ], "streams/writable-streams/general.js": [ - "b3c2f3296f0b2e37b906027f53a0ce394ad89a20", + "22131ed892a5b38321a49bd7ba1e8b2dca780e7e", "support" ], "streams/writable-streams/general.serviceworker.https.html": [ @@ -200434,6 +202510,26 @@ "44f9ceaa3bfc9d8b92885997d322486bd0f237a6", "testharness" ], + "streams/writable-streams/reentrant-strategy.dedicatedworker.html": [ + "5d9e5a6b69fbe79183ac6e0d2c8559f13be6e386", + "testharness" + ], + "streams/writable-streams/reentrant-strategy.html": [ + "c05bf8306c3fe8e97b936a26c6de1649e9d0d243", + "testharness" + ], + "streams/writable-streams/reentrant-strategy.js": [ + "e5e39b5045b532bbb9999c3c87c998ed0f6f33b1", + "support" + ], + "streams/writable-streams/reentrant-strategy.serviceworker.https.html": [ + "663075ee687ea54010f76d0e37191e46f37b9a49", + "testharness" + ], + "streams/writable-streams/reentrant-strategy.sharedworker.html": [ + "5dabe1367481c57c58fe208ba66d8c13d4e2b796", + "testharness" + ], "streams/writable-streams/start.dedicatedworker.html": [ "cef789c53d44cdb3e20a1187c90aae8c5d25d488", "testharness" @@ -203387,7 +205483,7 @@ "testharness" ], "url/OWNERS": [ - "11ddac39658b2348cefadeee3b5118b13470ef30", + "0ee550fabc52477973173710b02bfd9a28a774e9", "support" ], "url/README.md": [ @@ -203427,11 +205523,11 @@ "testharness" ], "url/interfaces.html": [ - "c3addea385ae3581d625bfd91106a1ea29da0210", + "25e16a1f57ab1acbb19a3b3acc77fccc3facf6cd", "testharness" ], "url/setters_tests.json": [ - "cea2cc02dd23621df40bb039e685adf46cbf756a", + "e474adc2c70e15542fd5aed07ece68ba13e58de4", "support" ], "url/url-constructor.html": [ @@ -203446,6 +205542,10 @@ "f9746a232f2047deb0bf0b5a73376a69b0ec14e2", "testharness" ], + "url/url-tojson.html": [ + "d961e88b6976933599ec06b1a2b6da6f200c150b", + "testharness" + ], "url/urlencoded-parser.html": [ "4eb385fec2e8cbd3e65dbf36edb47a6f2beb0de8", "testharness" @@ -203491,7 +205591,7 @@ "testharness" ], "url/urltestdata.json": [ - "b8ae660d7b3be59d910ce534b9efd6b15e867b3a", + "6ccd41ca10d9d7d602e6f60d883644dafa96f941", "support" ], "user-timing/OWNERS": [ @@ -203639,7 +205739,7 @@ "support" ], "web-animations/animation-model/animation-types/addition-per-property.html": [ - "cc5639503114c180a203795548eea7be7e3ff2c6", + "24fae46b5f7b47e1d098fa446037bf9cc52e050e", "testharness" ], "web-animations/animation-model/animation-types/discrete-animation.html": [ @@ -203647,7 +205747,7 @@ "testharness" ], "web-animations/animation-model/animation-types/interpolation-per-property.html": [ - "0fc8dba5b4871a5c6ca2647e403b1896e1f35030", + "55100f7d505bc8cbc966ced0d1337ed78534a553", "testharness" ], "web-animations/animation-model/animation-types/property-list.js": [ @@ -203659,7 +205759,7 @@ "support" ], "web-animations/animation-model/animation-types/spacing-keyframes-filters.html": [ - "cd3ad9e0008aa23d2a46a27b7c2ff190d8acd7d1", + "bd771a8a18245560221d92ea3495f81918c09848", "testharness" ], "web-animations/animation-model/animation-types/spacing-keyframes-shapes.html": [ @@ -203678,16 +205778,28 @@ "10d9ee521240475a1729c2facfcea8b50342614e", "testharness" ], + "web-animations/animation-model/keyframe-effects/effect-value-overlapping-keyframes.html": [ + "a79db70a385ad767263f285c9401b66611087e42", + "testharness" + ], + "web-animations/animation-model/keyframe-effects/effect-value-transformed-distance.html": [ + "59e86254c8c118bd30b5c6742cfeaceba783eaee", + "testharness" + ], + "web-animations/animation-model/keyframe-effects/effect-value-visibility.html": [ + "b01c7c5145c183fdca80dec4ca1966b0f72a7003", + "testharness" + ], "web-animations/animation-model/keyframe-effects/spacing-keyframes.html": [ "318bc877791852b0829a3e10cb19e2a20a15adab", "testharness" ], - "web-animations/animation-model/keyframe-effects/the-effect-value-of-a-keyframe-effect.html": [ - "b87824689825406a384d2e8afeac54c790ed16e0", + "web-animations/interfaces/Animatable/animate.html": [ + "d076cdc3862c8a178d69d44cfe422f4e48b0649a", "testharness" ], - "web-animations/interfaces/Animatable/animate.html": [ - "d2d57b1fe0bd5b6da4c44c569ff7dcf802298919", + "web-animations/interfaces/Animatable/getAnimations.html": [ + "92503fce725fcffce188df9c8e1da9d9ca281213", "testharness" ], "web-animations/interfaces/Animation/cancel.html": [ @@ -203707,7 +205819,7 @@ "testharness" ], "web-animations/interfaces/Animation/finished.html": [ - "66bb1969f7371b62afe2c294fe6bf03934fc9f56", + "5e3d8fa48b2737202f6bd7c2e21589e904982a6f", "testharness" ], "web-animations/interfaces/Animation/id.html": [ @@ -203739,7 +205851,7 @@ "testharness" ], "web-animations/interfaces/Animation/ready.html": [ - "ec4b24010d0e83258a088d5296585c3013ee39f5", + "f79ea4e2bfc3bc83a7ac96634cbb2d5f21f6c1f5", "testharness" ], "web-animations/interfaces/Animation/reverse.html": [ @@ -203751,27 +205863,27 @@ "testharness" ], "web-animations/interfaces/AnimationEffectTiming/delay.html": [ - "e70fdbf4ae3afd405f53fc3e2efcdf2d9d71204b", + "ee2d870fae13e77e500e7067b89dbb79bd2d209a", "testharness" ], "web-animations/interfaces/AnimationEffectTiming/direction.html": [ - "ab150d71daf36949d4d6804033e19c734a68552d", + "87eb8b9a7b954e0eb77566eefb3034cd6235296f", "testharness" ], "web-animations/interfaces/AnimationEffectTiming/duration.html": [ - "2e0f0a270b8acd3d345732327ee2eabd32bdb2b2", + "4db95d7e5f518fc812886e7dcfddd40943077f90", "testharness" ], "web-animations/interfaces/AnimationEffectTiming/easing.html": [ - "e1055f83a2774e4c406b813cfb19d3ea4db83970", + "3d0175c4879d60ee04442debf32b00ee8241bda5", "testharness" ], "web-animations/interfaces/AnimationEffectTiming/endDelay.html": [ - "644eed9bf43bb0332ee33842ba0ad4423d90fc90", + "fde46c549f70439c80e3990ebf6897d6d6dfb76e", "testharness" ], "web-animations/interfaces/AnimationEffectTiming/fill.html": [ - "bf5b77d3c96e737700e51f8a2c5b8e2b9629902f", + "adc56d3ce3595154045cb87e1cb89fe7ce2096ba", "testharness" ], "web-animations/interfaces/AnimationEffectTiming/getAnimations.html": [ @@ -203779,15 +205891,15 @@ "testharness" ], "web-animations/interfaces/AnimationEffectTiming/getComputedStyle.html": [ - "6af224c6bc1036c0412b518242526cd9f2130afc", + "28819fe9fe3d38ae6d4aa2b4db4f58e8a16f0588", "testharness" ], "web-animations/interfaces/AnimationEffectTiming/iterationStart.html": [ - "3fc37ef76990ed1b4f742c0478985fcaa03b6ff8", + "1ddaceeb8b5e3fc93e5bf4dc1136e8714a08f474", "testharness" ], "web-animations/interfaces/AnimationEffectTiming/iterations.html": [ - "1eadd48065f48cb9cb0cbcf7ac08e96b985ff0e5", + "9a6eae75862dec36b7839dc68edc31891a651284", "testharness" ], "web-animations/interfaces/AnimationTimeline/document-timeline.html": [ @@ -203811,17 +205923,13 @@ "testharness" ], "web-animations/interfaces/KeyframeEffect/constructor.html": [ - "577241478fdeca6257711e9f90fec64372bd5637", + "1011b4146d1054ee6498cce1905230a10fdb9f96", "testharness" ], "web-animations/interfaces/KeyframeEffect/copy-contructor.html": [ "e1dfb5c05807a37974ecce98bb8c683cc291bfe4", "testharness" ], - "web-animations/interfaces/KeyframeEffect/effect-easing.html": [ - "1a8cf09dc40d3a53c0c7f17d6d7da81ab0b11b9e", - "testharness" - ], "web-animations/interfaces/KeyframeEffect/getComputedTiming.html": [ "c9dcf7c17010e5495007e000b33aeb4dc89f92b7", "testharness" @@ -203831,7 +205939,7 @@ "testharness" ], "web-animations/interfaces/KeyframeEffect/processing-a-keyframes-argument.html": [ - "acf40a804b8c624705668c93807483d5b6c44989", + "6f561694e38420194fd1817ee965436348221d06", "testharness" ], "web-animations/interfaces/KeyframeEffect/setKeyframes.html": [ @@ -203851,11 +205959,11 @@ "testharness" ], "web-animations/interfaces/KeyframeEffectReadOnly/spacing.html": [ - "ffca3a0ad5c7b08242224b80c52ebb8b9b7bfce6", + "2eb6b663f4ec25284370d16042444c43edb80c02", "testharness" ], - "web-animations/resources/effect-easing-tests.js": [ - "429325e4ff9a4e1dc5277815a8f2a5ba2c9ebc3f", + "web-animations/resources/easing-tests.js": [ + "190134380a0724f470a03ed0aa20c936bfed8d6c", "support" ], "web-animations/resources/keyframe-utils.js": [ @@ -203874,6 +205982,10 @@ "b08a35ae832ce33da7fe7fee22e589a6b85a6353", "testharness" ], + "web-animations/timing-model/animation-effects/local-time.html": [ + "4b24cf2374a690395398f8caed9d340667dd0a9d", + "testharness" + ], "web-animations/timing-model/animation-effects/phases-and-states.html": [ "ce3652c8a6fdd8a6019fd665bca28ed725bacd71", "testharness" @@ -203883,7 +205995,7 @@ "testharness" ], "web-animations/timing-model/animations/current-time.html": [ - "0a75ea87b0fc8b06f7f0c811bdf044a87b2622fc", + "b1ea8e490cbfb69fd71b91a90e7e2d9ce99f42d3", "testharness" ], "web-animations/timing-model/animations/set-the-animation-start-time.html": [ @@ -203902,6 +206014,10 @@ "266f1b793aa74a59486081f3ba8f6cbb482e714b", "testharness" ], + "web-animations/timing-model/time-transformations/transformed-progress.html": [ + "6eebd47c9e60c9590de4d1747f8b8b7866a4a275", + "testharness" + ], "webaudio/.gitignore": [ "11bc81247643b0a9fc665f1e4b1f592cc1f4c670", "support" @@ -204130,14 +206246,30 @@ "b0d65c7428735c824eba977b053babdc4be5cdcf", "support" ], + "webauthn/helpers.js": [ + "bc38559e447710f701bc5392b0d02704ae97e970", + "support" + ], "webauthn/interfaces.https.html": [ - "3ad8456e9c42138327fb35f7ae7282f0f4db3ed8", + "5a30981934a38e09328a946352b21a8abc90851f", "testharness" ], "webauthn/interfaces.idl": [ - "b2b821ccf674d6be0b367eb91f5b3920b93b8d95", + "78cdd63fc1b0e3eff699976b67b72d46cf108ed2", "support" ], + "webauthn/makecredential-badargs-accountinformation.https.html": [ + "7f81446a152ab31223b79e3089eb29505a8b603d", + "testharness" + ], + "webauthn/makecredential-badargs-attestationchallenge.https.html": [ + "26fbc55b0c313be854ddd59469baf6dcdd5d21c6", + "testharness" + ], + "webauthn/makecredential-badargs-cryptoparameters.https.html": [ + "9e2cbb2a667cf57f979c3e67516fb63fedd18d46", + "testharness" + ], "webdriver/OWNERS": [ "ed6ae435828699abe5d1399c6e9bacc7bae7474f", "support" @@ -204151,11 +206283,11 @@ "wdspec" ], "webdriver/conftest.py": [ - "b9c7eda301f07ad4a315f4c3f27e15742e3f9ad3", + "9a5d2c122d912af2d53478a3f83ac9da676ba531", "wdspec" ], "webdriver/contexts.py": [ - "2ee4a52654c3adb401e02a0020d112822cb8846a", + "cef7ae3987fa61d0b17c616e35c6066ce1e4af83", "wdspec" ], "webdriver/interface.html": [ @@ -204163,7 +206295,7 @@ "testharness" ], "webdriver/navigation.py": [ - "fd2872ba6ecf5f2a0b9ad78accb48fd09ea54ece", + "2216ea3b518ec6b1beef54ce2580b5e62c2841a0", "wdspec" ], "webdriver/support/__init__.py": [ @@ -213590,6 +215722,14 @@ "8e0a412b4d4f70568ed6710578011c26194de9c5", "testharness" ], + "webmessaging/MessageEvent-trusted-worker.js": [ + "949c2b95411c6b3f0256a28f792c3c7c94da90b0", + "support" + ], + "webmessaging/MessageEvent-trusted.html": [ + "fa0aed0c82d477bdc28be535bc8dad54a73aaf24", + "testharness" + ], "webmessaging/MessageEvent.html": [ "7debf220e539b7bdef752e98b280398f17e8603b", "testharness" @@ -214018,10 +216158,6 @@ "0ccdc365173e0c805f708edc49dbb8c8a88d786a", "testharness" ], - "websockets/Close-0.htm": [ - "02b8a0bd99349692ecc1f1e3f2f8fb4c5454536a", - "testharness" - ], "websockets/Close-1000-reason.htm": [ "a3733fc46f0a5358cc8dbfd74d422e1a598bdf64", "testharness" @@ -214030,30 +216166,14 @@ "0069f2d11be01418818303b4b684b66286e19b66", "testharness" ], - "websockets/Close-NaN.htm": [ - "2832cc6ee5826145a5ce511a959109905ba941de", - "testharness" - ], "websockets/Close-Reason-124Bytes.htm": [ "2e5cba512f7c5ee4555dcbddfb828aefcc59a833", "testharness" ], - "websockets/Close-clamp.htm": [ - "1d4b45d2bc38b50a8f1cb44f9da75dc0ebaa2ae8", - "testharness" - ], - "websockets/Close-null.htm": [ - "30c5adb0413e35a1e459c7598af0db9d87c1b2f7", - "testharness" - ], "websockets/Close-reason-unpaired-surrogates.htm": [ "ceb97248d6008bb64cfba83db29ebcc10e0d1342", "testharness" ], - "websockets/Close-string.htm": [ - "8f5b186ea0c7e7c5156b92b70ba2ae901cf76108", - "testharness" - ], "websockets/Close-undefined.htm": [ "ba4e24f11a947545effc1b1f3dbf88596bae07ca", "testharness" @@ -214154,10 +216274,6 @@ "cb6f6f64079ef7f8843b7553ab732bf84c8794bf", "support" ], - "websockets/Secure-Close-0.htm": [ - "af87088889bc17417f82fc7634467a7c235e4991", - "testharness" - ], "websockets/Secure-Close-1000-reason.htm": [ "efdaaff2b022593bb07ed84ff5908577ede569a7", "testharness" @@ -214194,10 +216310,6 @@ "0b1951f1f1cf9c8cb60a55046c45ffdff556c081", "testharness" ], - "websockets/Secure-Close-NaN.htm": [ - "c6a162843c7bb7bc467bfb9f998932ac85a76ffa", - "testharness" - ], "websockets/Secure-Close-Reason-124Bytes.htm": [ "c53e247ed528f3cec25b8848260f0e7eaa643716", "testharness" @@ -214206,10 +216318,6 @@ "49b47b4ced20884680a8628ad9b357a66019fe96", "testharness" ], - "websockets/Secure-Close-null.htm": [ - "565144ca42c60326dbdb7d82720e982949fb4991", - "testharness" - ], "websockets/Secure-Close-onlyReason.htm": [ "41c7c1faa23830c808f5f99768cabb30ec4edc53", "testharness" @@ -214226,10 +216334,6 @@ "b5937b68def472531f56b35d960734ce1b27d392", "testharness" ], - "websockets/Secure-Close-string.htm": [ - "73daa94702b41a730cba78012af5dc1bd2bf7bcd", - "testharness" - ], "websockets/Secure-Close-undefined.htm": [ "d512819928be3394d94ac6d912e53937068b0f75", "testharness" @@ -214374,6 +216478,10 @@ "6873fe9127b4b5100f228e5821cfc41735906429", "testharness" ], + "websockets/close-invalid.any.js": [ + "d50557d4578f2d96080748315dcc8ffc7d6b7485", + "testharness" + ], "websockets/closing-handshake/002.html": [ "c3e2c09ae5a54ecca809d7aae0cb3cba3c5d3823", "testharness" @@ -215054,6 +217162,10 @@ "7a504bc478d03cbd77498284037af1d2a54d27d8", "testharness" ], + "webstorage/event_no_duplicates.html": [ + "494b19e190ed7d6af964aceffad9f261a02e4125", + "testharness" + ], "webstorage/event_session_key.html": [ "13dcb4e82c39d0662487b051bae087a805e0437a", "testharness" @@ -215247,219 +217359,219 @@ "testharness" ], "webvtt/rendering/cues-with-video/processing-model/2_cues_overlapping_completely_move_up-ref.html": [ - "1c18f763f31ab8e7c0065bfb8af58bc1d7cbc6c3", + "d7be95cbc484a1f9abeb5d00c6b8accd1fc5fe07", "support" ], "webvtt/rendering/cues-with-video/processing-model/2_cues_overlapping_completely_move_up.html": [ - "50b82bfc99db1046201ed63b896c9eabe9535b49", + "cad66b4c25cb60fa43da02887af9c44c766dc300", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/2_cues_overlapping_partially_move_down-ref.html": [ - "505ee0cce5ff7659f6220859421a5a6105ccf798", + "66fbf8f922252f325b7f7c8f904a841553d6d37b", "support" ], "webvtt/rendering/cues-with-video/processing-model/2_cues_overlapping_partially_move_down.html": [ - "dc38421f9a9da1619605a4f3e6da8c6160700a6d", + "710ab5bc915fd8c99ebed77f057014765deba774", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/2_cues_overlapping_partially_move_up-ref.html": [ - "def50c1e3ef0456b59fd0181b05d319d60f36bf1", + "57f54c1ff6fcdc2689f5850588a8bf93985242ee", "support" ], "webvtt/rendering/cues-with-video/processing-model/2_cues_overlapping_partially_move_up.html": [ - "e84c727ac9a44e523e5c4cc2a5f5b2b17f126df4", + "3d8663ee40b489400ae894b125e1dc8e941c0e58", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/2_tracks-ref.html": [ - "b98c5106c65dedb0073c1e834095f3d52e937781", + "b06e68c72a5049b77722be25c5bfb40553576dee", "support" ], "webvtt/rendering/cues-with-video/processing-model/2_tracks.html": [ - "e0615dc64febf683205f471161107301b77c8415", + "6041d89b12963438b72678727bf8a6e03d4ae67c", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/3_tracks-ref.html": [ - "a144f103a8f0ebe5d72c135c7734be00abc16e06", + "685135c9714495f010c3dd4cd4666cb72e5ebb83", "support" ], "webvtt/rendering/cues-with-video/processing-model/3_tracks.html": [ - "a9001029051b48f594cd5b6ee5bc29c00eeccd66", + "9c49e4c2c50d35e0a6cf6e0e4bd3d07559f96578", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/align_end-ref.html": [ - "ce79574d0fdb5ec4451b3dd463cd09bf3dc07c8e", + "0405a214c3835d8b1a8107a2d10aa3f13e2170ef", "support" ], "webvtt/rendering/cues-with-video/processing-model/align_end.html": [ - "59c88ac1f91216f57279607a0a6158c1f622f7d0", + "8a0737a00641eebc26dc9a49dba28a560f18af15", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/align_end_wrapped-ref.html": [ - "2ba5a0f9a95602ca46270de9d04926f5b9d2bcd9", + "8472691cefa5a0f92fc5ac5cf5f968de3f0dab88", "support" ], "webvtt/rendering/cues-with-video/processing-model/align_end_wrapped.html": [ - "2a24a8228bc08c9d0d29cfd8aa04c6dc772835bd", + "2adc30c7986573ad4df05aea96a278e60be51d7c", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/align_middle-ref.html": [ - "919e84594762d2c9c1ee642fec418e7a5282dbae", + "6432342a2dbe5ba000d22d5ef28af80feaa9d82b", "support" ], "webvtt/rendering/cues-with-video/processing-model/align_middle.html": [ - "812910e0bb701e1452b5dedc58e362a31d958a75", + "4b42557a730c4c832796d721806fdd8cfe90e827", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/align_middle_position_50-ref.html": [ - "cd3f618ec821d857f766ab50329e9029e292b7dc", + "f7c26a6124ceafd674f3cf1cb9a8460526d5b502", "support" ], "webvtt/rendering/cues-with-video/processing-model/align_middle_position_50.html": [ - "3bbfc24678f67f17cd48516413e32c5414fc7778", + "e3abe16b5c775c72e2f650661e2202316888d8bf", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/align_middle_position_gt_50-ref.html": [ - "8bd77c09d9b41fa8066582d1e2c6b8f4b775444b", + "774d6b535eb91dcba7c102412cdc5a3646978cf1", "support" ], "webvtt/rendering/cues-with-video/processing-model/align_middle_position_gt_50.html": [ - "f2ee11e7a8f510b21fbf028d8850b508e7bd1aae", + "587425d7701ed5b4e8913f665cd71cb38261f58b", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/align_middle_position_lt_50-ref.html": [ - "0093ad8d0fc4c2adb46946a9f943f04a02c77173", + "51abfcf959392f17226e743e2606f857828c5c46", "support" ], "webvtt/rendering/cues-with-video/processing-model/align_middle_position_lt_50.html": [ - "5d4ad6e711204256f7b36714e76c56cde1465329", + "dff97c8de840d20d793425e9dcbd66da42fb7678", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/align_middle_position_lt_50_size_gt_maximum_size-ref.html": [ - "b60639ec1e7b9b598dc5740655597e44a1aabb25", + "0563b0f43aeb19632a70dea0c5b5bca015aac6be", "support" ], "webvtt/rendering/cues-with-video/processing-model/align_middle_position_lt_50_size_gt_maximum_size.html": [ - "013f530bcc54a3853fe13551209508e335315ef6", + "0aafa8f20ef3fc00070b84bf0a50cb47ababc7c3", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/align_middle_wrapped-ref.html": [ - "9bace3032c8905639470fac1a771111f1a066570", + "69073806f96c39d33392f0e0120851f5a05b6c9e", "support" ], "webvtt/rendering/cues-with-video/processing-model/align_middle_wrapped.html": [ - "146b9f11c3446dd4532194e3a95304826a6ae904", + "f908bfc1483da4bddbc2618f9e42721b49f1b55d", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/align_start-ref.html": [ - "24e52248fe2b69690cb3c90d9bac046ec438f9cc", + "2dd9fda9a4d77dd0d3d304861e699f4a0c9aea3c", "support" ], "webvtt/rendering/cues-with-video/processing-model/align_start.html": [ - "b06086f1cf79f60092312cab504d167d9beb87b8", + "b1643e60b742b1b42b8ad4fdfd8ae02820eee742", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/align_start_wrapped-ref.html": [ - "d033ceb34a9972319007bd3ea0ebd28c331aa8ef", + "f3b1635b58faffd15f683706cd546f123030ab5c", "support" ], "webvtt/rendering/cues-with-video/processing-model/align_start_wrapped.html": [ - "95abbebb916c95359ad7d0b192fb8276d16051e3", + "d42ba58c219c21282b5425e4f1be5042792fbf11", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/audio_has_no_subtitles-ref.html": [ - "0f755b5485c947bd17e5b4cbe60a3c90d305c497", + "d9cebfba86d2323153c94e98ba90645acb568799", "support" ], "webvtt/rendering/cues-with-video/processing-model/audio_has_no_subtitles.html": [ - "2db63df750ec42628e64543a17e23ee12c82bf8b", + "d4283d840180e3d6f6757d8b665a3ea78378d83e", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/basic-ref.html": [ - "e9708127bc4254bd26f2e0137d68f209b0e32e8e", + "16f5a4c7acf47a4de36c205b2fe0271e0baa5df0", "support" ], "webvtt/rendering/cues-with-video/processing-model/basic.html": [ - "3b5aa06f1bcf0d2ae9b92a51bbba4f08a8d025a2", + "ea752bfa75e7a1b24c7de5f86eb10f8117c61f74", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/bidi/bidi_ruby-ref.html": [ - "35e64c4f740be3e8a45325dd182abaf11928409e", + "ba73df2a093319e45e611714647440f70784d335", "support" ], "webvtt/rendering/cues-with-video/processing-model/bidi/bidi_ruby.html": [ - "8502c592fda507710c477caa80b761e4ee7187a3", + "fed662e2a5b47fa3734fcd4c0c687b67860a42e8", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/bidi/u002E_LF_u05D0-ref.html": [ - "4f58b64bdb150db224007fce29a7b0bea90856de", + "d4e7994a0e3d7a71fbe007cf61b16757ff0c200f", "support" ], "webvtt/rendering/cues-with-video/processing-model/bidi/u002E_LF_u05D0.html": [ - "91e1f9867d66686e4c110a2debeaa06fadee9acd", + "9559aba727a9caed9529cf9c985bd26872269cb1", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/bidi/u002E_u2028_u05D0-ref.html": [ - "90858a90eb912106ac7e82df05f52eabd2485629", + "874ae44478fb48dca933f2ecc4c4740979f963ae", "support" ], "webvtt/rendering/cues-with-video/processing-model/bidi/u002E_u2028_u05D0.html": [ - "68e68568384704b2c4bc549ed2f4a6479eeb0121", + "b22f1b485d7bb195e491f04f7bf2f1c9e43f9f98", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/bidi/u002E_u2029_u05D0-ref.html": [ - "94e4751bdd0b653b95a3d61ae90aeb07a9998e41", + "e79c4119ffd4d51d93f67738077aa59db0cb4294", "support" ], "webvtt/rendering/cues-with-video/processing-model/bidi/u002E_u2029_u05D0.html": [ - "09806ca4a1728aa93486b503782de8829f6d6400", + "40dee0947ce24a81e96b2f59a46338aad567d0e1", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/bidi/u0041_first-ref.html": [ - "23c9d46e50437db4880c2a405c1ea74e6e4707e7", + "fafb80f6db2d051dc7e2d8bf8e7eccd012ed01c7", "support" ], "webvtt/rendering/cues-with-video/processing-model/bidi/u0041_first.html": [ - "29b758948bf3d90e1c88ff17ec5349d347f3120e", + "eed0135e1c9408050db9bca9e5255846deb661ee", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/bidi/u05D0_first-ref.html": [ - "3180844b36367e0b78b69e4eff5a3e1c7b1c4efd", + "d3746cd3c5f4902eecdf1cae7fd9158657db57c1", "support" ], "webvtt/rendering/cues-with-video/processing-model/bidi/u05D0_first.html": [ - "ae3b9ab48389f7e1a81f6f28f2426a2502d8f92e", + "ea0d47e6aef235dda7f602576d9eee3a1515193f", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/bidi/u0628_first-ref.html": [ - "2ed34f0d9a88c851b000d7b1b60781c9cae7e301", + "797aeb4a955b84ef44c069f533e0d2cbd41bd50f", "support" ], "webvtt/rendering/cues-with-video/processing-model/bidi/u0628_first.html": [ - "b667e562cf303a5886581ef3f6734cd5650f5e7a", + "2a1e9977ecb2c33c38a4553e915bb68f53edcb89", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/bidi/u06E9_no_strong_dir-ref.html": [ - "26c9e7f7df3b9cc96a6ff3957ffa46a508197fcd", + "0c0917d720a48848e7c66b70228bc06b831a6adb", "support" ], "webvtt/rendering/cues-with-video/processing-model/bidi/u06E9_no_strong_dir.html": [ - "1b3b2dc9b266464e70f35bd5a4805a27ef388b02", + "fc631777c813bde321d93ada833a906d235f5d6b", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/cue_too_long-ref.html": [ - "e61999b494f6dc3981df149f67a84d520b0e4856", + "a1ad25229ccf2edd31164b285fc84f94fa0d2eb4", "support" ], "webvtt/rendering/cues-with-video/processing-model/cue_too_long.html": [ - "cc176cf4090282690deee4112082d1b08cce47b7", + "7ef26d7377673819732c3bed6b7eb2b72783c4d0", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/decode_escaped_entities-ref.html": [ - "96940bf33e12cf59cce9543a583d7c25d73a0bb7", + "3a2c2a01229c6f1a2a291385f3695517b373e00a", "support" ], "webvtt/rendering/cues-with-video/processing-model/decode_escaped_entities.html": [ - "e6d9138b59278aeeeb43b443c534045103ee55e1", + "0190a91c791ce5345a56bc4dbd0d298fd644e3be", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/disable_controls_reposition-ref.html": [ @@ -215467,119 +217579,119 @@ "support" ], "webvtt/rendering/cues-with-video/processing-model/disable_controls_reposition.html": [ - "ee5d9c6c7c652b874fd1759b9d0b8896f63cda16", + "621e368f0f64f4f9d6bef4a5553de9339dfa629e", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/dom_override_cue_align_position_line_size-ref.html": [ - "42bcb3567a1e8379404ead090cbbf77e4ee925a2", + "c8f9e4530c24730d0dddadf3cbeb6865c38f6337", "support" ], "webvtt/rendering/cues-with-video/processing-model/dom_override_cue_align_position_line_size.html": [ - "d7bce25660e4f32de525b0c81a30015baf06e9f1", + "d53bbedca048617ea987e93e880f262cc2a9d308", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/dom_override_cue_align_position_line_size_while_paused-ref.html": [ - "24ae2074ddd27e260a9a0bd94699f422ae452dfc", + "7246fa884b30b35d56d582277d368dfc3721befc", "support" ], "webvtt/rendering/cues-with-video/processing-model/dom_override_cue_align_position_line_size_while_paused.html": [ - "2c79ac84ad3a343595e9e117bcbea413c9d4c456", + "415754e6b1e32ff6ee3e659779d55c1433bb5404", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/dom_override_cue_line-ref.html": [ - "d2dc7fc84e30b6c26e1786b87b6de94d95c89455", + "33a2156457f6eb2e3115c4eb4d7249b6d4a02269", "support" ], "webvtt/rendering/cues-with-video/processing-model/dom_override_cue_line.html": [ - "5c2fb34da9c0d2cfc7cb20530bc1c9ef87bceba2", + "5bf125065e7ad988794a0363b227ae74e53ba3a3", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/dom_override_cue_text-ref.html": [ - "2dd40ab7ca2149230181b71f69abcaf66546c503", + "683265816c90ed955925c03581a0663decf4fe91", "support" ], "webvtt/rendering/cues-with-video/processing-model/dom_override_cue_text.html": [ - "ea12a616a257f72860745d51c1457ba9b4d3399e", + "ca8754b608badcf900b0c2842250357bb8ef5370", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/dom_override_cue_text_while_paused-ref.html": [ - "443304d9df560740f92c637dd1a4fb4d08bcc9b1", + "80890cc67094d28b9959ee88e91c7d5c8974047c", "support" ], "webvtt/rendering/cues-with-video/processing-model/dom_override_cue_text_while_paused.html": [ - "e7ca8929d46f1700b76a000589801536f8a921d9", + "d08aa80540734c87196980b9053302f5fa4b2b0c", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/dom_override_remove_cue_while_paused-ref.html": [ - "298c1d2217124b6a15543b47f219dcf18278c183", + "5b8a5f597777418b7dba44e6e07d05625c599ce7", "support" ], "webvtt/rendering/cues-with-video/processing-model/dom_override_remove_cue_while_paused.html": [ - "20e50ce1b6cfbcc83e014920c15e31febb5f425c", + "5f9e48b0160ac1916034ac29cce97282ce9b1ecf", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/enable_controls_reposition-ref.html": [ - "71e48c0b77f2875b6f2231180230825daa48f428", + "f1e0fbe74815d609c82b441f2b1fc53079d80dcc", "support" ], "webvtt/rendering/cues-with-video/processing-model/enable_controls_reposition.html": [ - "ea5314c3dc5175a1da0d341d60e856247dea0df1", + "a66827b31618ea271142cbbf246cab3f3617899a", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/evil/9_cues_overlapping_completely-ref.html": [ - "d59b173781ccfbb89f438d3f6951ab6f101efeeb", + "0a8f9f41688d0ae9f82ea6a2cb1c3ada319304a7", "support" ], "webvtt/rendering/cues-with-video/processing-model/evil/9_cues_overlapping_completely.html": [ - "f6622b693989c92ab58e3074d110e95127c4fc8a", + "bcca1e2754eaf01b3d496cac913c35b3e2029e73", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/evil/9_cues_overlapping_completely_all_cues_have_same_timestamp-ref.html": [ - "5cdc418b59a34c54565336455dce37e0733a3256", + "489244fb966030353c3b6f3a3b491f72fe305fe1", "support" ], "webvtt/rendering/cues-with-video/processing-model/evil/9_cues_overlapping_completely_all_cues_have_same_timestamp.html": [ - "3ea46c55eed998e4042a2081cd1d836b34549171", + "35e95130f9de16f1d36d101a9c949cf23cf19cb2", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/evil/media_404_omit_subtitles-ref.html": [ - "7f07320df2e9e8aa48767c64f6a213f148ea39ee", + "79287aa190131b37d5f80c64bd6542728e77f49e", "support" ], "webvtt/rendering/cues-with-video/processing-model/evil/media_404_omit_subtitles.html": [ - "68e555316e4aa9054a5d725806628f321d7be5c6", + "e7fb4d0d611c6fc112c2ed938c9bd3d4645a504d", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/evil/media_height_19-ref.html": [ - "8fa2f0548a6119ea0c47377a96546b43b12c6ca8", + "7f8b653e516d469e7ac3ac89213e127bd5f39bc2", "support" ], "webvtt/rendering/cues-with-video/processing-model/evil/media_height_19.html": [ - "288957ac0ad3680794a17221bfb68b3843f8942e", + "21e3e3351fa785ba899a13a0843bc589050cf61c", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/evil/single_quote-ref.html": [ - "d2c02fd710173fb0b721cba6d166bc92126c6972", + "08dc250ad826553d1d4ae1d985849e387ffa78c4", "support" ], "webvtt/rendering/cues-with-video/processing-model/evil/single_quote.html": [ - "71cf513bcf43a042e3399e0ed7c16df8e6a9c6aa", + "257b8dbbe907640b2580c5b650f940082fba6bfd", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/evil/size_90-ref.html": [ - "fcdee0c9b86a4c7112c3d1eb56dd7366f234a592", + "798f50a2d5a04015240dd666da2756c7a8eca44b", "support" ], "webvtt/rendering/cues-with-video/processing-model/evil/size_90.html": [ - "b8fb820990d039243a859a0bca6a3a7d11bb6d2b", + "5f169cc7ad3f5090da43a675e320450ffd25c0fe", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/evil/size_99-ref.html": [ - "82c78cdc5d49473e18a903239c703684c1ab8467", + "886bdd04df75b4c9d8e1fd5aa90b1ec111f95c48", "support" ], "webvtt/rendering/cues-with-video/processing-model/evil/size_99.html": [ - "825dcf1aeb49ae0df46c3f49dcb911c9b8d3e31a", + "2bdaaf17ff385a02cf81f34a5b9776a173037ef5", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/evil/support/9_cues_overlapping_completely.vtt": [ @@ -215607,67 +217719,67 @@ "support" ], "webvtt/rendering/cues-with-video/processing-model/line_-2_wrapped_cue_grow_upwards-ref.html": [ - "07fdccbaafcde652ab4687de3856811eba2bee29", + "964fe8eff1f0d7e07d92a01606d0aab8079cd1c6", "support" ], "webvtt/rendering/cues-with-video/processing-model/line_-2_wrapped_cue_grow_upwards.html": [ - "3e0978c3b9c3329b1c0caa10b35e502d3a55be8a", + "99b692974d6d77be5ea1819958dbe8ebc99f50ab", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/line_0_is_top-ref.html": [ - "5955a59861b6e0287ee58a8ba3da8aca811bf716", + "db1d0250777a78508762ae76b9912447558137be", "support" ], "webvtt/rendering/cues-with-video/processing-model/line_0_is_top.html": [ - "7cb7716084a4a1e8480d2cbba9bdbaf8896b3db4", + "a11bc3ca00f8109c9eea8cda760dd49f84f1a58f", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/line_1_wrapped_cue_grow_downwards-ref.html": [ - "c1a081de6359c0f1ea8904df93956237169f74d8", + "712750113c4958e69b84b27da3e92b2c0641dc9e", "support" ], "webvtt/rendering/cues-with-video/processing-model/line_1_wrapped_cue_grow_downwards.html": [ - "cd137cc547d1bcfa09d263aec545d5a74ee97fdd", + "ab7629e596fe04f9f5d90bffbec4c612e5f65d81", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/line_50_percent-ref.html": [ - "18f78ceb955048dd753c8264a7f4f0e320744ef0", + "29fa1af62e65917b6e4671cfd5708466d577cd68", "support" ], "webvtt/rendering/cues-with-video/processing-model/line_50_percent.html": [ - "5f06d08c5daf8d5a9c7a0f143514ac9e1d025d04", + "dc5427ecfb2a48197908a555d9cfcd682f2df737", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/line_integer_and_percent_mixed_overlap-ref.html": [ - "3107d154d0044c3d42ac718a6dd3bc85acb866bf", + "4c7ce6721ae61ef2156d26768da733d275b267b0", "support" ], "webvtt/rendering/cues-with-video/processing-model/line_integer_and_percent_mixed_overlap.html": [ - "4c874d89fd55a019c8eb61b9360ea3ad72cbd269", + "44912dc23a0660383ebed44cd6edbeefc3c29d82", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/line_integer_and_percent_mixed_overlap_move_up-ref.html": [ - "76d806996f55cb1a1944f5594fb02268a4a79d72", + "c8283f6cc6a5c2686536e2507aa783c22c14d261", "support" ], "webvtt/rendering/cues-with-video/processing-model/line_integer_and_percent_mixed_overlap_move_up.html": [ - "ca75e3c6148b4bf8d00203303a6a165dff77afeb", + "380cc5c6c6e856d045240e124dac8c2ef4b66b03", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/line_percent_and_integer_mixed_overlap-ref.html": [ - "a57f3b66ddedf98bc3c6087686a862c9f93dde2e", + "c3dbfc769eabb5d734cdf1d2c6262c54c3ff6b54", "support" ], "webvtt/rendering/cues-with-video/processing-model/line_percent_and_integer_mixed_overlap.html": [ - "aefd281cd0ac0b4620abbf187a29dab1e2d3ae68", + "fa900bdf2b458f8a5a3355a83f0ea5b292730a90", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/line_percent_and_integer_mixed_overlap_move_up-ref.html": [ - "aae7bd720994efaae358569c6dca3223bed3d727", + "6a4ae36f8c6079b7dba073b7c89209aee62093fc", "support" ], "webvtt/rendering/cues-with-video/processing-model/line_percent_and_integer_mixed_overlap_move_up.html": [ - "52e8fdb84658d272dd1c99a057c43eb017da49ec", + "12bffda9ac59dfba8be702c0cff74553bdaf9554", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/media/background.gif": [ @@ -215675,27 +217787,27 @@ "support" ], "webvtt/rendering/cues-with-video/processing-model/media_height400_with_controls-ref.html": [ - "9eb9b9024d19c4dc284ddbf4e2a38c0e8019540f", + "e53cec8a188639497fab90b54d89752d6d100928", "support" ], "webvtt/rendering/cues-with-video/processing-model/media_height400_with_controls.html": [ - "469dd3cf2cec543a4ff58cfa695cc523b27d06b6", + "6263180e1ba83a28175d8eddae3b0c560f4add1d", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/media_with_controls-ref.html": [ - "49ef1d548cd6bd66a9612155641f49707bda4621", + "b3e921c9fded89d44f618913495010fd6da2318b", "support" ], "webvtt/rendering/cues-with-video/processing-model/media_with_controls.html": [ - "91a75f8e3fb47a23ed64481761da23a4010e8d74", + "e65bd186154097bbc65c24b56cb34ade15452f76", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/navigate_cue_position-1.html": [ - "7bb97b9aa91ec7b013d8c8cfc29553d3714f1f76", + "b8e6bd57bcd9bfbcf57c08d2189232a0f677f74b", "support" ], "webvtt/rendering/cues-with-video/processing-model/navigate_cue_position-ref-1.html": [ - "1e5a0c2dc8fbf9a76840e0653268bb77a103327f", + "9fd4f8821d2f50d347fc16c04c1a0b4cf5194e3b", "support" ], "webvtt/rendering/cues-with-video/processing-model/navigate_cue_position-ref.html": [ @@ -215703,19 +217815,19 @@ "support" ], "webvtt/rendering/cues-with-video/processing-model/navigate_cue_position.html": [ - "ba5cacb3f0e51da8de637c50e9c7bd623437d6d5", + "fb119abdd856eecce5f2bf07ccd0a4178f40fed8", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/one_line_cue_plus_wrapped_cue-ref.html": [ - "0a461d9689e96221257c96063b0356987e4b3c01", + "91f6ceabe954fe3781a1a9eaa3ab5ae7571a6998", "support" ], "webvtt/rendering/cues-with-video/processing-model/one_line_cue_plus_wrapped_cue.html": [ - "fd7f610a70a0c5bb29149a0a17d2d37d2629744f", + "a110dd9ee53738fa9caf7ec7d4b09ee77e64f1b1", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/repaint-ref.html": [ - "fd3066cdf54113cef00dced51d526cfdc1b4bb22", + "ccad6f476b3766f9c5c0a5aab6d30e132166818e", "support" ], "webvtt/rendering/cues-with-video/processing-model/repaint.html": [ @@ -215723,1315 +217835,1315 @@ "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue/background_properties-ref.html": [ - "25803ece2eb5b4734c03fec47de92635965aacfc", + "b2be217c9fe3b016598ced75a088e56494e87bab", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue/background_properties.html": [ - "010b0cac0fad20d0683db947fdf5161f4d639c16", + "88def9abb4eedf1275443c9d0fc7fec572fa768a", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue/background_shorthand-ref.html": [ - "2e1b33007d4d70778438cfca845d1b8fc078775f", + "9a77b76cc0e94087770f5e4b762354dabb1f01bd", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue/background_shorthand.html": [ - "1b63a4ce76cf610c4896397406846f893a92d006", + "714a93a01ecadd0504694d84298e75c3b60775a8", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue/background_shorthand_css_relative_url-ref.html": [ - "799d282e1d9d865d2997466b656a5fd2aab95cfe", + "5beca20df24fc893f5421d8136acbc35f25b70d2", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue/background_shorthand_css_relative_url.html": [ - "ec506bf6c1b8e82a0be95de3ec3fd7d8ccd631dc", + "1f2d89dcf1e3be72164df0d8bbd57ae81f474604", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue/color_hex-ref.html": [ - "9131f5c2107d09d3f3fc8a523b80f200372e458d", + "e7a167844494c53de8745023ea08bd19fb3005f4", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue/color_hex.html": [ - "9dae790cc0571d510fcff2eacb1353c8a63685f7", + "1d4302489fe0a47cec4d3e648eb08296618804c5", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue/color_hsla-ref.html": [ - "513e4f57ad6ae97097eabcd8e0a6477c5da796f9", + "e01dee4d4fdc41a4f5843d745ec4fcbb6a64a94f", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue/color_hsla.html": [ - "28bc6e7ba8d52d5bc6d9eb74eed976ca29047ad2", + "e3a2bb2c313adb0676f19a50090e7ccd316071d3", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue/color_rgba-ref.html": [ - "950ab4cfbff6e42d05bfd91dd6a738642fb14acc", + "9df1eead2d68564e84f0199bbdd369f79d114795", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue/color_rgba.html": [ - "35af0ff7795c8b4a175ecc863de00ed017d15ece", + "5c1dc91830653ba99bed4ccacad15be170e9b6db", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue/cue_selector_single_colon-ref.html": [ - "86c17fab221ed1aaa624c048bab944d578d71af6", + "5a04197b3aa50f41a6686000c26701781d7175b4", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue/cue_selector_single_colon.html": [ - "63fb3da9c8291ef1e8ccdf1837b6473c93e01162", + "f8cb515ab2bb668807069da28a1fe31075c40348", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue/font_properties-ref.html": [ - "7b72171dfef6e8ce0e185ec3ae9d4c1d9a20cde4", + "cd4d7cd27e8eaec14b7fcb855dd0449ed5394f24", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue/font_properties.html": [ - "01a30eb354fd550a5756f5a24d42477a775637f0", + "5afce03216fc06aa4cb64979428f037c0b5d688d", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue/font_shorthand-ref.html": [ - "b109336b8bf8919c0ef3a20e196bcf2ed1bd1326", + "7d536398e37606fbc0a9d6156c8c73c0c0d1ca49", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue/font_shorthand.html": [ - "03df93028f5cc26eb26b0003fddc5ab4016f67ff", + "5d6e9139b3404389425efe8b6c8d6e258ecd4f85", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue/inherit_values_from_media_element-ref.html": [ - "19228d77fd10bcb490e96a1535a75ea5da7ab465", + "0936ae100d1d6b183d40542214c1f5dbed8791c5", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue/inherit_values_from_media_element.html": [ - "60dcc3338d03613ca180dd98d22b83dc624a7b20", + "b293b5752395b9cb6e3e5987a1098283bb539f9b", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue/outline_properties-ref.html": [ - "68a934abbd04e73443862a0c1556914d0ab2c86e", + "5aa1843b4e18012a7b5770a7f8cb4f471811155e", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue/outline_properties.html": [ - "26900755ae31d05632837965ae9860ad904a28dc", + "76d58daa5de94bc66685f83064f35a896ee2cd3f", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue/outline_shorthand-ref.html": [ - "dadc421edbbbff6e338e2e67c651c5694ea58b00", + "a1224063dc382f9566d7c7c746101a0805753552", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue/outline_shorthand.html": [ - "ec4979f788ebecb6205a4688f723f49a6d6e43bd", + "99fa16b6510c399de0bc0423fb4f88f9760e8960", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue/text-decoration_line-through-ref.html": [ - "65c9bc89d67dd7064d7f72815865af5b0d0d9471", + "c462aba3696dfc93cce76f62470879e4c8773d53", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue/text-decoration_line-through.html": [ - "37fee9f20c3b6584fb00078d66d74a92246c413f", + "5e22589026e4da0e0687e0bde9d3a8ee1631cb68", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue/text-decoration_overline-ref.html": [ - "1092d503a82a92f533af2e38452d9ae1e848d6dd", + "b032d11e1217445d02a18ec924ac006e48e9d9fa", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue/text-decoration_overline.html": [ - "e597dc31f1e5b1ee5d32c20bd8de7c8c8dc64d3c", + "6d1f4262c265ebcd6d7a7886d53592e2b437d801", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue/text-decoration_overline_underline_line-through-ref.html": [ - "a04798fb61942e5e143a4f97f068adb99761e0d9", + "0829db5d9fbb42081e35f34fac80f0ee71afe7af", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue/text-decoration_overline_underline_line-through.html": [ - "5cc2f906eea9495fb6af92443661eea07e682593", + "241182c6063f9d7e06041db13ce4d63f262ca31f", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue/text-decoration_underline-ref.html": [ - "eb97373a62cd3026077febac776395eda6ddc17d", + "6eadb08cec879c04b39bf8054fb4bc4d5ec57dbf", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue/text-decoration_underline.html": [ - "34f2d2ff0027a10ccfb3392a6883bf9587054055", + "4e3f573d323d3522d3df120f4c1a4175a0986999", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue/text-shadow-ref.html": [ - "1ccb5dc86da9bbc2195353e4e2fe30deb5539aef", + "f0573f41279d1a843041e3da3ebffe2ab9e4c672", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue/text-shadow.html": [ - "640faa69ae29d8aa5dcfa8fb5462b0bb6e0f53f3", + "ab5973c947156b96ab4a5ae25f298ae7ebe724c8", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue/white-space_normal_wrapped-ref.html": [ - "fb0b465ef014894c175de473dc100db2f29d8ec8", + "ca17ebd56575255babbdaffd783cdcdecd1a0b99", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue/white-space_normal_wrapped.html": [ - "ec4756b58757ead0108136137ac9e69cd733c306", + "d53ea5dde4df4b4cae3a2fba432f4b8781608854", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue/white-space_nowrap_wrapped-ref.html": [ - "f98f02d931bc1c7057f63e69c77ceb0f87dac355", + "ccd6ee1deb3848167a3a6c05e437282c975ef27c", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue/white-space_nowrap_wrapped.html": [ - "1a381b2d81ea6217334b6cabbdd6467b7a7ab3ed", + "68d7bb0010fee6b0cc4ec9d8e2d07df3dfff1c77", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue/white-space_pre-line_wrapped-ref.html": [ - "814bcf46154db6e3abee47cf552250a2cd1268c7", + "6c283de90dc118c898b2af86588d7af52fc2ad5e", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue/white-space_pre-line_wrapped.html": [ - "c0bb7f61fb613e508c2210b104bc539e9f09fb17", + "c2ea3fa00326360b25cdb23414c48dc34b5a867e", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue/white-space_pre-ref.html": [ - "44648133d9ffaa0051d042a435284aa015c44949", + "f28ece32c7e704bdd5801a09c3ac21a0f66dfde8", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue/white-space_pre-wrap_wrapped-ref.html": [ - "921f72c2bd4f5fced5280b83fb059fc2d8593ee6", + "126dc16e5e8a993bb3f5b586914ad425dded1899", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue/white-space_pre-wrap_wrapped.html": [ - "813659e8522f982fb2323073bb7f256e1dc251fe", + "84ba6cb43ed166f8453c5f73b8129f21e522be92", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue/white-space_pre.html": [ - "5bedbe4f60b4c0ac3bd24cf63a4816259e4ed0bb", + "e3ee7236e6f85c5172bc488d1b2184a59fc57ad9", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue/white-space_pre_wrapped-ref.html": [ - "34200f27d7ba38909efcb4262c4f52da0d2e7103", + "6d6576d6621d1af8268afbea5d396f1423c94c3f", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue/white-space_pre_wrapped.html": [ - "745a354e1442d75fee2445155cc1ace80dccf9ab", + "32a82273904d6acc67a9d0bba94006a31b58e179", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/background_box-ref.html": [ - "c950ef00721802648bc56288265ce0f37a4803bf", + "9bf705e12ed7b33da7e951787badeb7fd4e74ba3", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/background_box.html": [ - "ea8af1eb665764f791a9908734a759bf6cc7d270", + "f31df8d1a69ddd6e0d720e5f5358ab1ddd24037b", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/background_properties-ref.html": [ - "c1c799e9788d69960d3a6212ff6a0d9de12068f0", + "89a7f4c433e2cd048bb7f16ac4f2d7fff35c318f", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/background_properties.html": [ - "3b9e6518c94c9e95f51430a40fbfe202864a4dc8", + "aa6f043e6bf0a0adbc7c7c8178141e3f6cbe065b", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/background_shorthand-ref.html": [ - "7f8752283f53bca6b6b8710803825ad9c4b2bcaa", + "63227457d7f557ab1c3765bad2bb7949fe992249", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/background_shorthand.html": [ - "3e7771e8ea8db45105ad7306c05f8911c4bafde1", + "3a81f5fcda80c9ebdbb71341e594770dc9c34d13", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/background_shorthand_css_relative_url-ref.html": [ - "d1f6ef4dd9f2a305c1258fefc1caae543236ad39", + "f918e059f40aa26e049b529dc327ca598d40509d", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/background_shorthand_css_relative_url.html": [ - "882d225bf446d22aafb8b93b1df7d990dcb7e59a", + "2211ae0bb6198f025aecc679714f4785c49e5039", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/bold_object/bold_animation_with_timestamp-ref.html": [ - "11c5b6a4cb7cbde237fc7e04157584f37a2d3db0", + "19cefc17dfd338bca227f997c5e42c54bc2cd264", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/bold_object/bold_animation_with_timestamp.html": [ - "2eadebac18cf6defced778b714a638411fa82e52", + "b07f2fc89ea3b1b4f397a86554a0a0dd404647c4", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/bold_object/bold_background_properties-ref.html": [ - "eef53dc869427b69065386e1e461e65f5e18a9af", + "4a6e9ae4a422b8c099a9592ce958e86c3296e67f", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/bold_object/bold_background_properties.html": [ - "58576a6bd2060c9a71e350257f0a71a5393a9c4b", + "6e54d7475f1d44f7428efeb194e0e044277c34a5", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/bold_object/bold_background_shorthand-ref.html": [ - "0fc6dbb98a40c57d6dfad69e65f9fb46f3303ab9", + "ad01d777d80771d747d44343c4c869fc59d2ea19", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/bold_object/bold_background_shorthand.html": [ - "fabe3e6e374ff49def45cc9fc7a75e6bb457457a", + "1fa7a71088396fec90a51c696c7329401d7537a6", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/bold_object/bold_color-ref.html": [ - "e7c3950392af4a28bbc57d7b385b96fd7a4446db", + "38f4f054a4b5e178a59ea425b495edc2211decbc", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/bold_object/bold_color.html": [ - "467743f1addb85d4354e356dbb22b95d2d480156", + "45d37ac270b21326392881aae450ff1a71214e2a", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/bold_object/bold_font_properties-ref.html": [ - "1a77dfed4f0d3db4087c67e5645acf143d971fa1", + "22861491bc7e33cfd8cd52dde40fdbf50b205eb2", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/bold_object/bold_font_properties.html": [ - "4ec77d2cd520e244fa284123faf260b81fc1a91c", + "b5d453475c2fd5269c42a8899633a6d1b4ca969d", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/bold_object/bold_font_shorthand-ref.html": [ - "445f4decff4159c1fb4ebc204f01dc0b527dca62", + "deb9c73d8d65afa3b8266f4024fa921642d51fc5", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/bold_object/bold_font_shorthand.html": [ - "c3a96059f54a1d647d69fe0b93e1eaef4f115f48", + "e7818ee5ee01e5c289aa34b4e20cfcc7be995ba7", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/bold_object/bold_namespace-ref.html": [ - "cabb108b446262cf2a53c3d9e4d96212b53f7bc8", + "d795f8beae0442c25e15bfdee2980c04ae1583cf", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/bold_object/bold_namespace.html": [ - "4a932bf3ef9b81b2ab66f74fdccf75211083ddce", + "3017759ea42493fe68c2cf11bd33cb0efd88b661", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/bold_object/bold_outline_properties-ref.html": [ - "d400a03b029bc171d303ca125e098d004b91ddab", + "0332950bbb0edb99b8c4bfd014aae3c55a6e973e", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/bold_object/bold_outline_properties.html": [ - "12d2cead71cdb0406418cfac13e8189fbaaf795c", + "3df4e089fca5db7861f2a3a8540f1137ccf414ba", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/bold_object/bold_outline_shorthand-ref.html": [ - "0f01a6a1f91d2e613ede4a5d54ae1752048f9d35", + "7f9f0934207d929abb03bbc9e808beabd254972c", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/bold_object/bold_outline_shorthand.html": [ - "2f5f0487fbe10487af2d349de912798cf23a498c", + "ac8a210bbdca7d654cb673fe47ff8784aa4b12ec", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/bold_object/bold_text-decoration_line-through-ref.html": [ - "70fec03ba7885657503e54d904a5bd60a7d57a4a", + "2cc05e8b4d7c25764fd7f08e503a7e6228074fe0", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/bold_object/bold_text-decoration_line-through.html": [ - "8d4b6e4b35857e725cdf89bf76e30c254397b535", + "c806b12c284dd804a2886ca5f74cab20914c54d6", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/bold_object/bold_text-shadow-ref.html": [ - "52db263734475cdb2c833d90dde85f55f4f17f87", + "c7af4d87c59239d5901467ad655827432c5b3772", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/bold_object/bold_text-shadow.html": [ - "854f82566cf71dbf7383ed685d87349c33e3e6f2", + "c4bccc3735fab06945c7c86c0f56c8339e486d6a", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/bold_object/bold_timestamp_future-ref.html": [ - "aec51b265a657b6b883f1741da255a38ff207592", + "429711db2396f45a64509f01fec30adce3f59750", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/bold_object/bold_timestamp_future.html": [ - "2a6cd9fae6c28de08352a77b2d7e2e40617e1ed2", + "0a660231677e2310593a0475ea994eb5be829213", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/bold_object/bold_timestamp_past-ref.html": [ - "8655c5a531b7cc74cd4e413aaccb46e75ba621e6", + "7896206c6fa528a8ca5e1ad2c24d2d291bc47e73", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/bold_object/bold_timestamp_past.html": [ - "8dbc7040babfbca5895bd74568f2785f8ba5bb6a", + "1fbd92485a5f5391057121e5d36b328af8912aa4", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/bold_object/bold_transition_with_timestamp-ref.html": [ - "0375f5bb048c661516c2cdf7239e20167091b41d", + "01df046e424f38d67aa75075f1bc1444a0c1c5c7", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/bold_object/bold_transition_with_timestamp.html": [ - "b64b96173908269c1627514c3a9233c48b565dbc", + "e9ca2ce5188c7dfce8f389e182ea713f19671b53", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/bold_object/bold_white-space_normal_wrapped-ref.html": [ - "94ec313158ba1a8ea2975e8bbdece67356ea130d", + "6da30cfd76b44bb3599a22d7c938bd0675a2addd", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/bold_object/bold_white-space_normal_wrapped.html": [ - "7e025764a3c6e840734bb40933f88170095b0465", + "be9d92a7e948b8af9c543fd058acc7f975807204", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/bold_object/bold_white-space_nowrap-ref.html": [ - "37ba8756de08f1a9bf35eec366e6db15905e91e9", + "6661e7ac10445ae9b76d71434627d616ba183e4c", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/bold_object/bold_white-space_nowrap.html": [ - "0bc0ee7c7b30653f4b292e53c55565343c335398", + "e802a3c7ce54c2330b1aa8e381be87593134a886", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/bold_object/bold_white-space_pre-line_wrapped-ref.html": [ - "5d9cc922efa324a4e99ab1ce334ad7611ed1b40d", + "4d0582ebdb084f54e19e5a69442c22562befc619", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/bold_object/bold_white-space_pre-line_wrapped.html": [ - "e56a1aaabe060d423ef50243c0cf6401ed8fc2d9", + "67032e99691e8395e9b1e2d8f55f94f19e340ea8", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/bold_object/bold_white-space_pre-wrap_wrapped-ref.html": [ - "f930f56b6d7434c109b24ee7af1ebbbe97b2a9af", + "799ec48986a08e2daa23f404936484c49162e900", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/bold_object/bold_white-space_pre-wrap_wrapped.html": [ - "f5c3fe40b33279b081ef6eb15c922de1697fa010", + "3bf08e439abe6648b1539cd422629c2a6e051511", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/bold_object/bold_white-space_pre_wrapped-ref.html": [ - "7540a7e3e6fa7d749b45b48ef4f52d116b6388f5", + "14c641c17ca17f012a4e2d68139210f88c760f5b", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/bold_object/bold_white-space_pre_wrapped.html": [ - "b48cbd940e0480fb0a7c962081fcc58f9f067f67", + "6d89789ac86f338ca91bac22b9ef4d8dda6f1e86", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/bold_object/bold_with_class-ref.html": [ - "471878f0173045c38636729e3cdf0dc6cc7028bf", + "5880088e60c227b767a44ac48d2acc866ec5ba19", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/bold_object/bold_with_class.html": [ - "5fa54ab91c48b101586d2c4a72b205c1e62e4934", + "37a938ac27594eba89bc14c1ecb1efaae5c8cbc7", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/bold_object/bold_with_class_object_specific_selector-ref.html": [ - "fbc24f09f0818b65e723d7ece39d9c6e0ab1860b", + "882b5a4a64a558fdbff8bc72d54f2ad915467caf", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/bold_object/bold_with_class_object_specific_selector.html": [ - "1913c83285cee2aebc771d0765393a755fbad130", + "3e47f730a2961b1cfa16e8c73745362c6a61f36c", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/class_object/class_animation_with_timestamp-ref.html": [ - "025eed6e493a7753bb860902287fcc9824a6f9b5", + "be91a9d5baaf48a9e0f6beca799d2b262281a172", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/class_object/class_animation_with_timestamp.html": [ - "19e8ef08163b2e3f5393c147dddb07548fe41b70", + "542ff8a413caf3ec52cde50b05203158e8084a28", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/class_object/class_background_properties-ref.html": [ - "3f75f6b36f5e64b9c5322050e8f6c620eafc1976", + "7e6b05a91fc114d6eadf867a31d772a084ebdc82", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/class_object/class_background_properties.html": [ - "26a49f74604907e3c8726e5ad59796e882cf1284", + "74fdef1b3968a1e4c8394d7a2b7f47639dae814f", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/class_object/class_background_shorthand-ref.html": [ - "5c74af362708fc57135796fed18d72a550b11b35", + "6625b741c9f44e1fa86d4b5a5c591d4b32abd2ef", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/class_object/class_background_shorthand.html": [ - "e28438c959ab9456715b5e899cddca1e4eb591a7", + "65ec8817f63ebd4b2397ad1cc8ebe74c2d34d613", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/class_object/class_color-ref.html": [ - "1d08f8e9adc2f71c67952ba760489201daf87785", + "de294d35616759c7d724cbf545f156cadcd48c08", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/class_object/class_color.html": [ - "705ff76883afcf5e9091a82afa322a072d107e38", + "fe62b51da0fc1bc1ef7d4342beb56715ce36634a", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/class_object/class_font_properties-ref.html": [ - "abc9f780f21bff697fd130284c1d2132129df663", + "34b2a5800d7a071dd48d473c89ede350e6e0e057", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/class_object/class_font_properties.html": [ - "62d03879904be5b5706f8e5aa5a87ceb638475f0", + "5e6e09248ab9e19e2b2fd4bdb7ea59b4e306e38d", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/class_object/class_font_shorthand-ref.html": [ - "835eb749bbd84279cff860e6f89a6d1f72d8d8e9", + "a9b04073987dee0365096412f02ff98bbfb9d55a", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/class_object/class_font_shorthand.html": [ - "1344c146d95701128612fbcc01c35b475b04d20b", + "fcc724063b93cd7418f31f9e816c53ed8a76d1a0", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/class_object/class_namespace-ref.html": [ - "bd0df089f0e6e4857907e249dfdca42415b302b0", + "d6eb64bf43831aefa059c0f586b6c5a637c8d9fa", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/class_object/class_namespace.html": [ - "a68b4fcf8be709615606c931fb1ea694d6c94a68", + "7f64e423d77469f83fb956ff8de6bfff4d398a65", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/class_object/class_outline_properties-ref.html": [ - "0cb5c158a7a74833816cbceacc84d6aca7312475", + "40d944b847a06ac51dc21594785d62e8f8fb1fb2", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/class_object/class_outline_properties.html": [ - "349443d49b7a34948bbd65df77d2405ecd844c85", + "0addbb2596b9801f01d558dd74c526bab76f2bd8", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/class_object/class_outline_shorthand-ref.html": [ - "dc6062307d5dccb5dbdc45d65d36bf8ca4ffdb3f", + "05705a311c36567222ca655dfd059d7f53d0dfad", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/class_object/class_outline_shorthand.html": [ - "5825aff74f33f20ee6405443fcaa204eb00405cc", + "b5c8cb0857e3aecec13fc3c7f9b4db092e4e9868", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/class_object/class_text-decoration_line-through-ref.html": [ - "9158da0187ab5c862d602c96773411fa05872a97", + "548c53c7fe9e92e3c86d97dd0ecc8cf7259e9c82", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/class_object/class_text-decoration_line-through.html": [ - "c665c1108d1d60cf2543aa1a2c31e6865fad9e64", + "e3efbc8e3bf3a3ed979b5c794381cf87e31ce6c3", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/class_object/class_text-shadow-ref.html": [ - "408dfe02fb6033f3b7009e74dda88aca7d1bce4b", + "b23359bb7890190f94c808ef615f9950b4b86d5e", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/class_object/class_text-shadow.html": [ - "df6f72e50d713bc36dbdc502aa9d5b1fee4248b8", + "057ac9c54af06b7ec949ed4149eed7d636eb7f17", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/class_object/class_timestamp_future-ref.html": [ - "2d5568629f11c103b7955113c103682fa8a5e3c0", + "1c5ed0e0143dd0ba5d5ac69b4007a5f7675fdd8e", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/class_object/class_timestamp_future.html": [ - "a23c76a737f721cb0041b84d33939b40698bd5cd", + "0e064e7760de47b6bf0c7a3ed69623fa62d43d15", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/class_object/class_timestamp_past-ref.html": [ - "aed35483361cdccdc867b61777185116d061108c", + "b329e549c46d3cd0f6d9a61691e1ebd3641ceba8", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/class_object/class_timestamp_past.html": [ - "6bd280ac601d9b6a1d9165da95dd3496aee2c2c6", + "3e095dfd30602af2bcf78ee4af80647886acf158", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/class_object/class_transition_with_timestamp-ref.html": [ - "6c44d9f472fdfbad238686b9a98b4bc98c809d77", + "72bd21eb1c6e152235355df8d2c963725f01c4d8", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/class_object/class_transition_with_timestamp.html": [ - "16371314b58c35fc7ee3abf43da60a7c5c73d1ca", + "14f360ba52e3fdd10c28a2bc7e47da6f0e6bdeeb", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/class_object/class_white-space_normal_wrapped-ref.html": [ - "19fee5c46e77ad109d231dbdc7f77ad9ed8997bf", + "fb3050f410d8ae969e18f853a7805da5c0e6d052", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/class_object/class_white-space_normal_wrapped.html": [ - "5bfd45b4e0fedbf2e690adf03673b42237b1c565", + "8cddfd7c7823330382fb3a20dd24c5c33e37ab74", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/class_object/class_white-space_nowrap-ref.html": [ - "8513ac6b7859d66ab12a4854df0b527e5f416289", + "274bfd6604263f0c0492b3d3506c6bb945df7cf1", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/class_object/class_white-space_nowrap.html": [ - "ef9dfa370f788e3ef51365ccee597e79fca1cc94", + "a3ef85705913611cadb68b478178288fd9b6ef28", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/class_object/class_white-space_pre-line_wrapped-ref.html": [ - "c151b57152d7bcde6e677f0c7b30bf507e0acfec", + "1840c5e90ea24f9a94365e03a7aa93a3d7cf27e6", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/class_object/class_white-space_pre-line_wrapped.html": [ - "9ae26fad7f542666f161f13a27eb663c29d05695", + "1782125550dc1f1d308367f9667cc4b2690877eb", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/class_object/class_white-space_pre-wrap_wrapped-ref.html": [ - "76be48db3f91c0b81d642d60aacc1eb3c557c774", + "3e662573b6433a668c542b1a77100fb64a245130", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/class_object/class_white-space_pre-wrap_wrapped.html": [ - "061afce4f784eb71b264569ce84967aeafaf070c", + "fbe7cbb227cfcbaebe8a7c4e08ca2ac5eb26928e", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/class_object/class_white-space_pre_wrapped-ref.html": [ - "42e9ba628a6cc6160a7dde6f5a5afbfa5350cc92", + "93c3c1a00670d3026ec4a846447203221de5d346", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/class_object/class_white-space_pre_wrapped.html": [ - "41837d5d095fee342b4946766eaa10644622c885", + "12cc4f04fb1f106afebc2720999e860344942a01", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/class_object/class_with_class-ref.html": [ - "14d35336ba3ed090b20a7d817477217002e4d426", + "acaa47c14f672dea38c639be78e9b325dc8f7ce1", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/class_object/class_with_class.html": [ - "8a3b080558494436941f32c908c5d20d373b5b42", + "19c53c4ce864f1615972e9822771574d826e394e", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/class_object/class_with_class_object_specific_selector-ref.html": [ - "c5132da165a2b4d1b7c870948f44525db0610f6e", + "5c0441d094fdee1bdf3aa0d795f33604014b0c29", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/class_object/class_with_class_object_specific_selector.html": [ - "9c1a86e6d211a99260e13e8bc0a96efeb75f83f8", + "5d91cb3d891e93396dfc9c7a8585f0dd35338732", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/color_hex-ref.html": [ - "748146bf7ce35170b85d3d2e93e52ccd4d340a52", + "40b9573eeadee62f840b345d8c8b254418d4f644", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/color_hex.html": [ - "79693ccb14029540733d2eac7d26eb442127d3ad", + "8f55d96c6b19b6efbd30c903b379e63400ed6e51", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/color_hsla-ref.html": [ - "97a258a522cdd2c0e424841cccac083f5081e555", + "922a9dc3215d5b15082cae18e6712bf1c2c4731d", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/color_hsla.html": [ - "4d14e8cb9f55e36d8016638dd026c0bf0494465c", + "c5ef79193fd1f5c386e4831d91a39ed8fab7669e", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/color_rgba-ref.html": [ - "effc137e5fd36ecec218587d61a69670becd9345", + "9f8956d77784381418a500dcb694910ca1c04fad", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/color_rgba.html": [ - "09dd621a13bc90f7735761e5180b40ed5027bfa6", + "26867d0ead881596b4fff8d333fbc41a8471a9d1", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/cue_func_selector_single_colon-ref.html": [ - "f288ec41b312f5697aab3d959a59e8b3610b81ec", + "5c06cb762b6971699b089d9bda6e769143ee33af", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/cue_func_selector_single_colon.html": [ - "60aaa73cf603c80cecee104e65dd41db45188152", + "063734fcee27a40b818d340de86385236d8dc1fe", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/font_properties-ref.html": [ - "5069b652dfb4905513ace31fb6ee95270f96e001", + "68997072983ae4ef2c57a22d077b405da985888a", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/font_properties.html": [ - "bafa3f4c2af05691dc2ec363e479674d0cab3c60", + "1b60cccce6bae5c9c826709fecad3bc238eba0fe", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/font_shorthand-ref.html": [ - "eff45cbd5dd339ca48cb9a656d6f42835b184e0f", + "f58e382c3fa72798cb087e48bb6fd9d770371274", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/font_shorthand.html": [ - "c4a1a753ac77546c9ca244976efdc4fdf4330d75", + "926b59e94860883cdeefccb74613ff6fe53c6ff4", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/id_color-ref.html": [ - "2b4fa81b6ffaead50a2f083f89314ff57088b6bf", + "527a08a7ae420aa27f18290bc8992e372750cc6a", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/id_color.html": [ - "ceee07e59f7a7d71918bc1b3a9f84919c7f76779", + "e9898e6d7e8003673de54d9e58e6f5d5a85805c9", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/inherit_values_from_media_element-ref.html": [ - "636c82c8ba1552c653299f1e84a71f7603b79e8f", + "c92a7348d7ca481ce34704c41f52c73b06534236", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/inherit_values_from_media_element.html": [ - "d8eac6245be9409cd8263520e0c79e39cefaa559", + "29ae893fe9d7166996d373cf5942bb9e9771b148", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/italic_object/italic_animation_with_timestamp-ref.html": [ - "d36f194f3d421f4e128be3fd44aa8ff1e746719f", + "186b81cb2ca5c6a1ebb16f9b890a461b3fbc5f1c", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/italic_object/italic_animation_with_timestamp.html": [ - "663fa0509d56cf2509150d164f8d6d019253403e", + "f7d889863b00d755f2b3cdd227855d471f026cec", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/italic_object/italic_background_properties-ref.html": [ - "f48fdfa30db99a5229888c89e352aa5586db1c41", + "2a5d651778e42ac505d409849cc52117fc29f49c", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/italic_object/italic_background_properties.html": [ - "14b9299461e50eb1a1248a84266fc1f9ae9ecebe", + "31bcd7c2fc9378dcf5488ffcb3caf47bd0e4c843", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/italic_object/italic_background_shorthand-ref.html": [ - "c832cc6b3ef8658db9b07ad44bd500cb8b847056", + "8564abc100d73a03ad4905485155281b75eb679c", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/italic_object/italic_background_shorthand.html": [ - "eedce8505f45758344fb466ae8567a652587dde1", + "d300ba83bc3a0cfa4d15c847da8febf03e993e55", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/italic_object/italic_color-ref.html": [ - "3ec93e8ec68f0ae69a395bb21e4f7ad2ce1621c3", + "a442aa6cde08a1ee6ee1005005cc63771ae9e7d3", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/italic_object/italic_color.html": [ - "f240e3f94f4d30bf86f5efd40619ef802a68a64e", + "f07e0fcb9066a5b357237b419aeb2bc3492afeb8", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/italic_object/italic_font_properties-ref.html": [ - "05f3630a45b5dc0298329d638a92ce036aa5a740", + "fb95ad042f8a78f18bd03bc566e2387aa6f38926", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/italic_object/italic_font_properties.html": [ - "dda84db92c451133bd68f586aa229e4c0e6b1b46", + "0feb0831dc82476fcc1ba336336293f44bb4da22", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/italic_object/italic_font_shorthand-ref.html": [ - "aa5211126f1dafe152cbf96e241b82fa780a2aff", + "e5bbfff21560411aba2ad9703016e25455898868", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/italic_object/italic_font_shorthand.html": [ - "eeef7fade738cd0b789ec5659dcaf0445fe05a92", + "37ee88aa93dcc122df81b7e07ea32bf1a2984f86", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/italic_object/italic_namespace-ref.html": [ - "309c4165b046c22700a8317ea321d34e8a9b896e", + "65ceba1ae309fc69ef7b44bda7136a6f088973cc", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/italic_object/italic_namespace.html": [ - "a0c4a391e54a4346b49657f5e444a6f1d8b3accc", + "9c1dfd9b53a3edde07d9cd69661764803f90ab43", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/italic_object/italic_outline_properties-ref.html": [ - "be2949e7ba0fbb41c0f8348948fddbd496e60d7e", + "641eeab0d0413870b6c0f35c0966ae971c164a97", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/italic_object/italic_outline_properties.html": [ - "0cf301d0f58670d60194c84152192baff9141c76", + "b9f3c2250f5c17f896176f2ce6db49b38b6c3da2", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/italic_object/italic_outline_shorthand-ref.html": [ - "1b0cc896ba24afccb2f2e086b4ef5cd12adee626", + "051b0d8e83de73b79ec786ece8ef9d8a7405712b", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/italic_object/italic_outline_shorthand.html": [ - "23ea13e5af4808832e9412212b9cb381713c5ca2", + "cb63dcfc40eba51fd85afd50b4d5d1d2b0725a9c", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/italic_object/italic_text-decoration_line-through-ref.html": [ - "e4cdbeb4455093794fd10616759854e1c7fb97cb", + "58e8d6a7d660c122748db36d1d2dc53a5dd54201", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/italic_object/italic_text-decoration_line-through.html": [ - "1e8569e303641296ef47253172ca05a1d26d37a0", + "ca8ecaf54cdb1d1d743ad5e7adaf6e8fec4e0c46", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/italic_object/italic_text-shadow-ref.html": [ - "ca2817cba33682f04eef4ffc9d34c9d5d8974a1c", + "c6f1216b31b2fdb62c1d1fe05175618021a3623f", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/italic_object/italic_text-shadow.html": [ - "fb726e8be49bae0b91f785ecb2d926a2b6f881e1", + "83ea35ace6c8cd0fbde75cdabb7bcef62659fe09", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/italic_object/italic_timestamp_future-ref.html": [ - "32ac89fbf33b500f4f132526483bdc9649786b03", + "5c0b4a4e754290d2468f4b32789517ee62da1e3a", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/italic_object/italic_timestamp_future.html": [ - "8da88caf670a5f9d1c08304f9cfc7677eec056b9", + "56e34c6109482d366871960cb1d5dd20f02bdd43", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/italic_object/italic_timestamp_past-ref.html": [ - "9a602bfc7845e495feee9c308c0177f86620a835", + "10c340663fb7e9887ffb858802b83cf26bc09622", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/italic_object/italic_timestamp_past.html": [ - "83bdc01f0cb762190ee265f7b1ec5900bffc8653", + "669f050a93728551fd10ff42ff3ac031ceaa4474", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/italic_object/italic_transition_with_timestamp-ref.html": [ - "5fbe48fee3a14d29d680ab1ae8608ff437dbfe64", + "a960540593d6de9e32dd92ad298afea5257b9bc6", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/italic_object/italic_transition_with_timestamp.html": [ - "d062931eecab62ae1de7f79f87dc00c6dce7aecc", + "e6d42335e24c93951dec0e8a998f5b803bfaeb5c", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/italic_object/italic_white-space_normal_wrapped-ref.html": [ - "becf5fa3db244c77e44f9de94f1addbee034d948", + "99df7ecccf67212f0346bbf8aa61cfbfd273fc12", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/italic_object/italic_white-space_normal_wrapped.html": [ - "ef920a98297a53e704e229b6b5a9610b1af51729", + "35695c2b00409e41293ae1cf5192e0f69b64e92c", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/italic_object/italic_white-space_nowrap-ref.html": [ - "80ac0b412e35fa9be5d39eb3472d2a5b00bade93", + "a0fb89c5e96831b66c0d347242593ad175a72b30", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/italic_object/italic_white-space_nowrap.html": [ - "2b9ba7d1f17885a00cfbb6fa59d2ad240eb0bc24", + "7d8d9c58488842aa876e94eb13b99355dc6075b2", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/italic_object/italic_white-space_pre-line_wrapped-ref.html": [ - "6d1a38b8210c5bd271257d903ba78ac585dfdb15", + "95837d065385f02fb60abdfd50e22d5e9b6bb663", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/italic_object/italic_white-space_pre-line_wrapped.html": [ - "6543d7c1aac331faa9e03a7a0c78075e8d00c676", + "083415708bf13cf96a0af05fa5acfa80ef7dafe2", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/italic_object/italic_white-space_pre-wrap_wrapped-ref.html": [ - "164d16e759f86c788b68fbb6b6bd8556b44b1dc1", + "6705a64a9d0aaaac52532dd36bdffa8427f5a77a", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/italic_object/italic_white-space_pre-wrap_wrapped.html": [ - "140b236618bb2b77861a05dc4d056279df6f212b", + "f70d332a1df07242b92034d39eea078f0aff7699", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/italic_object/italic_white-space_pre_wrapped-ref.html": [ - "1e1683ef50e023936e876a16eaa3f1f50dfa78fb", + "8b636dfe883c22703b4d4f597499fc9a1caa0133", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/italic_object/italic_white-space_pre_wrapped.html": [ - "d218e5292a481cbcbda75372ea56b39c9b23fe8f", + "e4ade7410d3da630511870ba6a27224dc1004a8f", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/italic_object/italic_with_class-ref.html": [ - "b0ba29638c7eff2e1ffb2f8b371f3edaeb6fb825", + "b51908d71bec6b1ff1ebe2711fb5450617de67ac", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/italic_object/italic_with_class.html": [ - "15788a4878a72352c4fa9cf2db1b7ec9de93a72b", + "eea5b7ceaf1f2c447b9f588a44a93edc26e2a65e", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/italic_object/italic_with_class_object_specific_selector-ref.html": [ - "3420a45a32895e9d1678e891bd50bdc7efc98e73", + "20aa86c56cc571da9b7de954ee6bd31037b1778a", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/italic_object/italic_with_class_object_specific_selector.html": [ - "3bdccf9ffd373576f9fc52c5a9742e026df44a2b", + "8cff25ad53c964aa81d439dcde885ad35aa573a1", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/not_allowed_properties-ref.html": [ - "4f4cef8c68e222d3588ec563cd25135e32b184f4", + "849772e9ccf2b6568f84d03f163e5f09c5a6269a", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/not_allowed_properties.html": [ - "3a359f3d5921cf0e4c03d8592f9afb7c1630dbb2", + "85880820c88504bdf2c65ff03dbcac1bdacc02a8", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/not_root_selector-ref.html": [ - "ff056ca555a6a86ceb3514ceff16f621c86cc6ff", + "49653d270c14ca98020f090e0a7f3a0e00cbeb5d", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/not_root_selector.html": [ - "bd827421f11c3880d9d0da8235f5692a587cdda2", + "2c68b03784bebf7440193d42f8cb9e550f457fbf", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/outline_properties-ref.html": [ - "79ed737000ba3f9317f47abe63ad8aaaca95adb8", + "3c66b65461b4a88746af44e399f9eea9942f7dcd", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/outline_properties.html": [ - "f419ca425d8176d08a93fe0c754c2e7a9e7f11b6", + "5d50f71a9b2ecbffa65b1bee865d8ee04cb73a47", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/outline_shorthand-ref.html": [ - "16745040894ed0f8af7d0129efe6ba8329d93326", + "7f4dbf43248db21b33f1e0e0365e0fecf3667f52", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/outline_shorthand.html": [ - "75f9c2866823aae7758edc34aadc1eb3e6af7729", + "edecdd3768da9b5e778763a575e5e871d8ff72de", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/root_namespace-ref.html": [ - "92639e3de9db1a1c886317a946fc48664b45f11a", + "9aec56d31758488e4a2de58302627bb706704d31", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/root_namespace.html": [ - "f9ee5a97c024ff05960963749ea6526cc3963ec7", + "b1a2b63d490133e6f38610069798831c8417082d", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/root_selector-ref.html": [ - "b56d45d4057226b69a1058feb9a59fcb2fb00967", + "3ab103abc0f587439b6f0d9f248f0dcd731549ce", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/root_selector.html": [ - "bc7b7ac791877db68125e3452249cc5add738aac", + "987c280adb1f65046a52a8254bb17fb0f4b81141", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/text-decoration_line-through-ref.html": [ - "06ed55f75465050d9b0745a25d23968f61d0b624", + "5d5fb76ffb12f51367393eea530c4e79fe348db7", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/text-decoration_line-through.html": [ - "7227def166302fa019638e70948fc74ee23cfc6c", + "d2b447030ec2c7c008b6bb45e3284e59986778dc", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/text-decoration_overline-ref.html": [ - "87488bcac4f1423f69f579ad0f54c68703401551", + "88f6b144f70a9fdc3069768a24eb0cc7ff907437", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/text-decoration_overline.html": [ - "67fe49983df310e7375a2abd401f9a9b0acccc9e", + "2a40e996b3fc731d9fa1c47b6a72aa338ccb2974", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/text-decoration_overline_underline_line-through-ref.html": [ - "88ee5f492c8a747e8a6459d4913a7c5078ddbc3f", + "b8ff53792362b6756b0bc87b6bcb7ffbeab47d4d", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/text-decoration_overline_underline_line-through.html": [ - "c922bdb67483db5f5d14dcbbffcee15c79f5679e", + "5e625a89b008fd607646a8afe312834bc6eab3d3", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/text-decoration_underline-ref.html": [ - "10b57efcd7e69b71b58d051554777c4c9e416858", + "11c3c4ba7e9448c8c0bd41dcbf4b29319c4f1cee", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/text-decoration_underline.html": [ - "aad9d53af247cb9e59b9ac1e485522dcc8e632f3", + "0a2520bdb79dfa8dedb569c9f3c18f989901ce7e", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/text-shadow-ref.html": [ - "51fe80c94eb15b453d2367d8b58636061d1d16e0", + "194a4d7069038395ab78edccc2aacc64331cf347", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/text-shadow.html": [ - "a60660d57a70d29d422391b7a4cc4e8c78e6a9a8", + "beda0d5579fb6ab3665e812f911a0a580b176dee", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/type_selector_root-ref.html": [ - "10777062757cdc2eb953124868781cb43a063745", + "fbfb51b876bb229264d1e1ca48842acd81f9d599", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/type_selector_root.html": [ - "7a359139400cac942128f10d188cf2082947d6cf", + "bb0314e8c31f01956f9273168c45a69c88d3335d", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/underline_object/underline_animation_with_timestamp-ref.html": [ - "98433949f73fe9099b2b580b3b6770f32dccff66", + "2d8e0b34ef3e0fa63bc5bcbd7a620145108b7050", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/underline_object/underline_animation_with_timestamp.html": [ - "8191894499e1faf1b076c261f54aa6f8bf1a15d3", + "447a56ba1ffece57a5698de8ba76f8f669b52362", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/underline_object/underline_background_properties-ref.html": [ - "2f13741374e858aca83bc31dab79b754d984d994", + "8cb417572be7185a4301f11c4bc5f1685f93700a", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/underline_object/underline_background_properties.html": [ - "f31a764a0cdc38f161f66f58d9619691025830df", + "ac984c0876c31faeb490f5fa3db743f9d0cff7c4", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/underline_object/underline_background_shorthand-ref.html": [ - "ba040852fe56b70966c9473a008d903a1b7dc5d2", + "149f12e05e0ff35c375fee4f8111835306d61681", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/underline_object/underline_background_shorthand.html": [ - "345553b8e23eb0bad973f66388ce4b5caedf2537", + "d49ccbd8e789469599eadb864a6053d1dbbd5aa3", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/underline_object/underline_color-ref.html": [ - "ba7f7ed1eca7329fbfbd1e67584a72522774d6f0", + "c9b5ddaa8704b76e1a537944f6d73787646e1d62", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/underline_object/underline_color.html": [ - "d16491e541d8bb97dfeb97541481261093e60bce", + "cdc8bce9a3631fa5e5b427c357b531e3601d2f2b", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/underline_object/underline_font_properties-ref.html": [ - "e3310e7e90f1441432a332c2552a6e8eecda8455", + "fda71fc35f295dbd722841dfa7d96ac9664b2490", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/underline_object/underline_font_properties.html": [ - "ed2e9fc1b91be0cc8630f67e6bc54537b1ec0765", + "a99b8736453990b478e6a4347ed828d4912ccf0d", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/underline_object/underline_font_shorthand-ref.html": [ - "19508ba976381cdc9522abf7c13195507ade2644", + "2b345a057e67a6ed720f03800745ae5fb36d70b0", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/underline_object/underline_font_shorthand.html": [ - "b74fe174354a91f8693993c432cc4fcc13ec5418", + "69cabcb88d551a731aaac28f3ed8209b689d56f7", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/underline_object/underline_namespace-ref.html": [ - "fed301a30abea4c22062aae504399a87487c822f", + "0eeb26ab7a20ef2b57dbc32f9d9ff58fb76e2bff", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/underline_object/underline_namespace.html": [ - "163c3d4a0c6e55025eb17d382a7631aa8a11c179", + "58cc23c488239b0ee8f1552435770f2f4b09310c", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/underline_object/underline_outline_properties-ref.html": [ - "259c13704a4fc904875983a2473755e113461ce7", + "d31138c43bae11b9661f052c4fb2cd7d7bf004b7", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/underline_object/underline_outline_properties.html": [ - "e8cd6bd956476334c77a713c36493d845d69459c", + "353f9b90d9372f57bd69afbc7a17ae9376382a44", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/underline_object/underline_outline_shorthand-ref.html": [ - "4b66f8fff9282688acd79009fbc011fb081ca24a", + "5a6cab36e4f77dd8dd40c6c6cb1e904fafddb192", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/underline_object/underline_outline_shorthand.html": [ - "2dc8e0cf5d19aa8fa9323e6a001b8a9b4ac4635b", + "0dd9c90cb0dcb34cb40631ae739268341a4480b4", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/underline_object/underline_text-decoration_line-through-ref.html": [ - "ec38be0334225147196b37ff9444d71e3dc03998", + "af4002fc280a4d55a83813454b3b53883255cc99", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/underline_object/underline_text-decoration_line-through.html": [ - "edeff4016a1a59ac5c5002ed92cb0db2334b8234", + "278e12c9cf902a72194bb8c65b4c3a643bd3e005", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/underline_object/underline_text-shadow-ref.html": [ - "77f0a7f887c23d4ea2630c8a2fb8b861650fc952", + "21dec1d3a524fa0f3f8618681400e385c6831658", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/underline_object/underline_text-shadow.html": [ - "3bee39eddfdcadefd22b827191bd15d2a7fbfd79", + "0c02604624beed2efd91548ca0ea0f708f8a0b46", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/underline_object/underline_timestamp_future-ref.html": [ - "0db022fe8a7d1b4114f60493993ce1c44999f44e", + "9e762747bf7136dd172ff93ae4c8eac9ed3e7e9c", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/underline_object/underline_timestamp_future.html": [ - "8a24fafde3b62789e1f7cb67a7a649dcf6cc537d", + "1779c5b92031bd21faed7d6d5e64d00ec057cc06", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/underline_object/underline_timestamp_past-ref.html": [ - "fa8e5e30aea89b0b1d87cd6e9221d33160c6b557", + "5dbba366611c545579ef8860fb56dd17aaf54cf4", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/underline_object/underline_timestamp_past.html": [ - "8f53589c583ac42a00022ce47004de3aec613357", + "5219196370a8f3c5f6a38b6c78203489f7ccb4f0", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/underline_object/underline_transition_with_timestamp-ref.html": [ - "9571af4355d9dcea0593cbe2b96dd899a8082319", + "1c2999f3c5cc71dd7a82e689bffb1eb6186f7bce", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/underline_object/underline_transition_with_timestamp.html": [ - "1d56d215c301c9f61df89c8f607859e09e611037", + "882940befe72e8565b4d1b431d15048c66f61fb2", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/underline_object/underline_white-space_normal_wrapped-ref.html": [ - "f500e1259db2a10a9b74cc3a167bb6eca6d17e22", + "3744c512983f55a33fc3103d1ff62684ad9ca6d7", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/underline_object/underline_white-space_normal_wrapped.html": [ - "0bb194edb046b3ee8bf639f5b288d069fe9390f5", + "e2ff3a3662dd60f656bf9e769592e6a3fc07acef", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/underline_object/underline_white-space_nowrap-ref.html": [ - "846021a468fc9a4fd56703c4a9166034147cc801", + "cd871ead128b156116668d2e241cca401eec121a", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/underline_object/underline_white-space_nowrap.html": [ - "c3859de1560eb344c85314c252be596152f5cdba", + "fb070a865e469bffb6ecb4249180f81875fe96ef", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/underline_object/underline_white-space_pre-line_wrapped-ref.html": [ - "9ac9008b0c495b50101af699609a0085b5470876", + "a299329c83883a8ace8291fa15e5ea086d0fe016", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/underline_object/underline_white-space_pre-line_wrapped.html": [ - "0a425bf8953e36db990f86daf957663b34f48d15", + "9ed16655f1b356357c94663eda0d5693215402c8", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/underline_object/underline_white-space_pre-wrap_wrapped-ref.html": [ - "0c492c2b086c83f812da051e63a1d9f4ce867838", + "e395ecde00803a970d0c8280f388c37bd39defb1", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/underline_object/underline_white-space_pre-wrap_wrapped.html": [ - "cfa4cc770cd55af383c1722b47a84a0c141c95bb", + "f5b0f1ffd30bef82636670460c84f9e1837c86c5", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/underline_object/underline_white-space_pre_wrapped-ref.html": [ - "63f7c905cfa49fac1a79054f3e8476ce88da259b", + "48c0f0dfdd63367237fac6179d8b1700e07bd318", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/underline_object/underline_white-space_pre_wrapped.html": [ - "c1fd22f1e01f68a06036e80535e6d076940f8ed9", + "990e5575c95c054f81a4aedc4a7f84e952271122", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/underline_object/underline_with_class-ref.html": [ - "4f8f84882f6e128835512c76be4ace0871300c83", + "d438f11a78f4362d8d7a26ecb036f02347c1b135", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/underline_object/underline_with_class.html": [ - "85066a2bb611c226f73e2b027d4e9a2b63d42be6", + "cb99c6415afcb090b4fe325bcdf741eded26c394", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/underline_object/underline_with_class_object_specific_selector-ref.html": [ - "6410d4b063c77b5951add3483d493224851a1232", + "c8b696718325cd0fd898481cdb6dc4db50df09e5", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/underline_object/underline_with_class_object_specific_selector.html": [ - "1decc9d39af4b6d16f22ffb80852223b3a0f7206", + "89473cb28a7442d31b0acfc5fcabb60fd90269ef", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/voice_object/voice_animation_with_timestamp-ref.html": [ - "fed33404c3bfb4967c28cec79f71d51402f4dd0e", + "e014b78bbf6fec2e809565f54665dde19403ef68", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/voice_object/voice_animation_with_timestamp.html": [ - "832d26f2a35f5af74ff17ffe4d5c336e43e8cb22", + "beb2e0391e981a6cd185ea8540b1aa62e6178aa0", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/voice_object/voice_background_properties-ref.html": [ - "1a428dcd8768f46c5a44f2f1ebd0b325fab96df2", + "23ed7cb9d531835f26809f958ea70b3a550f7a41", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/voice_object/voice_background_properties.html": [ - "28e647aa757e981e7a9d7df3531a9397e35498b6", + "a074f29d1becdb74d84b09efb9f048c33cb55844", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/voice_object/voice_background_shorthand-ref.html": [ - "72f8e1387aff18f8afc828ab1f8cde1d613658ba", + "414e6043bae051752017379381e92cb20993be09", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/voice_object/voice_background_shorthand.html": [ - "00085dc749cde7f08497ed4a049b4b99553719aa", + "d5e0b0bdef7e41297c6af694ef32566799b5df2f", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/voice_object/voice_color-ref.html": [ - "04b850cc1346feab92ab556d6e87daf42a2f0257", + "4b7e9c4221ccec78f4f0dcba96a883d6d64be56a", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/voice_object/voice_color.html": [ - "9032ac3ba80e6a6d2e76635e773db477cff41627", + "de25c2f36ec4d37d82053ed32d345bad11653a41", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/voice_object/voice_font_properties-ref.html": [ - "3e3e7bd89ab1ac05d1b9cebdc58ad34c7327e86e", + "0c97691cd57d90777fcd588de0f231a33fbe3911", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/voice_object/voice_font_properties.html": [ - "edb8d7c4c0b85b9e614fba19661ae9348e67ae0f", + "f3ccb56a6b701215bd5bd938d731f93d5662afab", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/voice_object/voice_font_shorthand-ref.html": [ - "9f2da1d9bee2f7bf0ba5ca24e9752b0de6d07ad4", + "9cf4284f14a84f72b389f361a39642631f8b968c", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/voice_object/voice_font_shorthand.html": [ - "16e6bbcbf64095b623ba53f9b3c0a37709c188ec", + "2fc12eb4c01601d65aa95d529afa829edb7f9804", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/voice_object/voice_namespace-ref.html": [ - "424d36be9a50463dde23e8584937911e22293443", + "63560264d54a742fb516e86e014a1e5850693947", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/voice_object/voice_namespace.html": [ - "5a08af94771b5bbd6b6f8aeada535083eeef1914", + "9165ebbc7c597a7de7a83f2f86a99fd8b8042751", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/voice_object/voice_outline_properties-ref.html": [ - "afbe11188dec40419ee2746b2b022e2317f02529", + "d54e56e81566c3f852ba651d6d611833c575c168", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/voice_object/voice_outline_properties.html": [ - "7f901596dc84b3b6442cb4832afe2ead5fafa585", + "d9edca739bc338699fe2eb06903131f45f529103", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/voice_object/voice_outline_shorthand-ref.html": [ - "45327bb32351722dbb14cf36f5963af7c1543b81", + "ffb4a9c7b692af2c7087651157e8690768a4bec5", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/voice_object/voice_outline_shorthand.html": [ - "7731191bd4156d4e1ba47234b8ef2d7255958786", + "8c1930c76b2aa7825fbf3bf097d4595b8deaed44", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/voice_object/voice_text-decoration_line-through-ref.html": [ - "dcf02b82d20aaa643748b1980bf616b551f0bf8f", + "d4969eca2583cf01fba37e662ce9e22487c49cea", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/voice_object/voice_text-decoration_line-through.html": [ - "a8edeab51f006d388c692a120e144919c8c6a261", + "a3cb19702c7af1c669dc89e0f6a1a8b89aa5ac0c", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/voice_object/voice_text-shadow-ref.html": [ - "e7a388119a5b4b61aba83b9ed6753f4b5952a0d0", + "d9a31cc6d05a5b7a647745f3341783d6a30b15d0", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/voice_object/voice_text-shadow.html": [ - "50dce5b5ebc71871e87b63e264f0bdbf924a8b20", + "2242220ecd54d546080b104f460f98a47551904d", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/voice_object/voice_timestamp_future-ref.html": [ - "04dc349a714f510186ae141ba86e4996978cfcae", + "a2201053ae1ee93f0ecfe8e3ca5863225569f1aa", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/voice_object/voice_timestamp_future.html": [ - "07f35204a02f3459e2c7623d842ee5259a7a061c", + "831b5e20241e38d6ea0cd1c0b5ee1eb096fb3dd4", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/voice_object/voice_timestamp_past-ref.html": [ - "ff39a8481194fb7dcefa27aa24ce0492621c24a0", + "ff6800eed9137f2ee2e10ec536556448ebcf62f4", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/voice_object/voice_timestamp_past.html": [ - "004cfdfa2fc29e3eac35ba460727e2ff6e05f7f2", + "b420e454cc7e43faaeda1fedf196222714b08f34", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/voice_object/voice_transition_with_timestamp-ref.html": [ - "c039eb4ab11e5f7902ab9dfd603bba56a8ba2e55", + "64174a6c6ec7a3631665a16e55198117d8b9262e", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/voice_object/voice_transition_with_timestamp.html": [ - "55217a8be2ee2d0c56e4d693cf425001727d94da", + "cd3c085870a2acfbe6f2695c9ee818be9f16c86f", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/voice_object/voice_voice_attribute-ref.html": [ - "7558a360a3b9709f8642aa301dee54615861101c", + "f853b22dab367bedc588fc4423ebad8e682de975", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/voice_object/voice_voice_attribute.html": [ - "f05aa723cc0b4841ec0a500251a6e2f8ea09186f", + "10da4ddc817e40b2a7edccf049f29ac65048761b", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/voice_object/voice_white-space_normal_wrapped-ref.html": [ - "7173c9325e22b70e8f53fd500ab5b4f046454be1", + "110bebeed39c59bf2371dd1947bdfb441fc9458c", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/voice_object/voice_white-space_normal_wrapped.html": [ - "8d0ea3c762f5ed41e937c8a4df071bc75fc97b53", + "1efe6913b007417ee7cef0203616f0d183179068", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/voice_object/voice_white-space_nowrap-ref.html": [ - "da4b633455145559129ac53a2f68f4d1ee7aa934", + "85d875e2fa9818f387bd4d4003fe9b0206737f29", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/voice_object/voice_white-space_nowrap.html": [ - "9025302636b23ade16b04bf63019ed965c6e5653", + "ced7b3bf1597a7235c94fd5ce808bd5477cb526f", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/voice_object/voice_white-space_pre-line_wrapped-ref.html": [ - "959fd9afb7ff7b59e0bee8645948d1c54ecc1be5", + "b747ca6b05faa9ef86776298b473b6350679e1e6", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/voice_object/voice_white-space_pre-line_wrapped.html": [ - "163ff5f40c119196817a01faba023877f2ad5488", + "3d70a74f4ec97c727d0f8255f5f582f76bc5e6f2", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/voice_object/voice_white-space_pre-wrap_wrapped-ref.html": [ - "2aad630d944401847ade0ed0cdd6c12acbf3c5d5", + "b6253b696bca56d00e7be62ecbb25516e17a37fc", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/voice_object/voice_white-space_pre-wrap_wrapped.html": [ - "269fdaaec336390eecd88ceac76b5bdb21597f51", + "56982a90f35a912c17c467cc85b597bb1fe698c5", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/voice_object/voice_white-space_pre_wrapped-ref.html": [ - "a66f139bd019a12cc4cec9d22fa973cc426aff6c", + "991a9ee502c821635fe681860d3dea27cbd94186", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/voice_object/voice_white-space_pre_wrapped.html": [ - "2b448c853508d8862ac3f6a84372ed553d881bd1", + "bd7ec30225c3a711c32b8805bcde63005441ebea", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/voice_object/voice_with_class-ref.html": [ - "0326f23ad73442d9af95ce62da5a6b51e3b9536f", + "5e9bf7df8aabef73a963a728ebc1df9ea84685ec", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/voice_object/voice_with_class.html": [ - "9fd6d593adfbd594a5ee4f19d7be4dd23896a5a7", + "5199269ceea68b55cde29b344f9acc474f83237d", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/voice_object/voice_with_class_object_specific_selector-ref.html": [ - "f3a7126fe1e964b0f10318af6fd6f47b1724f595", + "d77e9defe8c78c750b705a1404848568161bf021", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/voice_object/voice_with_class_object_specific_selector.html": [ - "125b8fee82061624258e390bf001b84e9acf5393", + "fcb0c14fa28d97ff9a91de17b5bb8506c0b14be5", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/white-space_normal_wrapped-ref.html": [ - "cbb59b0ff9963a5a121eed10f6b2db807d7b0f1e", + "b17533b6b6e3569f1753342bd287f2c417fec7f6", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/white-space_normal_wrapped.html": [ - "7807e90c9cd84ce6fccf9868951a87fb70094400", + "79a514e82a2e82008cbfc6fb8cd2cbeb6dd10bf6", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/white-space_nowrap_wrapped-ref.html": [ - "0a03fe76a7973865104c367319ba0230f84314e3", + "9119caabba0b6c1242c73d4616e9836077ff9aec", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/white-space_nowrap_wrapped.html": [ - "a0ffa8a0b0f833fff80b263485650d259253cd1d", + "bc0325c3ce6607ef212db1d02e7381c9417123f2", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/white-space_pre-line_wrapped-ref.html": [ - "6e237d901a865e179ddf269dbd5bb3e55ab4bb46", + "e56a7739e4bed23559b5d114874ade4cb1c178c1", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/white-space_pre-line_wrapped.html": [ - "d3e5602adddfe7ed6f80927ba66258c29ee9d7ec", + "f58e596b46519a4e020d0fe66b3fa9655c46f350", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/white-space_pre-ref.html": [ - "d6e59b014f0ad3604791f8a4de4d5ff8bbc65d1d", + "e53578fca94ae55168b3deb7e172bbfdd8dfdb45", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/white-space_pre-wrap_wrapped-ref.html": [ - "648edf1d53ee327b850357e11416a660c7616e69", + "d4ec4bca251fe6a1e950836a3086d8a63839e796", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/white-space_pre-wrap_wrapped.html": [ - "1a9035097956459990f3d6e1f141c08bc9ef8d06", + "371b23daf1f2b175e84316581fb178458e366414", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/white-space_pre.html": [ - "f54381f67e5fa8f389b37b221ce34ef110adc766", + "ff945cd99c8cfa9e273900a1b38d76f7bfa345e1", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/white-space_pre_wrapped-ref.html": [ - "5abc5a1a006a03f0a3789a0857b9fed790aaf7e0", + "1b90d1277e23f6b92aef131d072d97f7468fe33b", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/white-space_pre_wrapped.html": [ - "75f392f33797f86f2388bed87ae9d70aba995910", + "1e4e5a03095c061b350ba9ffbdbb62f46add24da", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/default_styles/bold_object_default_font-style-ref.html": [ - "3f9ad11562aaa53178654142b85f4b971ecca1f1", + "5301cdfef3e5929caf3154ca9d61bbb5c0f2c0cc", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/default_styles/bold_object_default_font-style.html": [ - "5df3d4015d2cb7903db00924ee9fbbbb550f647e", + "6b3506dda9ed6b83b1c4118345d26a348ae5b9c6", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/default_styles/inherit_as_default_value_inherits_values_from_media_element-ref.html": [ - "9a57a3d336f7fabd3a2455881a2e8fd4139a232d", + "6b7d0bc69d6a2dfbca110bad97db95bc13e9a534", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/default_styles/inherit_as_default_value_inherits_values_from_media_element.html": [ - "d2b243a63f848ba5e860ad82dd7ddbf36ef81c9d", + "de5442c4ae809d95993db80a8e4b53c41f541499", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/default_styles/italic_object_default_font-style-ref.html": [ - "8e6e891808c5c893ed8efaf1a5624eda773f1305", + "476f33f5ca36d989e40cd07e43f3fc04be9f17d1", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/default_styles/italic_object_default_font-style.html": [ - "1539703ab41c1eed180508185cc72e75b633d4d8", + "5c96365fcbe1b4e68b68884f952730fbc1aaed24", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/selectors/default_styles/underline_object_default_font-style-ref.html": [ - "5b17d086a5cb800310c54bde1d0101f74ac4b6b5", + "384ba0e73ca309eef09fa7859f4b7d6ff0831fb7", "support" ], "webvtt/rendering/cues-with-video/processing-model/selectors/default_styles/underline_object_default_font-style.html": [ - "7292595938d72a3318231282586c15b610e3c56a", + "d9cb8b7b6aeac7adab1907a417b7ac986a0080ac", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/size_50-ref.html": [ - "76c4a9a3afaae58fd5b921bd198a5bf14fa5ee98", + "289d1c9150b501a550d2117338d02b9a35be0efb", "support" ], "webvtt/rendering/cues-with-video/processing-model/size_50.html": [ - "cbf1d676df060d3bd94e18299e3a4a55e358ce66", + "245a76779ef69df257bd0441ca96ece382776c43", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/support/2_cues_overlapping_completely_move_up.vtt": [ @@ -217315,19 +219427,19 @@ "support" ], "webvtt/rendering/cues-with-video/processing-model/too_many_cues-ref.html": [ - "678ce398fc99c83a1af6ada9c1878a9bf7b0319a", + "d9c6ce7e03e346ff34a658a78484c018bd5d1bac", "support" ], "webvtt/rendering/cues-with-video/processing-model/too_many_cues.html": [ - "c885870f8491035292dc70300593e86d102a293e", + "c44bdfa57867a46678e5b390c173cb403660dc10", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/too_many_cues_wrapped-ref.html": [ - "d18296356a61ba2442e636020cac864be1c2e096", + "aa2ff46a9f0f7c4a5497f5b79a638302660e00e9", "support" ], "webvtt/rendering/cues-with-video/processing-model/too_many_cues_wrapped.html": [ - "2126e9f28c1fbb6ea721d25d3ac70022639f5597", + "f2372a492268a1b17763a42a808351128128fd89", "reftest" ], "webvtt/webvtt-api-for-browsers/vttcue-interface/align.html": [ @@ -217387,7 +219499,7 @@ "testharness" ], "webvtt/webvtt-file-format-parsing/webvtt-cue-text-parsing-rules/tests/timestamps.html": [ - "9096541716f4318972db549f8a1fce33ca810b2a", + "d6b49c5fb7f33113b4c2804eb2bcbfca2f925da5", "testharness" ], "webvtt/webvtt-file-format-parsing/webvtt-cue-text-parsing-rules/tests/tree-building.html": [ @@ -217550,6 +219662,10 @@ "2660d9dbe4f7a2947ec78b14e6418554c8204d6b", "support" ], + "workers/SharedWorker_blobUrl.html": [ + "d74620a63e7d911ef60b995cabf6b360c2c46a4f", + "testharness" + ], "workers/WorkerGlobalScope_ErrorEvent_colno.htm": [ "8ceb41543f928c918010000d638099faeb674980", "testharness" @@ -217578,6 +219694,10 @@ "a5db00156a688f09871daae138f1de561c29ff62", "testharness" ], + "workers/WorkerGlobalScope_importScripts_NosniffErr.htm": [ + "c67d281e78f9672e5f25fdde6b978e0fb7bd806e", + "testharness" + ], "workers/WorkerGlobalScope_setInterval.htm": [ "30371bcd0af113ee5dc0a7c4a40a67b99efdfa78", "testharness" @@ -217686,12 +219806,16 @@ "aff9caff2241fd0c0dc39d7576d5e6ca373a4f42", "testharness" ], + "workers/Worker_NosniffErr.htm": [ + "d5fc247d31c39b62a833f41d477dfd77734bdede", + "testharness" + ], "workers/Worker_basic.htm": [ "f83b047afddadb9224c5ce3ca595a2a5720f4639", "testharness" ], "workers/Worker_cross_origin_security_err.htm": [ - "712e022c442f7a38cd4b9a3fe2852b89ea30738a", + "da6275452010fb642ac8fb9510d19652233f8fc3", "testharness" ], "workers/Worker_dispatchEvent_ErrorEvent.htm": [ @@ -217851,7 +219975,7 @@ "testharness" ], "workers/constructors/SharedWorker/same-origin.html": [ - "6d7ad83336b91e632a8d4faa5cc6ade79b6953b4", + "0768b5a2f73f370d4f2ef81b164f5c7dc2c529aa", "testharness" ], "workers/constructors/SharedWorker/setting-port-members.html": [ @@ -217923,7 +220047,7 @@ "testharness" ], "workers/constructors/Worker/same-origin.html": [ - "a7c93830989912e09cea07d0dd01cde45a49747c", + "687e3b98b51ffd9cecae49e6d20002e392aae652", "testharness" ], "workers/constructors/Worker/sample_worker/worker.js": [ @@ -217951,15 +220075,15 @@ "testharness" ], "workers/data-url-shared.html": [ - "554d027aac3a5bd022d284fcd8bcb126ecca2cc4", + "50debec2192e5a6b0b18ce53942fc08ff0f2df11", "testharness" ], "workers/data-url.html": [ - "c736022a55eff0593172a20023da80b13bb1f31f", + "50abaf936cfb58ba14e6870c9b7f239f5d54f59c", "testharness" ], "workers/interfaces.idl": [ - "8b1a9f8688e38a009fa82936610ca221541bafbc", + "d8961ea6af91a92a064bcf0e0da5b56781f6bc6b", "support" ], "workers/interfaces.worker.js": [ @@ -218494,6 +220618,10 @@ "fdce6cc29ec625b3b607008a0f4c39d31c1480fb", "support" ], + "workers/support/ImportScriptsNosniffErr.js": [ + "7075f0f5d8e5dc82859d8b86b9dd64c4e207c475", + "support" + ], "workers/support/Timer.js": [ "29ccfe8b74c9401d5910d7f52374d1acc767c9ad", "support" @@ -218510,6 +220638,10 @@ "96307fbfbf50db2efa97f46449cb04789ce47cd1", "support" ], + "workers/support/WorkerFetchURL.js": [ + "ac8c81ce2d0e4833bf1d61a18a05b2ce531b576a", + "support" + ], "workers/support/WorkerLocation.js": [ "6d835557e345feb354e640020e74476258a075f6", "support" @@ -218526,6 +220658,10 @@ "b0e679dd7720701364abeaca6870d94db5d7ee74", "support" ], + "workers/support/nosiniff-error-worker.py": [ + "aa81cbafc77ccc9407cba3ac0bd4498e5076bf2b", + "support" + ], "workers/support/sandboxed-tests.html": [ "89547c85b03f401be7cfc0c29251d5bc55236e44", "support" diff --git a/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/ecdh_bits.worker.js.ini b/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/ecdh_bits.worker.js.ini index 73885505831..743a1f3083d 100644 --- a/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/ecdh_bits.worker.js.ini +++ b/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/ecdh_bits.worker.js.ini @@ -1,3 +1,5 @@ [ecdh_bits.worker.html] type: testharness - expected: ERROR + [Untitled] + expected: FAIL + diff --git a/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/ecdh_keys.worker.js.ini b/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/ecdh_keys.worker.js.ini index 9f20f554ccb..0549a4a14ef 100644 --- a/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/ecdh_keys.worker.js.ini +++ b/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/ecdh_keys.worker.js.ini @@ -1,3 +1,5 @@ [ecdh_keys.worker.html] type: testharness - expected: ERROR + [Untitled] + expected: FAIL + diff --git a/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/hkdf.worker.js.ini b/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/hkdf.worker.js.ini index 4831ce66875..fca4b53e6ec 100644 --- a/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/hkdf.worker.js.ini +++ b/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/hkdf.worker.js.ini @@ -1,3 +1,5 @@ [hkdf.worker.html] type: testharness - expected: ERROR + [Untitled] + expected: FAIL + diff --git a/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/pbkdf2.worker.js.ini b/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/pbkdf2.worker.js.ini index 4b70f2b1f1d..5025f11f1bd 100644 --- a/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/pbkdf2.worker.js.ini +++ b/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/pbkdf2.worker.js.ini @@ -1,3 +1,5 @@ [pbkdf2.worker.html] type: testharness - expected: ERROR + [Untitled] + expected: FAIL + diff --git a/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/test_ecdh_bits.html.ini b/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/test_ecdh_bits.html.ini index 5f9f13687d2..effde141c4b 100644 --- a/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/test_ecdh_bits.html.ini +++ b/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/test_ecdh_bits.html.ini @@ -1,3 +1,5 @@ [test_ecdh_bits.html] type: testharness - expected: ERROR + [WebCryptoAPI: deriveBits() Using ECDH] + expected: FAIL + diff --git a/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/test_ecdh_keys.html.ini b/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/test_ecdh_keys.html.ini index ed6862c391e..72469c050f9 100644 --- a/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/test_ecdh_keys.html.ini +++ b/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/test_ecdh_keys.html.ini @@ -1,3 +1,5 @@ [test_ecdh_keys.html] type: testharness - expected: ERROR + [WebCryptoAPI:deriveKey() Using ECDH] + expected: FAIL + diff --git a/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/test_hkdf.html.ini b/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/test_hkdf.html.ini index 682e712cf00..1dae1305828 100644 --- a/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/test_hkdf.html.ini +++ b/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/test_hkdf.html.ini @@ -1,3 +1,5 @@ [test_hkdf.html] type: testharness - expected: ERROR + [WebCryptoAPI: deriveBits() and deriveKey() Using HKDF] + expected: FAIL + diff --git a/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/test_pbkdf2.html.ini b/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/test_pbkdf2.html.ini index afdc5b5b5ac..6d8396bd37d 100644 --- a/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/test_pbkdf2.html.ini +++ b/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/test_pbkdf2.html.ini @@ -1,3 +1,5 @@ [test_pbkdf2.html] type: testharness - expected: ERROR + [WebCryptoAPI: deriveBits() and deriveKey() Using PBKDF2] + expected: FAIL + diff --git a/tests/wpt/metadata/WebCryptoAPI/encrypt_decrypt/aes_cbc.worker.js.ini b/tests/wpt/metadata/WebCryptoAPI/encrypt_decrypt/aes_cbc.worker.js.ini index 990ba43cd33..f8f6ca05743 100644 --- a/tests/wpt/metadata/WebCryptoAPI/encrypt_decrypt/aes_cbc.worker.js.ini +++ b/tests/wpt/metadata/WebCryptoAPI/encrypt_decrypt/aes_cbc.worker.js.ini @@ -1,3 +1,5 @@ [aes_cbc.worker.html] type: testharness - expected: ERROR + [Untitled] + expected: FAIL + diff --git a/tests/wpt/metadata/WebCryptoAPI/encrypt_decrypt/aes_ctr.worker.js.ini b/tests/wpt/metadata/WebCryptoAPI/encrypt_decrypt/aes_ctr.worker.js.ini index f25976f5bca..e1abfe885c7 100644 --- a/tests/wpt/metadata/WebCryptoAPI/encrypt_decrypt/aes_ctr.worker.js.ini +++ b/tests/wpt/metadata/WebCryptoAPI/encrypt_decrypt/aes_ctr.worker.js.ini @@ -1,3 +1,5 @@ [aes_ctr.worker.html] type: testharness - expected: ERROR + [Untitled] + expected: FAIL + diff --git a/tests/wpt/metadata/WebCryptoAPI/encrypt_decrypt/aes_gcm.worker.js.ini b/tests/wpt/metadata/WebCryptoAPI/encrypt_decrypt/aes_gcm.worker.js.ini index 79535257faf..c93c214c856 100644 --- a/tests/wpt/metadata/WebCryptoAPI/encrypt_decrypt/aes_gcm.worker.js.ini +++ b/tests/wpt/metadata/WebCryptoAPI/encrypt_decrypt/aes_gcm.worker.js.ini @@ -1,3 +1,5 @@ [aes_gcm.worker.html] type: testharness - expected: ERROR + [Untitled] + expected: FAIL + diff --git a/tests/wpt/metadata/WebCryptoAPI/encrypt_decrypt/rsa.worker.js.ini b/tests/wpt/metadata/WebCryptoAPI/encrypt_decrypt/rsa.worker.js.ini index 91d784e300c..3e796f70f7c 100644 --- a/tests/wpt/metadata/WebCryptoAPI/encrypt_decrypt/rsa.worker.js.ini +++ b/tests/wpt/metadata/WebCryptoAPI/encrypt_decrypt/rsa.worker.js.ini @@ -1,3 +1,5 @@ [rsa.worker.html] type: testharness - expected: ERROR + [Untitled] + expected: FAIL + diff --git a/tests/wpt/metadata/WebCryptoAPI/encrypt_decrypt/test_aes_cbc.html.ini b/tests/wpt/metadata/WebCryptoAPI/encrypt_decrypt/test_aes_cbc.html.ini index d3f3666db2c..9e9f3a08e17 100644 --- a/tests/wpt/metadata/WebCryptoAPI/encrypt_decrypt/test_aes_cbc.html.ini +++ b/tests/wpt/metadata/WebCryptoAPI/encrypt_decrypt/test_aes_cbc.html.ini @@ -1,3 +1,5 @@ [test_aes_cbc.html] type: testharness - expected: ERROR + [WebCryptoAPI: encrypt() Using AES-CBC] + expected: FAIL + diff --git a/tests/wpt/metadata/WebCryptoAPI/encrypt_decrypt/test_aes_ctr.html.ini b/tests/wpt/metadata/WebCryptoAPI/encrypt_decrypt/test_aes_ctr.html.ini index 6b5d4b8d2a7..8e51146ef6d 100644 --- a/tests/wpt/metadata/WebCryptoAPI/encrypt_decrypt/test_aes_ctr.html.ini +++ b/tests/wpt/metadata/WebCryptoAPI/encrypt_decrypt/test_aes_ctr.html.ini @@ -1,3 +1,5 @@ [test_aes_ctr.html] type: testharness - expected: ERROR + [WebCryptoAPI: encrypt() Using AES-CTR] + expected: FAIL + diff --git a/tests/wpt/metadata/WebCryptoAPI/encrypt_decrypt/test_aes_gcm.html.ini b/tests/wpt/metadata/WebCryptoAPI/encrypt_decrypt/test_aes_gcm.html.ini index 34d2f30b48c..1d47a68a696 100644 --- a/tests/wpt/metadata/WebCryptoAPI/encrypt_decrypt/test_aes_gcm.html.ini +++ b/tests/wpt/metadata/WebCryptoAPI/encrypt_decrypt/test_aes_gcm.html.ini @@ -1,3 +1,5 @@ [test_aes_gcm.html] type: testharness - expected: ERROR + [WebCryptoAPI: encrypt() Using AES-GCM] + expected: FAIL + diff --git a/tests/wpt/metadata/WebCryptoAPI/encrypt_decrypt/test_rsa_oaep.html.ini b/tests/wpt/metadata/WebCryptoAPI/encrypt_decrypt/test_rsa_oaep.html.ini index b4772cdd379..2000648fe62 100644 --- a/tests/wpt/metadata/WebCryptoAPI/encrypt_decrypt/test_rsa_oaep.html.ini +++ b/tests/wpt/metadata/WebCryptoAPI/encrypt_decrypt/test_rsa_oaep.html.ini @@ -1,3 +1,5 @@ [test_rsa_oaep.html] type: testharness - expected: ERROR + [WebCryptoAPI: encrypt() Using RSA-OAEP] + expected: FAIL + diff --git a/tests/wpt/metadata/WebCryptoAPI/generateKey/failures.worker.js.ini b/tests/wpt/metadata/WebCryptoAPI/generateKey/failures.worker.js.ini index a28f0dff8e3..1068757f3a5 100644 --- a/tests/wpt/metadata/WebCryptoAPI/generateKey/failures.worker.js.ini +++ b/tests/wpt/metadata/WebCryptoAPI/generateKey/failures.worker.js.ini @@ -1,3 +1,5 @@ [failures.worker.html] type: testharness - expected: ERROR + [Untitled] + expected: FAIL + diff --git a/tests/wpt/metadata/WebCryptoAPI/generateKey/failures_AES-CBC.worker.js.ini b/tests/wpt/metadata/WebCryptoAPI/generateKey/failures_AES-CBC.worker.js.ini index 077ac5f87ae..c59cf0b37b1 100644 --- a/tests/wpt/metadata/WebCryptoAPI/generateKey/failures_AES-CBC.worker.js.ini +++ b/tests/wpt/metadata/WebCryptoAPI/generateKey/failures_AES-CBC.worker.js.ini @@ -1,3 +1,5 @@ [failures_AES-CBC.worker.html] type: testharness - expected: ERROR + [Untitled] + expected: FAIL + diff --git a/tests/wpt/metadata/WebCryptoAPI/generateKey/failures_AES-CTR.worker.js.ini b/tests/wpt/metadata/WebCryptoAPI/generateKey/failures_AES-CTR.worker.js.ini index 478ee6b23c3..e1d07f1f70b 100644 --- a/tests/wpt/metadata/WebCryptoAPI/generateKey/failures_AES-CTR.worker.js.ini +++ b/tests/wpt/metadata/WebCryptoAPI/generateKey/failures_AES-CTR.worker.js.ini @@ -1,3 +1,5 @@ [failures_AES-CTR.worker.html] type: testharness - expected: ERROR + [Untitled] + expected: FAIL + diff --git a/tests/wpt/metadata/WebCryptoAPI/generateKey/failures_AES-GCM.worker.js.ini b/tests/wpt/metadata/WebCryptoAPI/generateKey/failures_AES-GCM.worker.js.ini index 0a0afaff0d7..b20a0793579 100644 --- a/tests/wpt/metadata/WebCryptoAPI/generateKey/failures_AES-GCM.worker.js.ini +++ b/tests/wpt/metadata/WebCryptoAPI/generateKey/failures_AES-GCM.worker.js.ini @@ -1,3 +1,5 @@ [failures_AES-GCM.worker.html] type: testharness - expected: ERROR + [Untitled] + expected: FAIL + diff --git a/tests/wpt/metadata/WebCryptoAPI/generateKey/failures_AES-KW.worker.js.ini b/tests/wpt/metadata/WebCryptoAPI/generateKey/failures_AES-KW.worker.js.ini index 184df17d30b..b8aa1b6cae5 100644 --- a/tests/wpt/metadata/WebCryptoAPI/generateKey/failures_AES-KW.worker.js.ini +++ b/tests/wpt/metadata/WebCryptoAPI/generateKey/failures_AES-KW.worker.js.ini @@ -1,3 +1,5 @@ [failures_AES-KW.worker.html] type: testharness - expected: ERROR + [Untitled] + expected: FAIL + diff --git a/tests/wpt/metadata/WebCryptoAPI/generateKey/failures_ECDH.worker.js.ini b/tests/wpt/metadata/WebCryptoAPI/generateKey/failures_ECDH.worker.js.ini index d8a841420a8..ae9af4e8a34 100644 --- a/tests/wpt/metadata/WebCryptoAPI/generateKey/failures_ECDH.worker.js.ini +++ b/tests/wpt/metadata/WebCryptoAPI/generateKey/failures_ECDH.worker.js.ini @@ -1,3 +1,5 @@ [failures_ECDH.worker.html] type: testharness - expected: ERROR + [Untitled] + expected: FAIL + diff --git a/tests/wpt/metadata/WebCryptoAPI/generateKey/failures_ECDSA.worker.js.ini b/tests/wpt/metadata/WebCryptoAPI/generateKey/failures_ECDSA.worker.js.ini index dff306cc4d1..cfba6f7c221 100644 --- a/tests/wpt/metadata/WebCryptoAPI/generateKey/failures_ECDSA.worker.js.ini +++ b/tests/wpt/metadata/WebCryptoAPI/generateKey/failures_ECDSA.worker.js.ini @@ -1,3 +1,5 @@ [failures_ECDSA.worker.html] type: testharness - expected: ERROR + [Untitled] + expected: FAIL + diff --git a/tests/wpt/metadata/WebCryptoAPI/generateKey/failures_HMAC.worker.js.ini b/tests/wpt/metadata/WebCryptoAPI/generateKey/failures_HMAC.worker.js.ini index bc918d0a819..deb887a2321 100644 --- a/tests/wpt/metadata/WebCryptoAPI/generateKey/failures_HMAC.worker.js.ini +++ b/tests/wpt/metadata/WebCryptoAPI/generateKey/failures_HMAC.worker.js.ini @@ -1,3 +1,5 @@ [failures_HMAC.worker.html] type: testharness - expected: ERROR + [Untitled] + expected: FAIL + diff --git a/tests/wpt/metadata/WebCryptoAPI/generateKey/failures_RSA-OAEP.worker.js.ini b/tests/wpt/metadata/WebCryptoAPI/generateKey/failures_RSA-OAEP.worker.js.ini index 3fee657163c..1de70f23558 100644 --- a/tests/wpt/metadata/WebCryptoAPI/generateKey/failures_RSA-OAEP.worker.js.ini +++ b/tests/wpt/metadata/WebCryptoAPI/generateKey/failures_RSA-OAEP.worker.js.ini @@ -1,3 +1,5 @@ [failures_RSA-OAEP.worker.html] type: testharness - expected: ERROR + [Untitled] + expected: FAIL + diff --git a/tests/wpt/metadata/WebCryptoAPI/generateKey/failures_RSA-PSS.worker.js.ini b/tests/wpt/metadata/WebCryptoAPI/generateKey/failures_RSA-PSS.worker.js.ini index 52ee9bde09d..cc03a108192 100644 --- a/tests/wpt/metadata/WebCryptoAPI/generateKey/failures_RSA-PSS.worker.js.ini +++ b/tests/wpt/metadata/WebCryptoAPI/generateKey/failures_RSA-PSS.worker.js.ini @@ -1,3 +1,5 @@ [failures_RSA-PSS.worker.html] type: testharness - expected: ERROR + [Untitled] + expected: FAIL + diff --git a/tests/wpt/metadata/WebCryptoAPI/generateKey/failures_RSASSA-PKCS1-v1_5.worker.js.ini b/tests/wpt/metadata/WebCryptoAPI/generateKey/failures_RSASSA-PKCS1-v1_5.worker.js.ini index b8b37f0b6e5..8f65dda379d 100644 --- a/tests/wpt/metadata/WebCryptoAPI/generateKey/failures_RSASSA-PKCS1-v1_5.worker.js.ini +++ b/tests/wpt/metadata/WebCryptoAPI/generateKey/failures_RSASSA-PKCS1-v1_5.worker.js.ini @@ -1,3 +1,5 @@ [failures_RSASSA-PKCS1-v1_5.worker.html] type: testharness - expected: ERROR + [Untitled] + expected: FAIL + diff --git a/tests/wpt/metadata/WebCryptoAPI/generateKey/successes.worker.js.ini b/tests/wpt/metadata/WebCryptoAPI/generateKey/successes.worker.js.ini index 87f8db413bc..ed342a2b9c3 100644 --- a/tests/wpt/metadata/WebCryptoAPI/generateKey/successes.worker.js.ini +++ b/tests/wpt/metadata/WebCryptoAPI/generateKey/successes.worker.js.ini @@ -1,3 +1,5 @@ [successes.worker.html] type: testharness - expected: ERROR + [Untitled] + expected: FAIL + diff --git a/tests/wpt/metadata/WebCryptoAPI/generateKey/successes_AES-CBC.worker.js.ini b/tests/wpt/metadata/WebCryptoAPI/generateKey/successes_AES-CBC.worker.js.ini index ec5ae4f0bef..3dc1a08cbb7 100644 --- a/tests/wpt/metadata/WebCryptoAPI/generateKey/successes_AES-CBC.worker.js.ini +++ b/tests/wpt/metadata/WebCryptoAPI/generateKey/successes_AES-CBC.worker.js.ini @@ -1,3 +1,5 @@ [successes_AES-CBC.worker.html] type: testharness - expected: ERROR + [Untitled] + expected: FAIL + diff --git a/tests/wpt/metadata/WebCryptoAPI/generateKey/successes_AES-CTR.worker.js.ini b/tests/wpt/metadata/WebCryptoAPI/generateKey/successes_AES-CTR.worker.js.ini index 662f8504734..16542c965e1 100644 --- a/tests/wpt/metadata/WebCryptoAPI/generateKey/successes_AES-CTR.worker.js.ini +++ b/tests/wpt/metadata/WebCryptoAPI/generateKey/successes_AES-CTR.worker.js.ini @@ -1,3 +1,5 @@ [successes_AES-CTR.worker.html] type: testharness - expected: ERROR + [Untitled] + expected: FAIL + diff --git a/tests/wpt/metadata/WebCryptoAPI/generateKey/successes_AES-GCM.worker.js.ini b/tests/wpt/metadata/WebCryptoAPI/generateKey/successes_AES-GCM.worker.js.ini index 180de54dad9..38f1036a947 100644 --- a/tests/wpt/metadata/WebCryptoAPI/generateKey/successes_AES-GCM.worker.js.ini +++ b/tests/wpt/metadata/WebCryptoAPI/generateKey/successes_AES-GCM.worker.js.ini @@ -1,3 +1,5 @@ [successes_AES-GCM.worker.html] type: testharness - expected: ERROR + [Untitled] + expected: FAIL + diff --git a/tests/wpt/metadata/WebCryptoAPI/generateKey/successes_AES-KW.worker.js.ini b/tests/wpt/metadata/WebCryptoAPI/generateKey/successes_AES-KW.worker.js.ini index 6c38652867a..61332e4ac7d 100644 --- a/tests/wpt/metadata/WebCryptoAPI/generateKey/successes_AES-KW.worker.js.ini +++ b/tests/wpt/metadata/WebCryptoAPI/generateKey/successes_AES-KW.worker.js.ini @@ -1,3 +1,5 @@ [successes_AES-KW.worker.html] type: testharness - expected: ERROR + [Untitled] + expected: FAIL + diff --git a/tests/wpt/metadata/WebCryptoAPI/generateKey/successes_ECDH.worker.js.ini b/tests/wpt/metadata/WebCryptoAPI/generateKey/successes_ECDH.worker.js.ini index 7d00784170d..c7c0cd21980 100644 --- a/tests/wpt/metadata/WebCryptoAPI/generateKey/successes_ECDH.worker.js.ini +++ b/tests/wpt/metadata/WebCryptoAPI/generateKey/successes_ECDH.worker.js.ini @@ -1,3 +1,5 @@ [successes_ECDH.worker.html] type: testharness - expected: ERROR + [Untitled] + expected: FAIL + diff --git a/tests/wpt/metadata/WebCryptoAPI/generateKey/successes_ECDSA.worker.js.ini b/tests/wpt/metadata/WebCryptoAPI/generateKey/successes_ECDSA.worker.js.ini index 5cb011f2614..4c46593c798 100644 --- a/tests/wpt/metadata/WebCryptoAPI/generateKey/successes_ECDSA.worker.js.ini +++ b/tests/wpt/metadata/WebCryptoAPI/generateKey/successes_ECDSA.worker.js.ini @@ -1,3 +1,5 @@ [successes_ECDSA.worker.html] type: testharness - expected: ERROR + [Untitled] + expected: FAIL + diff --git a/tests/wpt/metadata/WebCryptoAPI/generateKey/successes_HMAC.worker.js.ini b/tests/wpt/metadata/WebCryptoAPI/generateKey/successes_HMAC.worker.js.ini index 9296e99064e..2194d88cbd1 100644 --- a/tests/wpt/metadata/WebCryptoAPI/generateKey/successes_HMAC.worker.js.ini +++ b/tests/wpt/metadata/WebCryptoAPI/generateKey/successes_HMAC.worker.js.ini @@ -1,3 +1,5 @@ [successes_HMAC.worker.html] type: testharness - expected: ERROR + [Untitled] + expected: FAIL + diff --git a/tests/wpt/metadata/WebCryptoAPI/generateKey/successes_RSA-OAEP.worker.js.ini b/tests/wpt/metadata/WebCryptoAPI/generateKey/successes_RSA-OAEP.worker.js.ini index 61c9375046f..b27a732c5ff 100644 --- a/tests/wpt/metadata/WebCryptoAPI/generateKey/successes_RSA-OAEP.worker.js.ini +++ b/tests/wpt/metadata/WebCryptoAPI/generateKey/successes_RSA-OAEP.worker.js.ini @@ -1,3 +1,5 @@ [successes_RSA-OAEP.worker.html] type: testharness - expected: ERROR + [Untitled] + expected: FAIL + diff --git a/tests/wpt/metadata/WebCryptoAPI/generateKey/successes_RSA-PSS.worker.js.ini b/tests/wpt/metadata/WebCryptoAPI/generateKey/successes_RSA-PSS.worker.js.ini index 3b435eaa1ed..aca82094e98 100644 --- a/tests/wpt/metadata/WebCryptoAPI/generateKey/successes_RSA-PSS.worker.js.ini +++ b/tests/wpt/metadata/WebCryptoAPI/generateKey/successes_RSA-PSS.worker.js.ini @@ -1,3 +1,5 @@ [successes_RSA-PSS.worker.html] type: testharness - expected: ERROR + [Untitled] + expected: FAIL + diff --git a/tests/wpt/metadata/WebCryptoAPI/generateKey/successes_RSASSA-PKCS1-v1_5.worker.js.ini b/tests/wpt/metadata/WebCryptoAPI/generateKey/successes_RSASSA-PKCS1-v1_5.worker.js.ini index 9247c718885..4d73a575efa 100644 --- a/tests/wpt/metadata/WebCryptoAPI/generateKey/successes_RSASSA-PKCS1-v1_5.worker.js.ini +++ b/tests/wpt/metadata/WebCryptoAPI/generateKey/successes_RSASSA-PKCS1-v1_5.worker.js.ini @@ -1,3 +1,5 @@ [successes_RSASSA-PKCS1-v1_5.worker.html] type: testharness - expected: ERROR + [Untitled] + expected: FAIL + diff --git a/tests/wpt/metadata/WebCryptoAPI/generateKey/test_aes-cbc.html.ini b/tests/wpt/metadata/WebCryptoAPI/generateKey/test_aes-cbc.html.ini index 093c26621c6..5fbc1bebef4 100644 --- a/tests/wpt/metadata/WebCryptoAPI/generateKey/test_aes-cbc.html.ini +++ b/tests/wpt/metadata/WebCryptoAPI/generateKey/test_aes-cbc.html.ini @@ -1,3 +1,5 @@ [test_aes-cbc.html] type: testharness - expected: TIMEOUT + [WebCryptoAPI: generateKey() Successful Calls] + expected: FAIL + diff --git a/tests/wpt/metadata/WebCryptoAPI/generateKey/test_aes-ctr.html.ini b/tests/wpt/metadata/WebCryptoAPI/generateKey/test_aes-ctr.html.ini index ab18a28d45d..7a77abc1d7b 100644 --- a/tests/wpt/metadata/WebCryptoAPI/generateKey/test_aes-ctr.html.ini +++ b/tests/wpt/metadata/WebCryptoAPI/generateKey/test_aes-ctr.html.ini @@ -1,3 +1,5 @@ [test_aes-ctr.html] type: testharness - expected: TIMEOUT + [WebCryptoAPI: generateKey() Successful Calls] + expected: FAIL + diff --git a/tests/wpt/metadata/WebCryptoAPI/generateKey/test_failures.html.ini b/tests/wpt/metadata/WebCryptoAPI/generateKey/test_failures.html.ini index fd00b19afd1..429ca067925 100644 --- a/tests/wpt/metadata/WebCryptoAPI/generateKey/test_failures.html.ini +++ b/tests/wpt/metadata/WebCryptoAPI/generateKey/test_failures.html.ini @@ -1,3 +1,5 @@ [test_failures.html] type: testharness - expected: TIMEOUT + [WebCryptoAPI: generateKey() for Failures] + expected: FAIL + diff --git a/tests/wpt/metadata/WebCryptoAPI/generateKey/test_failures_AES-CBC.html.ini b/tests/wpt/metadata/WebCryptoAPI/generateKey/test_failures_AES-CBC.html.ini index b09a54fc114..44467f71caa 100644 --- a/tests/wpt/metadata/WebCryptoAPI/generateKey/test_failures_AES-CBC.html.ini +++ b/tests/wpt/metadata/WebCryptoAPI/generateKey/test_failures_AES-CBC.html.ini @@ -1,3 +1,5 @@ [test_failures_AES-CBC.html] type: testharness - expected: TIMEOUT + [WebCryptoAPI: generateKey() for Failures] + expected: FAIL + diff --git a/tests/wpt/metadata/WebCryptoAPI/generateKey/test_failures_AES-CTR.html.ini b/tests/wpt/metadata/WebCryptoAPI/generateKey/test_failures_AES-CTR.html.ini index 0ca37a35d3e..b54841509d6 100644 --- a/tests/wpt/metadata/WebCryptoAPI/generateKey/test_failures_AES-CTR.html.ini +++ b/tests/wpt/metadata/WebCryptoAPI/generateKey/test_failures_AES-CTR.html.ini @@ -1,3 +1,5 @@ [test_failures_AES-CTR.html] type: testharness - expected: TIMEOUT + [WebCryptoAPI: generateKey() for Failures] + expected: FAIL + diff --git a/tests/wpt/metadata/WebCryptoAPI/generateKey/test_failures_AES-GCM.html.ini b/tests/wpt/metadata/WebCryptoAPI/generateKey/test_failures_AES-GCM.html.ini index 82f75a28cf5..9f6e655633b 100644 --- a/tests/wpt/metadata/WebCryptoAPI/generateKey/test_failures_AES-GCM.html.ini +++ b/tests/wpt/metadata/WebCryptoAPI/generateKey/test_failures_AES-GCM.html.ini @@ -1,3 +1,5 @@ [test_failures_AES-GCM.html] type: testharness - expected: TIMEOUT + [WebCryptoAPI: generateKey() for Failures] + expected: FAIL + diff --git a/tests/wpt/metadata/WebCryptoAPI/generateKey/test_failures_AES-KW.html.ini b/tests/wpt/metadata/WebCryptoAPI/generateKey/test_failures_AES-KW.html.ini index c0d3ee289ca..e3b35d818fb 100644 --- a/tests/wpt/metadata/WebCryptoAPI/generateKey/test_failures_AES-KW.html.ini +++ b/tests/wpt/metadata/WebCryptoAPI/generateKey/test_failures_AES-KW.html.ini @@ -1,3 +1,5 @@ [test_failures_AES-KW.html] type: testharness - expected: TIMEOUT + [WebCryptoAPI: generateKey() for Failures] + expected: FAIL + diff --git a/tests/wpt/metadata/WebCryptoAPI/generateKey/test_failures_ECDH.html.ini b/tests/wpt/metadata/WebCryptoAPI/generateKey/test_failures_ECDH.html.ini index 3435ac25bf0..a6f1b7272c6 100644 --- a/tests/wpt/metadata/WebCryptoAPI/generateKey/test_failures_ECDH.html.ini +++ b/tests/wpt/metadata/WebCryptoAPI/generateKey/test_failures_ECDH.html.ini @@ -1,3 +1,5 @@ [test_failures_ECDH.html] type: testharness - expected: TIMEOUT + [WebCryptoAPI: generateKey() for Failures] + expected: FAIL + diff --git a/tests/wpt/metadata/WebCryptoAPI/generateKey/test_failures_ECDSA.html.ini b/tests/wpt/metadata/WebCryptoAPI/generateKey/test_failures_ECDSA.html.ini index 2de8a5b9b25..08369a60a4d 100644 --- a/tests/wpt/metadata/WebCryptoAPI/generateKey/test_failures_ECDSA.html.ini +++ b/tests/wpt/metadata/WebCryptoAPI/generateKey/test_failures_ECDSA.html.ini @@ -1,3 +1,5 @@ [test_failures_ECDSA.html] type: testharness - expected: TIMEOUT + [WebCryptoAPI: generateKey() for Failures] + expected: FAIL + diff --git a/tests/wpt/metadata/WebCryptoAPI/generateKey/test_failures_HMAC.html.ini b/tests/wpt/metadata/WebCryptoAPI/generateKey/test_failures_HMAC.html.ini index 7188c22a490..ad476c4c120 100644 --- a/tests/wpt/metadata/WebCryptoAPI/generateKey/test_failures_HMAC.html.ini +++ b/tests/wpt/metadata/WebCryptoAPI/generateKey/test_failures_HMAC.html.ini @@ -1,3 +1,5 @@ [test_failures_HMAC.html] type: testharness - expected: TIMEOUT + [WebCryptoAPI: generateKey() for Failures] + expected: FAIL + diff --git a/tests/wpt/metadata/WebCryptoAPI/generateKey/test_failures_RSA-OAEP.html.ini b/tests/wpt/metadata/WebCryptoAPI/generateKey/test_failures_RSA-OAEP.html.ini index 31adbf4528c..1eba4462097 100644 --- a/tests/wpt/metadata/WebCryptoAPI/generateKey/test_failures_RSA-OAEP.html.ini +++ b/tests/wpt/metadata/WebCryptoAPI/generateKey/test_failures_RSA-OAEP.html.ini @@ -1,3 +1,5 @@ [test_failures_RSA-OAEP.html] type: testharness - expected: TIMEOUT + [WebCryptoAPI: generateKey() for Failures] + expected: FAIL + diff --git a/tests/wpt/metadata/WebCryptoAPI/generateKey/test_failures_RSA-PSS.html.ini b/tests/wpt/metadata/WebCryptoAPI/generateKey/test_failures_RSA-PSS.html.ini index 9c3bece2e89..13a1319d754 100644 --- a/tests/wpt/metadata/WebCryptoAPI/generateKey/test_failures_RSA-PSS.html.ini +++ b/tests/wpt/metadata/WebCryptoAPI/generateKey/test_failures_RSA-PSS.html.ini @@ -1,3 +1,5 @@ [test_failures_RSA-PSS.html] type: testharness - expected: TIMEOUT + [WebCryptoAPI: generateKey() for Failures] + expected: FAIL + diff --git a/tests/wpt/metadata/WebCryptoAPI/generateKey/test_failures_RSASSA-PKCS1-v1_5.html.ini b/tests/wpt/metadata/WebCryptoAPI/generateKey/test_failures_RSASSA-PKCS1-v1_5.html.ini index 178804c448e..7ef4f627b00 100644 --- a/tests/wpt/metadata/WebCryptoAPI/generateKey/test_failures_RSASSA-PKCS1-v1_5.html.ini +++ b/tests/wpt/metadata/WebCryptoAPI/generateKey/test_failures_RSASSA-PKCS1-v1_5.html.ini @@ -1,3 +1,5 @@ [test_failures_RSASSA-PKCS1-v1_5.html] type: testharness - expected: TIMEOUT + [WebCryptoAPI: generateKey() for Failures] + expected: FAIL + diff --git a/tests/wpt/metadata/WebCryptoAPI/generateKey/test_successes.html.ini b/tests/wpt/metadata/WebCryptoAPI/generateKey/test_successes.html.ini index cf54027d7ee..bdec50f137b 100644 --- a/tests/wpt/metadata/WebCryptoAPI/generateKey/test_successes.html.ini +++ b/tests/wpt/metadata/WebCryptoAPI/generateKey/test_successes.html.ini @@ -1,3 +1,5 @@ [test_successes.html] type: testharness - expected: TIMEOUT + [WebCryptoAPI: generateKey() Successful Calls] + expected: FAIL + diff --git a/tests/wpt/metadata/WebCryptoAPI/generateKey/test_successes_AES-CBC.html.ini b/tests/wpt/metadata/WebCryptoAPI/generateKey/test_successes_AES-CBC.html.ini index 19a3f4dc845..056c14c5003 100644 --- a/tests/wpt/metadata/WebCryptoAPI/generateKey/test_successes_AES-CBC.html.ini +++ b/tests/wpt/metadata/WebCryptoAPI/generateKey/test_successes_AES-CBC.html.ini @@ -1,3 +1,5 @@ [test_successes_AES-CBC.html] type: testharness - expected: TIMEOUT + [WebCryptoAPI: generateKey() Successful Calls] + expected: FAIL + diff --git a/tests/wpt/metadata/WebCryptoAPI/generateKey/test_successes_AES-CTR.html.ini b/tests/wpt/metadata/WebCryptoAPI/generateKey/test_successes_AES-CTR.html.ini index 17615b582d8..b06f70316fb 100644 --- a/tests/wpt/metadata/WebCryptoAPI/generateKey/test_successes_AES-CTR.html.ini +++ b/tests/wpt/metadata/WebCryptoAPI/generateKey/test_successes_AES-CTR.html.ini @@ -1,3 +1,5 @@ [test_successes_AES-CTR.html] type: testharness - expected: TIMEOUT + [WebCryptoAPI: generateKey() Successful Calls] + expected: FAIL + diff --git a/tests/wpt/metadata/WebCryptoAPI/generateKey/test_successes_AES-GCM.html.ini b/tests/wpt/metadata/WebCryptoAPI/generateKey/test_successes_AES-GCM.html.ini index a0b61ef6200..1088756391c 100644 --- a/tests/wpt/metadata/WebCryptoAPI/generateKey/test_successes_AES-GCM.html.ini +++ b/tests/wpt/metadata/WebCryptoAPI/generateKey/test_successes_AES-GCM.html.ini @@ -1,3 +1,5 @@ [test_successes_AES-GCM.html] type: testharness - expected: TIMEOUT + [WebCryptoAPI: generateKey() Successful Calls] + expected: FAIL + diff --git a/tests/wpt/metadata/WebCryptoAPI/generateKey/test_successes_AES-KW.html.ini b/tests/wpt/metadata/WebCryptoAPI/generateKey/test_successes_AES-KW.html.ini index 897b2f1e686..2efc157bed4 100644 --- a/tests/wpt/metadata/WebCryptoAPI/generateKey/test_successes_AES-KW.html.ini +++ b/tests/wpt/metadata/WebCryptoAPI/generateKey/test_successes_AES-KW.html.ini @@ -1,3 +1,5 @@ [test_successes_AES-KW.html] type: testharness - expected: TIMEOUT + [WebCryptoAPI: generateKey() Successful Calls] + expected: FAIL + diff --git a/tests/wpt/metadata/WebCryptoAPI/generateKey/test_successes_ECDH.html.ini b/tests/wpt/metadata/WebCryptoAPI/generateKey/test_successes_ECDH.html.ini index b3c0a41bc8d..57accd7cdc9 100644 --- a/tests/wpt/metadata/WebCryptoAPI/generateKey/test_successes_ECDH.html.ini +++ b/tests/wpt/metadata/WebCryptoAPI/generateKey/test_successes_ECDH.html.ini @@ -1,3 +1,5 @@ [test_successes_ECDH.html] type: testharness - expected: TIMEOUT + [WebCryptoAPI: generateKey() Successful Calls] + expected: FAIL + diff --git a/tests/wpt/metadata/WebCryptoAPI/generateKey/test_successes_ECDSA.html.ini b/tests/wpt/metadata/WebCryptoAPI/generateKey/test_successes_ECDSA.html.ini index ce24f294c31..564d22aabd3 100644 --- a/tests/wpt/metadata/WebCryptoAPI/generateKey/test_successes_ECDSA.html.ini +++ b/tests/wpt/metadata/WebCryptoAPI/generateKey/test_successes_ECDSA.html.ini @@ -1,3 +1,5 @@ [test_successes_ECDSA.html] type: testharness - expected: TIMEOUT + [WebCryptoAPI: generateKey() Successful Calls] + expected: FAIL + diff --git a/tests/wpt/metadata/WebCryptoAPI/generateKey/test_successes_HMAC.html.ini b/tests/wpt/metadata/WebCryptoAPI/generateKey/test_successes_HMAC.html.ini index fd8ec43c1d6..1f4b793b581 100644 --- a/tests/wpt/metadata/WebCryptoAPI/generateKey/test_successes_HMAC.html.ini +++ b/tests/wpt/metadata/WebCryptoAPI/generateKey/test_successes_HMAC.html.ini @@ -1,3 +1,5 @@ [test_successes_HMAC.html] type: testharness - expected: TIMEOUT + [WebCryptoAPI: generateKey() Successful Calls] + expected: FAIL + diff --git a/tests/wpt/metadata/WebCryptoAPI/generateKey/test_successes_RSA-OAEP.html.ini b/tests/wpt/metadata/WebCryptoAPI/generateKey/test_successes_RSA-OAEP.html.ini index 2766529c9c7..c04c0c3d0ea 100644 --- a/tests/wpt/metadata/WebCryptoAPI/generateKey/test_successes_RSA-OAEP.html.ini +++ b/tests/wpt/metadata/WebCryptoAPI/generateKey/test_successes_RSA-OAEP.html.ini @@ -1,3 +1,5 @@ [test_successes_RSA-OAEP.html] type: testharness - expected: TIMEOUT + [WebCryptoAPI: generateKey() Successful Calls] + expected: FAIL + diff --git a/tests/wpt/metadata/WebCryptoAPI/generateKey/test_successes_RSA-PSS.html.ini b/tests/wpt/metadata/WebCryptoAPI/generateKey/test_successes_RSA-PSS.html.ini index 4b2e926bf50..9d052e7dc1d 100644 --- a/tests/wpt/metadata/WebCryptoAPI/generateKey/test_successes_RSA-PSS.html.ini +++ b/tests/wpt/metadata/WebCryptoAPI/generateKey/test_successes_RSA-PSS.html.ini @@ -1,3 +1,5 @@ [test_successes_RSA-PSS.html] type: testharness - expected: TIMEOUT + [WebCryptoAPI: generateKey() Successful Calls] + expected: FAIL + diff --git a/tests/wpt/metadata/WebCryptoAPI/generateKey/test_successes_RSASSA-PKCS1-v1_5.html.ini b/tests/wpt/metadata/WebCryptoAPI/generateKey/test_successes_RSASSA-PKCS1-v1_5.html.ini index 63db558aa6b..29fd9c6746e 100644 --- a/tests/wpt/metadata/WebCryptoAPI/generateKey/test_successes_RSASSA-PKCS1-v1_5.html.ini +++ b/tests/wpt/metadata/WebCryptoAPI/generateKey/test_successes_RSASSA-PKCS1-v1_5.html.ini @@ -1,3 +1,5 @@ [test_successes_RSASSA-PKCS1-v1_5.html] type: testharness - expected: TIMEOUT + [WebCryptoAPI: generateKey() Successful Calls] + expected: FAIL + diff --git a/tests/wpt/metadata/WebCryptoAPI/sign_verify/ecdsa.worker.js.ini b/tests/wpt/metadata/WebCryptoAPI/sign_verify/ecdsa.worker.js.ini index f1f9ac74838..856c25ade29 100644 --- a/tests/wpt/metadata/WebCryptoAPI/sign_verify/ecdsa.worker.js.ini +++ b/tests/wpt/metadata/WebCryptoAPI/sign_verify/ecdsa.worker.js.ini @@ -1,3 +1,5 @@ [ecdsa.worker.html] type: testharness - expected: ERROR + [Untitled] + expected: FAIL + diff --git a/tests/wpt/metadata/WebCryptoAPI/sign_verify/hmac.worker.js.ini b/tests/wpt/metadata/WebCryptoAPI/sign_verify/hmac.worker.js.ini index 3842f8812c6..100da1c1d18 100644 --- a/tests/wpt/metadata/WebCryptoAPI/sign_verify/hmac.worker.js.ini +++ b/tests/wpt/metadata/WebCryptoAPI/sign_verify/hmac.worker.js.ini @@ -1,3 +1,5 @@ [hmac.worker.html] type: testharness - expected: ERROR + [Untitled] + expected: FAIL + diff --git a/tests/wpt/metadata/WebCryptoAPI/sign_verify/rsa_pkcs.worker.js.ini b/tests/wpt/metadata/WebCryptoAPI/sign_verify/rsa_pkcs.worker.js.ini index 206f3c11726..1c96d8b79d9 100644 --- a/tests/wpt/metadata/WebCryptoAPI/sign_verify/rsa_pkcs.worker.js.ini +++ b/tests/wpt/metadata/WebCryptoAPI/sign_verify/rsa_pkcs.worker.js.ini @@ -1,3 +1,5 @@ [rsa_pkcs.worker.html] type: testharness - expected: ERROR + [Untitled] + expected: FAIL + diff --git a/tests/wpt/metadata/WebCryptoAPI/sign_verify/rsa_pss.worker.js.ini b/tests/wpt/metadata/WebCryptoAPI/sign_verify/rsa_pss.worker.js.ini index 89aa8859aff..67beab0d8f2 100644 --- a/tests/wpt/metadata/WebCryptoAPI/sign_verify/rsa_pss.worker.js.ini +++ b/tests/wpt/metadata/WebCryptoAPI/sign_verify/rsa_pss.worker.js.ini @@ -1,3 +1,5 @@ [rsa_pss.worker.html] type: testharness - expected: ERROR + [Untitled] + expected: FAIL + diff --git a/tests/wpt/metadata/WebCryptoAPI/sign_verify/test_ecdsa.html.ini b/tests/wpt/metadata/WebCryptoAPI/sign_verify/test_ecdsa.html.ini index ea6a1238b34..bb126303c82 100644 --- a/tests/wpt/metadata/WebCryptoAPI/sign_verify/test_ecdsa.html.ini +++ b/tests/wpt/metadata/WebCryptoAPI/sign_verify/test_ecdsa.html.ini @@ -1,3 +1,5 @@ [test_ecdsa.html] type: testharness - expected: ERROR + [WebCryptoAPI: sign() and verify() Using ECDSA] + expected: FAIL + diff --git a/tests/wpt/metadata/WebCryptoAPI/sign_verify/test_hmac.html.ini b/tests/wpt/metadata/WebCryptoAPI/sign_verify/test_hmac.html.ini index b731b53f6e4..b87586debc7 100644 --- a/tests/wpt/metadata/WebCryptoAPI/sign_verify/test_hmac.html.ini +++ b/tests/wpt/metadata/WebCryptoAPI/sign_verify/test_hmac.html.ini @@ -1,3 +1,5 @@ [test_hmac.html] type: testharness - expected: ERROR + [WebCryptoAPI: sign() and verify() Using HMAC] + expected: FAIL + diff --git a/tests/wpt/metadata/WebCryptoAPI/sign_verify/test_rsa_pkcs.html.ini b/tests/wpt/metadata/WebCryptoAPI/sign_verify/test_rsa_pkcs.html.ini index 097b7a6a48c..4466a804d4f 100644 --- a/tests/wpt/metadata/WebCryptoAPI/sign_verify/test_rsa_pkcs.html.ini +++ b/tests/wpt/metadata/WebCryptoAPI/sign_verify/test_rsa_pkcs.html.ini @@ -1,3 +1,5 @@ [test_rsa_pkcs.html] type: testharness - expected: ERROR + [WebCryptoAPI: sign() and verify() Using RSASSA-PKCS1-v1_5] + expected: FAIL + diff --git a/tests/wpt/metadata/WebCryptoAPI/sign_verify/test_rsa_pss.html.ini b/tests/wpt/metadata/WebCryptoAPI/sign_verify/test_rsa_pss.html.ini index a2d5f22402e..d1f0383ae56 100644 --- a/tests/wpt/metadata/WebCryptoAPI/sign_verify/test_rsa_pss.html.ini +++ b/tests/wpt/metadata/WebCryptoAPI/sign_verify/test_rsa_pss.html.ini @@ -1,3 +1,5 @@ [test_rsa_pss.html] type: testharness - expected: ERROR + [WebCryptoAPI: sign() and verify() Using RSA-PSS] + expected: FAIL + diff --git a/tests/wpt/metadata/WebCryptoAPI/wrapKey_unwrapKey/test_wrapKey_unwrapKey.html.ini b/tests/wpt/metadata/WebCryptoAPI/wrapKey_unwrapKey/test_wrapKey_unwrapKey.html.ini index af7e5b6ff9a..fd1c320a2f1 100644 --- a/tests/wpt/metadata/WebCryptoAPI/wrapKey_unwrapKey/test_wrapKey_unwrapKey.html.ini +++ b/tests/wpt/metadata/WebCryptoAPI/wrapKey_unwrapKey/test_wrapKey_unwrapKey.html.ini @@ -1,3 +1,5 @@ [test_wrapKey_unwrapKey.html] type: testharness - expected: ERROR + [WebCryptoAPI: wrapKey() and unwrapKey()] + expected: FAIL + diff --git a/tests/wpt/metadata/WebCryptoAPI/wrapKey_unwrapKey/wrapKey_unwrapKey.worker.js.ini b/tests/wpt/metadata/WebCryptoAPI/wrapKey_unwrapKey/wrapKey_unwrapKey.worker.js.ini index 0726e6d35ef..350cc245816 100644 --- a/tests/wpt/metadata/WebCryptoAPI/wrapKey_unwrapKey/wrapKey_unwrapKey.worker.js.ini +++ b/tests/wpt/metadata/WebCryptoAPI/wrapKey_unwrapKey/wrapKey_unwrapKey.worker.js.ini @@ -1,3 +1,5 @@ [wrapKey_unwrapKey.worker.html] type: testharness - expected: ERROR + [Untitled] + expected: FAIL + diff --git a/tests/wpt/metadata/XMLHttpRequest/send-after-setting-document-domain.htm.ini b/tests/wpt/metadata/XMLHttpRequest/send-after-setting-document-domain.htm.ini index cb48f45fae3..e5f333de73c 100644 --- a/tests/wpt/metadata/XMLHttpRequest/send-after-setting-document-domain.htm.ini +++ b/tests/wpt/metadata/XMLHttpRequest/send-after-setting-document-domain.htm.ini @@ -1,3 +1,5 @@ [send-after-setting-document-domain.htm] type: testharness - expected: ERROR + [XMLHttpRequest: send() with document.domain set] + expected: FAIL + diff --git a/tests/wpt/metadata/dom/events/EventListener-invoke-legacy.html.ini b/tests/wpt/metadata/dom/events/EventListener-invoke-legacy.html.ini new file mode 100644 index 00000000000..ebfd31cb127 --- /dev/null +++ b/tests/wpt/metadata/dom/events/EventListener-invoke-legacy.html.ini @@ -0,0 +1,9 @@ +[EventListener-invoke-legacy.html] + type: testharness + expected: ERROR + [Listener of transitionend] + expected: FAIL + + [Legacy listener of transitionend] + expected: TIMEOUT + diff --git a/tests/wpt/metadata/fetch/api/basic/integrity-sharedworker.html.ini b/tests/wpt/metadata/fetch/api/basic/integrity-sharedworker.html.ini index 674933e884c..28b184537a6 100644 --- a/tests/wpt/metadata/fetch/api/basic/integrity-sharedworker.html.ini +++ b/tests/wpt/metadata/fetch/api/basic/integrity-sharedworker.html.ini @@ -1,3 +1,5 @@ [integrity-sharedworker.html] type: testharness - expected: ERROR + [Fetch in sharedworker: integrity handling] + expected: FAIL + diff --git a/tests/wpt/metadata/fetch/api/headers/headers-record.html.ini b/tests/wpt/metadata/fetch/api/headers/headers-record.html.ini new file mode 100644 index 00000000000..61bdb915eff --- /dev/null +++ b/tests/wpt/metadata/fetch/api/headers/headers-record.html.ini @@ -0,0 +1,26 @@ +[headers-record.html] + type: testharness + [Basic operation with one property] + expected: FAIL + + [Basic operation with one property and a proto] + expected: FAIL + + [Correct operation ordering with two properties] + expected: FAIL + + [Correct operation ordering with two properties one of which has an invalid name] + expected: FAIL + + [Correct operation ordering with two properties one of which has an invalid value] + expected: FAIL + + [Correct operation ordering with non-enumerable properties] + expected: FAIL + + [Correct operation ordering with undefined descriptors] + expected: FAIL + + [Correct operation ordering with repeated keys] + expected: FAIL + diff --git a/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/navigation_unload_same_origin.html.ini b/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/navigation_unload_same_origin.html.ini deleted file mode 100644 index cb9545b5ecb..00000000000 --- a/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/navigation_unload_same_origin.html.ini +++ /dev/null @@ -1,5 +0,0 @@ -[navigation_unload_same_origin.html] - type: testharness - [Same-origin navigation started from unload handler] - expected: FAIL - diff --git a/tests/wpt/metadata/html/browsers/history/the-location-interface/location-symbol-toprimitive.html.ini b/tests/wpt/metadata/html/browsers/history/the-location-interface/location-symbol-toprimitive.html.ini new file mode 100644 index 00000000000..28184babb4e --- /dev/null +++ b/tests/wpt/metadata/html/browsers/history/the-location-interface/location-symbol-toprimitive.html.ini @@ -0,0 +1,5 @@ +[location-symbol-toprimitive.html] + type: testharness + [Location Symbol.toPrimitive] + expected: FAIL + diff --git a/tests/wpt/metadata/html/browsers/history/the-location-interface/location-valueof.html.ini b/tests/wpt/metadata/html/browsers/history/the-location-interface/location-valueof.html.ini new file mode 100644 index 00000000000..12c1e5280ca --- /dev/null +++ b/tests/wpt/metadata/html/browsers/history/the-location-interface/location-valueof.html.ini @@ -0,0 +1,5 @@ +[location-valueof.html] + type: testharness + [Location valueOf] + expected: FAIL + diff --git a/tests/wpt/metadata/html/browsers/history/the-location-interface/reload_document_open_write.html.ini b/tests/wpt/metadata/html/browsers/history/the-location-interface/reload_document_open_write.html.ini index 895d2f2f282..e0d34aadd27 100644 --- a/tests/wpt/metadata/html/browsers/history/the-location-interface/reload_document_open_write.html.ini +++ b/tests/wpt/metadata/html/browsers/history/the-location-interface/reload_document_open_write.html.ini @@ -1,3 +1,5 @@ [reload_document_open_write.html] type: testharness - expected: ERROR + [Reload document with document.open and document.written content] + expected: FAIL + diff --git a/tests/wpt/metadata/html/browsers/history/the-location-interface/reload_document_write.html.ini b/tests/wpt/metadata/html/browsers/history/the-location-interface/reload_document_write.html.ini index f1271ddf73e..34a93c104c3 100644 --- a/tests/wpt/metadata/html/browsers/history/the-location-interface/reload_document_write.html.ini +++ b/tests/wpt/metadata/html/browsers/history/the-location-interface/reload_document_write.html.ini @@ -1,3 +1,5 @@ [reload_document_write.html] type: testharness - expected: ERROR + [Reload document with document.written content] + expected: FAIL + diff --git a/tests/wpt/metadata/html/browsers/history/the-location-interface/reload_document_write_onload.html.ini b/tests/wpt/metadata/html/browsers/history/the-location-interface/reload_document_write_onload.html.ini index 304a036f4d4..c9d47bb0b6a 100644 --- a/tests/wpt/metadata/html/browsers/history/the-location-interface/reload_document_write_onload.html.ini +++ b/tests/wpt/metadata/html/browsers/history/the-location-interface/reload_document_write_onload.html.ini @@ -1,3 +1,5 @@ [reload_document_write_onload.html] type: testharness - expected: ERROR + [Reload document with document.written content written in load event] + expected: FAIL + diff --git a/tests/wpt/metadata/html/browsers/history/the-location-interface/reload_post_1.html.ini b/tests/wpt/metadata/html/browsers/history/the-location-interface/reload_post_1.html.ini index 673247284e4..d9288dccdec 100644 --- a/tests/wpt/metadata/html/browsers/history/the-location-interface/reload_post_1.html.ini +++ b/tests/wpt/metadata/html/browsers/history/the-location-interface/reload_post_1.html.ini @@ -1,3 +1,5 @@ [reload_post_1.html] type: testharness - expected: ERROR + [Reload document with POST] + expected: FAIL + diff --git a/tests/wpt/metadata/html/browsers/origin/cross-origin-objects/cross-origin-objects-on-new-window.html.ini b/tests/wpt/metadata/html/browsers/origin/cross-origin-objects/cross-origin-objects-on-new-window.html.ini index f5eb23dabc9..fa72caf81c9 100644 --- a/tests/wpt/metadata/html/browsers/origin/cross-origin-objects/cross-origin-objects-on-new-window.html.ini +++ b/tests/wpt/metadata/html/browsers/origin/cross-origin-objects/cross-origin-objects-on-new-window.html.ini @@ -1,3 +1,5 @@ [cross-origin-objects-on-new-window.html] type: testharness - expected: ERROR + [Cross-origin behavior of Window and Location on new Window] + expected: FAIL + diff --git a/tests/wpt/metadata/html/dom/interfaces.html.ini b/tests/wpt/metadata/html/dom/interfaces.html.ini index 0ad2a61033a..9d198261b01 100644 --- a/tests/wpt/metadata/html/dom/interfaces.html.ini +++ b/tests/wpt/metadata/html/dom/interfaces.html.ini @@ -10047,3 +10047,48 @@ [HTMLScriptElement interface: document.createElement("script") must inherit property "nonce" with the proper type (8)] expected: FAIL + [HTMLButtonElement interface: document.createElement("button") must inherit property "willValidate" with the proper type (11)] + expected: FAIL + + [HTMLButtonElement interface: document.createElement("button") must inherit property "validationMessage" with the proper type (13)] + expected: FAIL + + [HTMLButtonElement interface: document.createElement("button") must inherit property "checkValidity" with the proper type (14)] + expected: FAIL + + [HTMLButtonElement interface: document.createElement("button") must inherit property "reportValidity" with the proper type (15)] + expected: FAIL + + [HTMLButtonElement interface: document.createElement("button") must inherit property "setCustomValidity" with the proper type (16)] + expected: FAIL + + [Window interface: attribute origin] + expected: FAIL + + [Window interface: operation createImageBitmap(ImageBitmapSource,ImageBitmapOptions)] + expected: FAIL + + [Window interface: operation createImageBitmap(ImageBitmapSource,long,long,long,long,ImageBitmapOptions)] + expected: FAIL + + [Window interface: window must inherit property "origin" with the proper type (112)] + expected: FAIL + + [Window interface: calling createImageBitmap(ImageBitmapSource,ImageBitmapOptions) on window with too few arguments must throw TypeError] + expected: FAIL + + [Window interface: calling createImageBitmap(ImageBitmapSource,long,long,long,long,ImageBitmapOptions) on window with too few arguments must throw TypeError] + expected: FAIL + + [MessageEvent interface: new MessageEvent("message", { data: 5 }) must inherit property "source" with the proper type (3)] + expected: FAIL + + [MessageEvent interface: new MessageEvent("message", { data: 5 }) must inherit property "ports" with the proper type (4)] + expected: FAIL + + [MessageEvent interface: new MessageEvent("message", { data: 5 }) must inherit property "initMessageEvent" with the proper type (5)] + expected: FAIL + + [MessageEvent interface: calling initMessageEvent(DOMString,boolean,boolean,any,DOMString,DOMString,[object Object\],[object Object\],[object Object\]) on new MessageEvent("message", { data: 5 }) with too few arguments must throw TypeError] + expected: FAIL + diff --git a/tests/wpt/metadata/html/dom/interfaces.worker.js.ini b/tests/wpt/metadata/html/dom/interfaces.worker.js.ini new file mode 100644 index 00000000000..a5836d9611c --- /dev/null +++ b/tests/wpt/metadata/html/dom/interfaces.worker.js.ini @@ -0,0 +1,257 @@ +[interfaces.worker.html] + type: testharness + [ImageData interface object length] + expected: FAIL + + [Path2D interface: existence and properties of interface object] + expected: FAIL + + [Path2D interface object length] + expected: FAIL + + [Path2D interface object name] + expected: FAIL + + [Path2D interface: existence and properties of interface prototype object] + expected: FAIL + + [Path2D interface: existence and properties of interface prototype object's "constructor" property] + expected: FAIL + + [Path2D interface: operation addPath(Path2D,DOMMatrixInit)] + expected: FAIL + + [Path2D interface: operation closePath()] + expected: FAIL + + [Path2D interface: operation moveTo(unrestricted double,unrestricted double)] + expected: FAIL + + [Path2D interface: operation lineTo(unrestricted double,unrestricted double)] + expected: FAIL + + [Path2D interface: operation quadraticCurveTo(unrestricted double,unrestricted double,unrestricted double,unrestricted double)] + expected: FAIL + + [Path2D interface: operation bezierCurveTo(unrestricted double,unrestricted double,unrestricted double,unrestricted double,unrestricted double,unrestricted double)] + expected: FAIL + + [Path2D interface: operation arcTo(unrestricted double,unrestricted double,unrestricted double,unrestricted double,unrestricted double)] + expected: FAIL + + [Path2D interface: operation arcTo(unrestricted double,unrestricted double,unrestricted double,unrestricted double,unrestricted double,unrestricted double,unrestricted double)] + expected: FAIL + + [Path2D interface: operation rect(unrestricted double,unrestricted double,unrestricted double,unrestricted double)] + expected: FAIL + + [Path2D interface: operation arc(unrestricted double,unrestricted double,unrestricted double,unrestricted double,unrestricted double,boolean)] + expected: FAIL + + [Path2D interface: operation ellipse(unrestricted double,unrestricted double,unrestricted double,unrestricted double,unrestricted double,unrestricted double,unrestricted double,boolean)] + expected: FAIL + + [History interface: existence and properties of interface object] + expected: FAIL + + [ImageBitmap interface: existence and properties of interface object] + expected: FAIL + + [ImageBitmap interface object length] + expected: FAIL + + [ImageBitmap interface object name] + expected: FAIL + + [ImageBitmap interface: existence and properties of interface prototype object] + expected: FAIL + + [ImageBitmap interface: existence and properties of interface prototype object's "constructor" property] + expected: FAIL + + [ImageBitmap interface: attribute width] + expected: FAIL + + [ImageBitmap interface: attribute height] + expected: FAIL + + [MessageEvent interface: attribute source] + expected: FAIL + + [MessageEvent interface: attribute ports] + expected: FAIL + + [MessageEvent interface: operation initMessageEvent(DOMString,boolean,boolean,any,DOMString,DOMString,[object Object\],[object Object\],[object Object\])] + expected: FAIL + + [MessageEvent interface: new MessageEvent("message", { data: 5 }) must inherit property "source" with the proper type (3)] + expected: FAIL + + [MessageEvent interface: new MessageEvent("message", { data: 5 }) must inherit property "ports" with the proper type (4)] + expected: FAIL + + [MessageEvent interface: new MessageEvent("message", { data: 5 }) must inherit property "initMessageEvent" with the proper type (5)] + expected: FAIL + + [MessageEvent interface: calling initMessageEvent(DOMString,boolean,boolean,any,DOMString,DOMString,[object Object\],[object Object\],[object Object\]) on new MessageEvent("message", { data: 5 }) with too few arguments must throw TypeError] + expected: FAIL + + [WebSocket interface: attribute extensions] + expected: FAIL + + [WebSocket interface: new WebSocket("ws://foo") must inherit property "extensions" with the proper type (10)] + expected: FAIL + + [MessageChannel interface: existence and properties of interface object] + expected: FAIL + + [MessageChannel interface object length] + expected: FAIL + + [MessageChannel interface object name] + expected: FAIL + + [MessageChannel interface: existence and properties of interface prototype object] + expected: FAIL + + [MessageChannel interface: existence and properties of interface prototype object's "constructor" property] + expected: FAIL + + [MessageChannel interface: attribute port1] + expected: FAIL + + [MessageChannel interface: attribute port2] + expected: FAIL + + [MessagePort interface: existence and properties of interface object] + expected: FAIL + + [MessagePort interface object length] + expected: FAIL + + [MessagePort interface object name] + expected: FAIL + + [MessagePort interface: existence and properties of interface prototype object] + expected: FAIL + + [MessagePort interface: existence and properties of interface prototype object's "constructor" property] + expected: FAIL + + [MessagePort interface: operation postMessage(any,[object Object\])] + expected: FAIL + + [MessagePort interface: operation start()] + expected: FAIL + + [MessagePort interface: operation close()] + expected: FAIL + + [MessagePort interface: attribute onmessage] + expected: FAIL + + [BroadcastChannel interface: existence and properties of interface object] + expected: FAIL + + [BroadcastChannel interface object length] + expected: FAIL + + [BroadcastChannel interface object name] + expected: FAIL + + [BroadcastChannel interface: existence and properties of interface prototype object] + expected: FAIL + + [BroadcastChannel interface: existence and properties of interface prototype object's "constructor" property] + expected: FAIL + + [BroadcastChannel interface: attribute name] + expected: FAIL + + [BroadcastChannel interface: operation postMessage(any)] + expected: FAIL + + [BroadcastChannel interface: operation close()] + expected: FAIL + + [BroadcastChannel interface: attribute onmessage] + expected: FAIL + + [WorkerGlobalScope interface: attribute onlanguagechange] + expected: FAIL + + [WorkerGlobalScope interface: attribute onoffline] + expected: FAIL + + [WorkerGlobalScope interface: attribute ononline] + expected: FAIL + + [WorkerGlobalScope interface: attribute origin] + expected: FAIL + + [WorkerGlobalScope interface: operation createImageBitmap(ImageBitmapSource,ImageBitmapOptions)] + expected: FAIL + + [WorkerGlobalScope interface: operation createImageBitmap(ImageBitmapSource,long,long,long,long,ImageBitmapOptions)] + expected: FAIL + + [WorkerGlobalScope interface: self must inherit property "onlanguagechange" with the proper type (5)] + expected: FAIL + + [WorkerGlobalScope interface: self must inherit property "onoffline" with the proper type (6)] + expected: FAIL + + [WorkerGlobalScope interface: self must inherit property "ononline" with the proper type (7)] + expected: FAIL + + [WorkerGlobalScope interface: self must inherit property "origin" with the proper type (8)] + expected: FAIL + + [WorkerGlobalScope interface: self must inherit property "createImageBitmap" with the proper type (15)] + expected: FAIL + + [WorkerGlobalScope interface: calling createImageBitmap(ImageBitmapSource,ImageBitmapOptions) on self with too few arguments must throw TypeError] + expected: FAIL + + [WorkerGlobalScope interface: self must inherit property "createImageBitmap" with the proper type (16)] + expected: FAIL + + [WorkerGlobalScope interface: calling createImageBitmap(ImageBitmapSource,long,long,long,long,ImageBitmapOptions) on self with too few arguments must throw TypeError] + expected: FAIL + + [SharedWorker interface: existence and properties of interface object] + expected: FAIL + + [SharedWorker interface object length] + expected: FAIL + + [SharedWorker interface object name] + expected: FAIL + + [SharedWorker interface: existence and properties of interface prototype object] + expected: FAIL + + [SharedWorker interface: existence and properties of interface prototype object's "constructor" property] + expected: FAIL + + [SharedWorker interface: attribute port] + expected: FAIL + + [SharedWorker interface: attribute onerror] + expected: FAIL + + [WorkerNavigator interface: attribute languages] + expected: FAIL + + [WorkerNavigator interface: attribute onLine] + expected: FAIL + + [WorkerNavigator interface: self.navigator must inherit property "languages" with the proper type (10)] + expected: FAIL + + [WorkerNavigator interface: self.navigator must inherit property "onLine" with the proper type (11)] + expected: FAIL + + [WorkerLocation interface: attribute origin] + expected: FAIL + diff --git a/tests/wpt/metadata/html/dom/reflection-misc.html.ini b/tests/wpt/metadata/html/dom/reflection-misc.html.ini index ca033971230..52f5e8ad123 100644 --- a/tests/wpt/metadata/html/dom/reflection-misc.html.ini +++ b/tests/wpt/metadata/html/dom/reflection-misc.html.ini @@ -17706,3 +17706,33 @@ [script.noModule: IDL set to object "test-valueOf"] expected: FAIL + [menu.type: setAttribute() to "context"] + expected: FAIL + + [menu.type: setAttribute() to "xcontext"] + expected: FAIL + + [menu.type: setAttribute() to "context\\0"] + expected: FAIL + + [menu.type: setAttribute() to "ontext"] + expected: FAIL + + [menu.type: setAttribute() to "CONTEXT"] + expected: FAIL + + [menu.type: IDL set to "context"] + expected: FAIL + + [menu.type: IDL set to "xcontext"] + expected: FAIL + + [menu.type: IDL set to "context\\0"] + expected: FAIL + + [menu.type: IDL set to "ontext"] + expected: FAIL + + [menu.type: IDL set to "CONTEXT"] + expected: FAIL + diff --git a/tests/wpt/metadata/html/dom/self-origin.any.js.ini b/tests/wpt/metadata/html/dom/self-origin.any.js.ini new file mode 100644 index 00000000000..5b8829d9923 --- /dev/null +++ b/tests/wpt/metadata/html/dom/self-origin.any.js.ini @@ -0,0 +1,11 @@ +[self-origin.any.worker.html] + type: testharness + [self.origin should be correct] + expected: FAIL + + +[self-origin.any.html] + type: testharness + [self.origin should be correct] + expected: FAIL + diff --git a/tests/wpt/metadata/html/dom/self-origin.sub.html.ini b/tests/wpt/metadata/html/dom/self-origin.sub.html.ini new file mode 100644 index 00000000000..805d0aa634d --- /dev/null +++ b/tests/wpt/metadata/html/dom/self-origin.sub.html.ini @@ -0,0 +1,33 @@ +[self-origin.sub.html] + type: testharness + expected: ERROR + [Should have the right origin for cross-origin subframe] + expected: NOTRUN + + [Should have the right origin for cross-origin subframe after setting document.domain] + expected: NOTRUN + + [Should have the right origin for IDN subframe] + expected: NOTRUN + + [Should have the right origin for IDN subframe after setting document.domain] + expected: NOTRUN + + [Should have the right origin for sandboxed iframe] + expected: NOTRUN + + [We should have the right origin for our page] + expected: FAIL + + [about:blank subframe origins] + expected: FAIL + + [blob: subframe origins] + expected: FAIL + + [javascript: subframe origins] + expected: FAIL + + [srcdoc subframe origins] + expected: FAIL + diff --git a/tests/wpt/metadata/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/allow-scripts-flag-changing-1.html.ini b/tests/wpt/metadata/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/allow-scripts-flag-changing-1.html.ini index 31cc9479ba2..3565a2509a4 100644 --- a/tests/wpt/metadata/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/allow-scripts-flag-changing-1.html.ini +++ b/tests/wpt/metadata/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/allow-scripts-flag-changing-1.html.ini @@ -1,3 +1,5 @@ [allow-scripts-flag-changing-1.html] type: testharness - expected: ERROR + [Meta refresh is blocked by the allow-scripts sandbox flag at its creation time, not when refresh comes due] + expected: FAIL + diff --git a/tests/wpt/metadata/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/allow-scripts-flag-changing-2.html.ini b/tests/wpt/metadata/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/allow-scripts-flag-changing-2.html.ini index ae277f7405b..3dff87b5d53 100644 --- a/tests/wpt/metadata/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/allow-scripts-flag-changing-2.html.ini +++ b/tests/wpt/metadata/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/allow-scripts-flag-changing-2.html.ini @@ -1,3 +1,5 @@ [allow-scripts-flag-changing-2.html] type: testharness - expected: ERROR + [Meta refresh of the original iframe is not blocked if moved into a sandboxed iframe] + expected: FAIL + diff --git a/tests/wpt/metadata/html/semantics/embedded-content/media-elements/ready-states/autoplay-with-slow-text-tracks.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/media-elements/ready-states/autoplay-with-slow-text-tracks.html.ini new file mode 100644 index 00000000000..883276820fd --- /dev/null +++ b/tests/wpt/metadata/html/semantics/embedded-content/media-elements/ready-states/autoplay-with-slow-text-tracks.html.ini @@ -0,0 +1,5 @@ +[autoplay-with-slow-text-tracks.html] + type: testharness + [autoplay with slow text tracks] + expected: FAIL + diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-canvas-element/toBlob.null.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-canvas-element/toBlob.null.html.ini new file mode 100644 index 00000000000..82582595b5e --- /dev/null +++ b/tests/wpt/metadata/html/semantics/embedded-content/the-canvas-element/toBlob.null.html.ini @@ -0,0 +1,5 @@ +[toBlob.null.html] + type: testharness + [toBlob with zero dimension returns a null Blob] + expected: FAIL + diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-embed-element/embed-in-object-fallback-2.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-embed-element/embed-in-object-fallback-2.html.ini new file mode 100644 index 00000000000..853c9e5835c --- /dev/null +++ b/tests/wpt/metadata/html/semantics/embedded-content/the-embed-element/embed-in-object-fallback-2.html.ini @@ -0,0 +1,5 @@ +[embed-in-object-fallback-2.html] + type: testharness + [Test nesting inside ] + expected: FAIL + diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/data-url.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/data-url.html.ini index ad38dae0de6..bc3ad74f666 100644 --- a/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/data-url.html.ini +++ b/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/data-url.html.ini @@ -1,3 +1,5 @@ [data-url.html] type: testharness - expected: ERROR + [data URL image] + expected: FAIL + diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-object-element/object-events.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-object-element/object-events.html.ini index 631dfd1f640..2922eea05b3 100644 --- a/tests/wpt/metadata/html/semantics/embedded-content/the-object-element/object-events.html.ini +++ b/tests/wpt/metadata/html/semantics/embedded-content/the-object-element/object-events.html.ini @@ -10,3 +10,9 @@ [load event of about:blank] expected: TIMEOUT + [error event (using 'file:' protocol)] + expected: TIMEOUT + + [error event (using 'http:' protocol)] + expected: TIMEOUT + diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-object-element/object-in-object-fallback-2.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-object-element/object-in-object-fallback-2.html.ini new file mode 100644 index 00000000000..d454eca43fa --- /dev/null +++ b/tests/wpt/metadata/html/semantics/embedded-content/the-object-element/object-in-object-fallback-2.html.ini @@ -0,0 +1,5 @@ +[object-in-object-fallback-2.html] + type: testharness + [Test nesting inside ] + expected: FAIL + diff --git a/tests/wpt/metadata/html/semantics/forms/the-button-element/button-menu-historical.html.ini b/tests/wpt/metadata/html/semantics/forms/the-button-element/button-menu-historical.html.ini new file mode 100644 index 00000000000..b548f3cb3ed --- /dev/null +++ b/tests/wpt/metadata/html/semantics/forms/the-button-element/button-menu-historical.html.ini @@ -0,0 +1,5 @@ +[button-menu-historical.html] + type: testharness + [button.type reflects properly] + expected: FAIL + diff --git a/tests/wpt/metadata/html/semantics/forms/the-input-element/selection.html.ini b/tests/wpt/metadata/html/semantics/forms/the-input-element/selection.html.ini index a2ac07f8cdf..11e799be3f6 100644 --- a/tests/wpt/metadata/html/semantics/forms/the-input-element/selection.html.ini +++ b/tests/wpt/metadata/html/semantics/forms/the-input-element/selection.html.ini @@ -132,3 +132,27 @@ [input type button should not support variable-length selections] expected: FAIL + [input type hidden should do nothing when the select() method is called (but, not throw)] + expected: FAIL + + [input type range should do nothing when the select() method is called (but, not throw)] + expected: FAIL + + [input type checkbox should do nothing when the select() method is called (but, not throw)] + expected: FAIL + + [input type radio should do nothing when the select() method is called (but, not throw)] + expected: FAIL + + [input type submit should do nothing when the select() method is called (but, not throw)] + expected: FAIL + + [input type image should do nothing when the select() method is called (but, not throw)] + expected: FAIL + + [input type reset should do nothing when the select() method is called (but, not throw)] + expected: FAIL + + [input type button should do nothing when the select() method is called (but, not throw)] + expected: FAIL + diff --git a/tests/wpt/metadata/html/semantics/forms/the-input-element/valueMode.html.ini b/tests/wpt/metadata/html/semantics/forms/the-input-element/valueMode.html.ini index 9e2b88bf891..792ed972c74 100644 --- a/tests/wpt/metadata/html/semantics/forms/the-input-element/valueMode.html.ini +++ b/tests/wpt/metadata/html/semantics/forms/the-input-element/valueMode.html.ini @@ -1,11 +1,5 @@ [valueMode.html] type: testharness - [value IDL attribute of input type hidden without value attribute] - expected: FAIL - - [value IDL attribute of input type hidden with value attribute] - expected: FAIL - [value IDL attribute of input type datetime without value attribute] expected: FAIL @@ -54,42 +48,6 @@ [value IDL attribute of input type color with value attribute] expected: FAIL - [value IDL attribute of input type checkbox without value attribute] - expected: FAIL - - [value IDL attribute of input type checkbox with value attribute] - expected: FAIL - - [value IDL attribute of input type radio without value attribute] - expected: FAIL - - [value IDL attribute of input type radio with value attribute] - expected: FAIL - - [value IDL attribute of input type submit without value attribute] - expected: FAIL - - [value IDL attribute of input type submit with value attribute] - expected: FAIL - - [value IDL attribute of input type image without value attribute] - expected: FAIL - - [value IDL attribute of input type image with value attribute] - expected: FAIL - - [value IDL attribute of input type reset without value attribute] - expected: FAIL - - [value IDL attribute of input type reset with value attribute] - expected: FAIL - - [value IDL attribute of input type button without value attribute] - expected: FAIL - - [value IDL attribute of input type button with value attribute] - expected: FAIL - [value IDL attribute of input type datetime-local without value attribute] expected: FAIL diff --git a/tests/wpt/metadata/html/semantics/forms/the-label-element/labelable-elements.html.ini b/tests/wpt/metadata/html/semantics/forms/the-label-element/labelable-elements.html.ini index be4d7c998ba..8228dc83f92 100644 --- a/tests/wpt/metadata/html/semantics/forms/the-label-element/labelable-elements.html.ini +++ b/tests/wpt/metadata/html/semantics/forms/the-label-element/labelable-elements.html.ini @@ -3,3 +3,6 @@ [Check if the keygen element is a labelable element] expected: FAIL + [Check if the hidden input element has null 'labels'] + expected: FAIL + diff --git a/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/data-url.html.ini b/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/data-url.html.ini new file mode 100644 index 00000000000..5154337ab93 --- /dev/null +++ b/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/data-url.html.ini @@ -0,0 +1,5 @@ +[data-url.html] + type: testharness + [Test data URL and scripts errors] + expected: FAIL + diff --git a/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/module/crossorigin.html.ini b/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/module/crossorigin.html.ini new file mode 100644 index 00000000000..280d51d7975 --- /dev/null +++ b/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/module/crossorigin.html.ini @@ -0,0 +1,27 @@ +[crossorigin.html] + type: testharness + expected: TIMEOUT + [Root module, Error in CORS-different-origin script] + expected: NOTRUN + + [Root module, Error in CORS-same-origin script] + expected: NOTRUN + + [Root module, Blocked script download, missing CORS ACAO header] + expected: NOTRUN + + [Root module, Blocked script download, mismatched CORS ACAO header] + expected: NOTRUN + + [Imported module, Error in CORS-different-origin script] + expected: NOTRUN + + [Imported module, Error in CORS-same-origin script] + expected: NOTRUN + + [Imported module, Blocked script download, missing CORS ACAO header] + expected: NOTRUN + + [Imported module, Blocked script download, mismatched CORS ACAO header] + expected: NOTRUN + diff --git a/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/module/errorhandling.html.ini b/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/module/errorhandling.html.ini new file mode 100644 index 00000000000..6d3d5fdd67c --- /dev/null +++ b/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/module/errorhandling.html.ini @@ -0,0 +1,18 @@ +[errorhandling.html] + type: testharness + expected: TIMEOUT + [IFrame test: 'iframe_parseError_Root'] + expected: FAIL + + [IFrame test: 'iframe_parseError_Dependent'] + expected: FAIL + + [IFrame test: 'iframe_parseError_DependentMultiple'] + expected: FAIL + + [External root module with non-script mimetype] + expected: NOTRUN + + [Module with imported non-script mimetype] + expected: NOTRUN + diff --git a/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/module/execorder.html.ini b/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/module/execorder.html.ini new file mode 100644 index 00000000000..6df8f6cb577 --- /dev/null +++ b/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/module/execorder.html.ini @@ -0,0 +1,21 @@ +[execorder.html] + type: testharness + expected: TIMEOUT + [Unordered module script execution (parsed, unordered #1)] + expected: NOTRUN + + [Unordered module script execution (parsed, unordered #2)] + expected: NOTRUN + + [Unordered module script execution (dynamic, unordered #1)] + expected: NOTRUN + + [Unordered module script execution (dynamic, unordered #2)] + expected: NOTRUN + + [Interlaced module/non-module script execution (parsed, async-ordered)] + expected: FAIL + + [Interlaced module/non-module script execution (dynamic, async-ordered)] + expected: FAIL + diff --git a/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/module/imports.html.ini b/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/module/imports.html.ini new file mode 100644 index 00000000000..817e23946b0 --- /dev/null +++ b/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/module/imports.html.ini @@ -0,0 +1,9 @@ +[imports.html] + type: testharness + expected: TIMEOUT + [Import a module that tries to import itself] + expected: NOTRUN + + [Import a module with a cyclical module dependency] + expected: NOTRUN + diff --git a/tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/origin-check-in-document-open-same-origin-domain.sub.html.ini b/tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/origin-check-in-document-open-same-origin-domain.sub.html.ini new file mode 100644 index 00000000000..6e9d69182c8 --- /dev/null +++ b/tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/origin-check-in-document-open-same-origin-domain.sub.html.ini @@ -0,0 +1,5 @@ +[origin-check-in-document-open-same-origin-domain.sub.html] + type: testharness + [It should not be possible to open same origin-domain (but not same origin) documents.] + expected: FAIL + diff --git a/tests/wpt/metadata/html/webappapis/idle-callbacks/callback-suspended.html.ini b/tests/wpt/metadata/html/webappapis/idle-callbacks/callback-suspended.html.ini new file mode 100644 index 00000000000..8388db3bcab --- /dev/null +++ b/tests/wpt/metadata/html/webappapis/idle-callbacks/callback-suspended.html.ini @@ -0,0 +1,5 @@ +[callback-suspended.html] + type: testharness + [Dispatching idle callbacks should be able to be suspended and then resumed] + expected: FAIL + diff --git a/tests/wpt/metadata/html/webappapis/idle-callbacks/cancel-invoked.html.ini b/tests/wpt/metadata/html/webappapis/idle-callbacks/cancel-invoked.html.ini index 444b53ec311..5520840073d 100644 --- a/tests/wpt/metadata/html/webappapis/idle-callbacks/cancel-invoked.html.ini +++ b/tests/wpt/metadata/html/webappapis/idle-callbacks/cancel-invoked.html.ini @@ -6,3 +6,6 @@ [A cancelled callback is never invoked] expected: FAIL + [Cancelling the currently executing idle callback should be allowed] + expected: FAIL + diff --git a/tests/wpt/metadata/html/webappapis/scripting/events/event-handler-onauxclick.html.ini b/tests/wpt/metadata/html/webappapis/scripting/events/event-handler-onauxclick.html.ini index 492f3a98da6..6cd159e4c10 100644 --- a/tests/wpt/metadata/html/webappapis/scripting/events/event-handler-onauxclick.html.ini +++ b/tests/wpt/metadata/html/webappapis/scripting/events/event-handler-onauxclick.html.ini @@ -1,3 +1,11 @@ [event-handler-onauxclick.html] type: testharness - expected: ERROR + [onauxclick is on the appropriate locations for GlobalEventHandlers] + expected: FAIL + + [The default value of onauxclick is always null] + expected: FAIL + + [The onauxclick content attribute must be compiled into the onauxclick property] + expected: FAIL + diff --git a/tests/wpt/metadata/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/allow-crossorigin.html.ini b/tests/wpt/metadata/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/allow-crossorigin.html.ini new file mode 100644 index 00000000000..0cbcb92c61c --- /dev/null +++ b/tests/wpt/metadata/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/allow-crossorigin.html.ini @@ -0,0 +1,6 @@ +[allow-crossorigin.html] + type: testharness + expected: TIMEOUT + [Promise rejection event should be received for the cross-origin CORS script] + expected: TIMEOUT + diff --git a/tests/wpt/metadata/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-event-constructor.html.ini b/tests/wpt/metadata/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-event-constructor.html.ini new file mode 100644 index 00000000000..3df660bcb08 --- /dev/null +++ b/tests/wpt/metadata/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-event-constructor.html.ini @@ -0,0 +1,5 @@ +[promise-rejection-event-constructor.html] + type: testharness + [This tests the constructor for the PromiseRejectionEvent DOM class.] + expected: FAIL + diff --git a/tests/wpt/metadata/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events-attached-in-event.html.ini b/tests/wpt/metadata/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events-attached-in-event.html.ini new file mode 100644 index 00000000000..badde757f4c --- /dev/null +++ b/tests/wpt/metadata/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events-attached-in-event.html.ini @@ -0,0 +1,6 @@ +[promise-rejection-events-attached-in-event.html] + type: testharness + expected: TIMEOUT + [Attaching a handler in unhandledrejection should not trigger rejectionhandled.] + expected: TIMEOUT + diff --git a/tests/wpt/metadata/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events-onerror.html.ini b/tests/wpt/metadata/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events-onerror.html.ini new file mode 100644 index 00000000000..a017e838302 --- /dev/null +++ b/tests/wpt/metadata/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events-onerror.html.ini @@ -0,0 +1,6 @@ +[promise-rejection-events-onerror.html] + type: testharness + expected: TIMEOUT + [Throwing inside an unhandledrejection handler invokes the error handler.] + expected: TIMEOUT + diff --git a/tests/wpt/metadata/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.dedicatedworker.html.ini b/tests/wpt/metadata/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.dedicatedworker.html.ini new file mode 100644 index 00000000000..bdcbf6afe9d --- /dev/null +++ b/tests/wpt/metadata/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.dedicatedworker.html.ini @@ -0,0 +1,60 @@ +[promise-rejection-events.dedicatedworker.html] + type: testharness + expected: TIMEOUT + [unhandledrejection: from Promise.reject] + expected: TIMEOUT + + [unhandledrejection: from a synchronous rejection in new Promise] + expected: TIMEOUT + + [unhandledrejection: from a task-delayed rejection] + expected: TIMEOUT + + [unhandledrejection: from a setTimeout-delayed rejection] + expected: TIMEOUT + + [unhandledrejection: from a throw in a rejection handler chained off of Promise.reject] + expected: TIMEOUT + + [unhandledrejection: from a throw in a rejection handler chained off of a setTimeout-delayed rejection] + expected: TIMEOUT + + [unhandledrejection: from a throw in a rejection handler attached one microtask after a setTimeout-delayed rejection] + expected: TIMEOUT + + [unhandledrejection: from returning a Promise.reject-created rejection in a fulfillment handler] + expected: TIMEOUT + + [unhandledrejection: from a throw in a fulfillment handler] + expected: TIMEOUT + + [unhandledrejection: from returning a setTimeout-delayed rejection in a fulfillment handler] + expected: TIMEOUT + + [unhandledrejection: from Promise.reject, indirected through Promise.all] + expected: TIMEOUT + + [no unhandledrejection/rejectionhandled: all inside a queued task, a rejection handler attached synchronously to a promise created from returning a Promise.reject-created promise in a fulfillment handler] + expected: FAIL + + [microtask nesting: attaching a handler inside a combination of mutationObserverMicrotask + promise microtasks, all inside a postMessageTask] + expected: FAIL + + [microtask nesting: attaching a handler inside a combination of promise microtasks + mutationObserverMicrotask, all inside a postMessageTask] + expected: FAIL + + [delayed handling: a nested-task delay before attaching a handler causes unhandledrejection] + expected: FAIL + + [delayed handling: a nested-postMessageTask after promise creation/rejection, plus promise microtasks, is too late to attach a rejection handler] + expected: FAIL + + [delayed handling: a nested-postMessageTask before promise creation/rejection, plus many promise microtasks, is too late to attach a rejection handler] + expected: FAIL + + [delayed handling: a nested-postMessageTask after promise creation/rejection, plus many promise microtasks, is too late to attach a rejection handler] + expected: FAIL + + [mutationObserverMicrotask vs. postMessageTask ordering is not disturbed inside unhandledrejection events] + expected: TIMEOUT + diff --git a/tests/wpt/metadata/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.html.ini b/tests/wpt/metadata/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.html.ini new file mode 100644 index 00000000000..9891711f030 --- /dev/null +++ b/tests/wpt/metadata/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.html.ini @@ -0,0 +1,72 @@ +[promise-rejection-events.html] + type: testharness + expected: TIMEOUT + [unhandledrejection: from Promise.reject] + expected: TIMEOUT + + [unhandledrejection: from a synchronous rejection in new Promise] + expected: TIMEOUT + + [unhandledrejection: from a task-delayed rejection] + expected: TIMEOUT + + [unhandledrejection: from a setTimeout-delayed rejection] + expected: TIMEOUT + + [unhandledrejection: from a throw in a rejection handler chained off of Promise.reject] + expected: TIMEOUT + + [unhandledrejection: from a throw in a rejection handler chained off of a setTimeout-delayed rejection] + expected: TIMEOUT + + [unhandledrejection: from a throw in a rejection handler attached one microtask after a setTimeout-delayed rejection] + expected: TIMEOUT + + [unhandledrejection: from returning a Promise.reject-created rejection in a fulfillment handler] + expected: TIMEOUT + + [unhandledrejection: from a throw in a fulfillment handler] + expected: TIMEOUT + + [unhandledrejection: from returning a setTimeout-delayed rejection in a fulfillment handler] + expected: TIMEOUT + + [unhandledrejection: from Promise.reject, indirected through Promise.all] + expected: TIMEOUT + + [delayed handling: a microtask delay before attaching a handler prevents both events (Promise.reject-created promise)] + expected: FAIL + + [delayed handling: a microtask delay before attaching a handler prevents both events (immediately-rejected new Promise-created promise)] + expected: FAIL + + [delayed handling: a microtask delay before attaching the handler, and before rejecting the promise, indirected through Promise.all] + expected: FAIL + + [microtask nesting: attaching a handler inside a combination of mutationObserverMicrotask + promise microtasks] + expected: FAIL + + [delayed handling: a nested-task delay before attaching a handler causes unhandledrejection] + expected: TIMEOUT + + [delayed handling: a nested-postMessageTask after promise creation/rejection, plus promise microtasks, is too late to attach a rejection handler] + expected: TIMEOUT + + [delayed handling: a nested-postMessageTask before promise creation/rejection, plus many promise microtasks, is too late to attach a rejection handler] + expected: TIMEOUT + + [delayed handling: a nested-postMessageTask after promise creation/rejection, plus many promise microtasks, is too late to attach a rejection handler] + expected: TIMEOUT + + [mutationObserverMicrotask vs. postMessageTask ordering is not disturbed inside unhandledrejection events] + expected: TIMEOUT + + [postMessageTask ordering vs. the task queued for unhandled rejection notification (1)] + expected: TIMEOUT + + [postMessageTask ordering vs. the task queued for unhandled rejection notification (2)] + expected: TIMEOUT + + [rejectionhandled is dispatched from a queued task, and not immediately] + expected: TIMEOUT + diff --git a/tests/wpt/metadata/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.serviceworker.https.html.ini b/tests/wpt/metadata/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.serviceworker.https.html.ini new file mode 100644 index 00000000000..48d4cc68a34 --- /dev/null +++ b/tests/wpt/metadata/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.serviceworker.https.html.ini @@ -0,0 +1,3 @@ +[promise-rejection-events.serviceworker.https.html] + type: testharness + expected: TIMEOUT diff --git a/tests/wpt/metadata/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.sharedworker.html.ini b/tests/wpt/metadata/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.sharedworker.html.ini new file mode 100644 index 00000000000..133e69e9d07 --- /dev/null +++ b/tests/wpt/metadata/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.sharedworker.html.ini @@ -0,0 +1,5 @@ +[promise-rejection-events.sharedworker.html] + type: testharness + [Promise rejection events tests: in a shared worker context] + expected: FAIL + diff --git a/tests/wpt/metadata/mozilla-sync b/tests/wpt/metadata/mozilla-sync index f2a44223da0..223db481406 100644 --- a/tests/wpt/metadata/mozilla-sync +++ b/tests/wpt/metadata/mozilla-sync @@ -1,2 +1,2 @@ -local: ff14ce45b8b1a7c127cc95a73fd5e8e37d75911b -upstream: a052787dd5c069a340031011196b73affbd68cd9 +local: 30a31fb744a2fd2b11b901d722704fe458df3022 +upstream: ae824a775035f27a0c708cfb9c1f8a595380b337 diff --git a/tests/wpt/metadata/navigation-timing/nav2_test_document_open.html.ini b/tests/wpt/metadata/navigation-timing/nav2_test_document_open.html.ini index d2a706e2d16..44c377db153 100644 --- a/tests/wpt/metadata/navigation-timing/nav2_test_document_open.html.ini +++ b/tests/wpt/metadata/navigation-timing/nav2_test_document_open.html.ini @@ -1,3 +1,5 @@ [nav2_test_document_open.html] type: testharness - expected: ERROR + [Navigation Timing 2 WPT] + expected: FAIL + diff --git a/tests/wpt/metadata/navigation-timing/nav2_test_navigate_within_document.html.ini b/tests/wpt/metadata/navigation-timing/nav2_test_navigate_within_document.html.ini index ab6bcca4ec1..7780f1c3ab9 100644 --- a/tests/wpt/metadata/navigation-timing/nav2_test_navigate_within_document.html.ini +++ b/tests/wpt/metadata/navigation-timing/nav2_test_navigate_within_document.html.ini @@ -1,3 +1,5 @@ [nav2_test_navigate_within_document.html] type: testharness - expected: ERROR + [Navigation Timing 2 WPT] + expected: FAIL + diff --git a/tests/wpt/metadata/navigation-timing/nav2_test_navigation_type_backforward.html.ini b/tests/wpt/metadata/navigation-timing/nav2_test_navigation_type_backforward.html.ini index 32037a0f758..99e1f259f4c 100644 --- a/tests/wpt/metadata/navigation-timing/nav2_test_navigation_type_backforward.html.ini +++ b/tests/wpt/metadata/navigation-timing/nav2_test_navigation_type_backforward.html.ini @@ -1,3 +1,5 @@ [nav2_test_navigation_type_backforward.html] type: testharness - expected: ERROR + [Navigation Timing 2 WPT] + expected: FAIL + diff --git a/tests/wpt/metadata/navigation-timing/nav2_test_navigation_type_reload.html.ini b/tests/wpt/metadata/navigation-timing/nav2_test_navigation_type_reload.html.ini index d228bee3e72..22cab5d3d55 100644 --- a/tests/wpt/metadata/navigation-timing/nav2_test_navigation_type_reload.html.ini +++ b/tests/wpt/metadata/navigation-timing/nav2_test_navigation_type_reload.html.ini @@ -1,3 +1,5 @@ [nav2_test_navigation_type_reload.html] type: testharness - expected: ERROR + [Navigation Timing 2 WPT] + expected: FAIL + diff --git a/tests/wpt/metadata/navigation-timing/nav2_test_open_blank_page.html.ini b/tests/wpt/metadata/navigation-timing/nav2_test_open_blank_page.html.ini index 5fe0d9f313f..e2e99fb89f2 100644 --- a/tests/wpt/metadata/navigation-timing/nav2_test_open_blank_page.html.ini +++ b/tests/wpt/metadata/navigation-timing/nav2_test_open_blank_page.html.ini @@ -1,3 +1,5 @@ [nav2_test_open_blank_page.html] type: testharness - expected: ERROR + [Navigation Timing 2 WPT] + expected: FAIL + diff --git a/tests/wpt/metadata/navigation-timing/nav2_test_redirect_server.html.ini b/tests/wpt/metadata/navigation-timing/nav2_test_redirect_server.html.ini index 90bfeed274c..dc0d620249b 100644 --- a/tests/wpt/metadata/navigation-timing/nav2_test_redirect_server.html.ini +++ b/tests/wpt/metadata/navigation-timing/nav2_test_redirect_server.html.ini @@ -1,3 +1,5 @@ [nav2_test_redirect_server.html] type: testharness - expected: ERROR + [Navigation Timing 2 WPT] + expected: FAIL + diff --git a/tests/wpt/metadata/navigation-timing/nav2_test_redirect_xserver.html.ini b/tests/wpt/metadata/navigation-timing/nav2_test_redirect_xserver.html.ini index 809815ce175..7bcd169ae34 100644 --- a/tests/wpt/metadata/navigation-timing/nav2_test_redirect_xserver.html.ini +++ b/tests/wpt/metadata/navigation-timing/nav2_test_redirect_xserver.html.ini @@ -1,3 +1,5 @@ [nav2_test_redirect_xserver.html] type: testharness - expected: ERROR + [Navigation Timing 2 WPT] + expected: FAIL + diff --git a/tests/wpt/metadata/navigation-timing/nav2_test_redirect_xserver_opt_in.html.ini b/tests/wpt/metadata/navigation-timing/nav2_test_redirect_xserver_opt_in.html.ini index f0581f5429f..a91b92be895 100644 --- a/tests/wpt/metadata/navigation-timing/nav2_test_redirect_xserver_opt_in.html.ini +++ b/tests/wpt/metadata/navigation-timing/nav2_test_redirect_xserver_opt_in.html.ini @@ -1,3 +1,5 @@ [nav2_test_redirect_xserver_opt_in.html] type: testharness - expected: ERROR + [Navigation Timing 2 WPT] + expected: FAIL + diff --git a/tests/wpt/metadata/navigation-timing/nav2_test_unloadEvents_no_previous_document.html.ini b/tests/wpt/metadata/navigation-timing/nav2_test_unloadEvents_no_previous_document.html.ini index fc4faa38ddc..edd04a2e1f6 100644 --- a/tests/wpt/metadata/navigation-timing/nav2_test_unloadEvents_no_previous_document.html.ini +++ b/tests/wpt/metadata/navigation-timing/nav2_test_unloadEvents_no_previous_document.html.ini @@ -1,3 +1,5 @@ [nav2_test_unloadEvents_no_previous_document.html] type: testharness - expected: ERROR + [Navigation Timing 2 WPT] + expected: FAIL + diff --git a/tests/wpt/metadata/navigation-timing/nav2_test_unloadEvents_previous_document_cross_origin.sub.html.ini b/tests/wpt/metadata/navigation-timing/nav2_test_unloadEvents_previous_document_cross_origin.sub.html.ini index 4f23c35ce7f..6bdf45ff035 100644 --- a/tests/wpt/metadata/navigation-timing/nav2_test_unloadEvents_previous_document_cross_origin.sub.html.ini +++ b/tests/wpt/metadata/navigation-timing/nav2_test_unloadEvents_previous_document_cross_origin.sub.html.ini @@ -1,3 +1,5 @@ [nav2_test_unloadEvents_previous_document_cross_origin.sub.html] type: testharness - expected: ERROR + [Navigation Timing 2 WPT] + expected: FAIL + diff --git a/tests/wpt/metadata/navigation-timing/nav2_test_unloadEvents_with_cross_origin_redirects.html.ini b/tests/wpt/metadata/navigation-timing/nav2_test_unloadEvents_with_cross_origin_redirects.html.ini index 334e12092a5..8f8a80ab3a9 100644 --- a/tests/wpt/metadata/navigation-timing/nav2_test_unloadEvents_with_cross_origin_redirects.html.ini +++ b/tests/wpt/metadata/navigation-timing/nav2_test_unloadEvents_with_cross_origin_redirects.html.ini @@ -1,3 +1,5 @@ [nav2_test_unloadEvents_with_cross_origin_redirects.html] type: testharness - expected: ERROR + [Navigation Timing 2 WPT] + expected: FAIL + diff --git a/tests/wpt/metadata/navigation-timing/nav2_test_unloadEvents_with_previous_document.html.ini b/tests/wpt/metadata/navigation-timing/nav2_test_unloadEvents_with_previous_document.html.ini index c4b9e3696e7..34f36319265 100644 --- a/tests/wpt/metadata/navigation-timing/nav2_test_unloadEvents_with_previous_document.html.ini +++ b/tests/wpt/metadata/navigation-timing/nav2_test_unloadEvents_with_previous_document.html.ini @@ -1,3 +1,5 @@ [nav2_test_unloadEvents_with_previous_document.html] type: testharness - expected: ERROR + [Navigation Timing 2 WPT] + expected: FAIL + diff --git a/tests/wpt/metadata/old-tests/submission/Opera/script_scheduling/083.html.ini b/tests/wpt/metadata/old-tests/submission/Opera/script_scheduling/083.html.ini index 242251f7104..9272fa0716d 100644 --- a/tests/wpt/metadata/old-tests/submission/Opera/script_scheduling/083.html.ini +++ b/tests/wpt/metadata/old-tests/submission/Opera/script_scheduling/083.html.ini @@ -1,6 +1,5 @@ [083.html] type: testharness - expected: ERROR [ scheduler: event listener defined by script in a document in history] expected: FAIL diff --git a/tests/wpt/metadata/old-tests/submission/Opera/script_scheduling/084.html.ini b/tests/wpt/metadata/old-tests/submission/Opera/script_scheduling/084.html.ini index d602b485be6..6268eb738fb 100644 --- a/tests/wpt/metadata/old-tests/submission/Opera/script_scheduling/084.html.ini +++ b/tests/wpt/metadata/old-tests/submission/Opera/script_scheduling/084.html.ini @@ -1,6 +1,5 @@ [084.html] type: testharness - expected: ERROR [ scheduler: event listener defined by script in a removed IFRAME] expected: FAIL diff --git a/tests/wpt/metadata/referrer-policy/generic/sandboxed-iframe-with-opaque-origin.html.ini b/tests/wpt/metadata/referrer-policy/generic/sandboxed-iframe-with-opaque-origin.html.ini new file mode 100644 index 00000000000..ee7dd238242 --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/generic/sandboxed-iframe-with-opaque-origin.html.ini @@ -0,0 +1,9 @@ +[sandboxed-iframe-with-opaque-origin.html] + type: testharness + expected: TIMEOUT + [Sandboxed iframe with opaque origin doesn't send referrers.] + expected: NOTRUN + + [Sandboxed iframe with tuple origin sends referrers.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/touch-events/touch-retargeting.html.ini b/tests/wpt/metadata/touch-events/touch-retargeting.html.ini index 7eedc7ea390..4fe791f6296 100644 --- a/tests/wpt/metadata/touch-events/touch-retargeting.html.ini +++ b/tests/wpt/metadata/touch-events/touch-retargeting.html.ini @@ -1,3 +1,5 @@ [touch-retargeting.html] type: testharness - expected: ERROR + [TouchEvent Retargeting Tests] + expected: FAIL + diff --git a/tests/wpt/metadata/url/a-element-origin-xhtml.xhtml.ini b/tests/wpt/metadata/url/a-element-origin-xhtml.xhtml.ini index 2631071b0fc..21b2a4a5d2c 100644 --- a/tests/wpt/metadata/url/a-element-origin-xhtml.xhtml.ini +++ b/tests/wpt/metadata/url/a-element-origin-xhtml.xhtml.ini @@ -3,3 +3,6 @@ [Parsing origin: ^_`{|}~/> against ] expected: FAIL + [Parsing origin: against ] + expected: FAIL + diff --git a/tests/wpt/metadata/url/a-element-origin.html.ini b/tests/wpt/metadata/url/a-element-origin.html.ini index 760079ff90f..c4f8964312b 100644 --- a/tests/wpt/metadata/url/a-element-origin.html.ini +++ b/tests/wpt/metadata/url/a-element-origin.html.ini @@ -3,3 +3,6 @@ [Parsing origin: ^_`{|}~/> against ] expected: FAIL + [Parsing origin: against ] + expected: FAIL + diff --git a/tests/wpt/metadata/url/a-element-xhtml.xhtml.ini b/tests/wpt/metadata/url/a-element-xhtml.xhtml.ini index 49385d88af0..b1cfe755c1a 100644 --- a/tests/wpt/metadata/url/a-element-xhtml.xhtml.ini +++ b/tests/wpt/metadata/url/a-element-xhtml.xhtml.ini @@ -105,3 +105,21 @@ [Parsing: against ] expected: FAIL + [Parsing: against ] + expected: FAIL + + [Parsing: against ] + expected: FAIL + + [Parsing: against ] + expected: FAIL + + [Parsing: against ] + expected: FAIL + + [Parsing: against ] + expected: FAIL + + [Parsing: against ] + expected: FAIL + diff --git a/tests/wpt/metadata/url/a-element.html.ini b/tests/wpt/metadata/url/a-element.html.ini index f98da453fd3..c439d83b0fc 100644 --- a/tests/wpt/metadata/url/a-element.html.ini +++ b/tests/wpt/metadata/url/a-element.html.ini @@ -105,3 +105,21 @@ [Parsing: against ] expected: FAIL + [Parsing: against ] + expected: FAIL + + [Parsing: against ] + expected: FAIL + + [Parsing: against ] + expected: FAIL + + [Parsing: against ] + expected: FAIL + + [Parsing: against ] + expected: FAIL + + [Parsing: against ] + expected: FAIL + diff --git a/tests/wpt/metadata/url/interfaces.html.ini b/tests/wpt/metadata/url/interfaces.html.ini index 5cc5787fb17..5fef696b587 100644 --- a/tests/wpt/metadata/url/interfaces.html.ini +++ b/tests/wpt/metadata/url/interfaces.html.ini @@ -3,3 +3,9 @@ [Testing Symbol.iterator property of iterable interface URLSearchParams] expected: FAIL + [URL interface: operation toJSON()] + expected: FAIL + + [URL interface: new URL("http://foo") must inherit property "toJSON" with the proper type (12)] + expected: FAIL + diff --git a/tests/wpt/metadata/url/url-constructor.html.ini b/tests/wpt/metadata/url/url-constructor.html.ini index 2bc5f995c9b..a7935f1d24e 100644 --- a/tests/wpt/metadata/url/url-constructor.html.ini +++ b/tests/wpt/metadata/url/url-constructor.html.ini @@ -1,8 +1,5 @@ [url-constructor.html] type: testharness - [Parsing: against ] - expected: FAIL - [Parsing: against ] expected: FAIL @@ -108,3 +105,21 @@ [Parsing: against ] expected: FAIL + [Parsing: against ] + expected: FAIL + + [Parsing: against ] + expected: FAIL + + [Parsing: against ] + expected: FAIL + + [Parsing: against ] + expected: FAIL + + [Parsing: against ] + expected: FAIL + + [Parsing: against ] + expected: FAIL + diff --git a/tests/wpt/metadata/url/url-origin.html.ini b/tests/wpt/metadata/url/url-origin.html.ini index a904b3a61f4..76abb3c7a43 100644 --- a/tests/wpt/metadata/url/url-origin.html.ini +++ b/tests/wpt/metadata/url/url-origin.html.ini @@ -3,3 +3,6 @@ [Origin parsing: ^_`{|}~/> against ] expected: FAIL + [Origin parsing: against ] + expected: FAIL + diff --git a/tests/wpt/metadata/url/url-setters.html.ini b/tests/wpt/metadata/url/url-setters.html.ini index 11d6e640f56..fc4d1f79810 100644 --- a/tests/wpt/metadata/url/url-setters.html.ini +++ b/tests/wpt/metadata/url/url-setters.html.ini @@ -708,3 +708,162 @@ [: Setting .pathname = '#' # needs to be encoded, non-special scheme] expected: FAIL + [URL: Setting .username = 'x'] + expected: FAIL + + [: Setting .username = 'x'] + expected: FAIL + + [: Setting .username = 'x'] + expected: FAIL + + [URL: Setting .username = 'test'] + expected: FAIL + + [: Setting .username = 'test'] + expected: FAIL + + [: Setting .username = 'test'] + expected: FAIL + + [URL: Setting .password = 'x'] + expected: FAIL + + [: Setting .password = 'x'] + expected: FAIL + + [: Setting .password = 'x'] + expected: FAIL + + [URL: Setting .password = 'test'] + expected: FAIL + + [: Setting .password = 'test'] + expected: FAIL + + [: Setting .password = 'test'] + expected: FAIL + + [URL: Setting .host = 'ß'] + expected: FAIL + + [: Setting .host = 'ß'] + expected: FAIL + + [: Setting .host = 'ß'] + expected: FAIL + + [URL: Setting .host = 'ß' IDNA Nontransitional_Processing] + expected: FAIL + + [: Setting .host = 'ß' IDNA Nontransitional_Processing] + expected: FAIL + + [: Setting .host = 'ß' IDNA Nontransitional_Processing] + expected: FAIL + + [URL: Setting .host = 'x:123'] + expected: FAIL + + [: Setting .host = 'x:123'] + expected: FAIL + + [: Setting .host = 'x:123'] + expected: FAIL + + [URL: Setting .host = 'loc%41lhost'] + expected: FAIL + + [: Setting .host = 'loc%41lhost'] + expected: FAIL + + [URL: Setting .host = ''] + expected: FAIL + + [: Setting .host = ''] + expected: FAIL + + [: Setting .host = ''] + expected: FAIL + + [URL: Setting .host = ''] + expected: FAIL + + [: Setting .host = ''] + expected: FAIL + + [: Setting .host = ''] + expected: FAIL + + [URL: Setting .host = ''] + expected: FAIL + + [: Setting .host = ''] + expected: FAIL + + [: Setting .host = ''] + expected: FAIL + + [URL: Setting .hostname = 'x:123'] + expected: FAIL + + [: Setting .hostname = 'x:123'] + expected: FAIL + + [: Setting .hostname = 'x:123'] + expected: FAIL + + [URL: Setting .hostname = 'loc%41lhost'] + expected: FAIL + + [: Setting .hostname = 'loc%41lhost'] + expected: FAIL + + [URL: Setting .hostname = ''] + expected: FAIL + + [: Setting .hostname = ''] + expected: FAIL + + [: Setting .hostname = ''] + expected: FAIL + + [URL: Setting .hostname = ''] + expected: FAIL + + [: Setting .hostname = ''] + expected: FAIL + + [: Setting .hostname = ''] + expected: FAIL + + [URL: Setting .hostname = ''] + expected: FAIL + + [: Setting .hostname = ''] + expected: FAIL + + [: Setting .hostname = ''] + expected: FAIL + + [: Setting .port = '12'] + expected: FAIL + + [: Setting .port = '12'] + expected: FAIL + + [: Setting .port = '12'] + expected: FAIL + + [URL: Setting .port = '12'] + expected: FAIL + + [: Setting .port = '12'] + expected: FAIL + + [: Setting .port = '12'] + expected: FAIL + + [: Setting .port = '12'] + expected: FAIL + diff --git a/tests/wpt/metadata/url/url-tojson.html.ini b/tests/wpt/metadata/url/url-tojson.html.ini new file mode 100644 index 00000000000..fcc7e20caa5 --- /dev/null +++ b/tests/wpt/metadata/url/url-tojson.html.ini @@ -0,0 +1,5 @@ +[url-tojson.html] + type: testharness + [URL's toJSON()] + expected: FAIL + diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/abs/abs_001_to_006.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/abs/abs_001_to_006.html.ini index 6ec567fad17..b20c90fdcc4 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/abs/abs_001_to_006.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/abs/abs_001_to_006.html.ini @@ -1,3 +1,5 @@ [abs_001_to_006.html] type: testharness - expected: ERROR + [WebGL GLSL conformance test: abs_001_to_006.html] + expected: FAIL + diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/acos/acos_001_to_006.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/acos/acos_001_to_006.html.ini index 4193d839325..329ebe92cd7 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/acos/acos_001_to_006.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/acos/acos_001_to_006.html.ini @@ -1,3 +1,5 @@ [acos_001_to_006.html] type: testharness - expected: ERROR + [WebGL GLSL conformance test: acos_001_to_006.html] + expected: FAIL + diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/all/all_001_to_004.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/all/all_001_to_004.html.ini index bb414b5083d..ef08d504340 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/all/all_001_to_004.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/all/all_001_to_004.html.ini @@ -1,3 +1,5 @@ [all_001_to_004.html] type: testharness - expected: ERROR + [WebGL GLSL conformance test: all_001_to_004.html] + expected: FAIL + diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/any/any_001_to_004.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/any/any_001_to_004.html.ini index fabebb85a8a..a39d7edb2d1 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/any/any_001_to_004.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/any/any_001_to_004.html.ini @@ -1,3 +1,5 @@ [any_001_to_004.html] type: testharness - expected: ERROR + [WebGL GLSL conformance test: any_001_to_004.html] + expected: FAIL + diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/array/array_001_to_006.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/array/array_001_to_006.html.ini index 4ae8ca1fe94..1ef57e20b58 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/array/array_001_to_006.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/array/array_001_to_006.html.ini @@ -1,3 +1,5 @@ [array_001_to_006.html] type: testharness - expected: ERROR + [WebGL GLSL conformance test: array_001_to_006.html] + expected: FAIL + diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/asin/asin_001_to_006.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/asin/asin_001_to_006.html.ini index 015ae0d8baf..3612a1d8936 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/asin/asin_001_to_006.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/asin/asin_001_to_006.html.ini @@ -1,3 +1,5 @@ [asin_001_to_006.html] type: testharness - expected: ERROR + [WebGL GLSL conformance test: asin_001_to_006.html] + expected: FAIL + diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/atan/atan_001_to_008.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/atan/atan_001_to_008.html.ini index 4872ca3bd6e..1ee5087e713 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/atan/atan_001_to_008.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/atan/atan_001_to_008.html.ini @@ -1,3 +1,5 @@ [atan_001_to_008.html] type: testharness - expected: ERROR + [WebGL GLSL conformance test: atan_001_to_008.html] + expected: FAIL + diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/atan/atan_009_to_012.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/atan/atan_009_to_012.html.ini index d06d014989f..6c3e3baf8a8 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/atan/atan_009_to_012.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/atan/atan_009_to_012.html.ini @@ -1,3 +1,5 @@ [atan_009_to_012.html] type: testharness - expected: ERROR + [WebGL GLSL conformance test: atan_009_to_012.html] + expected: FAIL + diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/biConstants/biConstants_001_to_008.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/biConstants/biConstants_001_to_008.html.ini index dbf71da9985..e10d0acdb9a 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/biConstants/biConstants_001_to_008.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/biConstants/biConstants_001_to_008.html.ini @@ -1,3 +1,5 @@ [biConstants_001_to_008.html] type: testharness - expected: ERROR + [WebGL GLSL conformance test: biConstants_001_to_008.html] + expected: FAIL + diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/biConstants/biConstants_009_to_016.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/biConstants/biConstants_009_to_016.html.ini index 83155f66bb1..bb816c8dfdd 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/biConstants/biConstants_009_to_016.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/biConstants/biConstants_009_to_016.html.ini @@ -1,3 +1,5 @@ [biConstants_009_to_016.html] type: testharness - expected: ERROR + [WebGL GLSL conformance test: biConstants_009_to_016.html] + expected: FAIL + diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/biuDepthRange/biuDepthRange_001_to_002.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/biuDepthRange/biuDepthRange_001_to_002.html.ini index 2d2d477c6b2..48123c753d3 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/biuDepthRange/biuDepthRange_001_to_002.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/biuDepthRange/biuDepthRange_001_to_002.html.ini @@ -1,3 +1,5 @@ [biuDepthRange_001_to_002.html] type: testharness - expected: ERROR + [WebGL GLSL conformance test: biuDepthRange_001_to_002.html] + expected: FAIL + diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/ceil/ceil_001_to_006.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/ceil/ceil_001_to_006.html.ini index 7acc0fe2069..10c41ca64f4 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/ceil/ceil_001_to_006.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/ceil/ceil_001_to_006.html.ini @@ -1,3 +1,5 @@ [ceil_001_to_006.html] type: testharness - expected: ERROR + [WebGL GLSL conformance test: ceil_001_to_006.html] + expected: FAIL + diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/clamp/clamp_001_to_006.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/clamp/clamp_001_to_006.html.ini index d0210b72946..0e3547feaa4 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/clamp/clamp_001_to_006.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/clamp/clamp_001_to_006.html.ini @@ -1,3 +1,5 @@ [clamp_001_to_006.html] type: testharness - expected: ERROR + [WebGL GLSL conformance test: clamp_001_to_006.html] + expected: FAIL + diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/control_flow/control_flow_001_to_008.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/control_flow/control_flow_001_to_008.html.ini index 58af3d328d8..dfac4fee4fa 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/control_flow/control_flow_001_to_008.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/control_flow/control_flow_001_to_008.html.ini @@ -1,3 +1,5 @@ [control_flow_001_to_008.html] type: testharness - expected: ERROR + [WebGL GLSL conformance test: control_flow_001_to_008.html] + expected: FAIL + diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/control_flow/control_flow_009_to_010.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/control_flow/control_flow_009_to_010.html.ini index d1d0c4b7874..192cf2bbd56 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/control_flow/control_flow_009_to_010.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/control_flow/control_flow_009_to_010.html.ini @@ -1,3 +1,5 @@ [control_flow_009_to_010.html] type: testharness - expected: ERROR + [WebGL GLSL conformance test: control_flow_009_to_010.html] + expected: FAIL + diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/cos/cos_001_to_006.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/cos/cos_001_to_006.html.ini index 25f281542bc..04f57367e3b 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/cos/cos_001_to_006.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/cos/cos_001_to_006.html.ini @@ -1,3 +1,5 @@ [cos_001_to_006.html] type: testharness - expected: ERROR + [WebGL GLSL conformance test: cos_001_to_006.html] + expected: FAIL + diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/cross/cross_001_to_002.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/cross/cross_001_to_002.html.ini index f8e50598cab..55c939623b4 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/cross/cross_001_to_002.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/cross/cross_001_to_002.html.ini @@ -1,3 +1,5 @@ [cross_001_to_002.html] type: testharness - expected: ERROR + [WebGL GLSL conformance test: cross_001_to_002.html] + expected: FAIL + diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/default/default_001_to_001.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/default/default_001_to_001.html.ini index 72bcc4264e1..88e2cef91e6 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/default/default_001_to_001.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/default/default_001_to_001.html.ini @@ -1,3 +1,5 @@ [default_001_to_001.html] type: testharness - expected: ERROR + [WebGL GLSL conformance test: default_001_to_001.html] + expected: FAIL + diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/degrees/degrees_001_to_006.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/degrees/degrees_001_to_006.html.ini index f2d8fcbac17..cf631ad9f6b 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/degrees/degrees_001_to_006.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/degrees/degrees_001_to_006.html.ini @@ -1,3 +1,5 @@ [degrees_001_to_006.html] type: testharness - expected: ERROR + [WebGL GLSL conformance test: degrees_001_to_006.html] + expected: FAIL + diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/discard/discard_001_to_002.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/discard/discard_001_to_002.html.ini index 5fe9bf6bd3c..4da12ab1e73 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/discard/discard_001_to_002.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/discard/discard_001_to_002.html.ini @@ -1,3 +1,5 @@ [discard_001_to_002.html] type: testharness - expected: ERROR + [WebGL GLSL conformance test: discard_001_to_002.html] + expected: FAIL + diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/distance/distance_001_to_006.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/distance/distance_001_to_006.html.ini index cce2cd33061..4e97077ec26 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/distance/distance_001_to_006.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/distance/distance_001_to_006.html.ini @@ -1,3 +1,5 @@ [distance_001_to_006.html] type: testharness - expected: ERROR + [WebGL GLSL conformance test: distance_001_to_006.html] + expected: FAIL + diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/dot/dot_001_to_006.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/dot/dot_001_to_006.html.ini index b46d27d4bb1..9a72122da3f 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/dot/dot_001_to_006.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/dot/dot_001_to_006.html.ini @@ -1,3 +1,5 @@ [dot_001_to_006.html] type: testharness - expected: ERROR + [WebGL GLSL conformance test: dot_001_to_006.html] + expected: FAIL + diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/equal/equal_001_to_008.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/equal/equal_001_to_008.html.ini index 33eb2f362aa..3b482eee638 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/equal/equal_001_to_008.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/equal/equal_001_to_008.html.ini @@ -1,3 +1,5 @@ [equal_001_to_008.html] type: testharness - expected: ERROR + [WebGL GLSL conformance test: equal_001_to_008.html] + expected: FAIL + diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/equal/equal_009_to_012.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/equal/equal_009_to_012.html.ini index bd552ed71a6..9ccc1eb336d 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/equal/equal_009_to_012.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/equal/equal_009_to_012.html.ini @@ -1,3 +1,5 @@ [equal_009_to_012.html] type: testharness - expected: ERROR + [WebGL GLSL conformance test: equal_009_to_012.html] + expected: FAIL + diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/exp/exp_001_to_008.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/exp/exp_001_to_008.html.ini index 7bc5b3d81ad..583d6898cb3 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/exp/exp_001_to_008.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/exp/exp_001_to_008.html.ini @@ -1,3 +1,5 @@ [exp_001_to_008.html] type: testharness - expected: ERROR + [WebGL GLSL conformance test: exp_001_to_008.html] + expected: FAIL + diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/exp/exp_009_to_012.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/exp/exp_009_to_012.html.ini index 6297018752b..1ecd37cd78f 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/exp/exp_009_to_012.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/exp/exp_009_to_012.html.ini @@ -1,3 +1,5 @@ [exp_009_to_012.html] type: testharness - expected: ERROR + [WebGL GLSL conformance test: exp_009_to_012.html] + expected: FAIL + diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/exp2/exp2_001_to_008.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/exp2/exp2_001_to_008.html.ini index abb004fe6c8..6e41d93c519 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/exp2/exp2_001_to_008.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/exp2/exp2_001_to_008.html.ini @@ -1,3 +1,5 @@ [exp2_001_to_008.html] type: testharness - expected: ERROR + [WebGL GLSL conformance test: exp2_001_to_008.html] + expected: FAIL + diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/exp2/exp2_009_to_012.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/exp2/exp2_009_to_012.html.ini index 6890e257515..ce7d283617b 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/exp2/exp2_009_to_012.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/exp2/exp2_009_to_012.html.ini @@ -1,3 +1,5 @@ [exp2_009_to_012.html] type: testharness - expected: ERROR + [WebGL GLSL conformance test: exp2_009_to_012.html] + expected: FAIL + diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/faceforward/faceforward_001_to_006.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/faceforward/faceforward_001_to_006.html.ini index 0477bf2abb9..7e70f85197c 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/faceforward/faceforward_001_to_006.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/faceforward/faceforward_001_to_006.html.ini @@ -1,3 +1,5 @@ [faceforward_001_to_006.html] type: testharness - expected: ERROR + [WebGL GLSL conformance test: faceforward_001_to_006.html] + expected: FAIL + diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/floor/floor_001_to_006.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/floor/floor_001_to_006.html.ini index c7ff1b2d3d8..01bd1290f33 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/floor/floor_001_to_006.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/floor/floor_001_to_006.html.ini @@ -1,3 +1,5 @@ [floor_001_to_006.html] type: testharness - expected: ERROR + [WebGL GLSL conformance test: floor_001_to_006.html] + expected: FAIL + diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/fract/fract_001_to_006.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/fract/fract_001_to_006.html.ini index fda14c46e60..c04e0bd1d38 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/fract/fract_001_to_006.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/fract/fract_001_to_006.html.ini @@ -1,3 +1,5 @@ [fract_001_to_006.html] type: testharness - expected: ERROR + [WebGL GLSL conformance test: fract_001_to_006.html] + expected: FAIL + diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/gl_FragCoord/gl_FragCoord_001_to_003.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/gl_FragCoord/gl_FragCoord_001_to_003.html.ini index b4e7c42114f..c08348564c1 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/gl_FragCoord/gl_FragCoord_001_to_003.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/gl_FragCoord/gl_FragCoord_001_to_003.html.ini @@ -1,3 +1,5 @@ [gl_FragCoord_001_to_003.html] type: testharness - expected: ERROR + [WebGL GLSL conformance test: gl_FragCoord_001_to_003.html] + expected: FAIL + diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/gl_FrontFacing/gl_FrontFacing_001_to_001.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/gl_FrontFacing/gl_FrontFacing_001_to_001.html.ini index b79784cdcd9..363867c8ee4 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/gl_FrontFacing/gl_FrontFacing_001_to_001.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/gl_FrontFacing/gl_FrontFacing_001_to_001.html.ini @@ -1,3 +1,5 @@ [gl_FrontFacing_001_to_001.html] type: testharness - expected: ERROR + [WebGL GLSL conformance test: gl_FrontFacing_001_to_001.html] + expected: FAIL + diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/greaterThan/greaterThan_001_to_008.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/greaterThan/greaterThan_001_to_008.html.ini index f2775dc58da..f41a9ac526b 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/greaterThan/greaterThan_001_to_008.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/greaterThan/greaterThan_001_to_008.html.ini @@ -1,3 +1,5 @@ [greaterThan_001_to_008.html] type: testharness - expected: ERROR + [WebGL GLSL conformance test: greaterThan_001_to_008.html] + expected: FAIL + diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/greaterThanEqual/greaterThanEqual_001_to_008.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/greaterThanEqual/greaterThanEqual_001_to_008.html.ini index 82a3dd61ca6..304f3f41296 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/greaterThanEqual/greaterThanEqual_001_to_008.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/greaterThanEqual/greaterThanEqual_001_to_008.html.ini @@ -1,3 +1,5 @@ [greaterThanEqual_001_to_008.html] type: testharness - expected: ERROR + [WebGL GLSL conformance test: greaterThanEqual_001_to_008.html] + expected: FAIL + diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/inversesqrt/inversesqrt_001_to_006.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/inversesqrt/inversesqrt_001_to_006.html.ini index 92dfe5ddbd2..4c328cddc5f 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/inversesqrt/inversesqrt_001_to_006.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/inversesqrt/inversesqrt_001_to_006.html.ini @@ -1,3 +1,5 @@ [inversesqrt_001_to_006.html] type: testharness - expected: ERROR + [WebGL GLSL conformance test: inversesqrt_001_to_006.html] + expected: FAIL + diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/length/length_001_to_006.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/length/length_001_to_006.html.ini index 47cd2723f34..a6226a4041b 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/length/length_001_to_006.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/length/length_001_to_006.html.ini @@ -1,3 +1,5 @@ [length_001_to_006.html] type: testharness - expected: ERROR + [WebGL GLSL conformance test: length_001_to_006.html] + expected: FAIL + diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/lessThan/lessThan_001_to_008.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/lessThan/lessThan_001_to_008.html.ini index 10ae9229a75..e78e37cddf1 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/lessThan/lessThan_001_to_008.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/lessThan/lessThan_001_to_008.html.ini @@ -1,3 +1,5 @@ [lessThan_001_to_008.html] type: testharness - expected: ERROR + [WebGL GLSL conformance test: lessThan_001_to_008.html] + expected: FAIL + diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/lessThanEqual/lessThanEqual_001_to_008.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/lessThanEqual/lessThanEqual_001_to_008.html.ini index 06ad4bc6eaf..5d5f334bcbd 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/lessThanEqual/lessThanEqual_001_to_008.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/lessThanEqual/lessThanEqual_001_to_008.html.ini @@ -1,3 +1,5 @@ [lessThanEqual_001_to_008.html] type: testharness - expected: ERROR + [WebGL GLSL conformance test: lessThanEqual_001_to_008.html] + expected: FAIL + diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/log/log_001_to_008.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/log/log_001_to_008.html.ini index ffc92ff636e..e7904a59644 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/log/log_001_to_008.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/log/log_001_to_008.html.ini @@ -1,3 +1,5 @@ [log_001_to_008.html] type: testharness - expected: ERROR + [WebGL GLSL conformance test: log_001_to_008.html] + expected: FAIL + diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/log/log_009_to_012.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/log/log_009_to_012.html.ini index 81a4d6d6020..f8410ce0be6 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/log/log_009_to_012.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/log/log_009_to_012.html.ini @@ -1,3 +1,5 @@ [log_009_to_012.html] type: testharness - expected: ERROR + [WebGL GLSL conformance test: log_009_to_012.html] + expected: FAIL + diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/log2/log2_001_to_008.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/log2/log2_001_to_008.html.ini index 822b2adc005..0381a266892 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/log2/log2_001_to_008.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/log2/log2_001_to_008.html.ini @@ -1,3 +1,5 @@ [log2_001_to_008.html] type: testharness - expected: ERROR + [WebGL GLSL conformance test: log2_001_to_008.html] + expected: FAIL + diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/log2/log2_009_to_012.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/log2/log2_009_to_012.html.ini index 8c9bb896fcf..025e65b4175 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/log2/log2_009_to_012.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/log2/log2_009_to_012.html.ini @@ -1,3 +1,5 @@ [log2_009_to_012.html] type: testharness - expected: ERROR + [WebGL GLSL conformance test: log2_009_to_012.html] + expected: FAIL + diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/mat/mat_001_to_008.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/mat/mat_001_to_008.html.ini index 16df23c80cb..5c5ffe6c19f 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/mat/mat_001_to_008.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/mat/mat_001_to_008.html.ini @@ -1,3 +1,5 @@ [mat_001_to_008.html] type: testharness - expected: ERROR + [WebGL GLSL conformance test: mat_001_to_008.html] + expected: FAIL + diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/mat/mat_009_to_016.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/mat/mat_009_to_016.html.ini index 2bc45ca7734..18cf0900239 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/mat/mat_009_to_016.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/mat/mat_009_to_016.html.ini @@ -1,3 +1,5 @@ [mat_009_to_016.html] type: testharness - expected: ERROR + [WebGL GLSL conformance test: mat_009_to_016.html] + expected: FAIL + diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/mat/mat_017_to_024.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/mat/mat_017_to_024.html.ini index 977308e0951..d6d9496a55f 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/mat/mat_017_to_024.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/mat/mat_017_to_024.html.ini @@ -1,3 +1,5 @@ [mat_017_to_024.html] type: testharness - expected: ERROR + [WebGL GLSL conformance test: mat_017_to_024.html] + expected: FAIL + diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/mat/mat_025_to_032.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/mat/mat_025_to_032.html.ini index 33e429af15e..0f2c83cf0fd 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/mat/mat_025_to_032.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/mat/mat_025_to_032.html.ini @@ -1,3 +1,5 @@ [mat_025_to_032.html] type: testharness - expected: ERROR + [WebGL GLSL conformance test: mat_025_to_032.html] + expected: FAIL + diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/mat/mat_033_to_040.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/mat/mat_033_to_040.html.ini index 7c65edd1f33..2b8d6fb8b1b 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/mat/mat_033_to_040.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/mat/mat_033_to_040.html.ini @@ -1,3 +1,5 @@ [mat_033_to_040.html] type: testharness - expected: ERROR + [WebGL GLSL conformance test: mat_033_to_040.html] + expected: FAIL + diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/mat/mat_041_to_046.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/mat/mat_041_to_046.html.ini index 7eb90ca359d..368e3acebce 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/mat/mat_041_to_046.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/mat/mat_041_to_046.html.ini @@ -1,3 +1,5 @@ [mat_041_to_046.html] type: testharness - expected: ERROR + [WebGL GLSL conformance test: mat_041_to_046.html] + expected: FAIL + diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/mat3/mat3_001_to_006.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/mat3/mat3_001_to_006.html.ini index 220d39d3bf7..212454d0d2d 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/mat3/mat3_001_to_006.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/mat3/mat3_001_to_006.html.ini @@ -1,3 +1,5 @@ [mat3_001_to_006.html] type: testharness - expected: ERROR + [WebGL GLSL conformance test: mat3_001_to_006.html] + expected: FAIL + diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/matrixCompMult/matrixCompMult_001_to_004.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/matrixCompMult/matrixCompMult_001_to_004.html.ini index 64939006931..9d131e82782 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/matrixCompMult/matrixCompMult_001_to_004.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/matrixCompMult/matrixCompMult_001_to_004.html.ini @@ -1,3 +1,5 @@ [matrixCompMult_001_to_004.html] type: testharness - expected: ERROR + [WebGL GLSL conformance test: matrixCompMult_001_to_004.html] + expected: FAIL + diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/max/max_001_to_006.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/max/max_001_to_006.html.ini index c9ab3c49990..1d081a0f948 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/max/max_001_to_006.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/max/max_001_to_006.html.ini @@ -1,3 +1,5 @@ [max_001_to_006.html] type: testharness - expected: ERROR + [WebGL GLSL conformance test: max_001_to_006.html] + expected: FAIL + diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/min/min_001_to_006.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/min/min_001_to_006.html.ini index e3034169bdc..53bf0504f4a 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/min/min_001_to_006.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/min/min_001_to_006.html.ini @@ -1,3 +1,5 @@ [min_001_to_006.html] type: testharness - expected: ERROR + [WebGL GLSL conformance test: min_001_to_006.html] + expected: FAIL + diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/mix/mix_001_to_006.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/mix/mix_001_to_006.html.ini index b6a5375889a..ca4ef06c413 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/mix/mix_001_to_006.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/mix/mix_001_to_006.html.ini @@ -1,3 +1,5 @@ [mix_001_to_006.html] type: testharness - expected: ERROR + [WebGL GLSL conformance test: mix_001_to_006.html] + expected: FAIL + diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/mod/mod_001_to_008.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/mod/mod_001_to_008.html.ini index b94d4138a52..53894c84fef 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/mod/mod_001_to_008.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/mod/mod_001_to_008.html.ini @@ -1,3 +1,5 @@ [mod_001_to_008.html] type: testharness - expected: ERROR + [WebGL GLSL conformance test: mod_001_to_008.html] + expected: FAIL + diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/normalize/normalize_001_to_006.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/normalize/normalize_001_to_006.html.ini index 5968bf2c8c1..deb07aedc87 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/normalize/normalize_001_to_006.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/normalize/normalize_001_to_006.html.ini @@ -1,3 +1,5 @@ [normalize_001_to_006.html] type: testharness - expected: ERROR + [WebGL GLSL conformance test: normalize_001_to_006.html] + expected: FAIL + diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/not/not_001_to_004.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/not/not_001_to_004.html.ini index c29ed26ba87..39daeaaaaf9 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/not/not_001_to_004.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/not/not_001_to_004.html.ini @@ -1,3 +1,5 @@ [not_001_to_004.html] type: testharness - expected: ERROR + [WebGL GLSL conformance test: not_001_to_004.html] + expected: FAIL + diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/notEqual/notEqual_001_to_008.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/notEqual/notEqual_001_to_008.html.ini index 9fa03038c1f..1e7bbf9b4ca 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/notEqual/notEqual_001_to_008.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/notEqual/notEqual_001_to_008.html.ini @@ -1,3 +1,5 @@ [notEqual_001_to_008.html] type: testharness - expected: ERROR + [WebGL GLSL conformance test: notEqual_001_to_008.html] + expected: FAIL + diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/notEqual/notEqual_009_to_012.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/notEqual/notEqual_009_to_012.html.ini index c9aed54908d..ed4d8d18159 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/notEqual/notEqual_009_to_012.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/notEqual/notEqual_009_to_012.html.ini @@ -1,3 +1,5 @@ [notEqual_009_to_012.html] type: testharness - expected: ERROR + [WebGL GLSL conformance test: notEqual_009_to_012.html] + expected: FAIL + diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/operators/operators_001_to_008.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/operators/operators_001_to_008.html.ini index f88bc2e568a..a7bf41d95f1 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/operators/operators_001_to_008.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/operators/operators_001_to_008.html.ini @@ -1,3 +1,5 @@ [operators_001_to_008.html] type: testharness - expected: ERROR + [WebGL GLSL conformance test: operators_001_to_008.html] + expected: FAIL + diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/operators/operators_009_to_016.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/operators/operators_009_to_016.html.ini index e7f129980d9..55d4d1420a4 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/operators/operators_009_to_016.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/operators/operators_009_to_016.html.ini @@ -1,3 +1,5 @@ [operators_009_to_016.html] type: testharness - expected: ERROR + [WebGL GLSL conformance test: operators_009_to_016.html] + expected: FAIL + diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/operators/operators_017_to_024.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/operators/operators_017_to_024.html.ini index 653fc34e982..50e76394ae4 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/operators/operators_017_to_024.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/operators/operators_017_to_024.html.ini @@ -1,3 +1,5 @@ [operators_017_to_024.html] type: testharness - expected: ERROR + [WebGL GLSL conformance test: operators_017_to_024.html] + expected: FAIL + diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/operators/operators_025_to_026.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/operators/operators_025_to_026.html.ini index 5a43150c145..e92cdbf063f 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/operators/operators_025_to_026.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/operators/operators_025_to_026.html.ini @@ -1,3 +1,5 @@ [operators_025_to_026.html] type: testharness - expected: ERROR + [WebGL GLSL conformance test: operators_025_to_026.html] + expected: FAIL + diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/pow/pow_001_to_008.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/pow/pow_001_to_008.html.ini index 62e1e463526..c9bd6922deb 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/pow/pow_001_to_008.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/pow/pow_001_to_008.html.ini @@ -1,3 +1,5 @@ [pow_001_to_008.html] type: testharness - expected: ERROR + [WebGL GLSL conformance test: pow_001_to_008.html] + expected: FAIL + diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/pow/pow_009_to_016.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/pow/pow_009_to_016.html.ini index 9862274d40e..3587a2c1dcc 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/pow/pow_009_to_016.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/pow/pow_009_to_016.html.ini @@ -1,3 +1,5 @@ [pow_009_to_016.html] type: testharness - expected: ERROR + [WebGL GLSL conformance test: pow_009_to_016.html] + expected: FAIL + diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/pow/pow_017_to_024.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/pow/pow_017_to_024.html.ini index 89db75cf351..6ea71a428ae 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/pow/pow_017_to_024.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/pow/pow_017_to_024.html.ini @@ -1,3 +1,5 @@ [pow_017_to_024.html] type: testharness - expected: ERROR + [WebGL GLSL conformance test: pow_017_to_024.html] + expected: FAIL + diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/radians/radians_001_to_006.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/radians/radians_001_to_006.html.ini index 61ac4d180cd..6b747a87714 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/radians/radians_001_to_006.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/radians/radians_001_to_006.html.ini @@ -1,3 +1,5 @@ [radians_001_to_006.html] type: testharness - expected: ERROR + [WebGL GLSL conformance test: radians_001_to_006.html] + expected: FAIL + diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/reflect/reflect_001_to_006.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/reflect/reflect_001_to_006.html.ini index f3d2fa71b2c..733408d14bd 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/reflect/reflect_001_to_006.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/reflect/reflect_001_to_006.html.ini @@ -1,3 +1,5 @@ [reflect_001_to_006.html] type: testharness - expected: ERROR + [WebGL GLSL conformance test: reflect_001_to_006.html] + expected: FAIL + diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/refract/refract_001_to_006.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/refract/refract_001_to_006.html.ini index 7f8e096dcde..8e854363f60 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/refract/refract_001_to_006.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/refract/refract_001_to_006.html.ini @@ -1,3 +1,5 @@ [refract_001_to_006.html] type: testharness - expected: ERROR + [WebGL GLSL conformance test: refract_001_to_006.html] + expected: FAIL + diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/sign/sign_001_to_006.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/sign/sign_001_to_006.html.ini index 830e5822014..5a4081fe508 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/sign/sign_001_to_006.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/sign/sign_001_to_006.html.ini @@ -1,3 +1,5 @@ [sign_001_to_006.html] type: testharness - expected: ERROR + [WebGL GLSL conformance test: sign_001_to_006.html] + expected: FAIL + diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/sin/sin_001_to_006.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/sin/sin_001_to_006.html.ini index f22f14d959f..1ac344036b9 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/sin/sin_001_to_006.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/sin/sin_001_to_006.html.ini @@ -1,3 +1,5 @@ [sin_001_to_006.html] type: testharness - expected: ERROR + [WebGL GLSL conformance test: sin_001_to_006.html] + expected: FAIL + diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/smoothstep/smoothstep_001_to_006.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/smoothstep/smoothstep_001_to_006.html.ini index 1a7548cbdcc..3d62449ab8c 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/smoothstep/smoothstep_001_to_006.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/smoothstep/smoothstep_001_to_006.html.ini @@ -1,3 +1,5 @@ [smoothstep_001_to_006.html] type: testharness - expected: ERROR + [WebGL GLSL conformance test: smoothstep_001_to_006.html] + expected: FAIL + diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/sqrt/sqrt_001_to_006.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/sqrt/sqrt_001_to_006.html.ini index 8fcaaa12aef..d6fbd48e995 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/sqrt/sqrt_001_to_006.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/sqrt/sqrt_001_to_006.html.ini @@ -1,3 +1,5 @@ [sqrt_001_to_006.html] type: testharness - expected: ERROR + [WebGL GLSL conformance test: sqrt_001_to_006.html] + expected: FAIL + diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/step/step_001_to_006.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/step/step_001_to_006.html.ini index 85a01d13c88..8c6954b29f9 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/step/step_001_to_006.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/step/step_001_to_006.html.ini @@ -1,3 +1,5 @@ [step_001_to_006.html] type: testharness - expected: ERROR + [WebGL GLSL conformance test: step_001_to_006.html] + expected: FAIL + diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/struct/struct_001_to_008.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/struct/struct_001_to_008.html.ini index 12bb0cbef81..3ab399b47d5 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/struct/struct_001_to_008.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/struct/struct_001_to_008.html.ini @@ -1,3 +1,5 @@ [struct_001_to_008.html] type: testharness - expected: ERROR + [WebGL GLSL conformance test: struct_001_to_008.html] + expected: FAIL + diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/struct/struct_009_to_016.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/struct/struct_009_to_016.html.ini index c8be56fbc6a..d39da1e71d5 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/struct/struct_009_to_016.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/struct/struct_009_to_016.html.ini @@ -1,3 +1,5 @@ [struct_009_to_016.html] type: testharness - expected: ERROR + [WebGL GLSL conformance test: struct_009_to_016.html] + expected: FAIL + diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/struct/struct_017_to_024.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/struct/struct_017_to_024.html.ini index a707798908a..61d8e4ea90a 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/struct/struct_017_to_024.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/struct/struct_017_to_024.html.ini @@ -1,3 +1,5 @@ [struct_017_to_024.html] type: testharness - expected: ERROR + [WebGL GLSL conformance test: struct_017_to_024.html] + expected: FAIL + diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/struct/struct_025_to_032.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/struct/struct_025_to_032.html.ini index e34ed76d9de..9a243156e1d 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/struct/struct_025_to_032.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/struct/struct_025_to_032.html.ini @@ -1,3 +1,5 @@ [struct_025_to_032.html] type: testharness - expected: ERROR + [WebGL GLSL conformance test: struct_025_to_032.html] + expected: FAIL + diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/struct/struct_033_to_040.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/struct/struct_033_to_040.html.ini index 9a5ff081633..a94238d5616 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/struct/struct_033_to_040.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/struct/struct_033_to_040.html.ini @@ -1,3 +1,5 @@ [struct_033_to_040.html] type: testharness - expected: ERROR + [WebGL GLSL conformance test: struct_033_to_040.html] + expected: FAIL + diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/struct/struct_041_to_048.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/struct/struct_041_to_048.html.ini index 6967ab057c5..c4612b7879b 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/struct/struct_041_to_048.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/struct/struct_041_to_048.html.ini @@ -1,3 +1,5 @@ [struct_041_to_048.html] type: testharness - expected: ERROR + [WebGL GLSL conformance test: struct_041_to_048.html] + expected: FAIL + diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/struct/struct_049_to_056.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/struct/struct_049_to_056.html.ini index d3802c89162..7be1b66d1ec 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/struct/struct_049_to_056.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/struct/struct_049_to_056.html.ini @@ -1,3 +1,5 @@ [struct_049_to_056.html] type: testharness - expected: ERROR + [WebGL GLSL conformance test: struct_049_to_056.html] + expected: FAIL + diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/swizzlers/swizzlers_001_to_008.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/swizzlers/swizzlers_001_to_008.html.ini index d9fe5e7fa85..ae075bf497c 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/swizzlers/swizzlers_001_to_008.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/swizzlers/swizzlers_001_to_008.html.ini @@ -1,3 +1,5 @@ [swizzlers_001_to_008.html] type: testharness - expected: ERROR + [WebGL GLSL conformance test: swizzlers_001_to_008.html] + expected: FAIL + diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/swizzlers/swizzlers_009_to_016.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/swizzlers/swizzlers_009_to_016.html.ini index db0fded39d3..b80fe0a03bf 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/swizzlers/swizzlers_009_to_016.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/swizzlers/swizzlers_009_to_016.html.ini @@ -1,3 +1,5 @@ [swizzlers_009_to_016.html] type: testharness - expected: ERROR + [WebGL GLSL conformance test: swizzlers_009_to_016.html] + expected: FAIL + diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/swizzlers/swizzlers_017_to_024.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/swizzlers/swizzlers_017_to_024.html.ini index 5181e9b6d07..0e65da45c2a 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/swizzlers/swizzlers_017_to_024.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/swizzlers/swizzlers_017_to_024.html.ini @@ -1,3 +1,5 @@ [swizzlers_017_to_024.html] type: testharness - expected: ERROR + [WebGL GLSL conformance test: swizzlers_017_to_024.html] + expected: FAIL + diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/swizzlers/swizzlers_025_to_032.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/swizzlers/swizzlers_025_to_032.html.ini index 9313338bfaa..07b41cced8d 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/swizzlers/swizzlers_025_to_032.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/swizzlers/swizzlers_025_to_032.html.ini @@ -1,3 +1,5 @@ [swizzlers_025_to_032.html] type: testharness - expected: ERROR + [WebGL GLSL conformance test: swizzlers_025_to_032.html] + expected: FAIL + diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/swizzlers/swizzlers_033_to_040.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/swizzlers/swizzlers_033_to_040.html.ini index e62a2334abd..2dc0c2dfb0a 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/swizzlers/swizzlers_033_to_040.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/swizzlers/swizzlers_033_to_040.html.ini @@ -1,3 +1,5 @@ [swizzlers_033_to_040.html] type: testharness - expected: ERROR + [WebGL GLSL conformance test: swizzlers_033_to_040.html] + expected: FAIL + diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/swizzlers/swizzlers_041_to_048.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/swizzlers/swizzlers_041_to_048.html.ini index 579a295c1a4..76d754b7a3e 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/swizzlers/swizzlers_041_to_048.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/swizzlers/swizzlers_041_to_048.html.ini @@ -1,3 +1,5 @@ [swizzlers_041_to_048.html] type: testharness - expected: ERROR + [WebGL GLSL conformance test: swizzlers_041_to_048.html] + expected: FAIL + diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/swizzlers/swizzlers_049_to_056.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/swizzlers/swizzlers_049_to_056.html.ini index 5b2125e9c72..d9fd6f726bf 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/swizzlers/swizzlers_049_to_056.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/swizzlers/swizzlers_049_to_056.html.ini @@ -1,3 +1,5 @@ [swizzlers_049_to_056.html] type: testharness - expected: ERROR + [WebGL GLSL conformance test: swizzlers_049_to_056.html] + expected: FAIL + diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/swizzlers/swizzlers_057_to_064.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/swizzlers/swizzlers_057_to_064.html.ini index ee85cf833f5..c981dafbe11 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/swizzlers/swizzlers_057_to_064.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/swizzlers/swizzlers_057_to_064.html.ini @@ -1,3 +1,5 @@ [swizzlers_057_to_064.html] type: testharness - expected: ERROR + [WebGL GLSL conformance test: swizzlers_057_to_064.html] + expected: FAIL + diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/swizzlers/swizzlers_065_to_072.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/swizzlers/swizzlers_065_to_072.html.ini index 41bfe8f01bc..fc8b775c9f1 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/swizzlers/swizzlers_065_to_072.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/swizzlers/swizzlers_065_to_072.html.ini @@ -1,3 +1,5 @@ [swizzlers_065_to_072.html] type: testharness - expected: ERROR + [WebGL GLSL conformance test: swizzlers_065_to_072.html] + expected: FAIL + diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/swizzlers/swizzlers_073_to_080.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/swizzlers/swizzlers_073_to_080.html.ini index 1f7eb3e6884..6a13e876e08 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/swizzlers/swizzlers_073_to_080.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/swizzlers/swizzlers_073_to_080.html.ini @@ -1,3 +1,5 @@ [swizzlers_073_to_080.html] type: testharness - expected: ERROR + [WebGL GLSL conformance test: swizzlers_073_to_080.html] + expected: FAIL + diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/swizzlers/swizzlers_081_to_088.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/swizzlers/swizzlers_081_to_088.html.ini index 960db832b18..08a94f1d235 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/swizzlers/swizzlers_081_to_088.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/swizzlers/swizzlers_081_to_088.html.ini @@ -1,3 +1,5 @@ [swizzlers_081_to_088.html] type: testharness - expected: ERROR + [WebGL GLSL conformance test: swizzlers_081_to_088.html] + expected: FAIL + diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/swizzlers/swizzlers_089_to_096.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/swizzlers/swizzlers_089_to_096.html.ini index ce394ab21d2..ded833c7293 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/swizzlers/swizzlers_089_to_096.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/swizzlers/swizzlers_089_to_096.html.ini @@ -1,3 +1,5 @@ [swizzlers_089_to_096.html] type: testharness - expected: ERROR + [WebGL GLSL conformance test: swizzlers_089_to_096.html] + expected: FAIL + diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/swizzlers/swizzlers_097_to_104.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/swizzlers/swizzlers_097_to_104.html.ini index 6300f052a28..1586a5cbfb6 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/swizzlers/swizzlers_097_to_104.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/swizzlers/swizzlers_097_to_104.html.ini @@ -1,3 +1,5 @@ [swizzlers_097_to_104.html] type: testharness - expected: ERROR + [WebGL GLSL conformance test: swizzlers_097_to_104.html] + expected: FAIL + diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/swizzlers/swizzlers_105_to_112.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/swizzlers/swizzlers_105_to_112.html.ini index 506d3df88c1..a2a2f40a675 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/swizzlers/swizzlers_105_to_112.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/swizzlers/swizzlers_105_to_112.html.ini @@ -1,3 +1,5 @@ [swizzlers_105_to_112.html] type: testharness - expected: ERROR + [WebGL GLSL conformance test: swizzlers_105_to_112.html] + expected: FAIL + diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/swizzlers/swizzlers_113_to_120.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/swizzlers/swizzlers_113_to_120.html.ini index ed6fe78c316..7422017f264 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/swizzlers/swizzlers_113_to_120.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/swizzlers/swizzlers_113_to_120.html.ini @@ -1,3 +1,5 @@ [swizzlers_113_to_120.html] type: testharness - expected: ERROR + [WebGL GLSL conformance test: swizzlers_113_to_120.html] + expected: FAIL + diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/tan/tan_001_to_006.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/tan/tan_001_to_006.html.ini index a9ce4c1d9e6..a0c902018d7 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/tan/tan_001_to_006.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/tan/tan_001_to_006.html.ini @@ -1,3 +1,5 @@ [tan_001_to_006.html] type: testharness - expected: ERROR + [WebGL GLSL conformance test: tan_001_to_006.html] + expected: FAIL + diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/vec/vec_001_to_008.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/vec/vec_001_to_008.html.ini index 54636661f43..f311483f8e2 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/vec/vec_001_to_008.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/vec/vec_001_to_008.html.ini @@ -1,3 +1,5 @@ [vec_001_to_008.html] type: testharness - expected: ERROR + [WebGL GLSL conformance test: vec_001_to_008.html] + expected: FAIL + diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/vec/vec_009_to_016.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/vec/vec_009_to_016.html.ini index a557c35f120..a2597350327 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/vec/vec_009_to_016.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/vec/vec_009_to_016.html.ini @@ -1,3 +1,5 @@ [vec_009_to_016.html] type: testharness - expected: ERROR + [WebGL GLSL conformance test: vec_009_to_016.html] + expected: FAIL + diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/vec/vec_017_to_018.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/vec/vec_017_to_018.html.ini index 340309b3c83..82b59b6365f 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/vec/vec_017_to_018.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/vec/vec_017_to_018.html.ini @@ -1,3 +1,5 @@ [vec_017_to_018.html] type: testharness - expected: ERROR + [WebGL GLSL conformance test: vec_017_to_018.html] + expected: FAIL + diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/vec3/vec3_001_to_008.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/vec3/vec3_001_to_008.html.ini index a92997dc739..6c4611116ea 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/vec3/vec3_001_to_008.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/ogles/GL/vec3/vec3_001_to_008.html.ini @@ -1,3 +1,5 @@ [vec3_001_to_008.html] type: testharness - expected: ERROR + [WebGL GLSL conformance test: vec3_001_to_008.html] + expected: FAIL + diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/rendering/framebuffer-switch.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/rendering/framebuffer-switch.html.ini index fac175f8d3b..096d0cf2f7b 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/rendering/framebuffer-switch.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/rendering/framebuffer-switch.html.ini @@ -1,3 +1,5 @@ [framebuffer-switch.html] type: testharness - expected: ERROR + [WebGL framebuffer switching conformance test.] + expected: FAIL + diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/rendering/framebuffer-texture-switch.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/rendering/framebuffer-texture-switch.html.ini index add397e569e..bdc94b78aae 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/rendering/framebuffer-texture-switch.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/rendering/framebuffer-texture-switch.html.ini @@ -1,3 +1,5 @@ [framebuffer-texture-switch.html] type: testharness - expected: ERROR + [WebGL framebuffer texture attachment switching conformance test.] + expected: FAIL + diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/rendering/point-with-gl-pointcoord-in-fragment-shader.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/rendering/point-with-gl-pointcoord-in-fragment-shader.html.ini index cacda62cba5..0c1f91ec0a2 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/rendering/point-with-gl-pointcoord-in-fragment-shader.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/rendering/point-with-gl-pointcoord-in-fragment-shader.html.ini @@ -1,6 +1,8 @@ [point-with-gl-pointcoord-in-fragment-shader.html] type: testharness - expected: ERROR [WebGL test #0: successfullyParsed should be true (of type boolean). Was undefined (of type undefined).] expected: FAIL + [WebGL Point with gl_PointCoord in Fragment Shader Test] + expected: FAIL + diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/state/gl-object-get-calls.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/state/gl-object-get-calls.html.ini index 169874503dd..1fbcfd20375 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/state/gl-object-get-calls.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/state/gl-object-get-calls.html.ini @@ -1,6 +1,8 @@ [gl-object-get-calls.html] type: testharness - expected: ERROR [WebGL test #0: successfullyParsed should be true (of type boolean). Was undefined (of type undefined).] expected: FAIL + [Untitled] + expected: FAIL + diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/textures/gl-pixelstorei.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/textures/gl-pixelstorei.html.ini index 585ea048d69..c74db002eec 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/textures/gl-pixelstorei.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/textures/gl-pixelstorei.html.ini @@ -1,6 +1,8 @@ [gl-pixelstorei.html] type: testharness - expected: ERROR [WebGL test #0: successfullyParsed should be true (of type boolean). Was undefined (of type undefined).] expected: FAIL + [WebGL pixelStorei Test] + expected: FAIL + diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/uniforms/gl-uniformmatrix4fv.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/uniforms/gl-uniformmatrix4fv.html.ini index ca20e06a6ee..8043c629976 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/uniforms/gl-uniformmatrix4fv.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/uniforms/gl-uniformmatrix4fv.html.ini @@ -1,6 +1,8 @@ [gl-uniformmatrix4fv.html] type: testharness - expected: ERROR [WebGL test #0: successfullyParsed should be true (of type boolean). Was undefined (of type undefined).] expected: FAIL + [WebGL uniformMatrix Conformance Tests] + expected: FAIL + diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/uniforms/uniform-default-values.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/uniforms/uniform-default-values.html.ini index f8fdcc1faf8..37bd7d3324e 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/uniforms/uniform-default-values.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/uniforms/uniform-default-values.html.ini @@ -1,3 +1,5 @@ [uniform-default-values.html] type: testharness - expected: ERROR + [WebGL uniform default values] + expected: FAIL + diff --git a/tests/wpt/metadata/webstorage/event_no_duplicates.html.ini b/tests/wpt/metadata/webstorage/event_no_duplicates.html.ini new file mode 100644 index 00000000000..b1dc6353edf --- /dev/null +++ b/tests/wpt/metadata/webstorage/event_no_duplicates.html.ini @@ -0,0 +1,21 @@ +[event_no_duplicates.html] + type: testharness + expected: TIMEOUT + [Setting to same value does not trigger event for sessionStorage] + expected: TIMEOUT + + [Deleting non-existent key does not trigger event for sessionStorage] + expected: NOTRUN + + [Clearing empty storage does not trigger event for sessionStorage] + expected: NOTRUN + + [Setting to same value does not trigger event for localStorage] + expected: NOTRUN + + [Deleting non-existent key does not trigger event for localStorage] + expected: NOTRUN + + [Clearing empty storage does not trigger event for localStorage] + expected: NOTRUN + diff --git a/tests/wpt/metadata/workers/SharedWorker_blobUrl.html.ini b/tests/wpt/metadata/workers/SharedWorker_blobUrl.html.ini new file mode 100644 index 00000000000..39eb44d2eba --- /dev/null +++ b/tests/wpt/metadata/workers/SharedWorker_blobUrl.html.ini @@ -0,0 +1,5 @@ +[SharedWorker_blobUrl.html] + type: testharness + [Blob URL shared by document on SharedWorker] + expected: FAIL + diff --git a/tests/wpt/metadata/workers/WorkerGlobalScope_importScripts_NosniffErr.htm.ini b/tests/wpt/metadata/workers/WorkerGlobalScope_importScripts_NosniffErr.htm.ini new file mode 100644 index 00000000000..e5bf130ac53 --- /dev/null +++ b/tests/wpt/metadata/workers/WorkerGlobalScope_importScripts_NosniffErr.htm.ini @@ -0,0 +1,5 @@ +[WorkerGlobalScope_importScripts_NosniffErr.htm] + type: testharness + [importScripts throws on 'nosniff' violation] + expected: FAIL + diff --git a/tests/wpt/metadata/workers/Worker_NosniffErr.htm.ini b/tests/wpt/metadata/workers/Worker_NosniffErr.htm.ini new file mode 100644 index 00000000000..5ee7bfda10e --- /dev/null +++ b/tests/wpt/metadata/workers/Worker_NosniffErr.htm.ini @@ -0,0 +1,6 @@ +[Worker_NosniffErr.htm] + type: testharness + expected: TIMEOUT + [ Worker with nosniff X-Content-Type-Options header ] + expected: TIMEOUT + diff --git a/tests/wpt/metadata/workers/Worker_cross_origin_security_err.htm.ini b/tests/wpt/metadata/workers/Worker_cross_origin_security_err.htm.ini deleted file mode 100644 index 0e8e7392151..00000000000 --- a/tests/wpt/metadata/workers/Worker_cross_origin_security_err.htm.ini +++ /dev/null @@ -1,5 +0,0 @@ -[Worker_cross_origin_security_err.htm] - type: testharness - [ Worker cross-origin URL ] - expected: FAIL - diff --git a/tests/wpt/metadata/workers/data-url-shared.html.ini b/tests/wpt/metadata/workers/data-url-shared.html.ini index 8ca363c84bd..35294e6609f 100644 --- a/tests/wpt/metadata/workers/data-url-shared.html.ini +++ b/tests/wpt/metadata/workers/data-url-shared.html.ini @@ -3,3 +3,27 @@ [data URL shared worker] expected: FAIL + [application/javascript MIME allowed] + expected: FAIL + + [text/plain MIME allowed] + expected: FAIL + + [empty MIME allowed] + expected: FAIL + + [communication goes both ways] + expected: FAIL + + [indexedDB inaccessible] + expected: FAIL + + [Web SQL Database inaccessible] + expected: FAIL + + [cross-origin worker] + expected: FAIL + + [worker has opaque origin] + expected: FAIL + diff --git a/tests/wpt/metadata/workers/data-url.html.ini b/tests/wpt/metadata/workers/data-url.html.ini new file mode 100644 index 00000000000..315740342a1 --- /dev/null +++ b/tests/wpt/metadata/workers/data-url.html.ini @@ -0,0 +1,6 @@ +[data-url.html] + type: testharness + expected: ERROR + [worker has opaque origin] + expected: FAIL + diff --git a/tests/wpt/metadata/workers/opaque-origin.html.ini b/tests/wpt/metadata/workers/opaque-origin.html.ini index 3eb04ccfff3..ba7b54700db 100644 --- a/tests/wpt/metadata/workers/opaque-origin.html.ini +++ b/tests/wpt/metadata/workers/opaque-origin.html.ini @@ -1,3 +1,5 @@ [opaque-origin.html] type: testharness - expected: ERROR + [Untitled] + expected: FAIL + diff --git a/tests/wpt/metadata/workers/semantics/multiple-workers/004.html.ini b/tests/wpt/metadata/workers/semantics/multiple-workers/004.html.ini index 3e84eb29723..e4407b783db 100644 --- a/tests/wpt/metadata/workers/semantics/multiple-workers/004.html.ini +++ b/tests/wpt/metadata/workers/semantics/multiple-workers/004.html.ini @@ -1,3 +1,5 @@ [004.html] type: testharness - expected: ERROR + [shared worker with multiple documents] + expected: FAIL + diff --git a/tests/wpt/mozilla/meta/mozilla/cross-origin-objects/cross-origin-objects.html.ini b/tests/wpt/mozilla/meta/mozilla/cross-origin-objects/cross-origin-objects.html.ini index 6c0df60a409..f6b85f3148c 100644 --- a/tests/wpt/mozilla/meta/mozilla/cross-origin-objects/cross-origin-objects.html.ini +++ b/tests/wpt/mozilla/meta/mozilla/cross-origin-objects/cross-origin-objects.html.ini @@ -1,5 +1,5 @@ [cross-origin-objects.html] type: testharness - [Parentage of cross-origin windows] expected: FAIL + diff --git a/tests/wpt/web-platform-tests/2dcontext/tools/OWNERS b/tests/wpt/web-platform-tests/2dcontext/tools/OWNERS new file mode 100644 index 00000000000..26ea3154662 --- /dev/null +++ b/tests/wpt/web-platform-tests/2dcontext/tools/OWNERS @@ -0,0 +1 @@ +@gsnedders diff --git a/tests/wpt/web-platform-tests/2dcontext/tools/tests.yaml b/tests/wpt/web-platform-tests/2dcontext/tools/tests.yaml index ff9fcdb3499..30ce655161d 100644 --- a/tests/wpt/web-platform-tests/2dcontext/tools/tests.yaml +++ b/tests/wpt/web-platform-tests/2dcontext/tools/tests.yaml @@ -448,24 +448,6 @@ -- name: toBlob.png - desc: toBlob with image/png returns a PNG Blob - testing: - - toBlob.png - code: | - canvas.toBlob(function(data){ - @assert data.type === "image/png"; - }, 'image/png'); - -- name: toBlob.jpeg - desc: toBlob with image/jpeg returns a JPEG Blob - testing: - - toBlob.jpeg - code: | - canvas.toBlob(function(data){ - @assert data.type === "image/jpeg"; - }, 'image/jpeg'); - - name: toDataURL.default desc: toDataURL with no arguments returns a PNG testing: diff --git a/tests/wpt/web-platform-tests/FileAPI/blob/Blob-close.html b/tests/wpt/web-platform-tests/FileAPI/blob/Blob-close.html deleted file mode 100644 index 45df1e21166..00000000000 --- a/tests/wpt/web-platform-tests/FileAPI/blob/Blob-close.html +++ /dev/null @@ -1,39 +0,0 @@ - - -Blob.close - - - - -
- diff --git a/tests/wpt/web-platform-tests/FileAPI/historical.html b/tests/wpt/web-platform-tests/FileAPI/historical.html index faefa7ebf2b..57d00561a12 100644 --- a/tests/wpt/web-platform-tests/FileAPI/historical.html +++ b/tests/wpt/web-platform-tests/FileAPI/historical.html @@ -40,6 +40,14 @@ test(function() { assert_false('createFor' in URL); }, 'createFor method should not be supported'); + + test(function() { + var b = new Blob(); + assert_false('close' in b, 'close in b'); + assert_false('close' in Blob.prototype, 'close in Blob.prototype'); + assert_false('isClosed' in b, 'isClosed in b'); + assert_false('isClosed' in Blob.prototype, 'isClosed in Blob.prototype'); + }, 'Blob.close() should not be supported'); diff --git a/tests/wpt/web-platform-tests/FileAPI/idlharness-manual.html b/tests/wpt/web-platform-tests/FileAPI/idlharness-manual.html index 116d455ce2f..c3374629d7f 100644 --- a/tests/wpt/web-platform-tests/FileAPI/idlharness-manual.html +++ b/tests/wpt/web-platform-tests/FileAPI/idlharness-manual.html @@ -55,15 +55,12 @@ interface Blob { readonly attribute unsigned long long size; readonly attribute DOMString type; - readonly attribute boolean isClosed; //slice Blob into byte-ranged chunks Blob slice([Clamp] optional long long start, [Clamp] optional long long end, optional DOMString contentType); - void close(); - }; dictionary BlobPropertyBag { @@ -111,7 +108,7 @@ interface FileReader: EventTarget { // File or Blob data readonly attribute (DOMString or ArrayBuffer)? result; - readonly attribute DOMError? error; + readonly attribute DOMException? error; // event handler attributes attribute EventHandler onloadstart; diff --git a/tests/wpt/web-platform-tests/FileAPI/idlharness.idl b/tests/wpt/web-platform-tests/FileAPI/idlharness.idl index 61704b28cef..64aa0d651d6 100644 --- a/tests/wpt/web-platform-tests/FileAPI/idlharness.idl +++ b/tests/wpt/web-platform-tests/FileAPI/idlharness.idl @@ -6,15 +6,12 @@ interface Blob { readonly attribute unsigned long long size; readonly attribute DOMString type; - readonly attribute boolean isClosed; //slice Blob into byte-ranged chunks Blob slice([Clamp] optional long long start, [Clamp] optional long long end, optional DOMString contentType); - void close(); - }; dictionary BlobPropertyBag { @@ -64,7 +61,7 @@ interface FileReader: EventTarget { // File or Blob data readonly attribute (DOMString or ArrayBuffer)? result; - readonly attribute DOMError? error; + readonly attribute DOMException? error; // event handler content attributes attribute EventHandler onloadstart; diff --git a/tests/wpt/web-platform-tests/FileAPI/reading-data-section/filereader_abort.html b/tests/wpt/web-platform-tests/FileAPI/reading-data-section/filereader_abort.html index a96389c21d6..940a775d35b 100644 --- a/tests/wpt/web-platform-tests/FileAPI/reading-data-section/filereader_abort.html +++ b/tests/wpt/web-platform-tests/FileAPI/reading-data-section/filereader_abort.html @@ -19,28 +19,35 @@ assert_equals(readerNoRead.result, null); }, "Aborting before read"); - async_test(function() { - var blob = new Blob(["TEST THE ABORT METHOD"]); - var readerAbort = new FileReader(); + promise_test(t => { + var blob = new Blob(["TEST THE ABORT METHOD"]); + var readerAbort = new FileReader(); - readerAbort.onabort = this.step_func(function(evt) { - assert_equals(readerAbort.readyState, readerAbort.DONE); - }); + var eventWatcher = new EventWatcher(t, readerAbort, + ['abort', 'loadstart', 'loadend', 'error', 'load']); - readerAbort.onloadstart = this.step_func(function(evt) { - assert_equals(readerAbort.readyState, readerAbort.LOADING); - readerAbort.abort(); - }); + // EventWatcher doesn't let us inspect the state after the abort event, + // so add an extra event handler for that. + readerAbort.addEventListener('abort', t.step_func(e => { + assert_equals(readerAbort.readyState, readerAbort.DONE); + })); - readerAbort.onloadend = this.step_func(function(evt) { - // https://www.w3.org/Bugs/Public/show_bug.cgi?id=24401 - assert_equals(readerAbort.result, null); - assert_equals(readerAbort.readyState, readerAbort.DONE); - this.done(); - }); - - readerAbort.readAsText(blob); - }, "Aborting after read"); + readerAbort.readAsText(blob); + return eventWatcher.wait_for('loadstart') + .then(() => { + assert_equals(readerAbort.readyState, readerAbort.LOADING); + // 'abort' and 'loadend' events are dispatched synchronously, so + // call wait_for before calling abort. + var nextEvent = eventWatcher.wait_for(['abort', 'loadend']); + readerAbort.abort(); + return nextEvent; + }) + .then(() => { + // https://www.w3.org/Bugs/Public/show_bug.cgi?id=24401 + assert_equals(readerAbort.result, null); + assert_equals(readerAbort.readyState, readerAbort.DONE); + }); + }, "Aborting after read"); diff --git a/tests/wpt/web-platform-tests/FileAPI/support/document-domain-setter.sub.html b/tests/wpt/web-platform-tests/FileAPI/support/document-domain-setter.sub.html new file mode 100644 index 00000000000..61aebdf3266 --- /dev/null +++ b/tests/wpt/web-platform-tests/FileAPI/support/document-domain-setter.sub.html @@ -0,0 +1,7 @@ + +Relevant/current/blob source page used as a test helper + + diff --git a/tests/wpt/web-platform-tests/FileAPI/support/incumbent.sub.html b/tests/wpt/web-platform-tests/FileAPI/support/incumbent.sub.html new file mode 100644 index 00000000000..63a81cd3281 --- /dev/null +++ b/tests/wpt/web-platform-tests/FileAPI/support/incumbent.sub.html @@ -0,0 +1,22 @@ + +Incumbent page used as a test helper + + + + + + diff --git a/tests/wpt/web-platform-tests/FileAPI/url/blob-url-in-sandboxed-iframe.html b/tests/wpt/web-platform-tests/FileAPI/url/blob-url-in-sandboxed-iframe.html new file mode 100644 index 00000000000..7d032496c76 --- /dev/null +++ b/tests/wpt/web-platform-tests/FileAPI/url/blob-url-in-sandboxed-iframe.html @@ -0,0 +1,66 @@ + + +FileAPI Test: Creating Blob URL with Blob + + + + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/FileAPI/url/multi-global-origin-serialization.sub.html b/tests/wpt/web-platform-tests/FileAPI/url/multi-global-origin-serialization.sub.html new file mode 100644 index 00000000000..bc30d9c2580 --- /dev/null +++ b/tests/wpt/web-platform-tests/FileAPI/url/multi-global-origin-serialization.sub.html @@ -0,0 +1,25 @@ + + +Blob URL serialization (specifically the origin) in multi-global situations + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/IndexedDB/abort-in-initial-upgradeneeded.html b/tests/wpt/web-platform-tests/IndexedDB/abort-in-initial-upgradeneeded.html index 6330ecb02e9..20040158e9c 100644 --- a/tests/wpt/web-platform-tests/IndexedDB/abort-in-initial-upgradeneeded.html +++ b/tests/wpt/web-platform-tests/IndexedDB/abort-in-initial-upgradeneeded.html @@ -12,7 +12,7 @@ var db, open_rq = createdb(async_test(), undefined, 2); open_rq.onupgradeneeded = function(e) { db = e.target.result; assert_equals(db.version, 2); - transaction = e.target.transaction; + var transaction = e.target.transaction; transaction.oncomplete = fail(this, "unexpected transaction.complete"); transaction.onabort = function(e) { assert_equals(e.target.db.version, 0); diff --git a/tests/wpt/web-platform-tests/IndexedDB/clone-before-keypath-eval.html b/tests/wpt/web-platform-tests/IndexedDB/clone-before-keypath-eval.html new file mode 100644 index 00000000000..bf67c5d6d73 --- /dev/null +++ b/tests/wpt/web-platform-tests/IndexedDB/clone-before-keypath-eval.html @@ -0,0 +1,135 @@ + + +IndexedDB: + + + + + + diff --git a/tests/wpt/web-platform-tests/IndexedDB/close-in-upgradeneeded.html b/tests/wpt/web-platform-tests/IndexedDB/close-in-upgradeneeded.html index eda823a21f1..402906fc1c1 100644 --- a/tests/wpt/web-platform-tests/IndexedDB/close-in-upgradeneeded.html +++ b/tests/wpt/web-platform-tests/IndexedDB/close-in-upgradeneeded.html @@ -7,6 +7,7 @@ + + + diff --git a/tests/wpt/web-platform-tests/IndexedDB/idb-binary-key-roundtrip.htm b/tests/wpt/web-platform-tests/IndexedDB/idb-binary-key-roundtrip.htm new file mode 100644 index 00000000000..b1148d697ee --- /dev/null +++ b/tests/wpt/web-platform-tests/IndexedDB/idb-binary-key-roundtrip.htm @@ -0,0 +1,115 @@ + + +IndexedDB: Binary keys written to a database and read back + + + + diff --git a/tests/wpt/web-platform-tests/IndexedDB/idbcursor_continue_objectstore.htm b/tests/wpt/web-platform-tests/IndexedDB/idbcursor_continue_objectstore.htm index 76750c969a4..e86edc464cb 100644 --- a/tests/wpt/web-platform-tests/IndexedDB/idbcursor_continue_objectstore.htm +++ b/tests/wpt/web-platform-tests/IndexedDB/idbcursor_continue_objectstore.htm @@ -25,7 +25,7 @@ var store = db.transaction("test") .objectStore("test"); - cursor_rq = store.openCursor(); + var cursor_rq = store.openCursor(); cursor_rq.onsuccess = t.step_func(function(e) { var cursor = e.target.result; if (!cursor) { diff --git a/tests/wpt/web-platform-tests/IndexedDB/idbfactory-deleteDatabase-opaque-origin.html b/tests/wpt/web-platform-tests/IndexedDB/idbfactory-deleteDatabase-opaque-origin.html new file mode 100644 index 00000000000..058116fac51 --- /dev/null +++ b/tests/wpt/web-platform-tests/IndexedDB/idbfactory-deleteDatabase-opaque-origin.html @@ -0,0 +1,66 @@ + + +IDBFactory.deleteDatabase() and opaque origins + + + diff --git a/tests/wpt/web-platform-tests/IndexedDB/idbfactory-open-opaque-origin.html b/tests/wpt/web-platform-tests/IndexedDB/idbfactory-open-opaque-origin.html new file mode 100644 index 00000000000..f69c47d31ad --- /dev/null +++ b/tests/wpt/web-platform-tests/IndexedDB/idbfactory-open-opaque-origin.html @@ -0,0 +1,68 @@ + + +IDBFactory.open() and opaque origins + + + diff --git a/tests/wpt/web-platform-tests/IndexedDB/idbfactory_deleteDatabase4.htm b/tests/wpt/web-platform-tests/IndexedDB/idbfactory_deleteDatabase4.htm index 3a4e9944da5..f3ceeb0605c 100644 --- a/tests/wpt/web-platform-tests/IndexedDB/idbfactory_deleteDatabase4.htm +++ b/tests/wpt/web-platform-tests/IndexedDB/idbfactory_deleteDatabase4.htm @@ -12,6 +12,7 @@ var t = async_test("Delete an existing database"); t.step(function() { + var db; var openrq = indexedDB.open('db', 3); openrq.onupgradeneeded = function(e) { @@ -44,8 +45,8 @@ deleterq.onupgradeneeded = fail(t, "delete.upgradeneeded"); } - async_test("Delete a nonexistant database").step(function(e) { - var deleterq = indexedDB.deleteDatabase('nonexistant'); + async_test("Delete a nonexistent database").step(function(e) { + var deleterq = indexedDB.deleteDatabase('nonexistent'); deleterq.onsuccess = this.step_func(function(e) { this.done(); }); diff --git a/tests/wpt/web-platform-tests/IndexedDB/idbindex_get.htm b/tests/wpt/web-platform-tests/IndexedDB/idbindex_get.htm index 835cbefd2c3..5afd8b5e8f6 100644 --- a/tests/wpt/web-platform-tests/IndexedDB/idbindex_get.htm +++ b/tests/wpt/web-platform-tests/IndexedDB/idbindex_get.htm @@ -7,7 +7,7 @@ + + + diff --git a/tests/wpt/web-platform-tests/IndexedDB/keypath_invalid.htm b/tests/wpt/web-platform-tests/IndexedDB/keypath_invalid.htm index 9c5bd6c2f6c..1a4357bb5d5 100644 --- a/tests/wpt/web-platform-tests/IndexedDB/keypath_invalid.htm +++ b/tests/wpt/web-platform-tests/IndexedDB/keypath_invalid.htm @@ -24,7 +24,7 @@ db.createObjectStore(store_name, { keyPath: keypath }) }, "createObjectStore with keyPath"); - store = db.createObjectStore(store_name); + var store = db.createObjectStore(store_name); assert_throws('SyntaxError', function() { store.createIndex('index', keypath); }, "createIndex with keyPath"); diff --git a/tests/wpt/web-platform-tests/IndexedDB/support.js b/tests/wpt/web-platform-tests/IndexedDB/support.js index f1c599c07b2..63b23e5a73e 100644 --- a/tests/wpt/web-platform-tests/IndexedDB/support.js +++ b/tests/wpt/web-platform-tests/IndexedDB/support.js @@ -82,7 +82,7 @@ function createdb_for_multiple_tests(dbname, version) { }) } - // add a .setTest method to the DB object + // add a .setTest method to the IDBOpenDBRequest object Object.defineProperty(rq_open, 'setTest', { enumerable: false, value: function(t) { @@ -101,7 +101,7 @@ function createdb_for_multiple_tests(dbname, version) { } function assert_key_equals(actual, expected, description) { - assert_equals(indexedDB.cmp(actual, expected), 0, description); + assert_equals(indexedDB.cmp(actual, expected), 0, description); } function indexeddb_test(upgrade_func, open_func, description, options) { diff --git a/tests/wpt/web-platform-tests/README.md b/tests/wpt/web-platform-tests/README.md index 5c1251f104f..ae948e4d070 100644 --- a/tests/wpt/web-platform-tests/README.md +++ b/tests/wpt/web-platform-tests/README.md @@ -1,7 +1,7 @@ -The Web Platform Tests Project [![IRC chat](https://goo.gl/6nCIks)](http://irc.w3.org/?channels=testing) +The web-platform-tests Project [![IRC chat](https://goo.gl/6nCIks)](http://irc.w3.org/?channels=testing) ============================== -The Web Platform Tests Project is a W3C-coordinated attempt to build a +The web-platform-tests Project is a W3C-coordinated attempt to build a cross-browser testsuite for the Web-platform stack. However, for mainly historic reasons, the CSS WG testsuite is in a separate repository, [csswg-test](https://github.com/w3c/csswg-test). Writing tests in a way @@ -114,7 +114,7 @@ Test Runner =========== There is a test runner that is designed to provide a -convenient way to run the web-platform tests in-browser. It will run +convenient way to run the web-platform-tests in-browser. It will run testharness.js tests automatically but requires manual work for reftests and manual tests. diff --git a/tests/wpt/web-platform-tests/XMLHttpRequest/xmlhttprequest-timeout-reused.html b/tests/wpt/web-platform-tests/XMLHttpRequest/xmlhttprequest-timeout-reused.html new file mode 100644 index 00000000000..23acf7f74a1 --- /dev/null +++ b/tests/wpt/web-platform-tests/XMLHttpRequest/xmlhttprequest-timeout-reused.html @@ -0,0 +1,48 @@ + + + + + XHR2 Timeout Property Tests + + + + + + + + + + + +
+ + + diff --git a/tests/wpt/web-platform-tests/assumptions/OWNERS b/tests/wpt/web-platform-tests/assumptions/OWNERS new file mode 100644 index 00000000000..26ea3154662 --- /dev/null +++ b/tests/wpt/web-platform-tests/assumptions/OWNERS @@ -0,0 +1 @@ +@gsnedders diff --git a/tests/wpt/web-platform-tests/assumptions/canvas-background-ref.html b/tests/wpt/web-platform-tests/assumptions/canvas-background-ref.html new file mode 100644 index 00000000000..b117f6b3003 --- /dev/null +++ b/tests/wpt/web-platform-tests/assumptions/canvas-background-ref.html @@ -0,0 +1,8 @@ + +canvas background reference + +

The background should be white diff --git a/tests/wpt/web-platform-tests/assumptions/canvas-background.html b/tests/wpt/web-platform-tests/assumptions/canvas-background.html new file mode 100644 index 00000000000..962edf5e8b4 --- /dev/null +++ b/tests/wpt/web-platform-tests/assumptions/canvas-background.html @@ -0,0 +1,4 @@ + +Check canvas background is white + +

The background should be white diff --git a/tests/wpt/web-platform-tests/assumptions/html-elements.html b/tests/wpt/web-platform-tests/assumptions/html-elements.html new file mode 100644 index 00000000000..6be17b1aba2 --- /dev/null +++ b/tests/wpt/web-platform-tests/assumptions/html-elements.html @@ -0,0 +1,131 @@ + +HTML styles + + + +

+
+
+
+ + +

+
    +
  • +
+
    +
  1. +
+ + + +
+
+
+ diff --git a/tests/wpt/web-platform-tests/assumptions/initial-color-ref.html b/tests/wpt/web-platform-tests/assumptions/initial-color-ref.html new file mode 100644 index 00000000000..46dd110bd3e --- /dev/null +++ b/tests/wpt/web-platform-tests/assumptions/initial-color-ref.html @@ -0,0 +1,12 @@ + +Initial color is black reference + +

The text should be black diff --git a/tests/wpt/web-platform-tests/assumptions/initial-color.html b/tests/wpt/web-platform-tests/assumptions/initial-color.html new file mode 100644 index 00000000000..f1033c7d7e7 --- /dev/null +++ b/tests/wpt/web-platform-tests/assumptions/initial-color.html @@ -0,0 +1,9 @@ + +Initial color is black + + +

The text should be black diff --git a/tests/wpt/web-platform-tests/assumptions/medium-font-size-ref.html b/tests/wpt/web-platform-tests/assumptions/medium-font-size-ref.html new file mode 100644 index 00000000000..c1600ec419a --- /dev/null +++ b/tests/wpt/web-platform-tests/assumptions/medium-font-size-ref.html @@ -0,0 +1,8 @@ + +medium font-size reference + +

This text should be 16px diff --git a/tests/wpt/web-platform-tests/assumptions/medium-font-size.html b/tests/wpt/web-platform-tests/assumptions/medium-font-size.html new file mode 100644 index 00000000000..f4c303d0ba8 --- /dev/null +++ b/tests/wpt/web-platform-tests/assumptions/medium-font-size.html @@ -0,0 +1,9 @@ + +Check medium font-size is 16px + + +

This text should be 16px diff --git a/tests/wpt/web-platform-tests/assumptions/min-font-size-ref.html b/tests/wpt/web-platform-tests/assumptions/min-font-size-ref.html new file mode 100644 index 00000000000..013970bedf3 --- /dev/null +++ b/tests/wpt/web-platform-tests/assumptions/min-font-size-ref.html @@ -0,0 +1,8 @@ + +Tiny text reference + +

Tiny text diff --git a/tests/wpt/web-platform-tests/assumptions/min-font-size.html b/tests/wpt/web-platform-tests/assumptions/min-font-size.html new file mode 100644 index 00000000000..a4b9a1cd36f --- /dev/null +++ b/tests/wpt/web-platform-tests/assumptions/min-font-size.html @@ -0,0 +1,9 @@ + +Check 1px and 2px font-sizes are different + + +

Tiny text diff --git a/tests/wpt/web-platform-tests/check_stability.py b/tests/wpt/web-platform-tests/check_stability.py index a9c7a8fdda8..a411f338b04 100644 --- a/tests/wpt/web-platform-tests/check_stability.py +++ b/tests/wpt/web-platform-tests/check_stability.py @@ -10,11 +10,10 @@ import sys import tarfile import zipfile from abc import ABCMeta, abstractmethod -from cStringIO import StringIO +from cStringIO import StringIO as CStringIO from collections import defaultdict from ConfigParser import RawConfigParser -from io import BytesIO -from tools.manifest import manifest +from io import BytesIO, StringIO import requests @@ -24,14 +23,14 @@ LogHandler = None LogLevelFilter = None StreamHandler = None TbplFormatter = None +manifest = None reader = None wptcommandline = None wptrunner = None wpt_root = None wptrunner_root = None -logger = logging.getLogger(os.path.splitext(__file__)[0]) - +logger = None def do_delayed_imports(): """Import and set up modules only needed if execution gets to this point.""" @@ -39,12 +38,14 @@ def do_delayed_imports(): global LogLevelFilter global StreamHandler global TbplFormatter + global manifest global reader global wptcommandline global wptrunner from mozlog import reader from mozlog.formatters import TbplFormatter from mozlog.handlers import BaseHandler, LogLevelFilter, StreamHandler + from tools.manifest import manifest from wptrunner import wptcommandline, wptrunner setup_log_handler() setup_action_filter() @@ -58,8 +59,6 @@ def setup_logging(): logger.addHandler(handler) logger.setLevel(logging.DEBUG) -setup_logging() - def setup_action_filter(): """Create global LogActionFilter class as part of deferred module load.""" @@ -107,6 +106,50 @@ class TravisFold(object): print("travis_fold:end:%s" % self.name, file=sys.stderr) +class FilteredIO(object): + """Wrap a file object, invoking the provided callback for every call to + `write` and only proceeding with the operation when that callback returns + True.""" + def __init__(self, original, on_write): + self.original = original + self.on_write = on_write + + def __getattr__(self, name): + return getattr(self.original, name) + + def disable(self): + self.write = lambda msg: None + + def write(self, msg): + encoded = msg.encode("utf8", "backslashreplace").decode("utf8") + if self.on_write(self.original, encoded) is True: + self.original.write(encoded) + + +def replace_streams(capacity, warning_msg): + # Value must be boxed to support modification from inner function scope + count = [0] + capacity -= 2 + len(warning_msg) + stderr = sys.stderr + + def on_write(handle, msg): + length = len(msg) + count[0] += length + + if count[0] > capacity: + sys.stdout.disable() + sys.stderr.disable() + handle.write(msg[0:capacity - count[0]]) + handle.flush() + stderr.write("\n%s\n" % warning_msg) + return False + + return True + + sys.stdout = FilteredIO(sys.stdout, on_write) + sys.stderr = FilteredIO(sys.stderr, on_write) + + class Browser(object): __metaclass__ = ABCMeta @@ -275,7 +318,7 @@ def seekable(fileobj): try: fileobj.seek(fileobj.tell()) except Exception: - return StringIO(fileobj.read()) + return CStringIO(fileobj.read()) else: return fileobj @@ -522,7 +565,6 @@ def table(headings, data, log): log("|%s|" % "|".join(" %s" % row[i].ljust(max_widths[i] - 1) for i in cols)) log("") - def write_inconsistent(inconsistent, iterations): """Output inconsistent tests to logger.error.""" logger.error("## Unstable results ##\n") @@ -533,17 +575,23 @@ def write_inconsistent(inconsistent, iterations): def write_results(results, iterations, comment_pr): """Output all test results to logger.info.""" + pr_number = None + if comment_pr: + try: + pr_number = int(comment_pr) + except ValueError: + pass logger.info("## All results ##\n") + if pr_number: + logger.info("

\n") + logger.info("%i %s ran\n\n" % (len(results), + "tests" if len(results) > 1 + else "test")) + for test, test_results in results.iteritems(): baseurl = "http://w3c-test.org/submissions" if "https" in os.path.splitext(test)[0].split(".")[1:]: baseurl = "https://w3c-test.org/submissions" - pr_number = None - if comment_pr: - try: - pr_number = int(comment_pr) - except ValueError: - pass if pr_number: logger.info("
\n") logger.info('%s\n\n' % @@ -559,6 +607,9 @@ def write_results(results, iterations, comment_pr): if pr_number: logger.info("
\n") + if pr_number: + logger.info("
\n") + def get_parser(): """Create and return script-specific argument parser.""" @@ -582,6 +633,10 @@ def get_parser(): # This is a workaround to get what should be the same value default=os.environ.get("TRAVIS_REPO_SLUG").split('/')[0], help="Travis user name") + parser.add_argument("--output-bytes", + action="store", + type=int, + help="Maximum number of bytes to write to standard output/error") parser.add_argument("product", action="store", help="Product to run against (`browser-name` or 'browser-name:channel')") @@ -592,11 +647,19 @@ def main(): """Perform check_stability functionality and return exit code.""" global wpt_root global wptrunner_root + global logger retcode = 0 parser = get_parser() args = parser.parse_args() + if args.output_bytes is not None: + replace_streams(args.output_bytes, + "Log reached capacity (%s bytes); output disabled." % args.output_bytes) + + logger = logging.getLogger(os.path.splitext(__file__)[0]) + setup_logging() + wpt_root = os.path.abspath(os.curdir) wptrunner_root = os.path.normpath(os.path.join(wpt_root, "..", "wptrunner")) diff --git a/tests/wpt/web-platform-tests/ci_stability.sh b/tests/wpt/web-platform-tests/ci_stability.sh index eca9debeb3e..393e50a074d 100644 --- a/tests/wpt/web-platform-tests/ci_stability.sh +++ b/tests/wpt/web-platform-tests/ci_stability.sh @@ -44,7 +44,7 @@ install_chrome() { } test_stability() { - python check_stability.py $PRODUCT + python check_stability.py $PRODUCT --output-bytes $((1024 * 1024 * 3)) } main() { diff --git a/tests/wpt/web-platform-tests/common/OWNERS b/tests/wpt/web-platform-tests/common/OWNERS index d755a17cbad..3a97291b154 100644 --- a/tests/wpt/web-platform-tests/common/OWNERS +++ b/tests/wpt/web-platform-tests/common/OWNERS @@ -1,3 +1,4 @@ @zqzhang @dontcallmedom @deniak +@gsnedders diff --git a/tests/wpt/web-platform-tests/common/get-host-info.sub.js b/tests/wpt/web-platform-tests/common/get-host-info.sub.js index 5e60c49767b..c0ad19bc7a3 100644 --- a/tests/wpt/web-platform-tests/common/get-host-info.sub.js +++ b/tests/wpt/web-platform-tests/common/get-host-info.sub.js @@ -5,6 +5,7 @@ function get_host_info() { var HTTPS_PORT = '{{ports[https][0]}}'; var ORIGINAL_HOST = '{{host}}'; var REMOTE_HOST = (ORIGINAL_HOST === 'localhost') ? '127.0.0.1' : ('www1.' + ORIGINAL_HOST); + var OTHER_HOST = '{{domains[www2]}}'; return { HTTP_PORT: HTTP_PORT, @@ -21,6 +22,8 @@ function get_host_info() { HTTP_REMOTE_ORIGIN_WITH_DIFFERENT_PORT: 'http://' + REMOTE_HOST + ':' + HTTP_PORT2, HTTPS_REMOTE_ORIGIN: 'https://' + REMOTE_HOST + ':' + HTTPS_PORT, HTTPS_REMOTE_ORIGIN_WITH_CREDS: 'https://foo:bar@' + REMOTE_HOST + ':' + HTTPS_PORT, + UNAUTHENTICATED_ORIGIN: 'http://' + OTHER_HOST + ':' + HTTP_PORT, + AUTHENTICATED_ORIGIN: 'https://' + OTHER_HOST + ':' + HTTPS_PORT }; } diff --git a/tests/wpt/web-platform-tests/custom-elements/reactions/DOMTokenList.html b/tests/wpt/web-platform-tests/custom-elements/reactions/DOMTokenList.html index e8c26df498f..14a643c4a87 100644 --- a/tests/wpt/web-platform-tests/custom-elements/reactions/DOMTokenList.html +++ b/tests/wpt/web-platform-tests/custom-elements/reactions/DOMTokenList.html @@ -125,15 +125,6 @@ test(function () { assert_attribute_log_entry(logEntries.last(), {name: 'class', oldValue: 'hello world', newValue: 'hello', namespace: null}); }, 'toggle on DOMTokenList must enqueue an attributeChanged reaction when removing a value from an attribute'); -test(function () { - var element = define_new_custom_element(['lang']); - var instance = document.createElement(element.name); - instance.setAttribute('class', 'hello world'); - assert_array_equals(element.takeLog().types(), ['constructed']); - instance.classList.toggle('world'); - assert_array_equals(element.takeLog().types(), []); -}, 'remove on DOMTokenList must not enqueue an attributeChanged reaction when removing a value from an unobserved attribute'); - test(function () { var element = define_new_custom_element(['class']); var instance = document.createElement(element.name); diff --git a/tests/wpt/web-platform-tests/docs/.gitignore b/tests/wpt/web-platform-tests/docs/.gitignore new file mode 100644 index 00000000000..d901d2d87cb --- /dev/null +++ b/tests/wpt/web-platform-tests/docs/.gitignore @@ -0,0 +1,6 @@ +_site +.sass-cache +.jekyll-metadata +.bundle/ +Gemfile.lock +vendor/bundle/ \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/docs/.ruby-version b/tests/wpt/web-platform-tests/docs/.ruby-version new file mode 100644 index 00000000000..bed811b08e2 --- /dev/null +++ b/tests/wpt/web-platform-tests/docs/.ruby-version @@ -0,0 +1 @@ +ruby-2.3.3 diff --git a/tests/wpt/web-platform-tests/docs/CNAME b/tests/wpt/web-platform-tests/docs/CNAME new file mode 100644 index 00000000000..1553467afc1 --- /dev/null +++ b/tests/wpt/web-platform-tests/docs/CNAME @@ -0,0 +1 @@ +web-platform-tests.org \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/docs/Gemfile b/tests/wpt/web-platform-tests/docs/Gemfile new file mode 100644 index 00000000000..f85f9625e19 --- /dev/null +++ b/tests/wpt/web-platform-tests/docs/Gemfile @@ -0,0 +1,7 @@ +source 'https://rubygems.org' + +require 'json' +require 'open-uri' +versions = JSON.parse(open('https://pages.github.com/versions.json').read) + +gem 'github-pages', versions['github-pages'] diff --git a/tests/wpt/web-platform-tests/docs/OWNERS b/tests/wpt/web-platform-tests/docs/OWNERS index af3e0845c35..41ff493c28f 100644 --- a/tests/wpt/web-platform-tests/docs/OWNERS +++ b/tests/wpt/web-platform-tests/docs/OWNERS @@ -2,3 +2,4 @@ @dontcallmedom @zcorpan @Ms2ger +@gsnedders diff --git a/tests/wpt/web-platform-tests/docs/github-101.md b/tests/wpt/web-platform-tests/docs/_appendix/github-intro.md similarity index 64% rename from tests/wpt/web-platform-tests/docs/github-101.md rename to tests/wpt/web-platform-tests/docs/_appendix/github-intro.md index a1ee9fdfaf1..e8b3fbe7ae1 100644 --- a/tests/wpt/web-platform-tests/docs/github-101.md +++ b/tests/wpt/web-platform-tests/docs/_appendix/github-intro.md @@ -1,21 +1,24 @@ +--- +layout: page +title: Introduction to GitHub +order: 1 +--- All the basics that you need to know are documented on this page, but for the full GitHub documentation, visit [help.github.com][help]. -If you are already an experienced Git/GitHub user, all you need to -know is that we use the normal GitHub Pull Request workflow for test -submissions. The only unusual thing is that, to help with code review, -we ask that you do not amend or otherwise squash your submission as -you go along, but keep pushing updates as new commits. +If you are already an experienced Git/GitHub user, all you need to know is that +we use the [normal GitHub Pull Request workflow][github flow] for test +submissions. If you are a first-time GitHub user, read on for more details of the workflow. ## Setup 1. Create a GitHub account if you do not already have one on - [github.com][github] + [github.com][github]. 2. Download and install the latest version of Git: - [http://git-scm.com/downloads][git]. Please refer to the instruction there + [https://git-scm.com/downloads][git]; please refer to the instructions there for different platforms. 3. Configure your settings so your commits are properly labeled: @@ -36,13 +39,6 @@ If you are a first-time GitHub user, read on for more details of the workflow. _This should be the email address you used to create the account in Step 1._ - Next, type: - - $ git config --global push.default upstream - - This ensures that git push will never unintentionally create or update - a remote branch. - 4. (Optional) If you don't want to enter your username and password every time you talk to the remote server, you'll need to set up password caching. See [Caching your GitHub password in Git][password-caching]. @@ -52,7 +48,7 @@ If you are a first-time GitHub user, read on for more details of the workflow. The test repository that you contribute to will depend on the specification that you are testing. Currently there are two test repositories, one for CSS specification tests and the main W3C repository that contains tests for all -other specificatons: +other specifications: **Main W3C test repository**: [github.com/w3c/web-platform-tests][main-repo] @@ -240,40 +236,36 @@ them back up to the server: GitHub UI. Below is one method and others can be found on [GitHub.com][github-createpr] - a. Click the ![pull request link][pullrequestlink] link on the right side + 1. Click the ![pull request link][pullrequestlink] link on the right side of the UI, then click the ![new pull request][pullrequestbtn] button. - b. On the left, you should see the base repo is the - w3c/web-platform-tests. On the right, you should see your fork of that - repo. In the branch menu of your forked repo, switch to - `topic` - **Note:** If you see _'There isn't anything to compare'_, click the - ![edit][editbtn] button and make sure your fork and your - `topic` branch is selected on the right side. + 2. On the left, you should see the base repo is the + w3c/web-platform-tests. On the right, you should see your fork of that + repo. In the branch menu of your forked repo, switch to `topic` - c. Select the ![create pull request][createprlink] link at the top. + **Note:** If you see _'There isn't anything to compare'_, click + the ![edit][editbtn] button and make sure your fork and your `topic` + branch is selected on the right side. - d. Scroll down and review the diff + 3. Select the ![create pull request][createprlink] link at the top. - e. Scroll back up and in the Title field, enter a brief description for - your submission. + 4. Scroll down and review the diff - Example: "Tests for CSS Transforms skew() function." + 5. Scroll back up and in the Title field, enter a brief description for + your submission. - f. If you'd like to add more detailed comments, use the comment field + Example: "Tests for CSS Transforms skew() function." + + 6. If you'd like to add more detailed comments, use the comment field below. - g. Click ![the send pull request button][sendpullrequest] + 7. Click ![the send pull request button][sendpullrequest] 4. Wait for feedback on your pull request and once your pull request is -accepted, delete your branch (see ' -[When Pull Request is Accepted][cleanup]'). +accepted, delete your branch (see '[When Pull Request is Accepted][cleanup]'). -That's it! If you're currently at a Test the Web Forward event, find an -expert nearby and ask for a review. If you're doing this on your own -(AWESOME!), your pull request will go into a queue and will be reviewed -soon. +That's it! Your pull request will go into a queue and will be reviewed soon. ## Modify @@ -295,10 +287,7 @@ changes, follow these steps: $ git push origin topic -4. The pull request will automatically be updated with the new commit. Note - for advanced users: it is generally discouraged to rebase your pull request - before review is complete. Tests typically have few conflicts so this - should not be a problem in the common case. +4. The pull request will automatically be updated with the new commit. Sometimes it takes multiple iterations through a review before the changes are finally accepted. Don't worry about this; it's totally normal. The goal of test @@ -336,13 +325,91 @@ come from a new branch.) You need to be able to set up remote upstream, etc. Please refer to [Pro Git Book][git-book] and enjoy reading. +## Working with Pull Requests as a reviewer + +In order to do a thorough review, +it is sometimes desirable to have a local copy of the tests one wishes to review. + +Reviewing tests also often results in wanting a few things to be changed. +Generally, the reviewer should ask the author to make the desired changes. +However, sometimes the original author does not respond to the requests, +or the changes are so trivial (e.g. fixing a typo) +that bothering the original author seems like a waste of time. + +Here is how to do all that. + +### Trivial cases + +If it is possible to review the tests without a local copy, +but the reviewer still wants to make some simple tweaks to the tests before merging, +it is possible to do so via the Github web UI. + +1. Open the pull request. E.g. https://github.com/w3c/csswg-test/pull/1234 +2. Go to the ![Files changed][files-changed] view (e.g. https://github.com/w3c/csswg-test/pull/1234/files) +3. Locate the files you wish to change, and click the ![pencil][pencil-icon] icon in the upper right corner +4. Make the desired change +5. Write a commit message (including a good title) at the bottom +6. Make sure the ![Commit directly to the [name-of-the-PR-branch] branch.][commit-directly] radio button is selected. + + _Note: If the PR predates the introduction of this feature by Github, + or if the author of the PR has disabled write-access by reviewers to the PR branch, + this may not be available, + and your only option would be to commit to a new branch, creating a new PR._ +7. Click the ![Commit Changes][commitbtn] button. + + +### The Normal Way + +This is how to import the Pull Request's branch +into your existing local checkout of the repository. +If you don't have one, go [fork](#fork), [clone](#clone), and [configure](#configure-remote--upstream) it. + +1. Move into your local clone: `cd wherever-you-put-your-repo` +2. Add a remote for the PR author's repo: `git remote add git://github.com//.git` +3. Fetch the PR: `git fetch ` +4. Checkout that branch: `git checkout ` + + _The relevant ``, ``, and `` can be found by looking for this sentence in on the Github page of the PR: + ![Add more commits by pushing to the name-of-the-PR-branch branch on author-id/repo-name.][more-commits]_ + +If all you meant to do was reviewing files locally, you're all set. +If you wish to make changes to the PR branch: + +1. Make changes and [commit](#commit) normally +2. Push your changes upstream: `git push ` + + _Note: If the PR predates the introduction of this feature by Github, + or if the author of the PR has disabled write-access by reviewers to the PR branch, + this will not work, and you will need to use the alternative described below._ + +If, instead of modifying the existing PR, you wish to make a new one based on it: + +1. Set up a new branch that contains the existing PR by doing one of the following: + 1. Create a new branch from the tip of the PR: + `git branch && git checkout ` + 2. Create a new branch from `master` and merge the PR into it: + `git branch master && git checkout && git merge ` +2. Make changes and [commit](#commit) normally +3. Push your changes to **your** repo: `git push origin ` +4. Go to the Github Web UI to [submit a new Pull Request](#submit). + + _Note: You should also close the original pull request._ + +When you're done reviewing or making changes, +you can delete the branch: `git branch -d ` +(use `-D` instead of `-d` to delete a branch that has not been merged into master yet). + +If you do not expect work with more PRs from the same author, +you may also discard your connection to their repo: +`git remote remove ` + [branch]: #branch [commit]: #commit [clone]: #clone [css-repo]: https://github.com/w3c/csswg-test -[forkbtn]: /assets/forkbtn.png -[git]: http://git-scm.com/downloads -[git-book]: http://git-scm.com/book +[forkbtn]: {{ site.baseurl }}{% link /assets/forkbtn.png %} +[git]: https://git-scm.com/downloads +[git-book]: https://git-scm.com/book [github]: https://github.com/ [github-w3c]: https://github.com/w3c [github-fork-docs]: https://help.github.com/articles/fork-a-repo @@ -350,12 +417,18 @@ Book][git-book] and enjoy reading. [help]: https://help.github.com/ [main-repo]: https://github.com/w3c/web-platform-tests [password-caching]: https://help.github.com/articles/caching-your-github-password-in-git -[pullrequestlink]: /assets/pullrequestlink.png -[pullrequestbtn]: /assets/pullrequestbtn.png -[editbtn]: /assets/editbtn.png -[createprlink]: /assets/createprlink.png -[sendpullrequest]: /assets/sendpullrequest.png -[praccepteddelete]: /assets/praccepteddelete.png +[pullrequestlink]: {{ site.baseurl }}{% link /assets/pullrequestlink.png %} +[pullrequestbtn]: {{ site.baseurl }}{% link /assets/pullrequestbtn.png %} +[editbtn]: {{ site.baseurl }}{% link /assets/editbtn.png %} +[createprlink]: {{ site.baseurl }}{% link /assets/createprlink.png %} +[sendpullrequest]: {{ site.baseurl }}{% link /assets/sendpullrequest.png %} +[praccepteddelete]: {{ site.baseurl }}{% link /assets/praccepteddelete.png %} [submit]: #submit [remote-upstream]: #configure-remote-upstream [cleanup]: #cleanup +[pencil-icon]: {{ site.baseurl }}{% link /assets/pencil-icon.png %} +[commitbtn]: {{ site.baseurl }}{% link /assets/commitbtn.png %} +[commit-directly]: {{ site.baseurl }}{% link /assets/commit-directly.png %} +[files-changed]: {{ site.baseurl }}{% link /assets/files-changed.png %} +[more-commits]: {{ site.baseurl }}{% link /assets/more-commits.png %} +[github flow]: https://guides.github.com/introduction/flow/ diff --git a/tests/wpt/web-platform-tests/docs/_appendix/index.md b/tests/wpt/web-platform-tests/docs/_appendix/index.md new file mode 100644 index 00000000000..12cfdfa13ad --- /dev/null +++ b/tests/wpt/web-platform-tests/docs/_appendix/index.md @@ -0,0 +1,10 @@ +--- +layout: page +title: Appendices +order: -1 +--- + +{% assign appendix = site.appendix | sort: "order" %} +{% for page in appendix %}{% if page.title and page.order != -1 %} +* [{{ page.title }}]({{ page.url | relative_url }}) {{ "" +}}{% endif %}{% endfor %} diff --git a/tests/wpt/web-platform-tests/docs/_appendix/test-templates.md b/tests/wpt/web-platform-tests/docs/_appendix/test-templates.md new file mode 100644 index 00000000000..39b59956987 --- /dev/null +++ b/tests/wpt/web-platform-tests/docs/_appendix/test-templates.md @@ -0,0 +1,77 @@ +--- +layout: page +title: Test Templates +order: 2 +--- +This page contains templates for creating tests. The template syntax +is compatible with several popular editors including TextMate, Sublime +Text, and emacs' YASnippet mode. + +Templates for filenames are also given. In this case `{}` is used to +delimit text to be replaced and `#` represents a digit. + +## Reftests + +### Test + +``` html + + +${1:Test title} + + + + ${4:Test content} + +``` + +Filename: `{test-topic}-###.html` + +### Reference: + +``` html + + +${1:Reference title} + + + ${3:Reference content} + +``` + +Filename: `{description}.html` or `{test-topic}-###-ref.html` + +## testharness.js tests + +``` html + + +${1:Test title} + + + +``` + +Filename: `{test-topic}-###.html` + +### Manual Test + +``` html + + +${1:Test title} + + + +``` + +Filename: `{test-topic}-###-manual.html` diff --git a/tests/wpt/web-platform-tests/docs/_config.yml b/tests/wpt/web-platform-tests/docs/_config.yml new file mode 100644 index 00000000000..c70d94b448d --- /dev/null +++ b/tests/wpt/web-platform-tests/docs/_config.yml @@ -0,0 +1,43 @@ +# Welcome to Jekyll! +# +# This config file is meant for settings that affect your whole blog, values +# which you are expected to set up once and rarely edit after that. If you find +# yourself editing this file very often, consider using Jekyll's data files +# feature for the data you need to update frequently. +# +# For technical reasons, this file is *NOT* reloaded automatically when you use +# 'bundle exec jekyll serve'. If you change this file, please restart the server process. + +# Site settings +# These are used to personalize your new site. If you look in the HTML files, +# you will see them accessed via {{ site.title }}, {{ site.email }}, and so on. +# You can create any custom variable you would like, and they will be accessible +# in the templates via {{ site.myvariable }}. +title: web-platform-tests documentation +baseurl: "" # the subpath of your site, e.g. /blog +url: "" # the base hostname & protocol for your site, e.g. http://example.com + +collections: + appendix: + output: true + reviewing-tests: + output: true + running-tests: + output: true + writing-tests: + output: true + +# Build settings +markdown: kramdown +theme: minima +gems: + - jekyll-optional-front-matter + - jekyll-readme-index + - jekyll-default-layout + - jekyll-titles-from-headings +exclude: + - Gemfile + - Gemfile.lock + - vendor/bundle/ + - .bundle/ + - OWNERS diff --git a/tests/wpt/web-platform-tests/html/rendering/bindings/the-button-element-0/.gitkeep b/tests/wpt/web-platform-tests/docs/_includes/footer.html similarity index 100% rename from tests/wpt/web-platform-tests/html/rendering/bindings/the-button-element-0/.gitkeep rename to tests/wpt/web-platform-tests/docs/_includes/footer.html diff --git a/tests/wpt/web-platform-tests/docs/_includes/head.html b/tests/wpt/web-platform-tests/docs/_includes/head.html new file mode 100644 index 00000000000..36fd435991f --- /dev/null +++ b/tests/wpt/web-platform-tests/docs/_includes/head.html @@ -0,0 +1,14 @@ + + + + + + {% if page.title %}{{ page.title | escape }}{% else %}{{ site.title | escape }}{% endif %} + + + + + {% if jekyll.environment == 'production' and site.google_analytics %} + {% include google-analytics.html %} + {% endif %} + diff --git a/tests/wpt/web-platform-tests/docs/_includes/header.html b/tests/wpt/web-platform-tests/docs/_includes/header.html new file mode 100644 index 00000000000..150d6163a59 --- /dev/null +++ b/tests/wpt/web-platform-tests/docs/_includes/header.html @@ -0,0 +1,76 @@ + diff --git a/tests/wpt/web-platform-tests/docs/_includes/svg/octicons/LICENSE b/tests/wpt/web-platform-tests/docs/_includes/svg/octicons/LICENSE new file mode 100644 index 00000000000..4cf2020ce77 --- /dev/null +++ b/tests/wpt/web-platform-tests/docs/_includes/svg/octicons/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2012-2016 GitHub, Inc. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/tests/wpt/web-platform-tests/docs/_includes/svg/octicons/git-pull-request.svg b/tests/wpt/web-platform-tests/docs/_includes/svg/octicons/git-pull-request.svg new file mode 100644 index 00000000000..55753dd0d41 --- /dev/null +++ b/tests/wpt/web-platform-tests/docs/_includes/svg/octicons/git-pull-request.svg @@ -0,0 +1,11 @@ + + + git-pull-request + Created with Sketch. + + + + + + + diff --git a/tests/wpt/web-platform-tests/docs/_includes/svg/octicons/package.svg b/tests/wpt/web-platform-tests/docs/_includes/svg/octicons/package.svg new file mode 100644 index 00000000000..3bc3e504ae5 --- /dev/null +++ b/tests/wpt/web-platform-tests/docs/_includes/svg/octicons/package.svg @@ -0,0 +1,11 @@ + + + package + Created with Sketch. + + + + + + + diff --git a/tests/wpt/web-platform-tests/docs/_includes/svg/octicons/pencil.svg b/tests/wpt/web-platform-tests/docs/_includes/svg/octicons/pencil.svg new file mode 100644 index 00000000000..7bfe417cdb4 --- /dev/null +++ b/tests/wpt/web-platform-tests/docs/_includes/svg/octicons/pencil.svg @@ -0,0 +1,11 @@ + + + pencil + Created with Sketch. + + + + + + + diff --git a/tests/wpt/web-platform-tests/docs/_includes/svg/octicons/tools.svg b/tests/wpt/web-platform-tests/docs/_includes/svg/octicons/tools.svg new file mode 100644 index 00000000000..7e440b07582 --- /dev/null +++ b/tests/wpt/web-platform-tests/docs/_includes/svg/octicons/tools.svg @@ -0,0 +1,11 @@ + + + tools + Created with Sketch. + + + + + + + diff --git a/tests/wpt/web-platform-tests/docs/_includes/svg/triangle-right.svg b/tests/wpt/web-platform-tests/docs/_includes/svg/triangle-right.svg new file mode 100644 index 00000000000..349879f5bdc --- /dev/null +++ b/tests/wpt/web-platform-tests/docs/_includes/svg/triangle-right.svg @@ -0,0 +1,3 @@ + + + diff --git a/tests/wpt/web-platform-tests/docs/_reviewing-tests/checklist.md b/tests/wpt/web-platform-tests/docs/_reviewing-tests/checklist.md new file mode 100644 index 00000000000..ffb86c1afb6 --- /dev/null +++ b/tests/wpt/web-platform-tests/docs/_reviewing-tests/checklist.md @@ -0,0 +1,196 @@ +--- +layout: page +title: Review Checklist +order: 2 +--- + +The following checklist is provided as a guideline to assist in reviewing +tests; in case of any contradiction with requirements stated elsewhere in the +documentation it should be ignored +(please [file a bug](https://github.com/w3c/web-platform-tests/issues/new)!). + +As noted on the [reviewing tests][review index] page, nits need not block PRs +from landing. + + +## All tests + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## Reftests Only + + + + + + + + + + + + +## Script Tests Only + + + + + + + + + + + + +## Visual Tests Only + + + + + + + + + + +[review index]: {{ site.baseurl }}{% link _reviewing-tests/index.md %} +[general guidelines]: {{ site.baseurl }}{% link _writing-tests/general-guidelines.md %} +[reftest]: {{ site.baseurl }}{% link _writing-tests/reftests.md %} +[scripttest]: {{ site.baseurl }}{% link _writing-tests/testharness.md %} diff --git a/tests/wpt/web-platform-tests/docs/_reviewing-tests/index.md b/tests/wpt/web-platform-tests/docs/_reviewing-tests/index.md new file mode 100644 index 00000000000..4c9ce45ab98 --- /dev/null +++ b/tests/wpt/web-platform-tests/docs/_reviewing-tests/index.md @@ -0,0 +1,38 @@ +--- +layout: page +title: Reviewing Tests +order: -1 +--- + +In order to encourage a high level of quality in the W3C test +suites, test contributions must be reviewed by a peer. + + +## Test Review Policy + +The reviewer can be anyone (other than the original test author) that +has the required experience with both the spec under test and with +the [general test guidelines][general guidelines]. + +The review must happen in public, but there is no requirement for it +to happen in any specific location. In particular if a vendor is +submitting tests that have already been publicly reviewed in their own +review system, that review may be carried forward. For other tests, we +strongly recommend using either Reviewable or GitHub's built-in review +tools. + +Regardless of what review tool is used, the review must be clearly +linked in the pull request. + +In general, we tend on the side of merging things with nits (i.e., +anything sub-optimal that isn't absolutely required to be right) and +then opening issues to leaving pull requests open indefinitely waiting +on the original submitter to fix them; when tests are being upstreamed +from vendors it is frequently the case that the author has moved on to +working on other things as tests frequently only get pushed upstream +once the code lands in their implementation. + +To assist with test reviews, a [review checklist][] is available. + +[general guidelines]: {{ site.baseurl }}{% link _writing-tests/general-guidelines.md %} +[review checklist]: {{ site.baseurl }}{% link _reviewing-tests/checklist.md %} diff --git a/tests/wpt/web-platform-tests/docs/_running-tests/index.md b/tests/wpt/web-platform-tests/docs/_running-tests/index.md new file mode 100644 index 00000000000..661ada14e37 --- /dev/null +++ b/tests/wpt/web-platform-tests/docs/_running-tests/index.md @@ -0,0 +1,63 @@ +--- +layout: page +title: Running Tests +--- +In simple cases individual tests can be run by simply loading the page +in a browser window. For running larger groups of tests, or running +tests frequently, this is not a practical approach and several better +options exist. + +## From Inside a Browser + +For running multiple tests inside a browser, there is a test runner +located at `/tools/runner/index.html`. + +This allows all the tests, or those matching a specific prefix +(e.g. all tests under `/dom/`) to be run. For testharness.js tests, +the results will be automatically collected, while the runner +provides a simple UI for manually comparing reftest rendering and +running manual tests. + +Note, however, it does not currently handle more complex reftests with +more than one reference involved. + +Because it runs entirely in-browser, this runner cannot deal with +edge-cases like tests that cause the browser to crash or hang. + +## By Automating the Browser + +For automated test running designed to be robust enough to use in a CI +environment, the [wptrunner](https://github.com/w3c/wptrunner) test runner +can be used. This is a test runner written in Python and designed to +control the browser from the outside using some remote control +protocol such as WebDriver. This allows it to handle cases such as the +browser crashing that cannot be handled by an in-browser harness. It +also has the ability to automatically run both testharness-based tests +and reftests. + +Full instructions for using wptrunner are provided in its own +[documentation](https://wptrunner.readthedocs.org). + +## Writing Your Own Runner + +Most test runners have two stages: finding all tests, followed by +executing them (or a subset thereof). + +To find all tests in the repository, it is **strongly** recommended to +use the included `manifest` tool: the required behaviors are more +complex than what are documented (especially when it comes to +precedence of the various possibilities and some undocumented legacy +ways to define test types), and hence its behavior should be +considered the canonical definition of how to enumerate tests and find +their type in the repository. + +For test execution, please read the documentation for the various test types +very carefully and then check your understanding on +the [mailing list][public-test-infra] or [IRC][] ([webclient][web irc], join +channel `#testing`). It's possible edge-case behavior isn't properly +documented! + + +[public-test-infra]: https://lists.w3.org/Archives/Public/public-test-infra/ +[IRC]: irc://irc.w3.org:6667/testing +[web irc]: http://irc.w3.org diff --git a/tests/wpt/web-platform-tests/docs/_writing-tests/ahem.md b/tests/wpt/web-platform-tests/docs/_writing-tests/ahem.md new file mode 100644 index 00000000000..58e527c170c --- /dev/null +++ b/tests/wpt/web-platform-tests/docs/_writing-tests/ahem.md @@ -0,0 +1,89 @@ +--- +layout: page +title: The Ahem Font +order: 11 +--- + +A font called [Ahem][ahem-readme] has been developed which consists of +some very well defined glyphs of precise sizes and shapes; it is +especially useful for testing font and text properties. + +The font's em-square is exactly square. Its ascent and descent +combined is exactly the size of the em square; this means that the +font's extent is exactly the same as its line-height, meaning that it +can be exactly aligned with padding, borders, margins, and so +forth. Its alphabetic baseline is 0.2em above its bottom, and 0.8em +below its top. + +The font has four glyphs: + +* X (U+0058): A square exactly 1em in height and width. +* p (U+0070): A rectangle exactly 0.2em high, 1em wide, and aligned so +that its top is flush with the baseline. +* É (U+00C9): A rectangle exactly 0.8em high, 1em wide, and aligned so +that its bottom is flush with the baseline. +* [space] (U+0020): A transparent space exactly 1em high and wide. + +Most other US-ASCII characters in the font have the same glyph as X. + +## Usage +If the test uses the Ahem font, make sure its computed font-size is a +multiple of 5px, otherwise baseline alignment may be rendered +inconsistently. A minimum computed font-size of 20px is suggested. + +An explicit (i.e., not `normal`) line-height should also always be +used, with the difference between the computed line-height and +font-size being divisible by 2. In the common case, having the same +value for both is desirable. + +Other font properties should make sure they have their default values; +as such, the `font` shorthand should normally be used. + +As a result, what is typically recommended is: + + +``` css +div { + font: 25px/1 Ahem; +} +``` + +Some things to avoid: + +``` css +div { + font: 1em/1em Ahem; /* computed font-size is typically 16px and potentially + affected by parent elements */ +} + +div { + font: 20px Ahem; /* computed line-height value is normal */ +} + +div { + /* doesn't use font shorthand; font-weight and font-style are inherited */ + font-family: Ahem; + font-size: 25px; + line-height: 50px; /* the difference between computed line-height and + computed font-size is not divisible by 2 + (50 - 25 = 25; 25 / 2 = 12.5). */ +} +``` + +## Installing Ahem + +After [downloading][download-ahem] the font, installation instructions +vary between platforms: + +On Windows, right-click the downloaded file in File Explorer/Windows +Explorer (depending on Windows version) and select "Install" from the +menu. + +On macOS, open the downloaded file in Font Book (the default +application for font files) and then click install. + +On Linux, copy the file to `~/.local/share/fonts` and then run +`fc-cache`. + +[ahem-readme]: https://www.w3.org/Style/CSS/Test/Fonts/Ahem/README +[download-ahem]: https://www.w3.org/Style/CSS/Test/Fonts/Ahem/AHEM____.TTF diff --git a/tests/wpt/web-platform-tests/docs/_writing-tests/assumptions.md b/tests/wpt/web-platform-tests/docs/_writing-tests/assumptions.md new file mode 100644 index 00000000000..6e12f96a6ef --- /dev/null +++ b/tests/wpt/web-platform-tests/docs/_writing-tests/assumptions.md @@ -0,0 +1,40 @@ +--- +layout: page +title: Test Assumptions +order: 13 +--- + +The tests make a number of assumptions of the user agent, and new +tests can freely rely on these assumptions being true: + + * The device is a full-color device. + * The device has a viewport width of at least 800px. + * The UA imposes no minimum font size. + * The `medium` `font-size` computes to 16px. + * The canvas background is `white`. + * The initial value of `color` is `black`. + * The user stylesheet is empty (except where indicated by the tests). + * The device is interactive and uses scroll bars. + * The device has the Ahem font installed. + * The HTML `div` element is assigned `display: block;` and no other + property declaration. + * The HTML `span` element is assigned `display: inline;` and no other + property declaration. + * The HTML `p` element is assigned `display: block;` + * The HTML `li` element is assigned `display: list-item;` + * The HTML `table` elements `table`, `tbody`, `tr`, and `td` are + assigned the `display` values `table`, `table-row-group`, + `table-row`, and `table-cell`, respectively. + * The UA implements reasonable line-breaking behavior; e.g., it is + assumed that spaces between alphanumeric characters provide line + breaking opportunities and that UAs will not break at every + opportunity, but only near the end of a line unless a line break is + forced. + +Tests for printing behavior make some further assumptions: + + * The UA is set to print background colors and, if it supports + graphics, background images. + * The UA implements reasonable page-breaking behavior; e.g., it is + assumed that UAs will not break at every opportunity, but only near + the end of a page unless a page break is forced. diff --git a/tests/wpt/web-platform-tests/docs/css-metadata.md b/tests/wpt/web-platform-tests/docs/_writing-tests/css-metadata.md similarity index 74% rename from tests/wpt/web-platform-tests/docs/css-metadata.md rename to tests/wpt/web-platform-tests/docs/_writing-tests/css-metadata.md index aacc868d48d..28ace9b6798 100644 --- a/tests/wpt/web-platform-tests/docs/css-metadata.md +++ b/tests/wpt/web-platform-tests/docs/_writing-tests/css-metadata.md @@ -1,3 +1,8 @@ +--- +layout: page +title: CSS Metadata +order: 14 +--- CSS tests have some additional requirements for metadata. ### Specification Links @@ -27,19 +32,19 @@ Example 1: ``` html +href="https://www.w3.org/TR/CSS21/text.html#alignment-prop" /> ``` Example 2: ``` html - +href="https://www.w3.org/TR/CSS21/text.html#alignment-prop" /> + +href="https://www.w3.org/TR/CSS21/visudet.html#line-height" /> +href="https://www.w3.org/TR/CSS21/colors.html#background-properties" /> ``` ### Requirement Flags @@ -49,12 +54,6 @@ href="http://www.w3.org/TR/CSS21/colors.html#background-properties" /> Token Description - - ahem - Test requires - Ahem font - - animated Test is animated in final state. (Cannot be verified using @@ -65,17 +64,6 @@ href="http://www.w3.org/TR/CSS21/colors.html#background-properties" /> The test has particular markup formatting requirements and cannot be re-serialized. - - combo - Test, which must have an unsuffixed filename number, is - strictly the union of all the suffixed tests with the same name - and number. (See File name format, below.) - - - dom - Requires support for JavaScript and the Document Object Model ( - DOM) - font Requires a specific font to be installed. (Details must be @@ -90,15 +78,6 @@ href="http://www.w3.org/TR/CSS21/colors.html#background-properties" /> HTMLonly Test case is only valid for HTML - - http - Requires HTTP headers - - - image - Requires support for bitmap graphics and the graphic to load - - interact Requires human interaction (such as for testing scrolling @@ -112,11 +91,7 @@ href="http://www.w3.org/TR/CSS21/colors.html#background-properties" /> may Behavior tested is preferred but OPTIONAL. - [RFC2119] - - - namespace - Requires support for XML Namespaces + [RFC2119] nonHTML @@ -134,34 +109,22 @@ href="http://www.w3.org/TR/CSS21/colors.html#background-properties" /> should Behavior tested is RECOMMENDED, but not REQUIRED. [RFC2119] + href="https://www.ietf.org/rfc/rfc2119.txt">[RFC2119] speech Device supports audio output. Text-to-speech (TTS) engine installed - - svg - Requires support for vector graphics (SVG) - userstyle Requires a user style sheet to be set - - 32bit - Assumes a 32-bit integer as the minimum (-2147483648) or - maximum (2147483647) value - - - 96dpi - Assumes 96dpi display - Example 1 (one token applies): + ``` html ``` @@ -197,7 +160,8 @@ The assertion should not be: * A line or reference from the CSS specification unless that line is a complete assertion when taken out of context. -The test assertion is **optional**. It helps the reviewer understand +The test assertion is **optional**, but is is highly recommended to include one. +It helps the reviewer understand the goal of the test so that he or she can make sure it is being tested correctly. Also, in case a problem is found with the test later, the testing method (e.g. using `color` to determine pass/fail) diff --git a/tests/wpt/web-platform-tests/docs/css-user-styles.md b/tests/wpt/web-platform-tests/docs/_writing-tests/css-user-styles.md similarity index 97% rename from tests/wpt/web-platform-tests/docs/css-user-styles.md rename to tests/wpt/web-platform-tests/docs/_writing-tests/css-user-styles.md index 3179339693d..0f2b246e03b 100644 --- a/tests/wpt/web-platform-tests/docs/css-user-styles.md +++ b/tests/wpt/web-platform-tests/docs/_writing-tests/css-user-styles.md @@ -1,3 +1,8 @@ +--- +layout: page +title: CSS User Stylesheets +order: 15 +--- Some test may require special user style sheets to be applied in order for the case to be verified. In order for proper indications and prerequisite to be displayed every user style sheet should contain the diff --git a/tests/wpt/web-platform-tests/docs/_writing-tests/general-guidelines.md b/tests/wpt/web-platform-tests/docs/_writing-tests/general-guidelines.md new file mode 100644 index 00000000000..e4a3a687111 --- /dev/null +++ b/tests/wpt/web-platform-tests/docs/_writing-tests/general-guidelines.md @@ -0,0 +1,180 @@ +--- +layout: page +title: General Test Guidelines +order: 2 +--- + +### File Paths and Names + +When choosing where in the directory structure to put any new tests, +try to follow the structure of existing tests for that specification; +if there are no existing tests, it is generally recommended to create +subdirectories for each section. + +Due to path length limitations on Windows, test paths must be less +that 150 characters relative to the test root directory (this gives +vendors just over 100 characters for their own paths when running in +automation). + +File names should generally be somewhat descriptive of what is being +tested; very generic names like `001.html` are discouraged. A common +format is `test-topic-001.html`, where `test-topic` is a short +identifier that describes the test. It should avoid conjunctions, +articles, and prepositions as it should be as concise as possible. The +integer that follows is normally just increased incrementally, and +padded to three digits. (If you'd end up with more than 999 tests, +your `test-topic` is probably too broad!) + +In csswg-test, the file names should be unique within the repository, +regardless of where they are in the directory structure. + + +#### Support Files + +Various support files are available in in the `/common/` and `/media/` +directories (web-platform-tests) and `/support/` (csswg-test). Reusing +existing resources is encouraged where possible, as is adding +generally useful files to these common areas rather than to specific +testsuites. + + +#### Tools + +Sometimes you may want to add a script to the repository that's meant +to be used from the command line, not from a browser (e.g., a script +for generating test files). If you want to ensure (e.g., for security +reasons) that such scripts will only be usable from the command line +but won't be handled by the HTTP server then place them in a `tools` +subdirectory at the appropriate level—the server will then return a +404 if they are requested. + +For example, if you wanted to add a script for use with tests in the +`notifications` directory, create the `notifications/tools` +subdirectory and put your script there. + + +### File Formats + +Tests must be HTML or XML (inc. XHTML and SVG) files; some +testharness.js tests +are [auto-generated from JS files][server features]. + + +### Character Encoding + +Except when specifically testing encoding, files must be encoded in +UTF-8. In file formats where UTF-8 is not the default encoding, they +must contain metadata to mark them as such (e.g., `` in HTML files) or be pure ASCII. + + +### Server Side Support + +The custom web server +supports [a variety of features][server features] useful for testing +browsers, including (but not limited to!) support for writing out +appropriate domains and custom (per-file and per-directory) HTTP +headers. + + +### Be Short + +Tests should be as short as possible. For reftests in particular +scrollbars at 800×600px window size must be avoided unless scrolling +behavior is specifically being tested. For all tests extraneous +elements on the page should be avoided so it is clear what is part of +the test (for a typical testharness test, the only content on the page +will be rendered by the harness itself). + + +### Be Minimal + +Tests should generally avoid depending on edge case behavior of +features that they don't explicitly intend on testing. For example, +except where testing parsing, tests should contain +no [parse errors](https://validator.nu). + +This is not, however, to discourage testing of edge cases or +interactions between multiple features; such tests are an essential +part of ensuring interoperability of the web platform. + + +### Be Cross-Platform + +Tests should be as cross-platform as reasonably possible, working +across different devices, screen resolutions, paper sizes, etc. The +assumptions that can be relied on are documented [here][assumptions]; +tests that rely on anything else should be manual tests that document +their assumptions. + +Aside from the [Ahem font][ahem], fonts cannot be relied on to be +either installed or to have specific metrics. As such, in most cases +when a known font is needed Ahem should be used. In other cases, +`@font-face` should be used. + + +### Be Self-Contained + +Tests must not depend on external network resources, including +w3c-test.org. When these tests are run on CI systems they are +typically configured with access to external resources disabled, so +tests that try to access them will fail. Where tests want to use +multiple hosts this is possible through a known set of subdomains and +the +[text substitution features of wptserve]({{ site.baseurl }}{% link _writing-tests/server-features.md %}#tests-involving-multiple-origins). + + +### Be Self-Describing + +Tests should make it obvious when they pass and when they fail. It +shouldn't be necessary to consult the specification to figure out +whether a test has passed of failed. + + +### Style Rules + +A number of style rules should be applied to the test file. These are +not uniformly enforced throughout the existing tests, but will be for +new tests. Any of these rules may be broken if the test demands it: + + * No trailing whitespace + + * Use spaces rather than tabs for indentation + + * Use UNIX-style line endings (i.e. no CR characters at EOL). + +We have a lint tool for catching these and other common mistakes. You +can run it manually by starting the `lint` executable from the root of +your local web-platform-tests working directory like this: + +``` +./lint +``` + +The lint tool is also run automatically for every submitted pull request, +and reviewers will not merge branches with tests that have lint errors, so +you must fix any errors the lint tool reports. For details on doing that, +see the [lint-tool documentation][lint-tool]. + +But in the unusual case of error reports for things essential to a certain +test or that for other exceptional reasons shouldn't prevent a merge of a +test, update and commit the `lint.whitelist` file in the web-platform-tests +root directory to suppress the error reports. For details on doing that, +see the [lint-tool documentation][lint-tool]. + + +## CSS-Specific Requirements + +In order to be included in an official specification testsuite, tests +for csswg-test have some additional requirements for: + +* [Metadata][css-metadata], and +* [User style sheets][css-user-styles]. + + +[server features]: {{ site.baseurl }}{% link _writing-tests/server-features.md %} +[assumptions]: {{ site.baseurl }}{% link _writing-tests/assumptions.md %} +[ahem]: {{ site.baseurl }}{% link _writing-tests/ahem.md %} +[lint-tool]: {{ site.baseurl }}{% link _writing-tests/lint-tool.md %} +[css-metadata]: {{ site.baseurl }}{% link _writing-tests/css-metadata.md %} +[css-user-styles]: {{ site.baseurl }}{% link _writing-tests/css-user-styles.md %} diff --git a/tests/wpt/web-platform-tests/docs/_writing-tests/idlharness.html b/tests/wpt/web-platform-tests/docs/_writing-tests/idlharness.html new file mode 100644 index 00000000000..f9e18ef41fc --- /dev/null +++ b/tests/wpt/web-platform-tests/docs/_writing-tests/idlharness.html @@ -0,0 +1,11 @@ +--- +layout: page +title: idlharness.js API +order: 6 +--- + + diff --git a/tests/wpt/web-platform-tests/docs/_writing-tests/index.md b/tests/wpt/web-platform-tests/docs/_writing-tests/index.md new file mode 100644 index 00000000000..a9ae0d747cf --- /dev/null +++ b/tests/wpt/web-platform-tests/docs/_writing-tests/index.md @@ -0,0 +1,61 @@ +--- +layout: page +title: Writing Tests +order: -1 +--- + +If you haven't already, it's strongly recommended to read +the [introduction][] first, as it introduces the various test types. + +There's also a load of [general guidelines][] that apply to all tests. + +## Test Type + +There are four main test types: + +* [Reftests][] should be used to test rendering and layout. They + consist of two or more pages with assertions as to whether they + render identically or not. + +* [testharness.js][] tests should be used (where + possible!) for testing everything else. They are built with the + testharness.js unit testing framework, and consist of assertions + written in JavaScript. + +* [Visual tests][visual] should be used for checking rendering where + there is a large number of conforming renderings such that reftests + are impractical. They consist of a page that renders to final state + at which point a screenshot can be taken and compared to an expected + rendering for that user agent on that platform. + +* [Manual tests][manual] are used as a last resort for anything + that can't be tested using any of the above. They consist of a page + that needs manual interaction or verification of the final result. + +In general, there is a strong preference towards the first two test +types (as they can be easily run without human interaction), so they +should be used in preference to the others even if it results in a +somewhat cumbersome test; there is a far weaker preference between the +first two, and it is at times advisable to use testharness.js tests +for things which would typically be tested using reftests but for +which it would be overly cumbersome. + +In addition to the four main test types, there are also WebDriver +tests, which are used exclusively for testing the WebDriver protocol +itself. There is currently no documentation about these tests, +however. + +## Submitting Tests + +Once you're written tests, please submit them using +the [typical GitHub Pull Request workflow][submission-process]; please +make sure you run the [`lint` script][lint-tool] before opening a pull request! + +[introduction]: {{ site.baseurl }}{% link introduction.md %} +[general guidelines]: {{ site.baseurl }}{% link _writing-tests/general-guidelines.md %} +[reftests]: {{ site.baseurl }}{% link _writing-tests/reftests.md %} +[testharness.js]: {{ site.baseurl }}{% link _writing-tests/testharness.md %} +[visual]: {{ site.baseurl }}{% link _writing-tests/visual.md %} +[manual]: {{ site.baseurl }}{% link _writing-tests/manual.md %} +[submission-process]: {{ site.baseurl }}{% link _writing-tests/submission-process.md %} +[lint-tool]: {{ site.baseurl }}{% link _writing-tests/lint-tool.md %} diff --git a/tests/wpt/web-platform-tests/docs/lint-tool.md b/tests/wpt/web-platform-tests/docs/_writing-tests/lint-tool.md similarity index 89% rename from tests/wpt/web-platform-tests/docs/lint-tool.md rename to tests/wpt/web-platform-tests/docs/_writing-tests/lint-tool.md index 56b2b489657..210b4bd6cd3 100644 --- a/tests/wpt/web-platform-tests/docs/lint-tool.md +++ b/tests/wpt/web-platform-tests/docs/_writing-tests/lint-tool.md @@ -1,3 +1,8 @@ +--- +layout: page +title: Lint Tool +order: 9 +--- We have a lint tool for catching common mistakes in test files. You can run it manually by starting the `lint` executable from the root of your local web-platform-tests working directory like this: @@ -9,15 +14,16 @@ web-platform-tests working directory like this: The lint tool is also run automatically for every submitted pull request, and reviewers will not merge branches with tests that have lint errors, so you must either [fix all lint errors](#fixing-lint-errors), or you must -[white-list test files] (#updating-the-whitelist) to suppress the errors. +[whitelist test files](#updating-the-whitelist) to suppress the errors. ## Fixing lint errors You must fix any errors the lint tool reports, unless an error is for -something essential to a certain test or that for some other exceptional -reason shouldn't prevent the test from being merged. In those cases you can -[white-list test files](#updating-the-whiteslist) to suppress the errors. -Otherwise, use the details in this section to fix all errors reported. +something essential to a certain test or that for some other +exceptional reason shouldn't prevent the test from being merged; in +those cases you can [whitelist test files](#updating-the-whiteslist) +to suppress the errors. In all other cases, follow the instructions +below to fix all errors reported. * **CONSOLE**: Test-file line has a `console.*(...)` call; **fix**: remove the `console.*(...)` call (and in some cases, consider adding an @@ -102,7 +108,7 @@ ERROR TYPE:file/name/pattern For example, to whitelist the file `example/file.html` such that all `TRAILING WHITESPACE` errors the lint tool would report for it are -suppressed, add the following line to the `lint.whitelist` file. +suppressed, add the following line to the `lint.whitelist` file: ``` TRAILING WHITESPACE:example/file.html @@ -111,15 +117,16 @@ TRAILING WHITESPACE:example/file.html To whitelist an entire directory rather than just one file, use the `*` wildcard. For example, to whitelist the `example` directory such that all `TRAILING WHITESPACE` errors the lint tool would report for any files in it -are suppressed, add the following line to the `lint.whitelist` file. +are suppressed, add the following line to the `lint.whitelist` file: ``` TRAILING WHITESPACE:example/* ``` -If needed, you can also use the `*` wildcard to express other filename -patterns or directory-name patterns (just as you would when, e.g., -executing shell commands from the command line). +Similarly, you can also +use +[shell-style wildcards](https://docs.python.org/2/library/fnmatch.html) to +express other filename patterns or directory-name patterns. Finally, to whitelist just one line in a file, use the following format: @@ -129,7 +136,7 @@ ERROR TYPE:file/name/pattern:line_number For example, to whitelist just line 128 of the file `example/file.html` such that any `TRAILING WHITESPACE` error the lint tool would report for -that line is suppressed, add the following to the `lint.whitelist` file. +that line is suppressed, add the following to the `lint.whitelist` file: ``` TRAILING WHITESPACE:example/file.html:128 diff --git a/tests/wpt/web-platform-tests/docs/_writing-tests/manual.md b/tests/wpt/web-platform-tests/docs/_writing-tests/manual.md new file mode 100644 index 00000000000..15273348fdc --- /dev/null +++ b/tests/wpt/web-platform-tests/docs/_writing-tests/manual.md @@ -0,0 +1,80 @@ +--- +layout: page +title: Manual Tests +order: 8 +--- +Some testing scenarios are intrinsically difficult to automate and +require a human to run the test and check the pass condition. + +## When to Write Manual Tests + +Whenever possible it's best to write a fully automated test. For a +browser vendor it's possible to run an automated test hundreds of +times a day, but manual tests are likely to be run at most a handful +of times a year (and quite possibly approximately never!). This makes +them significantly less useful for catching regressions than automated +tests. + +However, there are certain scenarios in which this is not yet +possible. For example: + +* Test which require observing animation (e.g., a test for CSS + animation or for video playback), + +* Tests that require interaction with browser security UI (e.g., a + test in which a user refuses a geolocation permissions grant), + +* Tests that require interaction with the underlying OS (e.g., tests + for drag and drop from the desktop onto the browser), + +* Tests that require non-default browser configuration (e.g., images + disabled), and + +* Tests that require interaction with the physical environment (e.g., + tests that the vibration API causes the device to vibrate or that + various sensor APIs respond in the expected way). + +## Requirements for a Manual Test + +Manual tests are distinguished by their filename; all manual tests +have filenames of the form `name-manual.ext` (i.e., a `-manual` suffix +after the main filename but before the extension). + +Manual tests must be +fully +[self-describing]({{ site.baseurl }}{% link _writing-tests/general-guidelines.md %}#be-self-describing). +It is particularly important for these tests that it is easy to +determine the result from the information provided in the page to the +tester, because a tester may have hundreds of tests to get through and +little understanding of the features that they are testing. As a +result, minimalism is especially a virtue for manual tests. + +A test should have, at a minimum step-by-step instructions for +performing the test, and a clear statement of either the test result +if it can be automatically determined after some setup or how to +otherwise determine the outcome. + +Any information other than this (e.g., quotes from the spec) should be +avoided (though, as always, can be provided in +HTML/CSS/JS/etc. comments). + +## Using testharness.js for Manual Tests + +A convenient way to present the results of a test that can have the +result determined by script after some manual setup steps is to use +testharness.js to determine and present the result. In this case one +must pass `{explicit_timeout: true}` in a call to `setup()` in order +to disable the automatic timeout of the test. For example: + +```html + +Manual click on button triggers onclick handler + + + +

Click on the button below. If a "PASS" result appears the test +passes, otherwise it fails

+ +``` diff --git a/tests/wpt/web-platform-tests/docs/_writing-tests/reftests.md b/tests/wpt/web-platform-tests/docs/_writing-tests/reftests.md new file mode 100644 index 00000000000..2658962c210 --- /dev/null +++ b/tests/wpt/web-platform-tests/docs/_writing-tests/reftests.md @@ -0,0 +1,172 @@ +--- +layout: page +title: Reftests +order: 3 +--- + +Reftests are one of the primary tools for testing things relating to +rendering; they are made up of the test and one or more other pages +("references") with assertions as to whether they render identically +or not. + +## How to Run Reftests + +Reftests can be run manually simply by opening the test and the +reference file in multiple windows or tabs and flipping between the +two. In automation the comparison is done in an automated fashion, +which can lead to differences hard for the human eye to notice to +cause the test to fail. + +## Components of a Reftest + +In the simplest case, a reftest consists of a pair of files called the +*test* and the *reference*. + +The *test* file is the one that makes use of the technology being +tested. It also contains a `link` element with `rel="match"` or +`rel="mismatch"` and `href` attribute pointing to the *reference* +file, e.g. ``. A +`match` test only passes if the two files render pixel-for-pixel +identically within a 600x600 window *including* scroll-bars if +present; a `mismatch` test only passes if they *don't* render +identically. + +The *reference* file is typically written to be as simple as possible, +and does not use the technology under test. It is desirable that the +reference be rendered correctly even in UAs with relatively poor +support for CSS and no support for the technology under test. + +## Writing a Good Reftest + +In general the files used in a reftest should follow +the [general guidelines][] and +the [rendering test guidelines][rendering]. They should also be +self-describing, to allow a human to determine whether the the +rendering is as expected. + +References can be shared between tests; this is strongly encouraged as +it makes it easier to tell at a glance whether a test passes (through +familiarity) and enables some optimizations in automated test +runners. Shared references are typically placed in `references` +directories, either alongside the tests they are expected to be useful +for or at the top level if expected to be generally applicable (e.g., +many layout tests can be written such that the correct rendering is a +100x100 green square!). For references that are applicable only to a +single test, it is recommended to use the test name with a suffix of +`-ref` as their filename; e.g., `test.html` would have `test-ref.html` +as a reference. + +## Complex Pass Conditions + +Sometimes it is desirable for a file to match multiple references or, +in rare cases, to allow it to match more than one possible reference. + +References can have links to other references (through the same `link` +element relation), and in this case for the test to pass the test must +render identically (assuming a `match` relation) to the reference, and +the reference must render identically to its reference (again, +assuming a `match` relation). Note that this can continue indefinitely +to require tests to match an arbitrary number of references; also that +`match` is used here purely for explanatory reasons: both `match` and +`mismatch` can be used (and mixed on one sequence of references). This +can be thought of as an AND operator! + +Similarly, multiple references can be linked from a single file to +implement alternates and allow multiple renderings. In this case, the +file passes if it matches one of the references provided (and that +reference likewise matches any references, etc.). This can be thought +of as an OR operator! + +These two techniques can be combined to build up arbitrarily complex +pass conditions with boolean logic. For example, consider when: + + * `a.html` has `` and ``, + * `b.html` has ``, and + * `c.html` has ``. + +Or, graphically: + +diagram of the above reftest graph as a directed graph + +In this case, to pass we must either have `a.html`, `b.html` and +`b1.html` all rendering identically, or `a.html` and `c.html` +rendering identically with `c1.html` rendering differently. (These +are, in terms of the graph, all the paths from the source nodes to +leaf nodes.) + +## Controlling When Comparison Occurs + +By default reftest screenshots are taken after the `load` event has +fired. In some cases it is necessary to delay the screenshot later +than this, for example because some DOM manipulation is required to +set up the desired test conditions. To enable this, the test may have +a `class="reftest-wait"` attribute specified on the root element. This +will cause the screenshot to be delayed until the `load` event has +fired and the `reftest-wait` class has been removed from the root +element. Note that in neither case is exact timing of the screenshot +guaranteed: it is only guaranteed to be after those events. + +## Fuzzy Matching + +In some situations a test may have subtle differences in rendering +compared to the reference due to, e.g., anti-aliasing. This may cause +the test to pass on some platforms but fail on others. In this case +some affordance for subtle discrepancies is desirable. However no +mechanism to allow this has yet been standardized. + +## Limitations + +In some cases, a test cannot be a reftest. For example, there is no +way to create a reference for underlining, since the position and +thickness of the underline depends on the UA, the font, and/or the +platform. However, once it's established that underlining an inline +element works, it's possible to construct a reftest for underlining +a block element, by constructing a reference using underlines on a +`````` that wraps all the content inside the block. + +## Example Reftests + +This example follows the recommended approach in being a +self-describing test as it has a simple statement on the page +describing how it should render to pass the tests. + +### Test File + +This test verifies that a right-to-left rendering of **SAW** within a +`````` element displays as **WAS**. + +```html + + +BDO element dir=rtl + + + +

Pass if you see WAS displayed below.

+SAW +``` + +### Reference File + +The reference file must look exactly like the test file, +except that the code behind it is different. + +* All metadata is removed. +* The ```title``` need not match. +* The markup that created the actual test data is + different: here, the same effect is created with + very mundane, dependable technology. + +```html + + +HTML Reference File +

Pass if you see WAS displayed below.

+

WAS

+``` + + +[general guidelines]: {{ site.baseurl }}{% link _writing-tests/general-guidelines.md %} +[rendering]: {{ site.baseurl }}{% link _writing-tests/rendering.md %} diff --git a/tests/wpt/web-platform-tests/docs/_writing-tests/rendering.md b/tests/wpt/web-platform-tests/docs/_writing-tests/rendering.md new file mode 100644 index 00000000000..b79bc5c9834 --- /dev/null +++ b/tests/wpt/web-platform-tests/docs/_writing-tests/rendering.md @@ -0,0 +1,91 @@ +--- +layout: page +title: Rendering Test Guidelines +order: 10 +--- + +There are a number of techniques typically used when writing rendering tests; +these are especially using for [visual][] tests which need to be manually +judged and following common patterns makes it easier to correctly tell if a +given test passed or not. + +## Indicating success + +Success is largely indicated by the color green; typically in one of +two ways: + + * **The green paragraph**: arguably the simplest form of test, this + typically consists of single line of text with a pass condition of, + "This text should be green". A variant of this is using the + background instead, with a pass condition of, "This should have a + green background". + + * **The green square**: applicable to many block layout tests, the test + renders a green square when it passes; these can mostly be written to + match [this][ref-filled-green-100px-square] reference. This green square is + often rendered over a red square, such that when the test fails there is red + visible on the page; this can even be done using text by using the [Ahem][] + font. + +More occasionally, the entire canvas is rendered green, typically when +testing parts of CSS that affect the entire page. Care has to be taken +when writing tests like this that the test will not result in a single +green paragraph if it fails. This is usually done by forcing the short +descriptive paragraph to have a neutral color (e.g., white). + +Sometimes instead of a green square, a white square is used to ensure +any red is obvious. To ensure the stylesheet has loaded, it is +recommended to make the pass condition paragraph green and require +that in addition to there being no red on the page. + +## Indicating failure + +In addition to having clearly defined characteristics when +they pass, well designed tests should have some clear signs when +they fail. It can sometimes be hard to make a test do something only +when the test fails, because it is very hard to predict how user +agents will fail! Furthermore, in a rather ironic twist, the best +tests are those that catch the most unpredictable failures! + +Having said that, here are the best ways to indicate failures: + + * Using the color red is probably the best way of highlighting + failures. Tests should be designed so that if the rendering is a + few pixels off some red is uncovered or otherwise rendered on the + page. + + * Tests of the `line-height`, `font-size` and similar properties can + sometimes be devised in such a way that a failure will result in + the text overlapping. + + * Some properties lend themselves well to making "FAIL" render in the + case of something going wrong, for example `quotes` and + `content`. + +## Other Colors + +Aside from green and red, other colors are generally used in specific +ways: + + * Black is typically used for descriptive text, + + * Blue is frequently used as an obvious color for tests with complex + pass conditions, + + * Fuchsia, yellow, teal, and orange are typically used when multiple + colors are needed, + + * Dark gray is often used for descriptive lines, and + + * Silver or light gray is often used for irrelevant content, such as + filler text. + +Obviously, none of this can be taken as absolute rules, as testing of +color-related functionality will necessitate using some of these +colors! + + +[ahem]: {{ site.baseurl }}{% link _writing-tests/ahem.md %} +[visual]: {{ site.baseurl }}{% link _writing-tests/visual.md %} + +[ref-filled-green-100px-square]: https://github.com/w3c/csswg-test/blob/master/reference/ref-filled-green-100px-square.xht diff --git a/tests/wpt/web-platform-tests/docs/_writing-tests/server-features.md b/tests/wpt/web-platform-tests/docs/_writing-tests/server-features.md new file mode 100644 index 00000000000..02558d77a92 --- /dev/null +++ b/tests/wpt/web-platform-tests/docs/_writing-tests/server-features.md @@ -0,0 +1,87 @@ +--- +layout: page +title: Server Features +order: 12 +--- + +## Advanced Testing Features + +Certain test scenarios require more than just static HTML +generation. This is supported through the +[wptserve](https://github.com/w3c/wptserve) server. Several scenarios +in particular are common: + + +### Tests Involving Multiple Origins + +In the test environment, five subdomains are available: `www`, `www1`, +`www2`, `天気の良い日`, and `élève`; there is also +`nonexistent-origin` which is guaranteed not to resolve. In addition, +the HTTP server listens on two ports, and the WebSockets server on +one. These subdomains and ports must be used for cross-origin +tests. Tests must not hardcode the hostname of the server that they +expect to be running on or the port numbers, as these are not +guaranteed by the test environment. Instead they can get this +information in one of two ways: + +* From script, using the `location` API. + +* By using a textual substitution feature of the server. + +In order for the latter to work, a file must either have a name of the +form `{name}.sub.{ext}` e.g. `example-test.sub.html` or be referenced +through a URL containing `pipe=sub` in the query string +e.g. `example-test.html?pipe=sub`. The substitution syntax uses `{% +raw %}{{ }}{% endraw %}` to delimit items for substitution. For +example to substitute in the host name on which the tests are running, +one would write: `{% raw %}{{host}}{% endraw %}`. + + +As well as the host, one can get full domains, including subdomains +using the `domains` dictionary. For example, `{% raw +%}{{domains[www]}}{% endraw %}` or `{% raw %}{{domains[élève]}}{% +endraw %}` would be replaced by the full qualified domain name of the +respective subdomains. + +Ports are also available on a per-protocol basis. For example, `{% raw +%}{{ports[ws][0]}}{% endraw %}` is replaced with the first (and only) +WebSockets port, while `{% raw %}{{ports[http][1]}}{% endraw %}` is +replaced with the second HTTP port. + +The request URL itself can be used as part of the substitution using +the `location` dictionary, which has entries matching the +`window.location` API. For example, `{% raw %}{{location[host]}}{% +endraw %}`is replaced by `hostname:port` for the current request, +matching `location.host`. + + +### Tests Requiring Special Headers + +For tests requiring that a certain HTTP header is set to some static +value, a file with the same path as the test file except for an an +additional `.headers` suffix may be created. For example for +`/example/test.html`, the headers file would be +`/example/test.html.headers`. This file consists of lines of the form + + header-name: header-value + +For example + + Content-Type: text/html; charset=big5 + +To apply the same headers to all files in a directory use a +`__dir__.headers` file. This will only apply to the immediate +directory and not subdirectories. + +Headers files may be used in combination with substitutions by naming +the file e.g. `test.html.sub.headers`. + + +### Tests Requiring Full Control Over The HTTP Response + +For full control over the request and response the server provides the +ability to write `.asis` files; these are served as literal HTTP +responses. It also provides the ability to write Python scripts that +have access to request data and can manipulate the content and timing +of the response. For details see the +[wptserve documentation](https://wptserve.readthedocs.org). diff --git a/tests/wpt/web-platform-tests/docs/submission-process.md b/tests/wpt/web-platform-tests/docs/_writing-tests/submission-process.md similarity index 62% rename from tests/wpt/web-platform-tests/docs/submission-process.md rename to tests/wpt/web-platform-tests/docs/_writing-tests/submission-process.md index fd5d763ba76..9bbd0a4ac30 100644 --- a/tests/wpt/web-platform-tests/docs/submission-process.md +++ b/tests/wpt/web-platform-tests/docs/_writing-tests/submission-process.md @@ -1,4 +1,9 @@ -Test submission is via the typical GitHub workflow. +--- +layout: page +title: Submitting Tests +order: 16 +--- +Test submission is via the typical [GitHub workflow][github flow]: * Fork the [GitHub repository][repo] (and make sure you're still relatively in sync with it if you forked a while ago) @@ -23,20 +28,22 @@ on, e.g. `git checkout -b topic-name` * Using the GitHub UI create a Pull Request for your branch. * When you get review comments, make more commits to your branch to - address the comments (**note**: Do *not* rewrite existing commits using - e.g. `git commit --amend` or `git rebase -i`. The review system - depends on the full branch history). + address the comments. * Once everything is reviewed and all issues are addressed, your pull request will be automatically merged. For detailed guidelines on setup and each of these steps, please refer to the -[Github Test Submission][github101] documentation. +[Github Test Submission][github-intro] documentation. -Hop on to [irc or the mailing list][discuss] if you have an -issue. There is no need to announce your review request, as soon as -you make a Pull Request GitHub will inform interested parties. +Hop on to the [mailing list][public-test-infra] or [IRC][] +([webclient][web irc], join channel `#testing`) if you have an issue. There is +no need to announce your review request, as soon as you make a Pull Request +GitHub will inform interested parties. [repo]: https://github.com/w3c/web-platform-tests/ -[github101]: ./github-101.html -[discuss]: /discuss.html +[github-intro]: {{ site.baseurl }}{% link _appendix/github-intro.md %} +[github flow]: https://guides.github.com/introduction/flow/ +[public-test-infra]: https://lists.w3.org/Archives/Public/public-test-infra/ +[IRC]: irc://irc.w3.org:6667/testing +[web irc]: http://irc.w3.org diff --git a/tests/wpt/web-platform-tests/docs/_writing-tests/testharness-api.html b/tests/wpt/web-platform-tests/docs/_writing-tests/testharness-api.html new file mode 100644 index 00000000000..80af9f0e1f0 --- /dev/null +++ b/tests/wpt/web-platform-tests/docs/_writing-tests/testharness-api.html @@ -0,0 +1,11 @@ +--- +layout: page +title: testharness.js API +order: 5 +--- + + diff --git a/tests/wpt/web-platform-tests/docs/_writing-tests/testharness.md b/tests/wpt/web-platform-tests/docs/_writing-tests/testharness.md new file mode 100644 index 00000000000..8522e017388 --- /dev/null +++ b/tests/wpt/web-platform-tests/docs/_writing-tests/testharness.md @@ -0,0 +1,76 @@ +--- +layout: page +title: testharness.js Tests +order: 4 +--- + +testharness.js tests are the correct type of test to write in any +situation where you are not specifically interested in the rendering +of a page, and where human interaction isn't required; these tests are +written in JavaScript using a framework called `testharness.js`. It is +documented in two sections: + + * [testharness.js Documentation][testharness-api] — An introduction + to the library and a detailed API reference. + + * [idlharness.js Documentation][idlharness] — A library for testing + IDL interfaces using `testharness.js`. + +As always, we recommend reading over the [general guidelines][] for +all test types. + +## Auto-generated test boilerplate + +While most JavaScript tests require a certain amount of HTML +boilerplate to include the test library, etc., tests for Web Workers +can be written as JavaScript files which then have all the needed HTML +and setup script auto-generated. + +### Standalone workers tests + +Tests that only require assertions in a dedicated worker scope can use +standalone workers tests. In this case, the test is a JavaScript file +with extension `.worker.js` that imports `testharness.js`. The test can +then use all the usual APIs, and can be run from the path to the +JavaScript file with the `.js` removed. + +For example, one could write a test for the `FileReaderSync` API by +creating a `FileAPI/FileReaderSync.worker.js` as follows: + + importScripts("/resources/testharness.js"); + test(function () { + var blob = new Blob(["Hello"]); + var fr = new FileReaderSync(); + assert_equals(fr.readAsText(blob), "Hello"); + }, "FileReaderSync#readAsText."); + done(); + +This test could then be run from `FileAPI/FileReaderSync.worker.html`. + +### Multi-global tests + +Tests for features that exist in multiple global scopes can be written +in a way that they are automatically run in a window scope and a +worker scope. + +In this case, the test is a JavaScript file with extension `.any.js`. +The test can then use all the usual APIs, and can be run from the path to the +JavaScript file with the `.js` replaced by `.worker.js` or `.html`. + +For example, one could write a test for the `Blob` constructor by +creating a `FileAPI/Blob-constructor.any.js` as follows: + + test(function () { + var blob = new Blob(); + assert_equals(blob.size, 0); + assert_equals(blob.type, ""); + assert_false(blob.isClosed); + }, "The Blob constructor."); + +This test could then be run from `FileAPI/Blob-constructor.any.worker.js` as well +as `FileAPI/Blob-constructor.any.html`. + + +[general guidelines]: {{ site.baseurl }}{% link _writing-tests/general-guidelines.md %} +[testharness-api]: {{ site.baseurl }}{% link _writing-tests/testharness-api.html %} +[idlharness]: {{ site.baseurl }}{% link _writing-tests/idlharness.html %} diff --git a/tests/wpt/web-platform-tests/docs/_writing-tests/visual.md b/tests/wpt/web-platform-tests/docs/_writing-tests/visual.md new file mode 100644 index 00000000000..2d46fbe10dd --- /dev/null +++ b/tests/wpt/web-platform-tests/docs/_writing-tests/visual.md @@ -0,0 +1,32 @@ +--- +layout: page +title: Visual Tests +order: 7 +--- + +Visual tests are typically used when testing rendering of things that +cannot be tested with [reftests][]. + +Their main advantage of over manual tests is they can be verified using +browser-specific and platform-specific screenshots; note, however, that many +browser vendors treat them identically to manual tests hence they are +similarly discouraged as they very infrequently, if ever, get run by them. + +## Writing a Visual Test + +Visuals tests are test files which have `-visual` at the end of their +filename, before the extension. There is nothing needed in them to +make them work. + +They should follow the [general test guidelines][general guidelines], +especially noting the requirement to be self-describing (i.e., they +must give a clear pass condition in their rendering). + +Similarly, they should consider the [rendering test guidelines][rendering], +especially those about color, to ensure those running the test don't +incorrectly judge its result. + + +[general guidelines]: {{ site.baseurl }}{% link _writing-tests/general-guidelines.md %} +[reftests]: {{ site.baseurl }}{% link _writing-tests/reftests.md %} +[rendering]: {{ site.baseurl }}{% link _writing-tests/rendering.md %} diff --git a/tests/wpt/web-platform-tests/docs/assets/_reftest_graph_example.dot b/tests/wpt/web-platform-tests/docs/assets/_reftest_graph_example.dot new file mode 100644 index 00000000000..d9bdef76d06 --- /dev/null +++ b/tests/wpt/web-platform-tests/docs/assets/_reftest_graph_example.dot @@ -0,0 +1,6 @@ +digraph reftest_graph_example { + "a.html" -> "b.html" [label="=="]; + "a.html" -> "c.html" [label="=="]; + "b.html" -> "b1.html" [label="=="]; + "c.html" -> "c1.html" [label="!="]; +} \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/docs/assets/commit-directly.png b/tests/wpt/web-platform-tests/docs/assets/commit-directly.png new file mode 100644 index 0000000000000000000000000000000000000000..d02eef4ab505fa1b5a9b6661598f8e9d487b275f GIT binary patch literal 8546 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 literal 0 HcmV?d00001 diff --git a/tests/wpt/web-platform-tests/docs/assets/createprlink.png b/tests/wpt/web-platform-tests/docs/assets/createprlink.png new file mode 100644 index 0000000000000000000000000000000000000000..7a7ef86ab9fd76dc4036720bb51e3c0ebde85752 GIT binary patch literal 9172 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 literal 0 HcmV?d00001 diff --git a/tests/wpt/web-platform-tests/docs/assets/files-changed.png b/tests/wpt/web-platform-tests/docs/assets/files-changed.png new file mode 100644 index 0000000000000000000000000000000000000000..7472edcb965c98e414e1be6412f0ed58afbe0f6b GIT binary patch literal 2585 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 svg path { + fill: $grey-color-dark; + } + } + + .trigger { + clear: both; + display: none; + padding-bottom: 5px; + } + + &:hover .trigger, + &:focus .trigger { + display: block; + } + + /* duplicated from above to avoid breaking UAs that don't support it */ + &:focus-within .trigger { + display: block; + } + + .trigger[aria-hidden="true"] { + display: none !important; + } + + .trigger[aria-hidden="false"] { + display: block !important; + } +} diff --git a/tests/wpt/web-platform-tests/docs/assets/menu.js b/tests/wpt/web-platform-tests/docs/assets/menu.js new file mode 100644 index 00000000000..9eade4bf7e4 --- /dev/null +++ b/tests/wpt/web-platform-tests/docs/assets/menu.js @@ -0,0 +1,20 @@ +(function() { + var site_nav = document.querySelector(".wpt-site-nav"); + var trigger = document.querySelector(".wpt-site-nav .trigger"); + + var show = function(e) { + trigger.setAttribute("aria-hidden", "false"); + }; + + var hide_if_relatedTarget_elsewhere = function(e) { + if (!site_nav.contains(e.relatedTarget)) { + trigger.setAttribute("aria-hidden", "true"); + } + }; + + site_nav.addEventListener("focus", show, false); + site_nav.addEventListener("blur", hide_if_relatedTarget_elsewhere, true); + + site_nav.addEventListener("mouseenter", show, false); + site_nav.addEventListener("mouseleave", hide_if_relatedTarget_elsewhere, false); +})(); diff --git a/tests/wpt/web-platform-tests/docs/assets/more-commits.png b/tests/wpt/web-platform-tests/docs/assets/more-commits.png new file mode 100644 index 0000000000000000000000000000000000000000..0d6b1a979486bfac4d8030e6d83cdeaaad08b2da GIT binary patch literal 10927 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 R{1pHI002ovPDHLkV1neLLEQiV literal 0 HcmV?d00001 diff --git a/tests/wpt/web-platform-tests/docs/assets/pencil-icon.png b/tests/wpt/web-platform-tests/docs/assets/pencil-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..ea347dd43b8fbcb0885ce5a338752a513df8c4a0 GIT binary patch literal 178 zcmeAS@N?(olHy`uVBq!ia0vp^${@@EBp9qWy=etfm7Xq+Ar*{A&l*Y{WDsb%IH#(A zN=ZrI11rt#ENm4Q4%~nDyR1#^*S?w0x2MH!J>sxRjYs80@5)v;ljNfLO$OKX&t*If zJ0aOCtGsdnb7v#VQb(q)iC0!k%utc)bZcr%PykYkCT6VKr7G3AEP7Gn5{Whwq29k| Za~R*=S9+%9e)j>$F`lk|F6*2UngH{HMUMag literal 0 HcmV?d00001 diff --git a/tests/wpt/web-platform-tests/docs/assets/praccepteddelete.png b/tests/wpt/web-platform-tests/docs/assets/praccepteddelete.png new file mode 100644 index 0000000000000000000000000000000000000000..efb8e0798bd9e4468b11f877e3ca2cef9d4e57e4 GIT binary patch literal 18087 zcmV(xK0012b0ssI2(})Qp002gANklnZ3fp*9j~SXdV<#O90YvV`nUK;@0AL$J9#$0jIwBC`m4-ZwVcZds z$cqIqeur%cT^Q(w<=09HN&y`15)gUFC}MeuEdfOGHADdU9FZ3bAhP`e0TyB@DMgCA z87bap79T!~m|>v*fFmctFdi1UQN%?y009uWi$uhbuPATQ3$946BtPFatVOmn0yri! zZWri?QWvOE!_i= zS*0QAC1L5M*XI(EUKXBS5}aNfnO)l2H=uysM9$_ENsmKnG7Ey;Fd`FETci`VhKK;J ztiwgGR}o;-o{KmFw^T4ZRWZ|ZH6g~KOwP68gzyy8%hCgNX zO8?JS7#1U-L%+{g`mrHk06OmnQz-E>@SouzW}d(U2mA91f|wIA0sDTo()XiPL7y!5 z`F)vnUQHW%=N{tcF-ARN%xH~Dr5dRjy<_j;-u}T8zA2WZ!6kENZQXL9qrGvAMr&^4 ze$vNka_q}c>6m$(g)rjbJfL>9HiU%*H?(!*V#mah_`}beJ&^WA*-O;iD07Ri-0+<|kUSmT-orF6D z+91;3+dO6Bq=Sd8p#xYu>XL-FG~@7tJ+r4x-m&KhOhFQ^xqI{anKS11@gm4$mlYW| z1Ait0!x0xpD~)DST|=vKJ=hI{o21n?pTxD!9`Et+)cmsvYEQM!Y~8;z+B|)XdFCjqqA%8jZgPl* zle^*Avp=xm(FgAP{`ddJjUDszPv6~t--8R+?qJ6;(K(T}ROtNqqj&z*&S-9^e&wNu z7OdM#8_nMB=%7q!q9}?qPUv3|CKY0!vSXSBDIO3wIxA5c#|e>3CXh&1Y8&5s0>swh~>O;5Rb;#Ni-Sg81O2qIx!KDVeVVV^L-Z)9{_YX~GO9um38)f9 zUI93D*q^Vz_kG6@UBloIXA%c{h|F<3L?kMk7w9#Oh_E$|vg;jCO)YEN-@nTL^>dC$ zLQC(Vlh8W?!2l-INN+YkQK}*Vq_*whgt8uZDwy)o|*m57G}sxiI9L0rtdxdm*ThY*YS((I}$o~pBZ#482B9wiXrZ@ z3i=&R4}sP>pKo`11PEIlz5%d)#ji9#_~T#!Y<5Nde>+%W{NbDqz?v@imV=#jJX@AQ2)hQ{OWwV$daH3W4F|{p!P;(BOa*$?3r3#loD2hkJ2tD`0n9V?CEW z!Hdu4sTj=hq*G#Y2Y;m{XZ`(slagYs?c7#gy}p#6t*@u4t)+Q9HgoNjkQ#d1TXtEP z>FFCJ#wYFBf3Uez@N#Xz-P7&NrE*}M80I@Vv$}dmfZWt{&1$C+RaMPURMnJebVl{{?iWi7?lwE*6&1|sHUr~R;+-7e;d6QE2KqWwb?V-Ohi4x>{rGM* zz|TJ}vjEr^9!`5XyIgJT1oGX9p*s#Ge&*0!;w3us=iEyP8HX=+eRjLp*vF1`Ew z<@3k4*_jFY+N#=G262hGuik$GR8>`a+RVgQjjHPE={-0$4FZSzdz|bosjA9mbo;v2 z&gI2tPL?JlvVxVPdqZpOp@RXr=Zb|R-tOJ)(cwm^0wzgY9^wyV+v4LBzEISHC z(~;%W%IyQ1Bkp!;MwVdxxi>lN<>p9HRn<4xk(qx%ycBfYsJ61OP@zzmEY}W^|I_(9 zM|^$M)F|c_mKD{_UxbhALp~=-M_1RG<>K${fmPO>nfp%e|5^u!?7~iyxOTv6_NV&3 zfn%P)F|XJ0RIkI=uKlTAyHkA*r+RHq^|SK$z$!wY7!G-T_IdpPqHtj=7Q{-i<}ZLS zN;s>(9d=-7(KP>sMdPR1~DaWMpzLl-|F8zqzJd0gJNn3Vio| zO_xI6Vdn)Lp3RO)%R<>%mw*h&-T7N`7p94i3fV3xO;T1435hs$GF47mDmo!CH!Dd_ z3K^SresOVDLmscDW*iwEWvH$2g9QA{#fH_TJ5th;2agKbgxgm6-`jqyZtt6$8bZS* zUA=sYE}o|cGjQq~`wnoJ1WPbA{^_=ntk_(*&go%O|# z?c0K*Vyi04@g#C!c*5s*i^?QC!_^;H?@tIIknL&bD?Ywkvo_Gg$y4H!lMOT#{|AZ( z88}ggBqZg+*eCXS*#F!A`}dOSmWskWD0F*LYFc(`yfjpnbEf3sodJ{##Kre$Lv4it zMaj|A@73#73u7IszC~k0jhCCfGDUZMYMK)jL?)8F4P#m-a$f|8|<$A-)-A3 z)pvh+zqm>6SZR3KwWf$8o>H=e`_I?sXSmR9+alt!HY+KY&!znDPZD6UWFHG46VMov zN@OH^rkoo z86B;uM)(neskqLa8SX&JNO&I%ym;X(NXYUDTw8x(zf%u|mXC;zW>}cW!HE75oXywX z@qr#JO!|OtKt)*@nSf`oe1X!(!3GME4hRfp9}Sd{1TT5npFh5FvNnUmvB#pK?X77@ z7{~D`#czS$nY9V0W??0LV7Ez}heD=Jwg-4l;8G zf9Z-HP719yx&5}lP1qH;!YE;&D1%rp$|LRyK>K@PBeZS;_zOe+M%ajj&73EHkAt0X zN&>J3=$~kbE8Z;2h%@RXa$;>}fc%gtQk2YiME-ySUDJ4@>-6Z1i3Mnbn z*^-v^7t?qwGB7GrNPk^bGH_HQfBfqCbeObMaAaah>1Df}`cg=I|KPAa%?L|W4n7*5 znUmMj#TD`nw-GKU)hZa@+#fboU4%fOCc7N6I4Nh(o|}EL_-12XhpOn}69TLcW(JTr zWWm+u+0jnKc8SE?%RqT=X6!;?>Ez_NiMHA>Y;sC&LBZ6$xwmTz7P?9(1;x-~5joi>Te|teRpd5b7KW(k z9{l`zULKF}4NnHjQGTN=0$$R@`||d;k85ZNUxbc4%pR=e6QII1Dv3{a|yw zEWMPy4GM4Xp9BR76D<`xpF==dawZ9bSGwNTPSaC0qFEP}l&8mpOGx}zctTEhXPu-J zG`--mF!pphR6?e%lLzD*rTNkj*tPbdb2%|`FhpcRN_laig|QY!S+BmPl8BLIC*=aS z$M=TuIGk^2=9jNuBW$cLR+V2ockx0>Vk}ijiRC0DcR!Z3hOre8z`dv{D|!WTp3V*8 z;c`LjG@x60dPjwX@$&yIxwqC|fNYZ}C}{-p?GfJDOC`&zD`8%)7M84*hB_D&$~jX6 zOz+no>ru#ddxGa5POB0Tikij|v9Tv}^F}A{&OMl-5Kwf6LupxYYDUI1oJuMHqXK+QRQ%nU9w zlP46?yM?XD!3H2#=m4l+$n`nDgfp{6)@;6QHV;szO%6yX_+|*81o%cN1c=HJt}dI_ zKa4-&V3Q5<2mqmf?E*n4Zv`U<=!F7s(~AP+{_C3i)q*6rtQH zD2D@q%5@Ij2G)lYe1t6ObV<|d(i9GjI2xA&l)Wuiq-Bux+>zqEI5di|$1fl>G&n9M zIx;5V@zTo7C^s}9K;KXYgF$QSnNQCz4&ADUA!Hi62gD^A@b~`h>*DjLJe=&66y;GE zTyRwK`pah;>M9=l!-3D-?Oqf@`gCQ-cqw0_4T!-XS3SMByYcC;v3o6 z*m$|V;>t8s(KHMS4Gj$oiHnX(2Ni=)?;9(N_ISFgP?az!jEhg;#=DPW1H8Zhe?xsO z3L&}z2zx8tUJ^_yoiWE{_e|MdXoK*RZ?%%v!(jt>L$^AlQ%a>2D z478|Tdk%QI?xx#$eArUXD8HBkk%BexK&fg?Pe*-kNTiV5FQjA0s@IyD&2==4Etz0` z5y!&WQAZoEx3@J^NJznIn)$%(Oiqj>6wMvI3*^3z8fi&HO^cu)Ed+y?_YDX<8WIu{ z6U)iSZK$e{lZEFOT@w!a@;OzB;2WI0`I+e;uU%VB!N{B*7jweQK+|4C?*8_46ARWy zP|I3Z`8EN=g@kGK z$0ONM(Kl|i`M5Y}8SWAvEEJ@M%V8`G&Hl>xiXGPT<_TObZ+WC;MXTM8Yj ztx|6?viZBR0Dj3&=XCE#>a@xf$|5CS93>vtn$u;#uC`3=U<$Ks`fR#w3S8#a*e#Ra zOl1~x-6X2PHjB&121)q8b`xdJ<}pPA;CEei^KZ#rd}?+jKMn$Rb{)f8AKv?SFU<8d z4Gd{xwyai`0{Gqp9)W$g+2`RM}+8Xc0Hzv-VE6Doxv4bIF1`Gmha0!i#1 znp}7?d-Q17*}^J*XRS0u!Y?>tdU}Q(yjMyZbGEeU&Dy*&M$XpFZ*poX?0_o-Mrh=Y z-KxI?`C)s0Vb#j&N^WL6JC-vxHq5lNNJ>As@a$iD5OP#C79sq4#|pEZfNV@apxZues(Ks*M8#t`y~sAaG)$YmyW^FP_iosmR;7`T?b{y|sav<2yj^%k!ElMDKv4jpaw` zikKaAyYcCn;?o=iOvdL>{FkrSAh#I~mE3nEd~WW(zmF?YL382frK9^?jA*vwhYub!#=xZ;KbIBPGc=)hJ(-I$_lTw;lTcY z-rG|t(E(5ySYcKD`0xPTSc9NsJURPZH1WR>-^76CALaU9bHCJ~6WPQ7oSVtpmC4@% zE+d0)$?5et+1fOGzrOztGpYGZ_k+QEkLtOj-E%J(DP7i_Uh}k@hl>Z>`zLxvrhCVx zE82&>QW`B%I<2$#w3M6HDYt0p0^iGh?R^tR&h*hZ0?Ty1SxOfpO<C}#_FBAT|4yZH4#KUHEIq`a|fbJqx3fRmgg3<`5OAo(yfUD) z)YG!}KK%33he`-oD0rR!dL^GY20`FPrsse>e|L;QGex3tL@XLhR=;)wjQ24rWFJyS z4v8o0Y3U-#YT1P~AY1q$4F3G(g}LD_gjq-n|U;^FpHFBobK;hEB*l`}WPt z&;TD89ImTtpsJ*_%id{m{mtySKuv`#gCKWwbH&pg>Fv^@s^N(8CVE;Vk`m|iWuVN9 z2}Xh%Fi`>UG75*!I$tg%(ls*lde6dG8-u~=8yJvC#HhrK*Du$D{5@rm2t8eWRRtA>qx;gv zo5}t*sH|jRWhsVsdbYIk{PB#1sU8G|Qd6Ml=_tu78BX0>_#4?mgzwis5V?11v74+i`G7aKVrK?u zc{^fT&v74~Zxmcu@er_LM;Spa;i>je# z2p5T8A%klrYArMWkDaRkZev@r#k7ULaG9AO)?>zH{>#kF55mb0Gjpj;2y|Nh%hyaNPv&)TM>uN{KRUyO2#+8P>%Z&$HPYmC5B5!*UVC z(xpT+(jDrjXwLtJZl^{@hLev|k^b-b&hI{S?hbLYjfwHm$?3Ex$=O_vkrd4DPK^(D zcZKHiMgLej(-V(79(6|IN!9J;y2J(=~=OHEnKw zu8wD0ZDIDQANs-1|M|aRX%5!yLAX$-=jO7Ks=J;Am%Wur1y<@jlgVZ!T?bdLx-!t$ z6^;%YmJL%;z0)=@+GOq2SiG~lr?9ZxJj}Qo zj`yL$`r?O@U2VLqVMgEy|XL)o5#X)Reo}r{%~jKvA)buo_-LUk7cR1b`8A0C;Z~} zzMUOez}avv{M0|S9PXJ1{rK&{&{!5uBh9w1JxY9XGXchrE=7LlaQiYRz!^)|rDONP z%aRKARC@X3qhZ;!p_=*p^6%_zduz|YYdib?`0}Xkc#>QPp9;-lh5lsR4mPnzTZ@_6U(9O_)I3CK3a?i&LwY09#69ZBio;PgA& z`=PrhoAs6b(Putt-+FD0+}Hn8%X&R%^442Wf+laBi|qv9vg6^;ebeXmAG?8TUonO2 zdhWWc>;K8fT^9&Bt@ZfsXZN-KpK;e^gx6PwassPg)oUs__}WkZz_)$h54FaUe%v~e z2~59A`0RAzCx7I7e(LFGe)IFc`oll;z3=?OZ!o<4)jr4(!R>FH=|216mrl@OT^siL zq+j{}&c4wHL;CRE|FCD_{r{EwQy;azyC?SU?nqGHgKrdpDI8hgEJHhV`HPCCajbMZmT^4qOiKdJx!Ls0se3)()-#lWj4$kn{K>^6KqY2N z+is13Lv$>EIhq59u4Lh(>+#GYbE~~8GC2#D{SP18;4rzg^X>>tuXm^V(o3%GZoC#v zEOX(^O8*>fTh`|Ph)tC_Lo+_Vv**oS!DgWmU)dXd>fbxIUJd)??)le>PY{S3Jl%10 zk;;(DK|za))+gV0Xg~!$n=I@E9$!LqjwxTgdSfP2M7s@E3~~?|1mnPcH6w_F(!{oj zCt3-z3x6OOfC*g8j&bPVS?EbL&9LgSNh_u(>6~nEGE5CtHtVv+$tozULPkz8Ia%i< z7{P9^ipGm3D_g9hFtQE`rx*~z$_68YU9S@X9Pl?8#pGobrl7D2Spq0bp#l_yU@llP z0GyW$(3i{Qa6BZY;Rr&cL3-)ZgJ|Ygm$G`3H-nz(WRQ zlOG{sbnMFx|VN>rLJL7Nf8hCC~@7DG#;qJrT-}1+ow%&UT zI-|*^ZBG{~WBKxQws?QI0Q|AxMtr)aD6*2um8Npby`#BHy)&k5?7B9rHoOYOBy**7 zVd?(h%p05fU*6LDC+7)MZ#v)iJ%4&NQxmeq%Jq?gZCf91X?tgP=R~nmV#GpC&{Sjh z{UM;NT{lPH-xq?GS_Y>kDP}QW`su&E@z%#Tf9;cNLkoP3WuN}%)>Z(LjbGp1`Pz;r zntkiP#$Dl`{^v*Au0{gnj*RT{vFmT012YulQ)2ggGGBXq3VM)G-|V0hS_qvI^Ow00 zLN0dP)hqxP3|#f_KThnmAWVTVYt{Q7H_mDwYlT`(Ki#$|UZr@eBI#^huL%kz8Z@u3 z$VOGrYrIhw?Xsj*1d|f1lB8BdvnCj2Nv}u>MT`z5YBfPEi&jOnC_%3Z1|`_w5B4fX zfpb|jnszXv-2e+fRRvfAXB1H<;XHsCCCRACPTg*ZMuR3(vP9P*ghW9ibT-SN6HEZn zD&QvSCDCYtVDVtL%HSYCln#QGXsq54tOkHfc7s#g3Y5e{cD2geWx**+GDJb;U?<@u z5ov^2&{(V66xLrOSyU*aBv~v+N`kVnFpG3boM9Dw3~bP%>n=EyBn`r=1XH8HLDUcy z64|i%46l?(cJR?wLGM=Uf_Dg|MN#&T6MthbS@fP3TF{cG!+UkJasV<0GRd|}}29icaN47{*0lrFQg z3*}GFbhXFEA>>m3>o`gZ@^u@D4$r*HPc&WnprsT#nG2GcERrv zf9GNnqQ=H&H=l2VRyz{&H{w~?fOofcY{MHthtA%A5T6Ch!8=1RJ#cU2=MN8pa;tB$ zZ+_X<)Q?U)$TRZjd?iv~>Z1D6M-RI5tfia3wzcgQQv4J0R#VwI_*4JXvh|vO#7#PP{Ik_+pf)o#o-Hi;Co1{#4?TJYSr^wFLm3*135t{) z8LIMP@PzW3n*T}QV|uP*aeUpuj~Ikoe>2E6EnTSdFq@wl8_(ocYw%3Z4?#e)8KIaK z#hZkHB!!hdR&{_lkiHFuH>yDNf=L5WiW;vrU<4iPw5Zqh2DpI^BM5k+5Q3;7cTkd6 zmce2{2qhVu(O`MACaPsgV?{&I3DMVhLr@%Au?PuDDg=^PS+0mSgb)x&A?gyzrO{Xw zj3gr|3|3`9Z?Ljm6%+z4sDja;C2O@R5t>q~qDk{61xsdwku2bS-e{O^Loph%+mNgV zEY(C4s;x*+t&WvLUnWc`0owF9#iK}r8uU_wIz z6oN?_fuuSknzHTzCa2hf=2b8eY(C`&LP!vVM2YJ~2dN0Us9OzuRZC0JL~{K-d7s9c z6B{+hXJ%Llc)MmI-e2bUwNu>%iggIvInFA8|0r@l1avpR_ehRN?jzCY3eBR?#z)ev zCPRO7?Ji;99pw0>BCzW^R!@6tUo7sSr;BEAnH)>zmr6+OHio;{1PFrrBtDjm)fmGe{Dm1Xu52Xjc(kFWdHGMvcgJ#eIop8#|ASsnJ|fJZoNAER~KSsQ60-s zXIe&UI_WM;$$xlc;Q7tnFKp=j%~L}eT3TUMp#FtQ{TFt1AMVSo)c6m#cmC3mXpT{2 z&B|2xg=+m|=hOl#Z@fPA^Lq!ES?Ne?>bH;dEOQzpVg==IPKR%du1w{b7d~pa_IM?| zQvbPaT`zC(JN4y_t*Go6_=$gfutx3

FHK>7z$aork$vufi{&!=uy9Wmy!1Tj`T~ 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 literal 0 HcmV?d00001 diff --git a/tests/wpt/web-platform-tests/docs/assets/reftest_graph_example.svg b/tests/wpt/web-platform-tests/docs/assets/reftest_graph_example.svg new file mode 100644 index 00000000000..48e6488dbb4 --- /dev/null +++ b/tests/wpt/web-platform-tests/docs/assets/reftest_graph_example.svg @@ -0,0 +1,71 @@ + + + + + + +reftest_graph_example + + + +a.html + +a.html + + + +b.html + +b.html + + + +a.html->b.html + + +== + + + +c.html + +c.html + + + +a.html->c.html + + +== + + + +b1.html + +b1.html + + + +b.html->b1.html + + +== + + + +c1.html + +c1.html + + + +c.html->c1.html + + +!= + + + diff --git a/tests/wpt/web-platform-tests/docs/assets/sendpullrequest.png b/tests/wpt/web-platform-tests/docs/assets/sendpullrequest.png new file mode 100644 index 0000000000000000000000000000000000000000..971dd4fb35b127facd2891f221cec487e793cc0e GIT binary patch literal 2436 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 +

+ diff --git a/tests/wpt/web-platform-tests/docs/introduction.md b/tests/wpt/web-platform-tests/docs/introduction.md new file mode 100644 index 00000000000..501b11e776c --- /dev/null +++ b/tests/wpt/web-platform-tests/docs/introduction.md @@ -0,0 +1,206 @@ +--- +layout: page +title: Introduction +--- + +web-platform-tests is a W3C-coordinated effort to build a +cross-browser testsuite for the majority of +the [web platform][web-platform]; it excludes only CSS (whose +testsuite lives in [csswg-test][csswg-test]), ECMAScript (whose +testsuite lives in [test262][test262]), and WebGL (whose testsuite +lives in [WebGL][WebGL]). + +That said, csswg-test follows a superset of the policies of +web-platform-tests, so the documentation provided here should +similarly apply to it. Where extra policies apply, they are provided +in separate documents and linked from the appropriate section. + +## Help! + +If you get stuck or want clarification about anything, feel free to +ask on either the [mailing list][public-test-infra] or [IRC][] +([webclient][web irc], join channel `#testing`); IRC is generally +busiest during the European working day but frequently has people on +it at all times and should probably be the general first port of call +for any help. + + +## Testsuite Design + +The vast majority of the testsuite is formed of HTML pages, which can +be loaded in a browser and either programmatically provide a result or +provide a set of steps to run the test and obtain the result. + +The tests are, in general, short, cross-platform, and self-contained, +and should be easy to run in any browser. + + +## Test Layout + +Each top level directory in the repository corresponds to tests for a +single specification. For W3C specs, these directories are typically +named after the shortname of the spec (i.e. the name used for snapshot +publications under `/TR/`); for WHATWG specs, they are typically named +after the subdomain of the spec (i.e. trimming `.spec.whatwg.org` from +the URL); for other specs, something deemed sensible is used. In any +case, there are occasional exceptions for historic reasons. + +Within the specification-specific directory there are two common ways +of laying out tests: the first is a flat structure which is sometimes +adopted for very short specifications; the alternative is a nested +structure with each subdirectory corresponding to the id of a heading +in the specification. The latter provides some implicit metadata about +the part of a specification being tested according to its location in +the filesystem, and is preferred for larger specifications. + + +## Test Types + +The testsuite has a few types of tests, outlined below: + +* [testharness.js][] tests, which are run + through a JS harness and report their result back with JS. + +* [Reftests][], which render two (or more) web + pages and combine them with equality assertions about their + rendering (e.g., A.html and B.html must render identically), run + either by the user switching between tabs/windows and trying to + observe differences or through automated scripts. + +* [Visual tests][visual] which display a page where the + result is determined either by a human looking at it or by comparing + it with a saved screenshot for that user agent on that platform. + +* [Manual tests][manual], which rely on a human to run + them and determine their result. + +* WebDriver tests, which are used for testing the WebDriver protocol + itself. + + +## GitHub + +GitHub is used both for issue tracking and test submissions; we +provide [a limited introduction][github-intro] to both git and +GitHub. + +Pull Requests are automatically labeled based on the directory the +files they change are in; there are also comments added automatically +to notify a number of people: this list of people comes from OWNERS +files in those same directories and their parents (i.e., they work +recursively: `a/OWNERS` will get notified for `a/foo.html` and +`a/b/bar.html`). + +If you want to be notified about changes to tests in a directory, feel +free to add yourself to the OWNERS file: there's no requirement to own +anything as a result! + + +## Local Setup + +The tests are designed to be run from your local computer. The test +environment requires [Python 2.7+](http://www.python.org/downloads) (but not Python 3.x). +You will also need a copy of OpenSSL. + +On Windows, be sure to add the Python directory (`c:\python2x`, by default) to +your `%Path%` [Environment Variable](http://www.computerhope.com/issues/ch000549.htm), +and read the [Windows Notes](#windows-notes) section below. + +To get the tests running, you need to set up the test domains in your +[`hosts` file](http://en.wikipedia.org/wiki/Hosts_%28file%29%23Location_in_the_file_system). The +following entries are required: + +``` +127.0.0.1 web-platform.test +127.0.0.1 www.web-platform.test +127.0.0.1 www1.web-platform.test +127.0.0.1 www2.web-platform.test +127.0.0.1 xn--n8j6ds53lwwkrqhv28a.web-platform.test +127.0.0.1 xn--lve-6lad.web-platform.test +0.0.0.0 nonexistent-origin.web-platform.test +``` + +If you are behind a proxy, you also need to make sure the domains above are +excluded from your proxy lookups. + +Because web-platform-tests uses git submodules, you must ensure that +these are up to date. In the root of your checkout, run: + +``` +git submodule update --init --recursive +``` + +The test environment can then be started using + + ./serve + +This will start HTTP servers on two ports and a websockets server on +one port. By default one web server starts on port 8000 and the other +ports are randomly-chosen free ports. Tests must be loaded from the +*first* HTTP server in the output. To change the ports, copy the +`config.default.json` file to `config.json` and edit the new file, +replacing the part that reads: + +``` +"http": [8000, "auto"] +``` + +to some port of your choice e.g. + +``` +"http": [1234, "auto"] +``` + +If you installed OpenSSL in such a way that running `openssl` at a +command line doesn't work, you also need to adjust the path to the +OpenSSL binary. This can be done by adding a section to `config.json` +like: + +``` +"ssl": {"openssl": {"binary": "/path/to/openssl"}} +``` + +### Windows Notes + +Running wptserve with SSL enabled on Windows typically requires +installing an OpenSSL distribution. +[Shining Light](https://slproweb.com/products/Win32OpenSSL.html) +provide a convenient installer that is known to work, but requires a +little extra setup, i.e.: + +Run the installer for Win32_OpenSSL_v1.1.0b (30MB). During installation, +change the default location for where to Copy OpenSSL Dlls from the +System directory to the /bin directory. + +After installation, ensure that the path to OpenSSL (typically, +this will be `C:\OpenSSL-Win32\bin`) is in your `%Path%` +[Environment Variable](http://www.computerhope.com/issues/ch000549.htm). +If you forget to do this part, you will most likely see a 'File Not Found' +error when you start wptserve. + +Finally, set the path value in the server configuration file to the +default OpenSSL configuration file location. To do this, +copy `config.default.json` in the web-platform-tests root to `config.json`. +Then edit the JSON so that the key `ssl/openssl/base_conf_path` has a +value that is the path to the OpenSSL config file (typically this +will be `C:\\OpenSSL-Win32\\bin\\openssl.cfg`). + +Alternatively, you may also use +[Bash on Ubuntu on Windows](https://msdn.microsoft.com/en-us/commandline/wsl/about) +in the Windows 10 Anniversary Update build, then access your windows +partition from there to launch wptserve. + + +[web-platform]: https://platform.html5.org +[test262]: https://github.com/tc39/test262 +[csswg-test]: https://github.com/w3c/csswg-test +[webgl]: https://github.com/KhronosGroup/WebGL +[public-test-infra]: https://lists.w3.org/Archives/Public/public-test-infra/ +[IRC]: irc://irc.w3.org:6667/testing +[web irc]: http://irc.w3.org + +[reftests]: {{ site.baseurl }}{% link _writing-tests/reftests.md %} +[testharness.js]: {{ site.baseurl }}{% link _writing-tests/testharness.md %} +[visual]: {{ site.baseurl }}{% link _writing-tests/visual.md %} +[manual]: {{ site.baseurl }}{% link _writing-tests/manual.md %} +[github-intro]: {{ site.baseurl }}{% link _appendix/github-intro.md %} diff --git a/tests/wpt/web-platform-tests/docs/manual-test.md b/tests/wpt/web-platform-tests/docs/manual-test.md deleted file mode 100644 index 4b5469589fe..00000000000 --- a/tests/wpt/web-platform-tests/docs/manual-test.md +++ /dev/null @@ -1,72 +0,0 @@ -Some testing scenarios are intrinsically difficult to automate and -require a human to run the test and check the pass condition. - -## When to Write Manual Tests - -Whenever possible it's best to write a fully automated test. For a -browser vendor it's possible to run an automated test hundreds of -times a day, but manual tests are likely to be run a handful of times -a year. This makes them significantly less useful for catching -regressions than automated tests. - -However, there are certain scenarios in which this is not yet -possible. For example: - -* Tests that require interaction with browser security UI (e.g. a test - in which a user refuses a geolocation permissions grant) - -* Tests that require interaction with the underlying OS e.g. tests for - drag and drop from the desktop onto the browser - -* Tests that require non-default browser configuration e.g. images - disabled - -* Tests that require interaction with the physical environment - e.g. tests that the vibration API causes the device to vibrate or - that various sensor APIs respond in the expected way. - -There are also some rare cases where it isn't possible to write a layout -test as a reftest, and a manual test must be written instead. - -## Requirements for a Manual Test - -Manual tests are distinguished by their filename; all manual tests -have filenames of the form `name-manual.ext` i.e. a `-manual` -suffix after the main filename but before the extension. - -Manual tests must be fully -[self-describing](test-style-guielines.html#self-describing-tests). It -is particularly important for these tests that it is easy to determine -the result from the information presented to the tester, because a -tester may have hundreds of tests to get through, and little -understanding of the features that they are testing. Therefore -minimalism is a virtue. An ideal self-describing test will have: - -* Step-by-step instructions for performing the test (if required) - -* A clear statement of the test outcome (if it can be automatically - determined after some setup) or of how to determine the outcome. - -Any information other than this (e.g. quotes from the spec) should be -avoided. - -## Using testharness.js for Manual Tests - -A convenient way to present the results of a test that can have the -result determined by script after some manual setup steps is to use -testharness.js to determine and present the result. In this case one -must pass `{explicit_timeout: true}` in a call to `setup()` in order -to disable the automatic timeout of the test. For example: - -```html - -Manual click on button triggers onclick handler - - - -

Click on the button below. If a "PASS" result appears the test -passes, otherwise it fails

- -``` diff --git a/tests/wpt/web-platform-tests/docs/reftests.md b/tests/wpt/web-platform-tests/docs/reftests.md deleted file mode 100644 index f096bc0c667..00000000000 --- a/tests/wpt/web-platform-tests/docs/reftests.md +++ /dev/null @@ -1,152 +0,0 @@ -A reftest is a test that compares the visual output of one file (the -test case) with the output of one or more other files (the -references). The test and the reference must be carefully written so -that when the test passes they have identical rendering, but different -rendering when the test fails. - -## How to Run Reftests - -Reftests can be run manually simply by opening the test and the -reference file in multiple windows or tabs and either placing them -side-by side or flipping between the two. In automation the comparison -is done in an automated fashion, which can lead to differences too -small for the human eye to notice causing tests to fail. - -## Components of a Reftest - -In the simplest case, a reftest consists of a pair of files called the -*test* and the *reference*. - -The *test* file is the one that makes use of the technology being -tested. It also contains a `link` element with `rel="match"` or -`rel="mismatch"` and `href` attribute pointing to the *reference* file -e.g. ``. - -The *reference* file is typically written to be as simple as possible, -and does not use the technology under test. It is desirable that the -reference be rendered correctly even in UAs with relatively poor -support for CSS and no support for the technology under test. - -When the `` element in the *test* has `rel="match"`, the test -only passes if the *test* and *reference* have pixel-perfect identical -rendering. `rel="mismatch"` inverts this so the test only passes when -the renderings differ. - -In general the files used in a reftest should follow the -[format][format] and [style][style] guidelines. The *test* should also -be [self-describing][selfdesc], to allow a human to determine whether -the the rendering is as expected. - -Note that references can be shared between tests; this is strongly -encouraged since it permits optimizations when running tests. - -## Controlling When Comparison Occurs - -By default reftest screenshots are taken in response to the `load` -event firing. In some cases it is necessary to delay the screenshot -later than this, for example becase some DOM manipulation is -required to set up the desired test conditions. To enable this, the -test may have a `class="reftest-wait"` attribute specified on the root -element. This will cause the screenshot to be delayed until the `load` -event has fired and the `reftest-wait` class has been removed from the -root element (technical note: the implementation in wptrunner uses -mutation observers so the screenshot will be triggered in the -microtask checkpoint after the class is removed. Because the harness -isn't synchronized with the browser event loop it is dangerous to rely -on precise timing here). - -## Matching Multiple References - -Sometimes it is desirable for a file to match multiple references or, -in rare cases, to allow it to match more than one possible -reference. Note: *this is not currently supported by test runners and -so best avoided if possible until that support improves*. - -Multiple references linked from a single file are interpreted as -multiple possible renderings for that file. `` -elements in a reference create further conditions that must be met in -order for the test to pass. For example, consider a situation where -`a.html` has `` and ``, `b.html` has `` and `c.html` -has ``. In this case, to pass we must -either have `a.html`, `b.html` and `b1.html` all rendering identically, or -`a.html` and `c.html` rendering identically, but `c.html` rendering -differently from `c1.html`. - -## Fuzzy Matching - -In some situations a test may have subtle differences in rendering -compared to the reference due to e.g. antialiasing. This may cause the -test to pass on some platforms but fail on others. In this case some -affordance for subtle discrepancies is desirable. However no mechanism -to allow this has yet been standardized. - -## Limitations - -In some cases, a test cannot be a reftest. For example, there is no -way to create a reference for underlining, since the position and -thickness of the underline depends on the UA, the font, and/or the -platform. However, once it's established that underlining an inline -element works, it's possible to construct a reftest for underlining -a block element, by constructing a reference using underlines on a -`````` that wraps all the content inside the block. - -## Example Reftests - -These examples are all [self-describing][selfdesc] tests as they -each have a simple statement on the page describing how it should -render to pass the tests. - -### HTML example - -### Test File - -This test verifies that a right-to-left rendering of **SAW** within a -`````` element displays as **WAS**. - -([view page rendering][html-reftest-example]) - -```html - - -BDO element dir=rtl - - - -

Pass if you see WAS displayed below.

-SAW -``` - -### Reference File - -The reference file must look exactly like the test file, -except that the code behind it is different. - -* All metadata is removed. -* The ```title``` need not match. -* The markup that created the actual test data is - different: here, the same effect is created with - very mundane, dependable technology. - -([view page rendering][html-reffile-example]) - -```html - - -HTML Reference File -

Pass if you see WAS displayed below.

-

WAS

-``` - -[testharness]: ./testharness-documentation.html -[format]: ./test-format-guidelines.html -[style]: ./test-style-guidelines.html -[selfdesc]: ./test-style-guidelines.html#self-describing-tests -[reference-links]: ./test-templates.html#reference-links -[html-reftest-example]: ./html-reftest-example.html -[html-reffile-example]: ./html-reffile-example.html -[css-reftest-example]: http://test.csswg.org/source/css21/borders/border-bottom-applies-to-009.xht -[css-reffile-example]: http://test.csswg.org/source/css21/borders/border-bottom-applies-to-001-ref.xht -[svg-reftest-example]: http://test.csswg.org/source/css-transforms-1/translate/svg-translate-001.html -[svg-reffile-example]: http://test.csswg.org/source/css-transforms-1/translate/reference/svg-translate-ref.html -[indicating-failure]: ./test-style-guidelines.html#failure diff --git a/tests/wpt/web-platform-tests/docs/review-checklist.md b/tests/wpt/web-platform-tests/docs/review-checklist.md deleted file mode 100644 index 70ffb81bc3c..00000000000 --- a/tests/wpt/web-platform-tests/docs/review-checklist.md +++ /dev/null @@ -1,128 +0,0 @@ -When reviewing a test, make sure the test follows the -[format][format] and [style][style] guidelines. - -In addition, the test should be checked for the following: - -## All tests - -The test passes when it's supposed to pass - - -The test fails when it's supposed to fail - - -The test is testing what it thinks it's testing - - -The spec backs up the expected behavior in the test. - - -The test is automated as either [reftest][reftest] or a -[script test][scripttest] unless there's a very good reason why the -test must be manual. - - -The test does not use external resources. - - -The test does not use proprietary features (vendor-prefixed or otherwise). - - -## Reftests Only - -The test has a [self-describing][selftest] statement - - -The self-describing statement is accurate, precise, simple, and -self-explanatory. Your mother/husband/roommate/brother/bus driver -should be able to say whether the test passed or failed within a few -seconds, and not need to spend several minutes thinking or asking -questions. - - -The reference file is accurate and will render pixel-perfect -identically to the test on all platforms. - - -The reference file uses a different technique that won't fail in -the same way as the test. - - -The title is descriptive but not too wordy. - - -The test is as cross-platform as reasonably possible, working -across different devices, screen resolutions, paper sizes, etc. If -there are limitations (e.g. the test will only work on 96dpi -devices, or screens wider than 200 pixels) that these are documented -in the instructions. - - -## Script Tests Only - - -The test uses the most specific asserts possible (e.g. doesn't use -`assert_true` for everything). - - -The number of tests in each file and the test names are consistent -across runs and browsers. It is best to avoid the pattern where there is -a test that asserts that the feature is supported and bails out without -running the rest of the tests in the file if it isn't. - - -The test avoids patterns that make it less likely to be stable. -In particular, tests should avoid setting internal timeouts, since the -time taken to run it may vary on different devices; events should be used -instead (if at all possible). - - -The test uses `idlharness.js` if it covers the use case. - - -Tests in a single file are separated by one empty line. - - -## In-depth Checklist - - -A test does not use self-closing start tag ("/" (U+002F)) when using the -HTML syntax. - - -The test does not use the Unicode byte order mark (BOM U+FEFF). The test -uses Unix line endings (LF, no CR). The executable bit is not set -unnecessarily. - - -For indentation, spaces are preferred over tabs. - - -The test does not contain trailing whitespace (whitespace at the end of -lines). - - -The test does not contain commented-out code. - - -The test does not use `console.*` methods for anything. The -[script test][scripttest] harness never relies on `console.*` methods in -any way, and so use of `console.*` methods in tests is usually just the -equivalent of extra `printf`s in production code; i.e., leftover debugging -that isn't actually useful to the next person running the test. It also -introduces useless overhead when running tests in automation. - - -The test is placed in the relevant directory, based on the /TR latest -version link if available. - - -If the test needs code running on the server side, the server code must -be written in python, and the python code must be reviewed carefully to -ensure it isn't doing anything dangerous. - -[format]: ./test-format-guidelines.html -[style]: ./test-style-guidelines.html -[reftest]: ./reftests.html -[scripttest]: ./testharness-documentation.html -[selftest]: ./test-style-guidelines.html#self-describing diff --git a/tests/wpt/web-platform-tests/docs/review-process.md b/tests/wpt/web-platform-tests/docs/review-process.md deleted file mode 100644 index 5561a67bffe..00000000000 --- a/tests/wpt/web-platform-tests/docs/review-process.md +++ /dev/null @@ -1,39 +0,0 @@ -## Test Review Policy - -In order to encourage a high level of quality in the W3C test -suites, test contributions must be reviewed by a peer. - -The reviewer can be anyone (other than the original test author) that -has the required experience with both the spec under test and with the -test [format][format] and [style][style] guidelines. Review must -happen in public, but the exact review location is flexible. In -particular if a vendor is submitting tests that have already been -reviewed in their own review system, that review may be carried -forward, as long as the original review is clearly linked in the -GitHub pull request. - -To assist with test reviews, a [review checklist][review-checklist] -is available. - -## Review Tools - -All new code submissions must use the GitHub pull request -workflow. The GitHub UI for code review may be used, but other tools -may also be used as long as the review is clearly linked. - -## Labels - -Pull requests get automatically labelled in the GitHub repository. Check -out the [list of labels in Github][labels] -to see the open pull requests for a given specification or a given Working Group. - -## Status - -The -[web-platform-tests dashboard](http://testthewebforward.org/dashboard/#all) -shows the number of open review requests, and can be filtered by testsuite. - -[format]: ./test-format-guidelines.html -[style]: ./test-style-guidelines.html -[review-checklist]: ./review-checklist.html -[labels]: https://github.com/w3c/web-platform-tests/labels diff --git a/tests/wpt/web-platform-tests/docs/running_tests.md b/tests/wpt/web-platform-tests/docs/running_tests.md deleted file mode 100644 index 98fcd413580..00000000000 --- a/tests/wpt/web-platform-tests/docs/running_tests.md +++ /dev/null @@ -1,34 +0,0 @@ -In simple cases individual tests can be run by simply loading the page -in a browser window. For running larger groups of tests, or running -tests frequently, this is not a practical approach, and several better -options exist. - -## From Inside a Browser - -For running multiple tests inside a browser, there is the test runner, -located at - - /tools/runner/index.html - -This allows all the tests, or those matching a specific prefix -(e.g. all tests under `/dom/`) to be run. For testharness.js tests, -the results will be automatically collected, whilst the runner -provides a simple UI for manually comparing reftest rendering and -running manual tests. - -Because it runs entirely in-browser, this runner cannot deal with -edge-cases like tests that cause the browser to crash or hang. - -## By Automating the Browser - -For automated test running designed to be robust enough to use in a CI -environment, the [wptrunner](http://github.com/w3c/wptrunner) test runner -can be used. This is a test runner written in Python and designed to -control the browser from the outside using some remote control -protocol such as WebDriver. This allows it to handle cases such as the -browser crashing that cannot be handled by an in-browser harness. It -also has the ability to automatically run both testharness-based tests -and reftests. - -Full instructions for using wptrunner are provided in its own -[documentation](http://wptrunner.readthedocs.org). diff --git a/tests/wpt/web-platform-tests/docs/test-format-guidelines.md b/tests/wpt/web-platform-tests/docs/test-format-guidelines.md deleted file mode 100644 index d3e75db1133..00000000000 --- a/tests/wpt/web-platform-tests/docs/test-format-guidelines.md +++ /dev/null @@ -1,346 +0,0 @@ -This page describes the available test types and the requirements for -authoring that apply to all test types. There is also a supplementary -[guide to writing good testcases](test-style-guidelines.html). - -## Test Locations - -Each top level directory in the repository corresponds to tests for a -single specification. For W3C specs, these directories are named after -the shortname of the spec (i.e. the name used for snapshot -publications under `/TR/`). - -Within the specification-specific directory there are two common ways -of laying out tests. The first is a flat structure which is sometimes -adopted for very short specifications. The alternative is a nested -structure with each subdirectory corresponding to the id of a heading -in the specification. This layout provides some implicit metadata -about the part of a specification being tested according to its -location in the filesystem, and is preferred for larger -specifications. - -When adding new tests to existing specifications, try to follow the -structure of existing tests. - -Because of path length limitations on Windows, test paths must be less -that 150 characters relative to the test root directory (this gives -vendors just over 100 characters for their own paths when running in -automation). - -## Choosing the Test Type - -Tests should be written using the mechanism that is most conducive to -running in automation. In general the following order of preference holds: - -* [idlharness.js](testharness-idlharness.html) tests - for testing - anything in a WebIDL block. - -* [testharness.js](testharness.html) tests - for any test that can be - written using script alone. - -* [Reftests][reftests] - for most tests of rendering. - -* WebDriver tests - for testing the webdriver protocol itself or (in - the future) for certain tests that require access to privileged APIs. - -* [Manual tests][manual-tests] - as a last resort for anything that can't be tested - using one of the above techniques. - -Some scenarios demand certain test types. For example: - -* Tests for layout will generally be reftests. In some cases it will - not be possible to construct a reference and a test that will always - render the same, in which case a manual test, accompanied by - testharness tests that inspect the layout via the DOM must be - written. - -* Features that require human interaction for security reasons - (e.g. to pick a file from the local filesystem) typically have to be - manual tests. - -## General Test Design Requirements - -### Short - -Tests should be as short as possible. For reftests in particular -scrollbars at 800×600px window size must be avoided unless scrolling -behaviour is specifically being tested. For all tests extraneous -elements on the page should be avoided so it is clear what is part of -the test (for a typical testharness test, the only content on the page -will be rendered by the harness itself). - -### Minimal - -Tests should generally avoid depending on edge case behaviour of -features that they don't explicitly intend to test. For example, -except where testing parsing, tests should contain no -[parse errors][validator]. Of course tests which intentionally address -the interactions between multiple platform features are not only -acceptable but encouraged. - -### Cross-platform - -Tests should be as cross-platform as reasonably possible, working -across different devices, screen resolutions, paper sizes, etc. -Exceptions should document their assumptions. - -### Self-Contained - -Tests must not depend on external network resources, including -w3c-test.org. When these tests are run on CI systems they are -typically configured with access to external resources disabled, so -tests that try to access them will fail. Where tests want to use -multiple hosts this is possible thorough a known set of subdomains and -features of wptserve (see -["Tests Involving Multiple Origins"](#tests-involving-multiple-origins)). - -## File Names - -Generally file names should be somewhat descriptive of what is being -tested; very generic names like `001.html` are discouraged. A common -format, required by CSS tests, is described in -[CSS Naming Conventions](css-naming.html). - -## File Formats - -Tests must be HTML, XHTML or SVG files. - -Note: For CSS tests, the test source will be parsed and -re-serialized. This re-serialization will cause minor changes to the -test file, notably: attribute values will always be quoted, whitespace -between attributes will be collapsed to a single space, duplicate -attributes will be removed, optional closing tags will be inserted, -and invalid markup will be normalized. If these changes should make -the test inoperable, for example if the test is testing markup error -recovery, add the [flag][requirement-flags] `asis` to prevent -re-serialization. This flag will also prevent format conversions so it -may be necessary to provide alternate versions of the test in other -formats (XHTML, HTML, etc.) - -## Character Encoding - -Except when specifically testing encoding, tests must be encoded in -UTF-8, marked through the use of e.g. ``, or in -pure ASCII. - -## Support files - -Various support files are available in in the `/common/` and `/media/` -directories (web-platform-tests) and `/support/` (CSS). Reusing -existing resources is encouraged where possible, as is adding -generally useful files to these common areas rather than to specific -testsuites. - -For CSS tests the following standard images are available in the -support directory: - - * 1x1 color swatches - * 15x15 color swatches - * 15x15 bordered color swatches - * assorted rulers and red/green grids - * a cat - * a 4-part picture - -## Tools -Sometimes you may want to add a script to the repository that's meant -to be used from the command line, not from a browser (e.g., a script -for generating test files). If you want to ensure (e.g., or security -reasons) that such scripts won't be handled by the HTTP server, but -will instead only be usable from the command line, then place them -in either: - -* the `tools` subdir at the root of the repository, or -* the `tools` subdir at the root of any top-level directory in the - repo which contains the tests the script is meant to be used with - -Any files in those `tools` directories won't be handled by the HTTP -server; instead the server will return a 404 if a user navigates to -the URL for a file within them. - -If you want to add a script for use with a particular set of tests -but there isn't yet any `tools` subdir at the root of a top-level -directory in the repository containing those tests, you can create -a `tools` subdir at the root of that top-level directory and place -your scripts there. - -For example, if you wanted to add a script for use with tests in the -`notifications` directory, create the `notifications/tools` subdir -and put your script there. - -## Style Rules - -A number of style rules should be applied to the test file. These are -not uniformly enforced throughout the existing tests, but will be for -new tests. Any of these rules may be broken if the test demands it: - - * No trailing whitespace - - * Use spaces rather than tabs for indentation - - * Use UNIX-style line endings (i.e. no CR characters at EOL). - -## Advanced Testing Features - -Certain test scenarios require more than just static HTML -generation. This is supported through the -[wptserve](http://github.com/w3c/wptserve) server. Several scenarios -in particular are common: - -### Standalone workers tests - -Tests that only require assertions in a dedicated worker scope can use -standalone workers tests. In this case, the test is a JavaScript file -with extension `.worker.js` that imports `testharness.js`. The test can -then use all the usual APIs, and can be run from the path to the -JavaScript file with the `.js` removed. - -For example, one could write a test for the `FileReaderSync` API by -creating a `FileAPI/FileReaderSync.worker.js` as follows: - - importScripts("/resources/testharness.js"); - test(function () { - var blob = new Blob(["Hello"]); - var fr = new FileReaderSync(); - assert_equals(fr.readAsText(blob), "Hello"); - }, "FileReaderSync#readAsText."); - done(); - -This test could then be run from `FileAPI/FileReaderSync.worker`. - -### Multi-global tests - -Tests for features that exist in multiple global scopes can be written in a way -that they are automatically run in a window scope as well as a dedicated worker -scope. -In this case, the test is a JavaScript file with extension `.any.js`. -The test can then use all the usual APIs, and can be run from the path to the -JavaScript file with the `.js` replaced by `.worker` or `.html`. - -For example, one could write a test for the `Blob` constructor by -creating a `FileAPI/Blob-constructor.any.js` as follows: - - test(function () { - var blob = new Blob(); - assert_equals(blob.size, 0); - assert_equals(blob.type, ""); - assert_false(blob.isClosed); - }, "The Blob constructor."); - -This test could then be run from `FileAPI/Blob-constructor.any.worker` as well -as `FileAPI/Blob-constructor.any.html`. - -### Tests Involving Multiple Origins - -In the test environment, five subdomains are available; `www`, `www1`, -`www2`, `天気の良い日` and `élève`. These must be used for -cross-origin tests. In addition two ports are available for http and -one for websockets. Tests must not hardcode the hostname of the server -that they expect to be running on or the port numbers, as these are -not guaranteed by the test environment. Instead tests can get this -information in one of two ways: - -* From script, using the `location` API. - -* By using a textual substitution feature of the server. - -In order for the latter to work, a file must either have a name of the -form `{name}.sub.{ext}` e.g. `example-test.sub.html` or be referenced -through a URL containing `pipe=sub` in the query string -e.g. `example-test.html?pipe=sub`. The substitution syntax uses `{{ }}` -to delimit items for substitution. For example to substitute in -the host name on which the tests are running, one would write: - - {{host}} - -As well as the host, one can get full domains, including subdomains -using the `domains` dictionary. For example: - - {{domains[www]}} - -would be replaced by the fully qualified domain name of the `www` -subdomain. Ports are also available on a per-protocol basis e.g. - - {{ports[ws][0]}} - -is replaced with the first (and only) websockets port, whilst - - {{ports[http][1]}} - -is replaced with the second HTTP port. - -The request URL itself can be used as part of the substitution using -the `location` dictionary, which has entries matching the -`window.location` API. For example - - {{location[host]}} - -is replaced by `hostname:port` for the current request. - -### Tests Requiring Special Headers - -For tests requiring that a certain HTTP header is set to some static -value, a file with the same path as the test file except for an an -additional `.headers` suffix may be created. For example for -`/example/test.html`, the headers file would be -`/example/test.html.headers`. This file consists of lines of the form - - header-name: header-value - -For example - - Content-Type: text/html; charset=big5 - -To apply the same headers to all files in a directory use a -`__dir__.headers` file. This will only apply to the immediate -directory and not subdirectories. - -Headers files may be used in combination with substitutions by naming -the file e.g. `test.html.sub.headers`. - -### Tests Requiring Full Control Over The HTTP Response - -For full control over the request and response the server provides the -ability to write `.asis` files; these are served as literal HTTP -responses. It also provides the ability to write python scripts that -have access to request data and can manipulate the content and timing -of the response. For details see the -[wptserve documentation](http://wptserve.readthedocs.org). - -## CSS-Specific Requirements - -Tests for CSS specs have some additional requirements that have to be -met in order to be included in an official specification testsuite. - -* [Naming conventions](css-naming.html) - -* [User style sheets](css-user-styles.html) - -* [Metadata](css-metadata.html) - -## Lint tool - -We have a lint tool for catching common mistakes in test files. You can run -it manually by starting the `lint` executable from the root of your local -web-platform-tests working directory like this: - -``` -./lint -``` - -The lint tool is also run automatically for every submitted pull request, -and reviewers will not merge branches with tests that have lint errors, so -you must fix any errors the lint tool reports. For details on doing that, -see the [lint-tool documentation][lint-tool]. - -But in the unusual case of error reports for things essential to a certain -test or that for other exceptional reasons shouldn't prevent a merge of a -test, update and commit the `lint.whitelist` file in the web-platform-tests -root directory to suppress the error reports. For details on doing that, -see the [lint-tool documentation][lint-tool]. - -[lint-tool]: ./lint-tool.html -[reftests]: ./reftests.html -[manual-tests]: ./manual-test.html -[test-templates]: ./test-templates.html -[requirement-flags]: ./test-templates.html#requirement-flags -[testharness-documentation]: ./testharness-documentation.html -[validator]: http://validator.w3.org diff --git a/tests/wpt/web-platform-tests/docs/test-style-guidelines.md b/tests/wpt/web-platform-tests/docs/test-style-guidelines.md deleted file mode 100644 index e8ccbd9face..00000000000 --- a/tests/wpt/web-platform-tests/docs/test-style-guidelines.md +++ /dev/null @@ -1,437 +0,0 @@ -## Key Aspects of a Well Designed Test - -A badly written test can lead to false passes or false failures, as -well as inaccurate interpretations of the specs. Therefore it is -important that the tests all be of a high standard. All tests must -follow the [test format guidelines][test-format] and well designed -tests should meet the following criteria: - -* **The test passes when it's supposed to pass** -* **The test fails when it's supposed to fail** -* **It's testing what it claims to be testing** - -## Self-Describing Tests - -As the tests are likely to be used by many other people, making them -easy to understand is very important. Ideally, tests are written as -self-describing, which is a test page that describes what the page -should look like when the test has passed. A human examining the -test page can then determine from the description whether the test -has passed or failed. - -_Note: The terms "the test has passed" and "the test has failed" -refer to whether the user agent has passed or failed a -particular test — a test can pass in one web browser and fail in -another. In general, the language "the test has passed" is used -when it is clear from context that a particular user agent is -being tested, and the term "this-or-that-user-agent has passed -the test" is used when multiple user agents are being compared._ - -Self-describing tests have some advantages: - -* They can be run easily on any layout engine. -* They can test areas of the spec that are not precise enough to be - comparable to a reference rendering. (For example, underlining - cannot be compared to a reference because the position and - thickness of the underline is UA-dependent.) -* Failures can (should) be easily determined by a human viewing the - test without needing special tools. - -### Manual Tests - -While it is highly encouraged to write automatable tests either as [ -reftests][reftests] or [script tests][scripttests], in rare cases a -test can only be executed manually. All manual tests must be -self-describing tests. Additionally, manual tests should be: - -* Easy & quick to determine the result -* Self explanatory & not require an understanding of the - specification to determine the result -* Short (a paragraph or so) and certainly not require scrolling - on even the most modest of screens, unless the test is - specifically for scrolling or paginating behaviour. - -### Reftests - -[Reftests][reftests] should be self-describing tests wherever -possible. This means the the descriptive statement included in the -test file must also appear in the reference file so their renderings -may be automatically compared. - -### Script Tests - -[Script tests][scripttests] may also be self-describing, but rather -than including a supplemental statement on the page, this is -generally done in the test results output from ```testharness.js```. - -### Self-Describing Test Examples - -The following are some examples of self-describing tests, using some -common [techniques](#techniques) to identify passes: - -* [Identical Renderings][identical-renderings] -* [Green Background][green-background] -* [No Red 1][no-red-1] -* [No Red 2][no-red-2] -* [Described Alignment][described-alignment] -* [Overlapping][overlapping] -* [Imprecise Description 1][imprecise-1] -* [Imprecise Description 2][imprecise-2] - -## Techniques - -In addition to the [self describing](#self-describing) statement -visible in the test, there are many techniques commonly used to add -clarity and robustness to tests. Particularly for reftests, which -rely wholly on how the page is rendered, the following should be -considered and used when designing new tests. - -### Indicating success - -#### The green paragraph - -This is the simplest form of test, and is most often used when -testing the things that are independent of the rendering, like -the CSS cascade or selectors. Such tests consist of a single line of -text describing the pass condition, which will be one of the -following: - -This line should be green. - -This line should have a green - border. - -This line should have - a green background. - -#### The green page - -This is a variant on the green paragraph test. There are certain -parts of CSS that will affect the entire page, when testing these -this category of test may be used. Care has to be taken when writing -tests like this that the test will not result in a single green -paragraph if it fails. This is usually done by forcing the short -descriptive paragraph to have a neutral color (e.g. white). - -This [example][green-page] is poorly designed, because it does not -look red when it has failed. - -#### The green square - -This is the best type of test for cases where a particular rendering -rule is being tested. The test usually consists of two boxes of some -kind that are (through the use of positioning, negative margins, -zero line height, transforms, or other mechanisms) carefully placed -over each other. The bottom box is colored red, and the top box is -colored green. Should the top box be misplaced by a faulty user -agent, it will cause the red to be shown. (These tests sometimes -come in pairs, one checking that the first box is no bigger than the -second, and the other checking the reverse.) These tests frequently -look like: - -

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

-
- -#### The green paragraph and the blank page - -These tests appear to be identical to the green paragraph tests -mentioned above. In reality, however, they actually have more in -common with the green square tests, but with the green square -colored white instead. This type of test is used when the -displacement that could be expected in the case of failure is -likely to be very small, and so any red must be made as obvious as -possible. Because of this, test would appear totally blank when the -test has passed. This is a problem because a blank page is the -symptom of a badly handled network error. For this reason, a single -line of green text is added to the top of the test, reading -something like: - -

This line should be green and there should -be no red on this page.

-[Example][green-paragraph] - -#### The two identical renderings - -It is often hard to make a test that is purely green when the test -passes and visibly red when the test fails. For these cases, it may -be easier to make a particular pattern using the feature that is -being tested, and then have a reference rendering next to the test -showing exactly what the test should look like. - -The reference rendering could be either an image, in the case where -the rendering should be identical, to the pixel, on any machine, or -the same pattern made using different features. (Doing the second -has the advantage of making the test a test of both the feature -under test and the features used to make the reference rendering.) - -[Visual Example 1][identical-visual-1] - -[Visual Example 2][identical-visual-2] - -[Text-only Example][identical-text] - -### Indicating failure - -In addition to having clearly defined characteristics when -they pass, well designed tests should have some clear signs when -they fail. It can sometimes be hard to make a test do something only -when the test fails, because it is very hard to predict how user -agents will fail! Furthermore, in a rather ironic twist, the best -tests are those that catch the most unpredictable failures! - -Having said that, here are the best ways to indicate failures: - -#### Red - -Using the color red is probably the best way of highlighting -failures. Tests should be designed so that if the rendering is a few -pixels off some red is uncovered or otherwise rendered on the page. - -[Visual Example][red-visual] - -[Text-only Example][red-text] - -_View the pages' source to see the usage of the color -red to denote failure._ - -#### Overlapped text - -Tests of the `line-height`, `font-size` and similar properties can -sometimes be devised in such a way that a failure will result in the -text overlapping. - -#### The word "FAIL" - -Some properties lend themselves well to this kind of test, for -example `quotes` and `content`. The idea is that if the word "FAIL" -appears anywhere, something must have gone wrong. - -[Example][fail-example] - -_View the page's source to see the usage of the word FAIL._ - -### Special Fonts - -#### Ahem -Todd Fahrner has developed a font called [Ahem][ahem-readme], which -consists of some very well defined glyphs of precise sizes and -shapes. This font is especially useful for testing font and text -properties. Without this font it would be very hard to use the -overlapping technique with text. - -The font's em-square is exactly square. Its ascent and descent is -exactly the size of the em square. This means that the font's extent -is exactly the same as its line-height, meaning that it can be -exactly aligned with padding, borders, margins, and so forth. - -The font's alphabetic baseline is 0.2em above its bottom, and 0.8em -below its top. - -The font has four glyphs: - -* X U+0058 A square exactly 1em in height and width. -* p U+0070 A rectangle exactly 0.2em high, 1em wide, and aligned so -that its top is flush with the baseline. -* É U+00C9 A rectangle exactly 0.8em high, 1em wide, and aligned so -that its bottom is flush with the baseline. -* U+0020 A transparent space exactly 1em high and wide. - -Most other US-ASCII characters in the font have the same glyph as X. - -#### Ahem Usage -__If the test uses the Ahem font, make sure its computed font-size -is a multiple of 5px__, otherwise baseline alignment may be rendered -inconsistently (due to rounding errors introduced by certain -platforms' font APIs). We suggest to use a minimum computed font- -size of 20px. - -E.g. Bad: - -``` css -{font: 1in/1em Ahem;} /* Computed font-size is 96px */ -{font: 1in Ahem;} -{font: 1em/1em Ahem} /* with computed 1em font-size being 16px */ -{font: 1em Ahem;} /* with computed 1em font-size being 16px */ -``` - -E.g. Good: - -``` css -{font: 100px/1 Ahem;} -{font: 1.25em/1 Ahem;} /* with computed 1.25em font-size being 20px -*/ -``` - -__If the test uses the Ahem font, make sure the line-height on block -elements is specified; avoid `line-height: normal`__. Also, for -absolute reliability, the difference between computed line-height -and computed font-size should be divisible by 2. - -E.g. Bad: - -``` css -{font: 1.25em Ahem;} /* computed line-height value is 'normal' */ -{font: 20px Ahem;} /* computed line-height value is 'normal' */ -{font-size: 25px; line-height: 50px;} /* the difference between -computed line-height and computed font-size is not divisible by 2. */ -``` - -E.g. Good: - -``` css -{font-size: 25px; line-height: 51px;} /* the difference between -computed line-height and computed font-size is divisible by 2. */ -``` - -[Example test using Ahem][ahem-example] - -_View the page's source to see how the Ahem font is used._ - - -##### Installing Ahem - -1. Download the [TrueType version of Ahem][download-ahem]. -2. Open the folder where you downloaded the font file. -3. Right-click the downloaded font file and select "Install". - -### Explanatory Text - -For tests that must be long (e.g. scrolling tests), it is important -to make it clear that the filler text is not relevant, otherwise the -tester may think he is missing something and therefore waste time -reading the filler text. Good text for use in these situations is, -quite simply, "This is filler text. This is filler text. This is -filler text.". If it looks boring, it's working! - -### Color - -In general, using colors in a consistent manner is recommended. -Specifically, the following convention has been developed: - -#### Red -Any red indicates failure. - -#### Green -In the absence of any red, green indicates success. - -#### Blue -Tests that do not use red or green to indicate success or failure -should use blue to indicate that the tester should read the text -carefully to determine the pass conditions. - -#### Black -Descriptive text is usually black. - -#### Fuchsia, Yellow, Teal, Orange -These are useful colors when making complicated patterns for tests -of the two identical renderings type. - -#### Dark Gray -Descriptive lines, such as borders around nested boxes, are usually -dark gray. These lines come in useful when trying to reduce the test -for engineers. - -#### Silver / Light Gray - -Sometimes used for filler text to indicate that it is irrelevant. - -### Methodical testing - -Some web features can be tested quite thoroughly with a very -methodical approach. For example, testing that all the length units -work for each property taking lengths is relatively easy, and can be -done methodically simply by creating a test for each property/unit -combination. - -In practice, the important thing to decide is when to be methodical -and when to simply test, in an ad hoc fashion, a cross section of -the possibilities. - -This is an [example][methodical-test] of a methodical test of the -`:not()` pseudo-class with each attribute selector in turn, first -for long values and then for short values. - -### Overlapping - -This technique should not be cast aside as a curiosity -- it is in -fact one of the most useful techniques for testing CSS, especially -for areas like positioning and the table model. - -The basic idea is that a red box is first placed using one set of -properties, e.g. the block box model's margin, height and width -properties, and then a second box, green, is placed on top of the -red one using a different set of properties, e.g. using absolute -positioning. - -This idea can be extended to any kind of overlapping, for example -overlapping to lines of identical text of different colors. - -## Tests to avoid - -### The long test - -Any manual test that is so long that is needs to be scrolled to be -completed is too long. The reason for this becomes obvious when you -consider how manual tests will be run. Typically, the tester will be -running a program (such as "Loaderman") which cycles through a list -of several hundred tests. Whenever a failure is detected, the tester -will do something (such as hit a key) that takes a note of the test -case name. Each test will be on the screen for about two or three -seconds. If the tester has to scroll the page, that means he has to -stop the test to do so. - -Of course, there are exceptions -- the most obvious one being any -tests that examine the scrolling mechanism! However, these tests are -considered tests of user interaction and are not run with the -majority of the tests. - -Any test that is so long that it needs scrolling can usually be -split into several smaller tests, so in practice this isn't much of -a problem. - -This is an [example][long-test] of a test that is too long. - -### The counterintuitive "this should be red" test - -As mentioned many times in this document, red indicates a bug, so -nothing should ever be red in a test. - -There is one important exception to this rule... the test for the -`red` value for the color properties! - -### Unobvious tests - -A test that has half a sentence of normal text with the second half -bold if the test has passed is not very obvious, even if the -sentence in question explains what should happen. - -There are various ways to avoid this kind of test, but no general -rule can be given since the affected tests are so varied. - -The last [subtest on this page][unobvious-test] shows this problem. - -[test-format]: ./test-format-guidelines.html -[reftests]: ./reftests.html -[scripttests]: ./testharness-documentation.html -[identical-renderings]: http://test.csswg.org/source/css21/syntax/escapes-000.xht -[green-background]: http://test.csswg.org/source/css21/syntax/escapes-002.xht -[no-red-1]: http://test.csswg.org/source/css21/positioning/abspos-containing-block-003.xht -[no-red-2]: http://test.csswg.org/source/css21/tables/border-conflict-w-079.xht -[described-alignment]: http://test.csswg.org/source/css21/margin-padding-clear/margin-collapse-clear-007.xht -[overlapping]: http://test.csswg.org/source/css21/tables/table-anonymous-objects-021.xht -[imprecise-1]: http://test.csswg.org/source/css21/tables/border-style-inset-001.xht -[imprecise-2]: http://test.csswg.org/source/css21/text/text-decoration-001.xht -[green-page]: http://www.hixie.ch/tests/adhoc/css/background/18.xml -[green-paragraph]: http://www.hixie.ch/tests/adhoc/css/fonts/size/002.xml -[identical-visual-1]: http://test.csswg.org/source/css21/floats-clear/margin-collapse-123.xht -[identical-visual-2]: http://test.csswg.org/source/css21/normal-flow/inlines-016.xht -[identical-text]: http://test.csswg.org/source/css21/fonts/shand-font-000.xht -[red-visual]: http://test.csswg.org/source/css21/positioning/absolute-replaced-height-018.xht -[red-text]: http://test.csswg.org/source/css21/syntax/comments-003.xht -[fail-example]: http://test.csswg.org/source/css21/positioning/abspos-overflow-005.xht -[ahem-example]: http://test.csswg.org/source/css21/positioning/absolute-non-replaced-width-001.xht -[ahem-readme]: http://www.w3.org/Style/CSS/Test/Fonts/Ahem/README -[download-ahem]: http://www.w3.org/Style/CSS/Test/Fonts/Ahem/AHEM____.TTF -[long-test]: http://www.hixie.ch/tests/evil/mixed/lineheight3.html -[unobvious-test]: http://www.w3.org/Style/CSS/Test/CSS1/current/sec525.htm -[methodical-test]: http://www.hixie.ch/tests/adhoc/css/selectors/not/010.xml diff --git a/tests/wpt/web-platform-tests/docs/test-templates.md b/tests/wpt/web-platform-tests/docs/test-templates.md deleted file mode 100644 index 3738ebf13eb..00000000000 --- a/tests/wpt/web-platform-tests/docs/test-templates.md +++ /dev/null @@ -1,135 +0,0 @@ -This page contains templates for creating tests. The template syntax -is compatible with several popular editors including TextMate, Sublime -Text, and emacs' YASnippet mode. - -Each template is given in two forms, one minimal and one including -[extra metadata](css-metadata.html). Usually the metadata is required -by CSS tests and optional for other tests. - -Templates for filenames are also given. In this case `{}` is used to -delimit text to be replaced and `#` represents a digit. - -## Reftests - -### Minimal Reftest - -``` html - - -${1:Test title} - - - - ${4:Test content} - -``` - -Filename: `{test-topic}-###.html` - -### Reftest Including Metadata - -``` html - - -${1:Test area}: ${2:Scope of test} - - - - - - - - ${10:Test content} - -``` - -Filename: `{test-topic}-###.html` - -### Minimal Reftest Reference: - -``` html - - -${1:Reference title} - - - ${3:Reference content} - -``` - -Filename: `{description}.html` or `{test-topic}-###-ref.html` - -### Reference Including Metadata - -``` html - - -${1:Reference title} - - - - ${5:Reference content} - -``` - -Filename: `{description}.html` or `{test-topic}-###-ref.html` - -## testharness.js tests - -### Minimal Script Test - -``` html - - -${1:Test title} - - - -``` - -Filename: `{test-topic}-###.html` - -### Script Test With Metadata - -``` html - - -${1:Test title} - - - - - - - -``` - -Filename: `{test-topic}-###.html` - -### Manual Test - -``` html - - -${1:Test title} - - - -``` - -Filename: `{test-topic}-###-manual.html` diff --git a/tests/wpt/web-platform-tests/dom/events/EventListener-invoke-legacy.html b/tests/wpt/web-platform-tests/dom/events/EventListener-invoke-legacy.html new file mode 100644 index 00000000000..a969c8072b4 --- /dev/null +++ b/tests/wpt/web-platform-tests/dom/events/EventListener-invoke-legacy.html @@ -0,0 +1,72 @@ + + +Invoke legacy event listener + + + +
+ diff --git a/tests/wpt/web-platform-tests/dom/nodes/DOMImplementation-createDocument.html b/tests/wpt/web-platform-tests/dom/nodes/DOMImplementation-createDocument.html index 94f8ba5bcc0..60a24388e2f 100644 --- a/tests/wpt/web-platform-tests/dom/nodes/DOMImplementation-createDocument.html +++ b/tests/wpt/web-platform-tests/dom/nodes/DOMImplementation-createDocument.html @@ -37,7 +37,6 @@ test(function() { * the expected exception, or null if none */ [null, null, false, new TypeError()], - [null, null, null, null], [null, "", null, null], [undefined, null, undefined, null], [undefined, undefined, undefined, null], diff --git a/tests/wpt/web-platform-tests/dom/nodes/Document-createElementNS.html b/tests/wpt/web-platform-tests/dom/nodes/Document-createElementNS.html index 68341bcd44f..6df8c785b8b 100644 --- a/tests/wpt/web-platform-tests/dom/nodes/Document-createElementNS.html +++ b/tests/wpt/web-platform-tests/dom/nodes/Document-createElementNS.html @@ -16,9 +16,7 @@ var tests = createElementNS_tests.concat([ * the expected exception, or null if none */ ["", "", "INVALID_CHARACTER_ERR"], - [null, null, null], [null, "", "INVALID_CHARACTER_ERR"], - [undefined, null, null], [undefined, "", "INVALID_CHARACTER_ERR"], ["http://example.com/", null, null], ["http://example.com/", "", "INVALID_CHARACTER_ERR"], diff --git a/tests/wpt/web-platform-tests/dom/nodes/Document-createElementNS.js b/tests/wpt/web-platform-tests/dom/nodes/Document-createElementNS.js index b390712aa17..1abd3330183 100644 --- a/tests/wpt/web-platform-tests/dom/nodes/Document-createElementNS.js +++ b/tests/wpt/web-platform-tests/dom/nodes/Document-createElementNS.js @@ -91,7 +91,6 @@ var createElementNS_tests = [ ["http://example.com/", "a.b:c", null], ["http://example.com/", "a-b:c", null], ["http://example.com/", "xml", null], - ["http://example.com/", "xmlns", "NAMESPACE_ERR"], ["http://example.com/", "XMLNS", null], ["http://example.com/", "xmlfoo", null], ["http://example.com/", "xml:foo", "NAMESPACE_ERR"], diff --git a/tests/wpt/web-platform-tests/dom/ranges/Range-selectNode.html b/tests/wpt/web-platform-tests/dom/ranges/Range-selectNode.html index 2d9ec6b9a78..6311a84b9e6 100644 --- a/tests/wpt/web-platform-tests/dom/ranges/Range-selectNode.html +++ b/tests/wpt/web-platform-tests/dom/ranges/Range-selectNode.html @@ -73,24 +73,24 @@ function testTree(root, marker) { // This is being modified during the tests, so let's not test it. return; } - tests.push([marker + root.nodeName.toLowerCase() + " node, current doc's range, type " + root.nodeType, range, root]); - tests.push([marker + root.nodeName.toLowerCase() + " node, foreign doc's range, type " + root.nodeType, foreignRange, root]); - tests.push([marker + root.nodeName.toLowerCase() + " node, XML doc's range, type " + root.nodeType, xmlRange, root]); - tests.push([marker + root.nodeName.toLowerCase() + " node, detached range, type " + root.nodeType, detachedRange, root]); + tests.push([marker + ": " + root.nodeName.toLowerCase() + " node, current doc's range, type " + root.nodeType, range, root]); + tests.push([marker + ": " + root.nodeName.toLowerCase() + " node, foreign doc's range, type " + root.nodeType, foreignRange, root]); + tests.push([marker + ": " + root.nodeName.toLowerCase() + " node, XML doc's range, type " + root.nodeType, xmlRange, root]); + tests.push([marker + ": " + root.nodeName.toLowerCase() + " node, detached range, type " + root.nodeType, detachedRange, root]); for (var i = 0; i < root.childNodes.length; i++) { - testTree(root.childNodes[i], "**" + marker); + testTree(root.childNodes[i], marker + "[" + i + "]"); } } -testTree(document, " current doc: "); -testTree(foreignDoc, " foreign doc: "); -testTree(detachedDiv, " detached div in current doc: "); +testTree(document, "current doc"); +testTree(foreignDoc, "foreign doc"); +testTree(detachedDiv, "detached div in current doc"); -var otherTests = [xmlDoc, xmlElement, detachedTextNode, foreignTextNode, -xmlTextNode, processingInstruction, comment, foreignComment, xmlComment, -docfrag, foreignDocfrag, xmlDocfrag]; +var otherTests = ["xmlDoc", "xmlElement", "detachedTextNode", +"foreignTextNode", "xmlTextNode", "processingInstruction", "comment", +"foreignComment", "xmlComment", "docfrag", "foreignDocfrag", "xmlDocfrag"]; for (var i = 0; i < otherTests.length; i++) { - testTree(otherTests[i], " "); + testTree(window[otherTests[i]], otherTests[i]); } generate_tests(testSelectNode, tests); diff --git a/tests/wpt/web-platform-tests/domxpath/interfaces.html b/tests/wpt/web-platform-tests/domxpath/interfaces.html new file mode 100644 index 00000000000..dab085c623e --- /dev/null +++ b/tests/wpt/web-platform-tests/domxpath/interfaces.html @@ -0,0 +1,80 @@ + +XPath tests + + + + + + + diff --git a/tests/wpt/web-platform-tests/eventsource/eventsource-onmessage-trusted.htm b/tests/wpt/web-platform-tests/eventsource/eventsource-onmessage-trusted.htm new file mode 100644 index 00000000000..c3f012b2ca1 --- /dev/null +++ b/tests/wpt/web-platform-tests/eventsource/eventsource-onmessage-trusted.htm @@ -0,0 +1,21 @@ + +EventSource message events are trusted + + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/api/headers/headers-record.html b/tests/wpt/web-platform-tests/fetch/api/headers/headers-record.html new file mode 100644 index 00000000000..6e2ec8d10b7 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/api/headers/headers-record.html @@ -0,0 +1,311 @@ + + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/api/request/request-cache-default-conditional.html b/tests/wpt/web-platform-tests/fetch/api/request/request-cache-default-conditional.html index 7b2a7bd31ae..c22167a57ad 100644 --- a/tests/wpt/web-platform-tests/fetch/api/request/request-cache-default-conditional.html +++ b/tests/wpt/web-platform-tests/fetch/api/request/request-cache-default-conditional.html @@ -14,7 +14,7 @@
- - + + diff --git a/tests/wpt/web-platform-tests/html/OWNERS b/tests/wpt/web-platform-tests/html/OWNERS index 76cdd41ab6a..66b441f1ba4 100644 --- a/tests/wpt/web-platform-tests/html/OWNERS +++ b/tests/wpt/web-platform-tests/html/OWNERS @@ -1,8 +1,6 @@ @ayg @Ms2ger -@gsnedders @jdm @jgraham -@sideshowbarker @zcorpan @zqzhang diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/history-traversal/MANIFEST b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/history-traversal/MANIFEST deleted file mode 100644 index b3b6014f605..00000000000 --- a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/history-traversal/MANIFEST +++ /dev/null @@ -1,16 +0,0 @@ -support 001-1.html -support 001-2.html -001.html -support browsing_context_name-1.html -support browsing_context_name-2.html -support browsing_context_name-3.html -support browsing_context_name-4.html -browsing_context_name_cross_origin_2.html -browsing_context_name_cross_origin_3.html -browsing_context_name_cross_origin.html -browsing_context_name.html -events.html -hashchange_event.html -popstate_event.html -support unset_context_name-1.html -unset_context_name.html diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/MANIFEST b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/MANIFEST deleted file mode 100644 index 0467aa3b417..00000000000 --- a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/MANIFEST +++ /dev/null @@ -1,42 +0,0 @@ -support 001-1.html -support 001-2.html -support 001-3.html -http 001.html -support 002-1.html -support 002-2.html -002.html -support 003-1.html -support 003-2.html -support 003-3.html -003.html -support 004-1.html -support 004-2.html -support 004-3.html -004.html -005.html -006.html -007.html -008.html -009.html -010.html -011.html -012.html -013.html -014.html -015.html -support blank.html -support child_navigates_parent_location-1.html -support child_navigates_parent_location-2.html -support child_navigates_parent_location-3.html -child_navigates_parent_location.html -support child_navigates_parent_submit-1.html -support child_navigates_parent_submit-2.html -support child_navigates_parent_submit-3.html -child_navigates_parent_submit.html -support click.html -support href.html -support navigation_unload_data_url-1.html -navigation_unload_data_url.html -support navigation_unload_same_origin-1.html -navigation_unload_same_origin.html -support slice-and-dice.php diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-form-submit-1.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-form-submit-1.html new file mode 100644 index 00000000000..e06def9b209 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-form-submit-1.html @@ -0,0 +1,23 @@ + + +

navigation-unload-form-submit-1.html

+ + + +
+ +
+ + diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-form-submit-2.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-form-submit-2.html new file mode 100644 index 00000000000..43cd3c1b330 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-form-submit-2.html @@ -0,0 +1,7 @@ + + +

navigation-unload-form-submit-2.html

+ + diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-form-submit.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-form-submit.html new file mode 100644 index 00000000000..029170d46a5 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-form-submit.html @@ -0,0 +1,24 @@ + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-same-origin-fragment-1.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-same-origin-fragment-1.html new file mode 100644 index 00000000000..3b5d725fee5 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-same-origin-fragment-1.html @@ -0,0 +1,9 @@ + + +

navigation-unload-same-origin-fragment-1.html

+ + diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-same-origin-fragment-2.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-same-origin-fragment-2.html new file mode 100644 index 00000000000..2fb7f50b432 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-same-origin-fragment-2.html @@ -0,0 +1,9 @@ + + +

navigation-unload-same-origin-fragment-2.html

+ + diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-same-origin-fragment.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-same-origin-fragment.html new file mode 100644 index 00000000000..c4dceb9e046 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-same-origin-fragment.html @@ -0,0 +1,29 @@ + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation_unload_same_origin.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation_unload_same_origin.html index b75409cc8ad..536d580cbd9 100644 --- a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation_unload_same_origin.html +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation_unload_same_origin.html @@ -13,7 +13,7 @@ onload = t.step_func(function() { }); onmessage = t.step_func(function(e) { - assert_equals(e.data, "001-3"); + assert_equals(e.data, "001-2"); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/scroll-to-fragid/MANIFEST b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/scroll-to-fragid/MANIFEST deleted file mode 100644 index eaa8e6d6165..00000000000 --- a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/scroll-to-fragid/MANIFEST +++ /dev/null @@ -1,7 +0,0 @@ -001.html -002.html -003.html -004.html -005.html -006.html -007.html diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/unloading-documents/MANIFEST b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/unloading-documents/MANIFEST deleted file mode 100644 index f778067951c..00000000000 --- a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/unloading-documents/MANIFEST +++ /dev/null @@ -1,33 +0,0 @@ -support 001-1.html -support 001a.html -support 001b.html -001.html -support 002-1.html -support 002a.html -support 002b.html -002.html -support 003-1.html -support 003a.html -support 003b.html -003.html -support 004-1.html -support 004a.html -support 004b.html -004.html -support 005-1.html -support 005a.html -support 005b.html -005.html -base.html -support beforeunload-on-history-back-1.html -beforeunload-on-history-back.html -support beforeunload-on-navigation-of-parent-1.html -support beforeunload-on-navigation-of-parent-2.html -beforeunload-on-navigation-of-parent.html -support navigation-within-beforeunload-1.html -support navigation-within-beforeunload-2.html -navigation-within-beforeunload.html -support pagehide-on-history-forward-1.html -pagehide-on-history-forward.html -dir prompt -dir unload diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/unloading-documents/beforeunload-canceling-1.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/unloading-documents/beforeunload-canceling-1.html new file mode 100644 index 00000000000..26ffa0e3a82 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/unloading-documents/beforeunload-canceling-1.html @@ -0,0 +1,31 @@ + + +Support page for beforeunload-canceling.html + +

If this goes away, it navigated

+ + diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/unloading-documents/beforeunload-canceling.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/unloading-documents/beforeunload-canceling.html new file mode 100644 index 00000000000..b415ac2a39c --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/unloading-documents/beforeunload-canceling.html @@ -0,0 +1,142 @@ + + +beforeunload return value cancelation behavior + + + + + +
+ + diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/unloading-documents/prompt/MANIFEST b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/unloading-documents/prompt/MANIFEST deleted file mode 100644 index 8d93279a44e..00000000000 --- a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/unloading-documents/prompt/MANIFEST +++ /dev/null @@ -1,14 +0,0 @@ -support 001-1.html -support 001-2.html -001.html -support 002-1.html -002.html -003.html -manual manual-001.html -manual manual-002.html -manual manual-003.html -manual manual-004.html -manual manual-005.html -manual manual-006.html -support next.html -support slice-and-dice.php diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/unloading-documents/unload/MANIFEST b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/unloading-documents/unload/MANIFEST deleted file mode 100644 index 637d35cf396..00000000000 --- a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/unloading-documents/unload/MANIFEST +++ /dev/null @@ -1,21 +0,0 @@ -support 001-1.html -support 001-2.html -001.html -support 002-1.html -002.html -support 003-1.html -003.html -support 004-1.html -004.html -support 006-1.html -support 006-2.html -006.html -support 007-1.html -support 007-2.html -007.html -support 008-1.html -008.html -support 009-1.html -009.html -manual manual-001-1.html -manual manual-001.html diff --git a/tests/wpt/web-platform-tests/html/browsers/history/the-location-interface/location-protocol-setter-with-colon.sub.html b/tests/wpt/web-platform-tests/html/browsers/history/the-location-interface/location-protocol-setter-with-colon.sub.html new file mode 100644 index 00000000000..396776d4391 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/history/the-location-interface/location-protocol-setter-with-colon.sub.html @@ -0,0 +1,54 @@ + + + + + +
+ + + + diff --git a/tests/wpt/web-platform-tests/html/browsers/history/the-location-interface/location-stringifier.html b/tests/wpt/web-platform-tests/html/browsers/history/the-location-interface/location-stringifier.html index d23323b3731..bde54b26662 100644 --- a/tests/wpt/web-platform-tests/html/browsers/history/the-location-interface/location-stringifier.html +++ b/tests/wpt/web-platform-tests/html/browsers/history/the-location-interface/location-stringifier.html @@ -8,4 +8,17 @@
diff --git a/tests/wpt/web-platform-tests/html/browsers/history/the-location-interface/location-symbol-toprimitive.html b/tests/wpt/web-platform-tests/html/browsers/history/the-location-interface/location-symbol-toprimitive.html new file mode 100644 index 00000000000..e666a3e7035 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/history/the-location-interface/location-symbol-toprimitive.html @@ -0,0 +1,14 @@ + +Location Symbol.toPrimitive + + +
+ diff --git a/tests/wpt/web-platform-tests/html/browsers/history/the-location-interface/location-tojson.html b/tests/wpt/web-platform-tests/html/browsers/history/the-location-interface/location-tojson.html new file mode 100644 index 00000000000..5f20a6e15c4 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/history/the-location-interface/location-tojson.html @@ -0,0 +1,13 @@ + +Location has no toJSON + + +
+ + diff --git a/tests/wpt/web-platform-tests/html/browsers/history/the-location-interface/location-valueof.html b/tests/wpt/web-platform-tests/html/browsers/history/the-location-interface/location-valueof.html new file mode 100644 index 00000000000..978bbb63a0b --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/history/the-location-interface/location-valueof.html @@ -0,0 +1,15 @@ + +Location valueOf + + +
+ diff --git a/tests/wpt/web-platform-tests/html/browsers/history/the-location-interface/resources/post-your-protocol.html b/tests/wpt/web-platform-tests/html/browsers/history/the-location-interface/resources/post-your-protocol.html new file mode 100644 index 00000000000..c50d6238932 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/history/the-location-interface/resources/post-your-protocol.html @@ -0,0 +1,4 @@ + diff --git a/tests/wpt/web-platform-tests/html/browsers/windows/browsing-context-names/MANIFEST b/tests/wpt/web-platform-tests/html/browsers/windows/browsing-context-names/MANIFEST deleted file mode 100644 index efecf51e3c0..00000000000 --- a/tests/wpt/web-platform-tests/html/browsers/windows/browsing-context-names/MANIFEST +++ /dev/null @@ -1,4 +0,0 @@ -001.html -support 001-1.html -002.html -support 002-1.html diff --git a/tests/wpt/web-platform-tests/html/browsers/windows/nested-browsing-contexts/MANIFEST b/tests/wpt/web-platform-tests/html/browsers/windows/nested-browsing-contexts/MANIFEST deleted file mode 100644 index 3bc8c0f3f80..00000000000 --- a/tests/wpt/web-platform-tests/html/browsers/windows/nested-browsing-contexts/MANIFEST +++ /dev/null @@ -1 +0,0 @@ -window-top-001.html diff --git a/tests/wpt/web-platform-tests/html/dom/elements-forms.js b/tests/wpt/web-platform-tests/html/dom/elements-forms.js index 280e018aaa3..06dcd661f7d 100644 --- a/tests/wpt/web-platform-tests/html/dom/elements-forms.js +++ b/tests/wpt/web-platform-tests/html/dom/elements-forms.js @@ -79,8 +79,7 @@ var formElements = { formTarget: "string", name: "string", type: {type: "enum", keywords: ["submit", "reset", "button"], defaultVal: "submit"}, - value: "string", - // TODO: menu + value: "string" }, select: { autofocus: "boolean", diff --git a/tests/wpt/web-platform-tests/html/dom/elements-misc.js b/tests/wpt/web-platform-tests/html/dom/elements-misc.js index de71116f379..2dfd824b17b 100644 --- a/tests/wpt/web-platform-tests/html/dom/elements-misc.js +++ b/tests/wpt/web-platform-tests/html/dom/elements-misc.js @@ -41,8 +41,8 @@ var miscElements = { summary: {}, menu: { // Conforming - //TODO: check that missing value default is popup if parent's type is popup - type: {type: "enum", keywords:["popup", "toolbar"], defaultVal: "toolbar"}, + //TODO: check that missing value default is context if parent's type is context + type: {type: "enum", keywords:["context", "toolbar"], defaultVal: "toolbar"}, label: "string", // Obsolete diff --git a/tests/wpt/web-platform-tests/html/dom/interfaces.html b/tests/wpt/web-platform-tests/html/dom/interfaces.html index 061862e249b..dc751e0f2dc 100644 --- a/tests/wpt/web-platform-tests/html/dom/interfaces.html +++ b/tests/wpt/web-platform-tests/html/dom/interfaces.html @@ -11,3138 +11,18 @@

HTML IDL tests

- - - - - - - - - - diff --git a/tests/wpt/web-platform-tests/html/dom/interfaces.worker.js b/tests/wpt/web-platform-tests/html/dom/interfaces.worker.js new file mode 100644 index 00000000000..5bd08f30785 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/dom/interfaces.worker.js @@ -0,0 +1,33 @@ +"use strict"; + +importScripts("/resources/testharness.js"); +importScripts("/resources/WebIDLParser.js", "/resources/idlharness.js"); + +function doTest([untested, tested]) { + var idlArray = new IdlArray(); + idlArray.add_untested_idls(untested); + idlArray.add_idls(tested); + + idlArray.add_objects({ + WorkerNavigator: ['self.navigator'], + WebSocket: ['new WebSocket("ws://foo")'], + CloseEvent: ['new CloseEvent("close")'], + Worker: [], + MessageEvent: ['new MessageEvent("message", { data: 5 })'], + DedicatedWorkerGlobalScope: ['self'], + }); + + idlArray.test(); +}; + +function fetchData(url) { + return fetch(url).then((response) => response.text()); +} + +promise_test(function() { + return Promise.all([fetchData("resources/untested-interfaces.idl"), + fetchData("resources/interfaces.idl")]) + .then(doTest); +}, "Test driver"); + +done(); diff --git a/tests/wpt/web-platform-tests/html/dom/resources/interfaces.idl b/tests/wpt/web-platform-tests/html/dom/resources/interfaces.idl new file mode 100644 index 00000000000..8ad5abcdff3 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/dom/resources/interfaces.idl @@ -0,0 +1,2282 @@ +// HTML IDLs +typedef (Int8Array or Uint8Array or Uint8ClampedArray or + Int16Array or Uint16Array or + Int32Array or Uint32Array or + Float32Array or Float64Array or + DataView) ArrayBufferView; + +[NoInterfaceObject, Exposed=Window] +interface HTMLHyperlinkElementUtils { + stringifier attribute USVString href; + readonly attribute USVString origin; + attribute USVString protocol; + attribute USVString username; + attribute USVString password; + attribute USVString host; + attribute USVString hostname; + attribute USVString port; + attribute USVString pathname; + attribute USVString search; + attribute USVString hash; +}; + +interface HTMLAllCollection { + readonly attribute unsigned long length; + getter Element? item(unsigned long index); + (HTMLCollection or Element)? item(DOMString name); + legacycaller getter (HTMLCollection or Element)? namedItem(DOMString name); +}; + +interface HTMLFormControlsCollection : HTMLCollection { + // inherits length and item() + getter (RadioNodeList or Element)? namedItem(DOMString name); // shadows inherited namedItem() +}; + +interface RadioNodeList : NodeList { + attribute DOMString value; +}; + +interface HTMLOptionsCollection : HTMLCollection { + // inherits item(), namedItem() + attribute unsigned long length; // shadows inherited length + [CEReactions] setter void (unsigned long index, HTMLOptionElement? option); + [CEReactions] void add((HTMLOptionElement or HTMLOptGroupElement) element, optional (HTMLElement or long)? before = null); + [CEReactions] void remove(long index); + attribute long selectedIndex; +}; + +typedef sequence PropertyValueArray; + +[OverrideBuiltins] +interface DOMStringMap { + getter DOMString (DOMString name); + setter creator void (DOMString name, DOMString value); + deleter void (DOMString name); +}; + +typedef (ArrayBuffer or MessagePort) Transferable; + +callback FileCallback = void (File file); + +enum DocumentReadyState { "loading", "interactive", "complete" }; +typedef (HTMLScriptElement or SVGScriptElement) HTMLOrSVGScriptElement; + +[OverrideBuiltins] +partial /*sealed*/ interface Document { + // resource metadata management + [PutForwards=href, Unforgeable] readonly attribute Location? location; + attribute USVString domain; + readonly attribute USVString referrer; + attribute USVString cookie; + readonly attribute DOMString lastModified; + readonly attribute DocumentReadyState readyState; + + // DOM tree accessors + getter object (DOMString name); + [CEReactions] attribute DOMString title; + [CEReactions] attribute DOMString dir; + [CEReactions] attribute HTMLElement? body; + readonly attribute HTMLHeadElement? head; + [SameObject] readonly attribute HTMLCollection images; + [SameObject] readonly attribute HTMLCollection embeds; + [SameObject] readonly attribute HTMLCollection plugins; + [SameObject] readonly attribute HTMLCollection links; + [SameObject] readonly attribute HTMLCollection forms; + [SameObject] readonly attribute HTMLCollection scripts; + NodeList getElementsByName(DOMString elementName); + readonly attribute HTMLOrSVGScriptElement? currentScript; // classic scripts in a document tree only + + // dynamic markup insertion + [CEReactions] Document open(optional DOMString type = "text/html", optional DOMString replace = ""); + WindowProxy open(USVString url, DOMString name, DOMString features); + [CEReactions] void close(); + [CEReactions] void write(DOMString... text); + [CEReactions] void writeln(DOMString... text); + + // user interaction + readonly attribute WindowProxy? defaultView; + readonly attribute Element? activeElement; + boolean hasFocus(); + [CEReactions] attribute DOMString designMode; + [CEReactions] boolean execCommand(DOMString commandId, optional boolean showUI = false, optional DOMString value = ""); + boolean queryCommandEnabled(DOMString commandId); + boolean queryCommandIndeterm(DOMString commandId); + boolean queryCommandState(DOMString commandId); + boolean queryCommandSupported(DOMString commandId); + DOMString queryCommandValue(DOMString commandId); + + // special event handler IDL attributes that only apply to Document objects + [LenientThis] attribute EventHandler onreadystatechange; + + // also has obsolete members +}; +Document implements GlobalEventHandlers; +Document implements DocumentAndElementEventHandlers; + +[NoInterfaceObject] +interface ElementContentEditable { + [CEReactions] attribute DOMString contentEditable; + readonly attribute boolean isContentEditable; +}; + +interface HTMLElement : Element { + // metadata attributes + [CEReactions] attribute DOMString title; + [CEReactions] attribute DOMString lang; + [CEReactions] attribute boolean translate; + [CEReactions] attribute DOMString dir; + [SameObject] readonly attribute DOMStringMap dataset; + + // user interaction + [CEReactions] attribute boolean hidden; + void click(); + [CEReactions] attribute long tabIndex; + void focus(); + void blur(); + [CEReactions] attribute DOMString accessKey; + readonly attribute DOMString accessKeyLabel; + [CEReactions] attribute boolean draggable; + [CEReactions, SameObject, PutForwards=value] readonly attribute DOMTokenList dropzone; + [CEReactions] attribute HTMLMenuElement? contextMenu; + [CEReactions] attribute boolean spellcheck; + void forceSpellCheck(); + + [CEReactions, TreatNullAs=EmptyString] attribute DOMString innerText; +}; +HTMLElement implements GlobalEventHandlers; +HTMLElement implements DocumentAndElementEventHandlers; +HTMLElement implements ElementContentEditable; + +interface HTMLUnknownElement : HTMLElement { }; + +interface HTMLHtmlElement : HTMLElement { + // also has obsolete members +}; + +interface HTMLHeadElement : HTMLElement {}; + +interface HTMLTitleElement : HTMLElement { + attribute DOMString text; +}; + +interface HTMLBaseElement : HTMLElement { + attribute DOMString href; + attribute DOMString target; +}; + +[HTMLConstructor] +interface HTMLLinkElement : HTMLElement { + [CEReactions] attribute USVString href; + [CEReactions] attribute DOMString? crossOrigin; + [CEReactions] attribute DOMString rel; + // [CEReactions] attribute RequestDestination as; // (default "") XXX TODO + [CEReactions, SameObject, PutForwards=value] readonly attribute DOMTokenList relList; + [CEReactions] attribute DOMString media; + [CEReactions] attribute DOMString nonce; + [CEReactions] attribute DOMString integrity; + [CEReactions] attribute DOMString hreflang; + [CEReactions] attribute DOMString type; + [CEReactions, SameObject, PutForwards=value] readonly attribute DOMTokenList sizes; + [CEReactions] attribute DOMString referrerPolicy; + + // also has obsolete members +}; +HTMLLinkElement implements LinkStyle; + +interface HTMLMetaElement : HTMLElement { + attribute DOMString name; + attribute DOMString httpEquiv; + attribute DOMString content; + + // also has obsolete members +}; + +interface HTMLStyleElement : HTMLElement { + [CEReactions] attribute DOMString media; + [CEReactions] attribute DOMString nonce; + [CEReactions] attribute DOMString type; +}; +HTMLStyleElement implements LinkStyle; + +interface HTMLBodyElement : HTMLElement { + + // also has obsolete members +}; +HTMLBodyElement implements WindowEventHandlers; + +interface HTMLHeadingElement : HTMLElement { + // also has obsolete members +}; + +interface HTMLParagraphElement : HTMLElement { + // also has obsolete members +}; + +interface HTMLHRElement : HTMLElement { + // also has obsolete members +}; + +interface HTMLPreElement : HTMLElement { + // also has obsolete members +}; + +interface HTMLQuoteElement : HTMLElement { + attribute DOMString cite; +}; + +interface HTMLOListElement : HTMLElement { + attribute boolean reversed; + attribute long start; + attribute DOMString type; + + // also has obsolete members +}; + +interface HTMLUListElement : HTMLElement { + // also has obsolete members +}; + +interface HTMLLIElement : HTMLElement { + attribute long value; + + // also has obsolete members +}; + +interface HTMLDListElement : HTMLElement { + // also has obsolete members +}; + +interface HTMLDivElement : HTMLElement { + // also has obsolete members +}; + +[HTMLConstructor] +interface HTMLAnchorElement : HTMLElement { + [CEReactions] attribute DOMString target; + [CEReactions] attribute DOMString download; + [CEReactions] attribute USVString ping; + [CEReactions] attribute DOMString rel; + [CEReactions, SameObject, PutForwards=value] readonly attribute DOMTokenList relList; + [CEReactions] attribute DOMString hreflang; + [CEReactions] attribute DOMString type; + + [CEReactions] attribute DOMString text; + + [CEReactions] attribute DOMString referrerPolicy; + + // also has obsolete members +}; +HTMLAnchorElement implements HTMLHyperlinkElementUtils; + +interface HTMLDataElement : HTMLElement { + attribute DOMString value; +}; + +interface HTMLTimeElement : HTMLElement { + attribute DOMString dateTime; +}; + +interface HTMLSpanElement : HTMLElement {}; + +interface HTMLBRElement : HTMLElement { + // also has obsolete members +}; + +interface HTMLModElement : HTMLElement { + attribute DOMString cite; + attribute DOMString dateTime; +}; + +interface HTMLPictureElement : HTMLElement {}; + +partial interface HTMLSourceElement { + attribute DOMString srcset; + attribute DOMString sizes; + attribute DOMString media; +}; + +[HTMLConstructor, NamedConstructor=Image(optional unsigned long width, optional unsigned long height)] +interface HTMLImageElement : HTMLElement { + [CEReactions] attribute DOMString alt; + [CEReactions] attribute USVString src; + [CEReactions] attribute USVString srcset; + [CEReactions] attribute DOMString sizes; + [CEReactions] attribute DOMString? crossOrigin; + [CEReactions] attribute DOMString useMap; + [CEReactions] attribute boolean isMap; + [CEReactions] attribute unsigned long width; + [CEReactions] attribute unsigned long height; + readonly attribute unsigned long naturalWidth; + readonly attribute unsigned long naturalHeight; + readonly attribute boolean complete; + readonly attribute USVString currentSrc; + [CEReactions] attribute DOMString referrerPolicy; + + // also has obsolete members +}; + +[HTMLConstructor] +interface HTMLIFrameElement : HTMLElement { + [CEReactions] attribute USVString src; + [CEReactions] attribute DOMString srcdoc; + [CEReactions] attribute DOMString name; + [CEReactions, SameObject, PutForwards=value] readonly attribute DOMTokenList sandbox; + [CEReactions] attribute boolean allowFullscreen; + [CEReactions] attribute boolean allowUserMedia; + [CEReactions] attribute boolean allowPaymentRequest; + [CEReactions] attribute DOMString width; + [CEReactions] attribute DOMString height; + [CEReactions] attribute DOMString referrerPolicy; + readonly attribute Document? contentDocument; + readonly attribute WindowProxy? contentWindow; + Document? getSVGDocument(); +}; + +interface HTMLEmbedElement : HTMLElement { + attribute DOMString src; + attribute DOMString type; + attribute DOMString width; + attribute DOMString height; + Document getSVGDocument(); + + // also has obsolete members +}; + +interface HTMLObjectElement : HTMLElement { + attribute DOMString data; + attribute DOMString type; + attribute boolean typeMustMatch; + attribute DOMString name; + attribute DOMString useMap; + readonly attribute HTMLFormElement? form; + attribute DOMString width; + attribute DOMString height; + readonly attribute Document? contentDocument; + readonly attribute WindowProxy? contentWindow; + + readonly attribute boolean willValidate; + readonly attribute ValidityState validity; + readonly attribute DOMString validationMessage; + boolean checkValidity(); + boolean reportValidity(); + void setCustomValidity(DOMString error); + + // also has obsolete members +}; + +interface HTMLParamElement : HTMLElement { + attribute DOMString name; + attribute DOMString value; + + // also has obsolete members +}; + +interface HTMLVideoElement : HTMLMediaElement { + attribute unsigned long width; + attribute unsigned long height; + readonly attribute unsigned long videoWidth; + readonly attribute unsigned long videoHeight; + attribute DOMString poster; +}; + +[NamedConstructor=Audio(optional DOMString src)] +interface HTMLAudioElement : HTMLMediaElement {}; + +interface HTMLSourceElement : HTMLElement { + attribute DOMString src; + attribute DOMString type; + + // also has obsolete members +}; + +interface HTMLTrackElement : HTMLElement { + attribute DOMString kind; + attribute DOMString src; + attribute DOMString srclang; + attribute DOMString label; + attribute boolean default; + + const unsigned short NONE = 0; + const unsigned short LOADING = 1; + const unsigned short LOADED = 2; + const unsigned short ERROR = 3; + readonly attribute unsigned short readyState; + + readonly attribute TextTrack track; +}; + +enum CanPlayTypeResult { "" /* empty string */, "maybe", "probably" }; +interface HTMLMediaElement : HTMLElement { + + // error state + readonly attribute MediaError? error; + + // network state + attribute DOMString src; + readonly attribute DOMString currentSrc; + attribute DOMString? crossOrigin; + const unsigned short NETWORK_EMPTY = 0; + const unsigned short NETWORK_IDLE = 1; + const unsigned short NETWORK_LOADING = 2; + const unsigned short NETWORK_NO_SOURCE = 3; + readonly attribute unsigned short networkState; + attribute DOMString preload; + readonly attribute TimeRanges buffered; + void load(); + CanPlayTypeResult canPlayType(DOMString type); + + // ready state + const unsigned short HAVE_NOTHING = 0; + const unsigned short HAVE_METADATA = 1; + const unsigned short HAVE_CURRENT_DATA = 2; + const unsigned short HAVE_FUTURE_DATA = 3; + const unsigned short HAVE_ENOUGH_DATA = 4; + readonly attribute unsigned short readyState; + readonly attribute boolean seeking; + + // playback state + attribute double currentTime; + void fastSeek(double time); + readonly attribute unrestricted double duration; + Date getStartDate(); + readonly attribute boolean paused; + attribute double defaultPlaybackRate; + attribute double playbackRate; + readonly attribute TimeRanges played; + readonly attribute TimeRanges seekable; + readonly attribute boolean ended; + attribute boolean autoplay; + attribute boolean loop; + Promise play(); + void pause(); + + // controls + attribute boolean controls; + attribute double volume; + attribute boolean muted; + attribute boolean defaultMuted; + + // tracks + readonly attribute AudioTrackList audioTracks; + readonly attribute VideoTrackList videoTracks; + readonly attribute TextTrackList textTracks; + TextTrack addTextTrack(TextTrackKind kind, optional DOMString label = "", optional DOMString language = ""); +}; + +interface MediaError { + const unsigned short MEDIA_ERR_ABORTED = 1; + const unsigned short MEDIA_ERR_NETWORK = 2; + const unsigned short MEDIA_ERR_DECODE = 3; + const unsigned short MEDIA_ERR_SRC_NOT_SUPPORTED = 4; + readonly attribute unsigned short code; + readonly attribute DOMString message; +}; + +interface AudioTrackList : EventTarget { + readonly attribute unsigned long length; + getter AudioTrack (unsigned long index); + AudioTrack? getTrackById(DOMString id); + + attribute EventHandler onchange; + attribute EventHandler onaddtrack; + attribute EventHandler onremovetrack; +}; + +interface AudioTrack { + readonly attribute DOMString id; + readonly attribute DOMString kind; + readonly attribute DOMString label; + readonly attribute DOMString language; + attribute boolean enabled; +}; + +interface VideoTrackList : EventTarget { + readonly attribute unsigned long length; + getter VideoTrack (unsigned long index); + VideoTrack? getTrackById(DOMString id); + readonly attribute long selectedIndex; + + attribute EventHandler onchange; + attribute EventHandler onaddtrack; + attribute EventHandler onremovetrack; +}; + +interface VideoTrack { + readonly attribute DOMString id; + readonly attribute DOMString kind; + readonly attribute DOMString label; + readonly attribute DOMString language; + attribute boolean selected; +}; + +interface TextTrackList : EventTarget { + readonly attribute unsigned long length; + getter TextTrack (unsigned long index); + TextTrack? getTrackById(DOMString id); + + attribute EventHandler onchange; + attribute EventHandler onaddtrack; + attribute EventHandler onremovetrack; +}; + +enum TextTrackMode { "disabled", "hidden", "showing" }; +enum TextTrackKind { "subtitles", "captions", "descriptions", "chapters", "metadata" }; +interface TextTrack : EventTarget { + readonly attribute TextTrackKind kind; + readonly attribute DOMString label; + readonly attribute DOMString language; + + readonly attribute DOMString id; + readonly attribute DOMString inBandMetadataTrackDispatchType; + + attribute TextTrackMode mode; + + readonly attribute TextTrackCueList? cues; + readonly attribute TextTrackCueList? activeCues; + + void addCue(TextTrackCue cue); + void removeCue(TextTrackCue cue); + + attribute EventHandler oncuechange; +}; + +interface TextTrackCueList { + readonly attribute unsigned long length; + getter TextTrackCue (unsigned long index); + TextTrackCue? getCueById(DOMString id); +}; + +interface TextTrackCue : EventTarget { + readonly attribute TextTrack? track; + + attribute DOMString id; + attribute double startTime; + attribute double endTime; + attribute boolean pauseOnExit; + + attribute EventHandler onenter; + attribute EventHandler onexit; +}; + +interface TimeRanges { + readonly attribute unsigned long length; + double start(unsigned long index); + double end(unsigned long index); +}; + +[Constructor(DOMString type, optional TrackEventInit eventInitDict)] +interface TrackEvent : Event { + readonly attribute (VideoTrack or AudioTrack or TextTrack) track; +}; + +dictionary TrackEventInit : EventInit { + (VideoTrack or AudioTrack or TextTrack) track; +}; + +interface HTMLMapElement : HTMLElement { + attribute DOMString name; + readonly attribute HTMLCollection areas; +}; + +[HTMLConstructor] +interface HTMLAreaElement : HTMLElement { + [CEReactions] attribute DOMString alt; + [CEReactions] attribute DOMString coords; + [CEReactions] attribute DOMString shape; + [CEReactions] attribute DOMString target; + [CEReactions] attribute DOMString download; + [CEReactions] attribute USVString ping; + [CEReactions] attribute DOMString rel; + [CEReactions, SameObject, PutForwards=value] readonly attribute DOMTokenList relList; + [CEReactions] attribute DOMString referrerPolicy; + + // also has obsolete members +}; +HTMLAreaElement implements HTMLHyperlinkElementUtils; + +interface HTMLTableElement : HTMLElement { + attribute HTMLTableCaptionElement? caption; + HTMLElement createCaption(); + void deleteCaption(); + attribute HTMLTableSectionElement? tHead; + HTMLElement createTHead(); + void deleteTHead(); + attribute HTMLTableSectionElement? tFoot; + HTMLElement createTFoot(); + void deleteTFoot(); + readonly attribute HTMLCollection tBodies; + HTMLElement createTBody(); + readonly attribute HTMLCollection rows; + HTMLElement insertRow(optional long index = -1); + void deleteRow(long index); + + // also has obsolete members +}; + +interface HTMLTableCaptionElement : HTMLElement { + // also has obsolete members +}; + +interface HTMLTableColElement : HTMLElement { + attribute unsigned long span; + + // also has obsolete members +}; + +interface HTMLTableSectionElement : HTMLElement { + readonly attribute HTMLCollection rows; + HTMLElement insertRow(optional long index = -1); + void deleteRow(long index); + + // also has obsolete members +}; + +interface HTMLTableRowElement : HTMLElement { + readonly attribute long rowIndex; + readonly attribute long sectionRowIndex; + readonly attribute HTMLCollection cells; + HTMLElement insertCell(optional long index = -1); + void deleteCell(long index); + + // also has obsolete members +}; + +interface HTMLTableCellElement : HTMLElement { + [CEReactions] attribute unsigned long colSpan; + [CEReactions] attribute unsigned long rowSpan; + [CEReactions] attribute DOMString headers; + readonly attribute long cellIndex; + + [CEReactions] attribute DOMString scope; // only conforming for th elements + [CEReactions] attribute DOMString abbr; // only conforming for th elements + + // also has obsolete members +}; + +[OverrideBuiltins] +interface HTMLFormElement : HTMLElement { + attribute DOMString acceptCharset; + attribute DOMString action; + attribute DOMString autocomplete; + attribute DOMString enctype; + attribute DOMString encoding; + attribute DOMString method; + attribute DOMString name; + attribute boolean noValidate; + attribute DOMString target; + + readonly attribute HTMLFormControlsCollection elements; + readonly attribute unsigned long length; + getter Element (unsigned long index); + getter (RadioNodeList or Element) (DOMString name); + + void submit(); + void reset(); + boolean checkValidity(); + boolean reportValidity(); +}; + +interface HTMLLabelElement : HTMLElement { + readonly attribute HTMLFormElement? form; + attribute DOMString htmlFor; + readonly attribute HTMLElement? control; +}; + +[HTMLConstructor] +interface HTMLInputElement : HTMLElement { + [CEReactions] attribute DOMString accept; + [CEReactions] attribute DOMString alt; + [CEReactions] attribute DOMString autocomplete; + [CEReactions] attribute boolean autofocus; + [CEReactions] attribute boolean defaultChecked; + attribute boolean checked; + [CEReactions] attribute DOMString dirName; + [CEReactions] attribute boolean disabled; + readonly attribute HTMLFormElement? form; + readonly attribute FileList? files; + [CEReactions] attribute USVString formAction; + [CEReactions] attribute DOMString formEnctype; + [CEReactions] attribute DOMString formMethod; + [CEReactions] attribute boolean formNoValidate; + [CEReactions] attribute DOMString formTarget; + [CEReactions] attribute unsigned long height; + attribute boolean indeterminate; + [CEReactions] attribute DOMString inputMode; + readonly attribute HTMLElement? list; + [CEReactions] attribute DOMString max; + [CEReactions] attribute long maxLength; + [CEReactions] attribute DOMString min; + [CEReactions] attribute long minLength; + [CEReactions] attribute boolean multiple; + [CEReactions] attribute DOMString name; + [CEReactions] attribute DOMString pattern; + [CEReactions] attribute DOMString placeholder; + [CEReactions] attribute boolean readOnly; + [CEReactions] attribute boolean required; + [CEReactions] attribute unsigned long size; + [CEReactions] attribute USVString src; + [CEReactions] attribute DOMString step; + [CEReactions] attribute DOMString type; + [CEReactions] attribute DOMString defaultValue; + [CEReactions, TreatNullAs=EmptyString] attribute DOMString value; + attribute object? valueAsDate; + attribute unrestricted double valueAsNumber; + [CEReactions] attribute unsigned long width; + + void stepUp(optional long n = 1); + void stepDown(optional long n = 1); + + readonly attribute boolean willValidate; + readonly attribute ValidityState validity; + readonly attribute DOMString validationMessage; + boolean checkValidity(); + boolean reportValidity(); + void setCustomValidity(DOMString error); + + readonly attribute NodeList? labels; + + void select(); + attribute unsigned long? selectionStart; + attribute unsigned long? selectionEnd; + attribute DOMString? selectionDirection; + void setRangeText(DOMString replacement); + void setRangeText(DOMString replacement, unsigned long start, unsigned long end, optional SelectionMode selectionMode = "preserve"); + void setSelectionRange(unsigned long start, unsigned long end, optional DOMString direction); + + // also has obsolete members +}; + +[HTMLConstructor] +interface HTMLButtonElement : HTMLElement { + [CEReactions] attribute boolean autofocus; + [CEReactions] attribute boolean disabled; + readonly attribute HTMLFormElement? form; + [CEReactions] attribute USVString formAction; + [CEReactions] attribute DOMString formEnctype; + [CEReactions] attribute DOMString formMethod; + [CEReactions] attribute boolean formNoValidate; + [CEReactions] attribute DOMString formTarget; + [CEReactions] attribute DOMString name; + [CEReactions] attribute DOMString type; + [CEReactions] attribute DOMString value; + + readonly attribute boolean willValidate; + readonly attribute ValidityState validity; + readonly attribute DOMString validationMessage; + boolean checkValidity(); + boolean reportValidity(); + void setCustomValidity(DOMString error); + + readonly attribute NodeList labels; +}; + +[HTMLConstructor] +interface HTMLSelectElement : HTMLElement { + [CEReactions] attribute DOMString autocomplete; + [CEReactions] attribute boolean autofocus; + [CEReactions] attribute boolean disabled; + readonly attribute HTMLFormElement? form; + [CEReactions] attribute boolean multiple; + [CEReactions] attribute DOMString name; + [CEReactions] attribute boolean required; + [CEReactions] attribute unsigned long size; + + readonly attribute DOMString type; + + [SameObject] readonly attribute HTMLOptionsCollection options; + [CEReactions] attribute unsigned long length; + getter Element? item(unsigned long index); + HTMLOptionElement? namedItem(DOMString name); + [CEReactions] void add((HTMLOptionElement or HTMLOptGroupElement) element, optional (HTMLElement or long)? before = null); + [CEReactions] void remove(); // ChildNode overload + [CEReactions] void remove(long index); + [CEReactions] setter void (unsigned long index, HTMLOptionElement? option); + + [SameObject] readonly attribute HTMLCollection selectedOptions; + attribute long selectedIndex; + attribute DOMString value; + + readonly attribute boolean willValidate; + readonly attribute ValidityState validity; + readonly attribute DOMString validationMessage; + boolean checkValidity(); + boolean reportValidity(); + void setCustomValidity(DOMString error); + + readonly attribute NodeList labels; +}; + +interface HTMLDataListElement : HTMLElement { + readonly attribute HTMLCollection options; +}; + +interface HTMLOptGroupElement : HTMLElement { + attribute boolean disabled; + attribute DOMString label; +}; + +[NamedConstructor=Option(optional DOMString text = "", optional DOMString value, optional boolean defaultSelected = false, optional boolean selected = false)] +interface HTMLOptionElement : HTMLElement { + attribute boolean disabled; + readonly attribute HTMLFormElement? form; + attribute DOMString label; + attribute boolean defaultSelected; + attribute boolean selected; + attribute DOMString value; + + attribute DOMString text; + readonly attribute long index; +}; + +[HTMLConstructor] +interface HTMLTextAreaElement : HTMLElement { + [CEReactions] attribute DOMString autocomplete; + [CEReactions] attribute boolean autofocus; + [CEReactions] attribute unsigned long cols; + [CEReactions] attribute DOMString dirName; + [CEReactions] attribute boolean disabled; + readonly attribute HTMLFormElement? form; + [CEReactions] attribute DOMString inputMode; + [CEReactions] attribute long maxLength; + [CEReactions] attribute long minLength; + [CEReactions] attribute DOMString name; + [CEReactions] attribute DOMString placeholder; + [CEReactions] attribute boolean readOnly; + [CEReactions] attribute boolean required; + [CEReactions] attribute unsigned long rows; + [CEReactions] attribute DOMString wrap; + + readonly attribute DOMString type; + [CEReactions] attribute DOMString defaultValue; + [CEReactions, TreatNullAs=EmptyString] attribute DOMString value; + readonly attribute unsigned long textLength; + + readonly attribute boolean willValidate; + readonly attribute ValidityState validity; + readonly attribute DOMString validationMessage; + boolean checkValidity(); + boolean reportValidity(); + void setCustomValidity(DOMString error); + + readonly attribute NodeList labels; + + void select(); + attribute unsigned long selectionStart; + attribute unsigned long selectionEnd; + attribute DOMString selectionDirection; + void setRangeText(DOMString replacement); + void setRangeText(DOMString replacement, unsigned long start, unsigned long end, optional SelectionMode selectionMode = "preserve"); + void setSelectionRange(unsigned long start, unsigned long end, optional DOMString direction); +}; + +[HTMLConstructor] +interface HTMLOutputElement : HTMLElement { + [CEReactions, SameObject, PutForwards=value] readonly attribute DOMTokenList htmlFor; + readonly attribute HTMLFormElement? form; + [CEReactions] attribute DOMString name; + + readonly attribute DOMString type; + [CEReactions] attribute DOMString defaultValue; + [CEReactions] attribute DOMString value; + + readonly attribute boolean willValidate; + readonly attribute ValidityState validity; + readonly attribute DOMString validationMessage; + boolean checkValidity(); + boolean reportValidity(); + void setCustomValidity(DOMString error); + + readonly attribute NodeList labels; +}; + +[HTMLConstructor] +interface HTMLProgressElement : HTMLElement { + [CEReactions] attribute double value; + [CEReactions] attribute double max; + readonly attribute double position; + readonly attribute NodeList labels; +}; + +[HTMLConstructor] +interface HTMLMeterElement : HTMLElement { + [CEReactions] attribute double value; + [CEReactions] attribute double min; + [CEReactions] attribute double max; + [CEReactions] attribute double low; + [CEReactions] attribute double high; + [CEReactions] attribute double optimum; + readonly attribute NodeList labels; +}; + +interface HTMLFieldSetElement : HTMLElement { + attribute boolean disabled; + readonly attribute HTMLFormElement? form; + attribute DOMString name; + + readonly attribute DOMString type; + + readonly attribute HTMLFormControlsCollection elements; + + readonly attribute boolean willValidate; + readonly attribute ValidityState validity; + readonly attribute DOMString validationMessage; + boolean checkValidity(); + boolean reportValidity(); + void setCustomValidity(DOMString error); +}; + +interface HTMLLegendElement : HTMLElement { + readonly attribute HTMLFormElement? form; + + // also has obsolete members +}; + +enum SelectionMode { + "select", + "start", + "end", + "preserve"/*,*/ // default +}; + +interface ValidityState { + readonly attribute boolean valueMissing; + readonly attribute boolean typeMismatch; + readonly attribute boolean patternMismatch; + readonly attribute boolean tooLong; + readonly attribute boolean tooShort; + readonly attribute boolean rangeUnderflow; + readonly attribute boolean rangeOverflow; + readonly attribute boolean stepMismatch; + readonly attribute boolean badInput; + readonly attribute boolean customError; + readonly attribute boolean valid; +}; + +interface HTMLDetailsElement : HTMLElement { + attribute boolean open; +}; + +interface HTMLMenuElement : HTMLElement { + attribute DOMString type; + attribute DOMString label; + + // also has obsolete members +}; + +interface HTMLMenuItemElement : HTMLElement { + attribute DOMString type; + attribute DOMString label; + attribute DOMString icon; + attribute boolean disabled; + attribute boolean checked; + attribute DOMString radiogroup; + attribute boolean default; + readonly attribute HTMLElement? command; +}; + +[Constructor(DOMString type, optional RelatedEventInit eventInitDict)] +interface RelatedEvent : Event { + readonly attribute EventTarget? relatedTarget; +}; + +dictionary RelatedEventInit : EventInit { + EventTarget? relatedTarget; +}; + +interface HTMLDialogElement : HTMLElement { + attribute boolean open; + attribute DOMString returnValue; + void show(); + void showModal(); + void close(optional DOMString returnValue); +}; + +[HTMLConstructor] +interface HTMLScriptElement : HTMLElement { + [CEReactions] attribute USVString src; + [CEReactions] attribute DOMString type; + [CEReactions] attribute boolean noModule; + [CEReactions] attribute DOMString charset; + [CEReactions] attribute boolean async; + [CEReactions] attribute boolean defer; + [CEReactions] attribute DOMString? crossOrigin; + [CEReactions] attribute DOMString text; + [CEReactions] attribute DOMString nonce; + [CEReactions] attribute DOMString integrity; + + + // also has obsolete members +}; + +interface HTMLTemplateElement : HTMLElement { + readonly attribute DocumentFragment content; +}; + +interface HTMLSlotElement : HTMLElement { + /*[CEReactions]*/ attribute DOMString name; + sequence assignedNodes(optional AssignedNodesOptions options); +}; + +dictionary AssignedNodesOptions { + boolean flatten = false; +}; + +typedef (CanvasRenderingContext2D or WebGLRenderingContext) RenderingContext; +callback BlobCallback = void (Blob? blob); + +interface HTMLCanvasElement : HTMLElement { + attribute unsigned long width; + attribute unsigned long height; + + RenderingContext? getContext(DOMString contextId, any... arguments); + + DOMString toDataURL(optional DOMString type, any... arguments); + void toBlob(BlobCallback _callback, optional DOMString type, any... arguments); +}; + +typedef (HTMLImageElement or + SVGImageElement) HTMLOrSVGImageElement; + +typedef (HTMLOrSVGImageElement or + HTMLVideoElement or + HTMLCanvasElement or + ImageBitmap) CanvasImageSource; + +enum CanvasFillRule { "nonzero", "evenodd" }; + +dictionary CanvasRenderingContext2DSettings { + boolean alpha = true; +}; + +enum ImageSmoothingQuality { "low", "medium", "high" }; + +interface CanvasRenderingContext2D { + // back-reference to the canvas + readonly attribute HTMLCanvasElement canvas; +}; +CanvasRenderingContext2D implements CanvasState; +CanvasRenderingContext2D implements CanvasTransform; +CanvasRenderingContext2D implements CanvasCompositing; +CanvasRenderingContext2D implements CanvasImageSmoothing; +CanvasRenderingContext2D implements CanvasFillStrokeStyles; +CanvasRenderingContext2D implements CanvasShadowStyles; +CanvasRenderingContext2D implements CanvasFilters; +CanvasRenderingContext2D implements CanvasRect; +CanvasRenderingContext2D implements CanvasDrawPath; +CanvasRenderingContext2D implements CanvasUserInterface; +CanvasRenderingContext2D implements CanvasText; +CanvasRenderingContext2D implements CanvasDrawImage; +CanvasRenderingContext2D implements CanvasHitRegion; +CanvasRenderingContext2D implements CanvasImageData; +CanvasRenderingContext2D implements CanvasPathDrawingStyles; +CanvasRenderingContext2D implements CanvasTextDrawingStyles; +CanvasRenderingContext2D implements CanvasPath; + +[NoInterfaceObject] +interface CanvasState { + // state + void save(); // push state on state stack + void restore(); // pop state stack and restore state +}; + +[NoInterfaceObject] +interface CanvasTransform { + // transformations (default transform is the identity matrix) + void scale(unrestricted double x, unrestricted double y); + void rotate(unrestricted double angle); + void translate(unrestricted double x, unrestricted double y); + void transform(unrestricted double a, unrestricted double b, unrestricted double c, unrestricted double d, unrestricted double e, unrestricted double f); + + [NewObject] DOMMatrix getTransform(); + void setTransform(unrestricted double a, unrestricted double b, unrestricted double c, unrestricted double d, unrestricted double e, unrestricted double f); + void setTransform(optional DOMMatrixInit transform); + void resetTransform(); + +}; + +[NoInterfaceObject] +interface CanvasCompositing { + // compositing + attribute unrestricted double globalAlpha; // (default 1.0) + attribute DOMString globalCompositeOperation; // (default source-over) +}; + +[NoInterfaceObject] +interface CanvasImageSmoothing { + // image smoothing + attribute boolean imageSmoothingEnabled; // (default true) + attribute ImageSmoothingQuality imageSmoothingQuality; // (default low) + +}; + +[NoInterfaceObject] +interface CanvasFillStrokeStyles { + // colours and styles (see also the CanvasPathDrawingStyles and CanvasTextDrawingStyles interfaces) + attribute (DOMString or CanvasGradient or CanvasPattern) strokeStyle; // (default black) + attribute (DOMString or CanvasGradient or CanvasPattern) fillStyle; // (default black) + CanvasGradient createLinearGradient(double x0, double y0, double x1, double y1); + CanvasGradient createRadialGradient(double x0, double y0, double r0, double x1, double y1, double r1); + CanvasPattern? createPattern(CanvasImageSource image, [TreatNullAs=EmptyString] DOMString repetition); + +}; + +[NoInterfaceObject] +interface CanvasShadowStyles { + // shadows + attribute unrestricted double shadowOffsetX; // (default 0) + attribute unrestricted double shadowOffsetY; // (default 0) + attribute unrestricted double shadowBlur; // (default 0) + attribute DOMString shadowColor; // (default transparent black) +}; + +[NoInterfaceObject] +interface CanvasFilters { + // filters + attribute DOMString filter; // (default "none") +}; + +[NoInterfaceObject] +interface CanvasRect { + // rects + void clearRect(unrestricted double x, unrestricted double y, unrestricted double w, unrestricted double h); + void fillRect(unrestricted double x, unrestricted double y, unrestricted double w, unrestricted double h); + void strokeRect(unrestricted double x, unrestricted double y, unrestricted double w, unrestricted double h); +}; + +[NoInterfaceObject] +interface CanvasDrawPath { + // path API (see also CanvasPath) + void beginPath(); + void fill(optional CanvasFillRule fillRule = "nonzero"); + void fill(Path2D path, optional CanvasFillRule fillRule = "nonzero"); + void stroke(); + void stroke(Path2D path); + void clip(optional CanvasFillRule fillRule = "nonzero"); + void clip(Path2D path, optional CanvasFillRule fillRule = "nonzero"); + void resetClip(); + boolean isPointInPath(unrestricted double x, unrestricted double y, optional CanvasFillRule fillRule = "nonzero"); + boolean isPointInPath(Path2D path, unrestricted double x, unrestricted double y, optional CanvasFillRule fillRule = "nonzero"); + boolean isPointInStroke(unrestricted double x, unrestricted double y); + boolean isPointInStroke(Path2D path, unrestricted double x, unrestricted double y); +}; + +[NoInterfaceObject] +interface CanvasUserInterface { + void drawFocusIfNeeded(Element element); + void drawFocusIfNeeded(Path2D path, Element element); + void scrollPathIntoView(); + void scrollPathIntoView(Path2D path); +}; + +[NoInterfaceObject] +interface CanvasText { + // text (see also the CanvasPathDrawingStyles and CanvasTextDrawingStyles interfaces) + void fillText(DOMString text, unrestricted double x, unrestricted double y, optional unrestricted double maxWidth); + void strokeText(DOMString text, unrestricted double x, unrestricted double y, optional unrestricted double maxWidth); + TextMetrics measureText(DOMString text); +}; + +[NoInterfaceObject] +interface CanvasDrawImage { + // drawing images + void drawImage(CanvasImageSource image, unrestricted double dx, unrestricted double dy); + void drawImage(CanvasImageSource image, unrestricted double dx, unrestricted double dy, unrestricted double dw, unrestricted double dh); + void drawImage(CanvasImageSource image, unrestricted double sx, unrestricted double sy, unrestricted double sw, unrestricted double sh, unrestricted double dx, unrestricted double dy, unrestricted double dw, unrestricted double dh); +}; + +[NoInterfaceObject] +interface CanvasHitRegion { + // hit regions + void addHitRegion(optional HitRegionOptions options); + void removeHitRegion(DOMString id); + void clearHitRegions(); +}; + +[NoInterfaceObject] +interface CanvasImageData { + // pixel manipulation + ImageData createImageData(double sw, double sh); + ImageData createImageData(ImageData imagedata); + ImageData getImageData(double sx, double sy, double sw, double sh); + void putImageData(ImageData imagedata, double dx, double dy); + void putImageData(ImageData imagedata, double dx, double dy, double dirtyX, double dirtyY, double dirtyWidth, double dirtyHeight); +}; + +enum CanvasLineCap { "butt", "round", "square" }; +enum CanvasLineJoin { "round", "bevel", "miter"}; +enum CanvasTextAlign { "start", "end", "left", "right", "center" }; +enum CanvasTextBaseline { "top", "hanging", "middle", "alphabetic", "ideographic", "bottom" }; +enum CanvasDirection { "ltr", "rtl", "inherit" }; + +[NoInterfaceObject] +interface CanvasPathDrawingStyles { + // line caps/joins + attribute unrestricted double lineWidth; // (default 1) + attribute CanvasLineCap lineCap; // (default "butt") + attribute CanvasLineJoin lineJoin; // (default "miter") + attribute unrestricted double miterLimit; // (default 10) + + // dashed lines + void setLineDash(sequence segments); // default empty + sequence getLineDash(); + attribute unrestricted double lineDashOffset; +}; + +[NoInterfaceObject] +interface CanvasTextDrawingStyles { + // text + attribute DOMString font; // (default 10px sans-serif) + attribute CanvasTextAlign textAlign; // (default: "start") + attribute CanvasTextBaseline textBaseline; // (default: "alphabetic") + attribute CanvasDirection direction; // (default: "inherit") +}; + +[NoInterfaceObject, Exposed=(Window,Worker)] +interface CanvasPath { + // shared path API methods + void closePath(); + void moveTo(unrestricted double x, unrestricted double y); + void lineTo(unrestricted double x, unrestricted double y); + void quadraticCurveTo(unrestricted double cpx, unrestricted double cpy, unrestricted double x, unrestricted double y); + void bezierCurveTo(unrestricted double cp1x, unrestricted double cp1y, unrestricted double cp2x, unrestricted double cp2y, unrestricted double x, unrestricted double y); + void arcTo(unrestricted double x1, unrestricted double y1, unrestricted double x2, unrestricted double y2, unrestricted double radius); + void arcTo(unrestricted double x1, unrestricted double y1, unrestricted double x2, unrestricted double y2, unrestricted double radiusX, unrestricted double radiusY, unrestricted double rotation); + void rect(unrestricted double x, unrestricted double y, unrestricted double w, unrestricted double h); + void arc(unrestricted double x, unrestricted double y, unrestricted double radius, unrestricted double startAngle, unrestricted double endAngle, optional boolean anticlockwise = false); + void ellipse(unrestricted double x, unrestricted double y, unrestricted double radiusX, unrestricted double radiusY, unrestricted double rotation, unrestricted double startAngle, unrestricted double endAngle, optional boolean anticlockwise = false); +}; + +interface CanvasGradient { + // opaque object + void addColorStop(double offset, DOMString color); +}; + +interface CanvasPattern { + // opaque object + void setTransform(optional DOMMatrixInit transform); +}; + +interface TextMetrics { + // x-direction + readonly attribute double width; // advance width + readonly attribute double actualBoundingBoxLeft; + readonly attribute double actualBoundingBoxRight; + + // y-direction + readonly attribute double fontBoundingBoxAscent; + readonly attribute double fontBoundingBoxDescent; + readonly attribute double actualBoundingBoxAscent; + readonly attribute double actualBoundingBoxDescent; + readonly attribute double emHeightAscent; + readonly attribute double emHeightDescent; + readonly attribute double hangingBaseline; + readonly attribute double alphabeticBaseline; + readonly attribute double ideographicBaseline; +}; + +dictionary HitRegionOptions { + Path2D? path = null; + CanvasFillRule fillRule = "nonzero"; + DOMString id = ""; + DOMString? parentID = null; + DOMString cursor = "inherit"; + // for control-backed regions: + Element? control = null; + // for unbacked regions: + DOMString? label = null; + DOMString? role = null; +}; + +[Constructor(unsigned long sw, unsigned long sh), + Constructor(Uint8ClampedArray data, unsigned long sw, optional unsigned long sh), + Exposed=(Window,Worker)] +interface ImageData { + readonly attribute unsigned long width; + readonly attribute unsigned long height; + readonly attribute Uint8ClampedArray data; +}; + +[Constructor, + Constructor(Path2D path), + Constructor(sequence paths, optional CanvasFillRule fillRule = "nonzero"), + Constructor(DOMString d), Exposed=(Window,Worker)] +interface Path2D { + void addPath(Path2D path, optional DOMMatrixInit transform); +}; +Path2D implements CanvasPath; + +partial interface MouseEvent { + readonly attribute DOMString? region; +}; + +// https://github.com/w3c/testharness.js/issues/84 +//partial dictionary MouseEventInit { +// DOMString? region; +//}; + +partial interface Touch { + readonly attribute DOMString? region; +}; + +interface DataTransfer { + attribute DOMString dropEffect; + attribute DOMString effectAllowed; + + readonly attribute DataTransferItemList items; + + void setDragImage(Element image, long x, long y); + + /* old interface */ + readonly attribute DOMString[] types; + DOMString getData(DOMString format); + void setData(DOMString format, DOMString data); + void clearData(optional DOMString format); + readonly attribute FileList files; +}; + +interface DataTransferItemList { + readonly attribute unsigned long length; + getter DataTransferItem (unsigned long index); + DataTransferItem? add(DOMString data, DOMString type); + DataTransferItem? add(File data); + void remove(unsigned long index); + void clear(); +}; + +interface DataTransferItem { + readonly attribute DOMString kind; + readonly attribute DOMString type; + void getAsString(FunctionStringCallback? _callback); + File? getAsFile(); +}; + +callback FunctionStringCallback = void (DOMString data); + +[Constructor(DOMString type, optional DragEventInit eventInitDict)] +interface DragEvent : MouseEvent { + readonly attribute DataTransfer? dataTransfer; +}; + +dictionary DragEventInit : MouseEventInit { + DataTransfer? dataTransfer; +}; + +// For purposes of this test, just treat WindowProxy as the same thing as +// Window. +typedef Window WindowProxy; + +[PrimaryGlobal] +/*sealed*/ interface Window : EventTarget { + // the current browsing context + [Unforgeable] readonly attribute WindowProxy window; + [Replaceable] readonly attribute WindowProxy self; + [Unforgeable] readonly attribute Document document; + attribute DOMString name; + [PutForwards=href, Unforgeable] readonly attribute Location location; + readonly attribute History history; + [Replaceable] readonly attribute BarProp locationbar; + [Replaceable] readonly attribute BarProp menubar; + [Replaceable] readonly attribute BarProp personalbar; + [Replaceable] readonly attribute BarProp scrollbars; + [Replaceable] readonly attribute BarProp statusbar; + [Replaceable] readonly attribute BarProp toolbar; + attribute DOMString status; + void close(); + readonly attribute boolean closed; + void stop(); + void focus(); + void blur(); + + // other browsing contexts + [Replaceable] readonly attribute WindowProxy frames; + [Replaceable] readonly attribute unsigned long length; + [Unforgeable] readonly attribute WindowProxy top; + attribute any opener; + [Replaceable] readonly attribute WindowProxy parent; + readonly attribute Element? frameElement; + WindowProxy open(optional DOMString url = "about:blank", optional DOMString target = "_blank", [TreatNullAs=EmptyString] optional DOMString features = "", optional boolean replace = false); + getter WindowProxy (unsigned long index); + getter object (DOMString name); + + // the user agent + readonly attribute Navigator navigator; + [Replaceable] readonly attribute External external; + readonly attribute ApplicationCache applicationCache; + + // user prompts + void alert(); + //void alert(DOMString message); + boolean confirm(optional DOMString message = ""); + DOMString? prompt(optional DOMString message = "", optional DOMString default = ""); + void print(); + any showModalDialog(DOMString url, optional any argument); + + void postMessage(any message, DOMString targetOrigin, optional sequence transfer); + + // also has obsolete members +}; +Window implements GlobalEventHandlers; +Window implements WindowEventHandlers; + +interface BarProp { + readonly attribute boolean visible; +}; + +enum ScrollRestoration { "auto", "manual" }; +interface History { + + readonly attribute long length; + attribute ScrollRestoration scrollRestoration; + readonly attribute any state; + void go(optional long delta); + void back(); + void forward(); + void pushState(any data, DOMString title, optional DOMString? url = null); + void replaceState(any data, DOMString title, optional DOMString? url = null); +}; + +[Unforgeable] interface Location { + stringifier attribute USVString href; + readonly attribute USVString origin; + attribute USVString protocol; + attribute USVString host; + attribute USVString hostname; + attribute USVString port; + attribute USVString pathname; + attribute USVString search; + attribute USVString hash; + + void assign(USVString url); + void replace(USVString url); + void reload(); + + [SameObject] readonly attribute USVString[] ancestorOrigins; +}; + +[Constructor(DOMString type, optional PopStateEventInit eventInitDict)] +interface PopStateEvent : Event { + readonly attribute any state; +}; + +dictionary PopStateEventInit : EventInit { + any state; +}; + +[Constructor(DOMString type, optional HashChangeEventInit eventInitDict)] +interface HashChangeEvent : Event { + readonly attribute DOMString oldURL; + readonly attribute DOMString newURL; +}; + +dictionary HashChangeEventInit : EventInit { + DOMString oldURL; + DOMString newURL; +}; + +[Constructor(DOMString type, optional PageTransitionEventInit eventInitDict)] +interface PageTransitionEvent : Event { + readonly attribute boolean persisted; +}; + +dictionary PageTransitionEventInit : EventInit { + boolean persisted; +}; + +interface BeforeUnloadEvent : Event { + attribute DOMString returnValue; +}; + +[Exposed=(Window,SharedWorker)] +interface ApplicationCache : EventTarget { + + // update status + const unsigned short UNCACHED = 0; + const unsigned short IDLE = 1; + const unsigned short CHECKING = 2; + const unsigned short DOWNLOADING = 3; + const unsigned short UPDATEREADY = 4; + const unsigned short OBSOLETE = 5; + readonly attribute unsigned short status; + + // updates + void update(); + void abort(); + void swapCache(); + + // events + attribute EventHandler onchecking; + attribute EventHandler onerror; + attribute EventHandler onnoupdate; + attribute EventHandler ondownloading; + attribute EventHandler onprogress; + attribute EventHandler onupdateready; + attribute EventHandler oncached; + attribute EventHandler onobsolete; +}; + +[NoInterfaceObject, Exposed=(Window,Worker)] +interface NavigatorOnLine { + readonly attribute boolean onLine; +}; + +[Constructor(DOMString type, optional ErrorEventInit eventInitDict), Exposed=(Window,Worker)] +interface ErrorEvent : Event { + readonly attribute DOMString message; + readonly attribute DOMString filename; + readonly attribute unsigned long lineno; + readonly attribute unsigned long colno; + readonly attribute any error; +}; + +dictionary ErrorEventInit : EventInit { + DOMString message; + DOMString filename; + unsigned long lineno; + unsigned long colno; + any error; +}; + +[TreatNonCallableAsNull] +callback EventHandlerNonNull = any (Event event); +typedef EventHandlerNonNull? EventHandler; + +[TreatNonCallableAsNull] +callback OnErrorEventHandlerNonNull = any ((Event or DOMString) event, optional DOMString source, optional unsigned long lineno, optional unsigned long column, optional any error); +typedef OnErrorEventHandlerNonNull? OnErrorEventHandler; + +[TreatNonCallableAsNull] +callback OnBeforeUnloadEventHandlerNonNull = DOMString? (Event event); +typedef OnBeforeUnloadEventHandlerNonNull? OnBeforeUnloadEventHandler; + +[NoInterfaceObject] +interface GlobalEventHandlers { + attribute EventHandler onabort; + attribute EventHandler onauxclick; + attribute EventHandler onblur; + attribute EventHandler oncancel; + attribute EventHandler oncanplay; + attribute EventHandler oncanplaythrough; + attribute EventHandler onchange; + attribute EventHandler onclick; + attribute EventHandler onclose; + attribute EventHandler oncontextmenu; + attribute EventHandler oncuechange; + attribute EventHandler ondblclick; + attribute EventHandler ondrag; + attribute EventHandler ondragend; + attribute EventHandler ondragenter; + attribute EventHandler ondragexit; + attribute EventHandler ondragleave; + attribute EventHandler ondragover; + attribute EventHandler ondragstart; + attribute EventHandler ondrop; + attribute EventHandler ondurationchange; + attribute EventHandler onemptied; + attribute EventHandler onended; + attribute OnErrorEventHandler onerror; + attribute EventHandler onfocus; + attribute EventHandler oninput; + attribute EventHandler oninvalid; + attribute EventHandler onkeydown; + attribute EventHandler onkeypress; + attribute EventHandler onkeyup; + attribute EventHandler onload; + attribute EventHandler onloadeddata; + attribute EventHandler onloadedmetadata; + attribute EventHandler onloadstart; + attribute EventHandler onmousedown; + [LenientThis] attribute EventHandler onmouseenter; + [LenientThis] attribute EventHandler onmouseleave; + attribute EventHandler onmousemove; + attribute EventHandler onmouseout; + attribute EventHandler onmouseover; + attribute EventHandler onmouseup; + attribute EventHandler onmousewheel; + attribute EventHandler onpause; + attribute EventHandler onplay; + attribute EventHandler onplaying; + attribute EventHandler onprogress; + attribute EventHandler onratechange; + attribute EventHandler onreset; + attribute EventHandler onresize; + attribute EventHandler onscroll; + attribute EventHandler onseeked; + attribute EventHandler onseeking; + attribute EventHandler onselect; + attribute EventHandler onshow; + attribute EventHandler onstalled; + attribute EventHandler onsubmit; + attribute EventHandler onsuspend; + attribute EventHandler ontimeupdate; + attribute EventHandler ontoggle; + attribute EventHandler onvolumechange; + attribute EventHandler onwaiting; +}; + +[NoInterfaceObject] +interface DocumentAndElementEventHandlers { + attribute EventHandler oncopy; + attribute EventHandler oncut; + attribute EventHandler onpaste; +}; + +[NoInterfaceObject] +interface WindowEventHandlers { + attribute EventHandler onafterprint; + attribute EventHandler onbeforeprint; + attribute OnBeforeUnloadEventHandler onbeforeunload; + attribute EventHandler onhashchange; + attribute EventHandler onlanguagechange; + attribute EventHandler onmessage; + attribute EventHandler onoffline; + attribute EventHandler ononline; + attribute EventHandler onpagehide; + attribute EventHandler onpageshow; + attribute EventHandler onpopstate; + attribute EventHandler onstorage; + attribute EventHandler onunload; +}; + +typedef (DOMString or Function) TimerHandler; + +[NoInterfaceObject, Exposed=(Window,Worker)] +interface WindowOrWorkerGlobalScope { + [Replaceable] readonly attribute USVString origin; + + // base64 utility methods + DOMString btoa(DOMString btoa); + DOMString atob(DOMString atob); + + // timers + long setTimeout(TimerHandler handler, optional long timeout = 0, any... arguments); + void clearTimeout(optional long handle = 0); + long setInterval(TimerHandler handler, optional long timeout = 0, any... arguments); + void clearInterval(optional long handle = 0); + + // ImageBitmap + Promise createImageBitmap(ImageBitmapSource image, optional ImageBitmapOptions options); + Promise createImageBitmap(ImageBitmapSource image, long sx, long sy, long sw, long sh, optional ImageBitmapOptions options); +}; + +Window implements WindowOrWorkerGlobalScope; +WorkerGlobalScope implements WindowOrWorkerGlobalScope; + +[NoInterfaceObject] +interface WindowModal { + readonly attribute any dialogArguments; + attribute any returnValue; +}; + +interface Navigator { + // objects implementing this interface also implement the interfaces given below +}; +Navigator implements NavigatorID; +Navigator implements NavigatorLanguage; +Navigator implements NavigatorOnLine; +Navigator implements NavigatorContentUtils; +Navigator implements NavigatorCookies; +Navigator implements NavigatorPlugins; +Navigator implements NavigatorConcurrentHardware; + +[NoInterfaceObject, Exposed=(Window,Worker)] +interface NavigatorID { + readonly attribute DOMString appCodeName; // constant "Mozilla" + readonly attribute DOMString appName; // constant "Netscape" + readonly attribute DOMString appVersion; + readonly attribute DOMString platform; + readonly attribute DOMString product; // constant "Gecko" + [Exposed=Window] readonly attribute DOMString productSub; + readonly attribute DOMString userAgent; + [Exposed=Window] readonly attribute DOMString vendor; + [Exposed=Window] readonly attribute DOMString vendorSub; // constant "" +}; + +[NoInterfaceObject, Exposed=(Window,Worker)] +interface NavigatorLanguage { + readonly attribute DOMString language; + readonly attribute FrozenArray languages; +}; + +[NoInterfaceObject] +interface NavigatorContentUtils { + // content handler registration + void registerProtocolHandler(DOMString scheme, USVString url, DOMString title); + void registerContentHandler(DOMString mimeType, USVString url, DOMString title); + DOMString isProtocolHandlerRegistered(DOMString scheme, USVString url); + DOMString isContentHandlerRegistered(DOMString mimeType, USVString url); + void unregisterProtocolHandler(DOMString scheme, USVString url); + void unregisterContentHandler(DOMString mimeType, USVString url); +}; + +[NoInterfaceObject] +interface NavigatorCookies { + readonly attribute boolean cookieEnabled; +}; + +[NoInterfaceObject] +interface NavigatorPlugins { + [SameObject] readonly attribute PluginArray plugins; + [SameObject] readonly attribute MimeTypeArray mimeTypes; + boolean javaEnabled(); +}; + +interface PluginArray { + void refresh(optional boolean reload = false); + readonly attribute unsigned long length; + getter Plugin? item(unsigned long index); + getter Plugin? namedItem(DOMString name); +}; + +[NoInterfaceObject, Exposed=(Window,Worker)] +interface NavigatorConcurrentHardware { + readonly attribute unsigned long long hardwareConcurrency; +}; + +interface MimeTypeArray { + readonly attribute unsigned long length; + getter MimeType? item(unsigned long index); + getter MimeType? namedItem(DOMString name); +}; + +interface Plugin { + readonly attribute DOMString name; + readonly attribute DOMString description; + readonly attribute DOMString filename; + readonly attribute unsigned long length; + getter MimeType? item(unsigned long index); + getter MimeType? namedItem(DOMString name); +}; + +interface MimeType { + readonly attribute DOMString type; + readonly attribute DOMString description; + readonly attribute DOMString suffixes; // comma-separated + readonly attribute Plugin enabledPlugin; +}; + +interface External { + void AddSearchProvider(DOMString engineURL); + unsigned long IsSearchProviderInstalled(DOMString engineURL); +}; + +[Exposed=(Window,Worker)] +interface ImageBitmap { + readonly attribute unsigned long width; + readonly attribute unsigned long height; +}; + +typedef (HTMLImageElement or + HTMLVideoElement or + HTMLCanvasElement or + Blob or + ImageData or + CanvasRenderingContext2D or + ImageBitmap) ImageBitmapSource; + +dictionary ImageBitmapOptions { + ImageOrientation imageOrientation = "none"; + PremultiplyAlpha premultiplyAlpha = "default"; + ColorSpaceConversion colorSpaceConversion = "default"; + [EnforceRange] unsigned long resizeWidth; + [EnforceRange] unsigned long resizeHeight; + ResizeQuality resizeQuality = "low"; +}; + +[Constructor(DOMString type, optional MessageEventInit eventInitDict), Exposed=(Window,Worker)] +interface MessageEvent : Event { + readonly attribute any data; + readonly attribute DOMString origin; + readonly attribute DOMString lastEventId; + readonly attribute (WindowProxy or MessagePort)? source; + readonly attribute FrozenArray ports; + + void initMessageEvent(DOMString type, boolean bubbles, boolean cancelable, any data, DOMString origin, DOMString lastEventId, (WindowProxy or MessagePort) source, sequence ports); +}; + +dictionary MessageEventInit : EventInit { + any data; + DOMString origin; + DOMString lastEventId; + (WindowProxy or MessagePort)? source; + sequence ports; +}; + +[Constructor(DOMString url, optional EventSourceInit eventSourceInitDict), Exposed=(Window,Worker)] +interface EventSource : EventTarget { + readonly attribute DOMString url; + readonly attribute boolean withCredentials; + + // ready state + const unsigned short CONNECTING = 0; + const unsigned short OPEN = 1; + const unsigned short CLOSED = 2; + readonly attribute unsigned short readyState; + + // networking + attribute EventHandler onopen; + attribute EventHandler onmessage; + attribute EventHandler onerror; + void close(); +}; + +dictionary EventSourceInit { + boolean withCredentials = false; +}; + +enum BinaryType { "blob", "arraybuffer" }; +[Constructor(DOMString url, optional (DOMString or DOMString[]) protocols), Exposed=(Window,Worker)] +interface WebSocket : EventTarget { + readonly attribute DOMString url; + + // ready state + const unsigned short CONNECTING = 0; + const unsigned short OPEN = 1; + const unsigned short CLOSING = 2; + const unsigned short CLOSED = 3; + readonly attribute unsigned short readyState; + readonly attribute unsigned long bufferedAmount; + + // networking + attribute EventHandler onopen; + attribute EventHandler onerror; + attribute EventHandler onclose; + readonly attribute DOMString extensions; + readonly attribute DOMString protocol; + void close([Clamp] optional unsigned short code, optional USVString reason); + + // messaging + attribute EventHandler onmessage; + attribute BinaryType binaryType; + void send(USVString data); + void send(Blob data); + void send(ArrayBuffer data); + void send(ArrayBufferView data); +}; + +[Constructor(DOMString type, optional CloseEventInit eventInitDict), Exposed=(Window,Worker)] +interface CloseEvent : Event { + readonly attribute boolean wasClean; + readonly attribute unsigned short code; + readonly attribute DOMString reason; +}; + +dictionary CloseEventInit : EventInit { + boolean wasClean; + unsigned short code; + DOMString reason; +}; + +[Constructor, Exposed=(Window,Worker)] +interface MessageChannel { + readonly attribute MessagePort port1; + readonly attribute MessagePort port2; +}; + +[Exposed=(Window,Worker)] +interface MessagePort : EventTarget { + void postMessage(any message, optional sequence transfer); + void start(); + void close(); + + // event handlers + attribute EventHandler onmessage; +}; +// MessagePort implements Transferable; + +[Constructor(DOMString channel), Exposed=(Window,Worker)] +interface BroadcastChannel : EventTarget { + readonly attribute DOMString name; + void postMessage(any message); + void close(); + attribute EventHandler onmessage; +}; + +[Exposed=Worker] +interface WorkerGlobalScope : EventTarget { + readonly attribute WorkerGlobalScope self; + readonly attribute WorkerLocation location; + readonly attribute WorkerNavigator navigator; + void importScripts(USVString... urls); + + attribute OnErrorEventHandler onerror; + attribute EventHandler onlanguagechange; + attribute EventHandler onoffline; + attribute EventHandler ononline; + + // also has additional members in a partial interface +}; + +[Global=(Worker,DedicatedWorker),Exposed=DedicatedWorker] +/*sealed*/ interface DedicatedWorkerGlobalScope : WorkerGlobalScope { + void postMessage(any message, optional sequence transfer); + attribute EventHandler onmessage; +}; + +[Global=(Worker,SharedWorker),Exposed=SharedWorker] +/*sealed*/ interface SharedWorkerGlobalScope : WorkerGlobalScope { + readonly attribute DOMString name; + readonly attribute ApplicationCache applicationCache; + attribute EventHandler onconnect; +}; + +[NoInterfaceObject, Exposed=(Window,Worker)] +interface AbstractWorker { + attribute EventHandler onerror; +}; + +[Constructor(DOMString scriptURL), Exposed=(Window,Worker)] +interface Worker : EventTarget { + void terminate(); + + void postMessage(any message, optional sequence transfer); + attribute EventHandler onmessage; +}; +Worker implements AbstractWorker; + +[Constructor(DOMString scriptURL, optional DOMString name), Exposed=(Window,Worker)] +interface SharedWorker : EventTarget { + readonly attribute MessagePort port; +}; +SharedWorker implements AbstractWorker; + +[Exposed=Worker] +interface WorkerNavigator {}; +WorkerNavigator implements NavigatorID; +WorkerNavigator implements NavigatorLanguage; +WorkerNavigator implements NavigatorOnLine; + +[Exposed=Worker] +interface WorkerLocation { + stringifier readonly attribute USVString href; + readonly attribute USVString origin; + readonly attribute USVString protocol; + readonly attribute USVString host; + readonly attribute USVString hostname; + readonly attribute USVString port; + readonly attribute USVString pathname; + readonly attribute USVString search; + readonly attribute USVString hash; +}; + +interface Storage { + readonly attribute unsigned long length; + DOMString? key(unsigned long index); + getter DOMString? getItem(DOMString key); + setter creator void setItem(DOMString key, DOMString value); + deleter void removeItem(DOMString key); + void clear(); +}; + +[NoInterfaceObject] +interface WindowSessionStorage { + readonly attribute Storage sessionStorage; +}; +Window implements WindowSessionStorage; + +[NoInterfaceObject] +interface WindowLocalStorage { + readonly attribute Storage localStorage; +}; +Window implements WindowLocalStorage; + +[Constructor(DOMString type, optional StorageEventInit eventInitDict)] +interface StorageEvent : Event { + readonly attribute DOMString? key; + readonly attribute DOMString? oldValue; + readonly attribute DOMString? newValue; + readonly attribute DOMString url; + readonly attribute Storage? storageArea; +}; + +dictionary StorageEventInit : EventInit { + DOMString? key; + DOMString? oldValue; + DOMString? newValue; + DOMString url; + Storage? storageArea; +}; + +interface HTMLAppletElement : HTMLElement { + attribute DOMString align; + attribute DOMString alt; + attribute DOMString archive; + attribute DOMString code; + attribute DOMString codeBase; + attribute DOMString height; + attribute unsigned long hspace; + attribute DOMString name; + attribute DOMString _object; // the underscore is not part of the identifier + attribute unsigned long vspace; + attribute DOMString width; +}; + +interface HTMLMarqueeElement : HTMLElement { + attribute DOMString behavior; + attribute DOMString bgColor; + attribute DOMString direction; + attribute DOMString height; + attribute unsigned long hspace; + attribute long loop; + attribute unsigned long scrollAmount; + attribute unsigned long scrollDelay; + attribute boolean trueSpeed; + attribute unsigned long vspace; + attribute DOMString width; + + attribute EventHandler onbounce; + attribute EventHandler onfinish; + attribute EventHandler onstart; + + void start(); + void stop(); +}; + +interface HTMLFrameSetElement : HTMLElement { + attribute DOMString cols; + attribute DOMString rows; +}; +HTMLFrameSetElement implements WindowEventHandlers; + +interface HTMLFrameElement : HTMLElement { + attribute DOMString name; + attribute DOMString scrolling; + attribute DOMString src; + attribute DOMString frameBorder; + attribute DOMString longDesc; + attribute boolean noResize; + readonly attribute Document? contentDocument; + readonly attribute WindowProxy? contentWindow; + + [TreatNullAs=EmptyString] attribute DOMString marginHeight; + [TreatNullAs=EmptyString] attribute DOMString marginWidth; +}; + +partial interface HTMLAnchorElement { + attribute DOMString coords; + attribute DOMString charset; + attribute DOMString name; + attribute DOMString rev; + attribute DOMString shape; +}; + +partial interface HTMLAreaElement { + attribute boolean noHref; +}; + +partial interface HTMLBodyElement { + [TreatNullAs=EmptyString] attribute DOMString text; + [TreatNullAs=EmptyString] attribute DOMString link; + [TreatNullAs=EmptyString] attribute DOMString vLink; + [TreatNullAs=EmptyString] attribute DOMString aLink; + [TreatNullAs=EmptyString] attribute DOMString bgColor; + attribute DOMString background; +}; + +partial interface HTMLBRElement { + attribute DOMString clear; +}; + +partial interface HTMLTableCaptionElement { + attribute DOMString align; +}; + +partial interface HTMLTableColElement { + attribute DOMString align; + attribute DOMString ch; + attribute DOMString chOff; + attribute DOMString vAlign; + attribute DOMString width; +}; + +interface HTMLDirectoryElement : HTMLElement { + attribute boolean compact; +}; + +partial interface HTMLDivElement { + attribute DOMString align; +}; + +partial interface HTMLDListElement { + attribute boolean compact; +}; + +partial interface HTMLEmbedElement { + attribute DOMString align; + attribute DOMString name; +}; + +interface HTMLFontElement : HTMLElement { + [TreatNullAs=EmptyString] attribute DOMString color; + attribute DOMString face; + attribute DOMString size; +}; + +partial interface HTMLHeadingElement { + attribute DOMString align; +}; + +partial interface HTMLHRElement { + attribute DOMString align; + attribute DOMString color; + attribute boolean noShade; + attribute DOMString size; + attribute DOMString width; +}; + +partial interface HTMLHtmlElement { + attribute DOMString version; +}; + +partial interface HTMLIFrameElement { + [CEReactions] attribute DOMString align; + [CEReactions] attribute DOMString scrolling; + [CEReactions] attribute DOMString frameBorder; + [CEReactions] attribute USVString longDesc; + + [CEReactions, TreatNullAs=EmptyString] attribute DOMString marginHeight; + [CEReactions, TreatNullAs=EmptyString] attribute DOMString marginWidth; +}; + +partial interface HTMLImageElement { + [CEReactions] attribute DOMString name; + [CEReactions] attribute USVString lowsrc; + [CEReactions] attribute DOMString align; + [CEReactions] attribute unsigned long hspace; + [CEReactions] attribute unsigned long vspace; + [CEReactions] attribute USVString longDesc; + + [CEReactions, TreatNullAs=EmptyString] attribute DOMString border; +}; + +partial interface HTMLInputElement { + attribute DOMString align; + attribute DOMString useMap; +}; + +partial interface HTMLLegendElement { + attribute DOMString align; +}; + +partial interface HTMLLIElement { + attribute DOMString type; +}; + +partial interface HTMLLinkElement { + [CEReactions] attribute DOMString charset; + [CEReactions] attribute DOMString rev; + [CEReactions] attribute DOMString target; +}; + +partial interface HTMLMenuElement { + attribute boolean compact; +}; + +partial interface HTMLMetaElement { + attribute DOMString scheme; +}; + +partial interface HTMLObjectElement { + attribute DOMString align; + attribute DOMString archive; + attribute DOMString code; + attribute boolean declare; + attribute unsigned long hspace; + attribute DOMString standby; + attribute unsigned long vspace; + attribute DOMString codeBase; + attribute DOMString codeType; + + [TreatNullAs=EmptyString] attribute DOMString border; +}; + +partial interface HTMLOListElement { + attribute boolean compact; +}; + +partial interface HTMLParagraphElement { + attribute DOMString align; +}; + +partial interface HTMLParamElement { + attribute DOMString type; + attribute DOMString valueType; +}; + +partial interface HTMLPreElement { + attribute long width; +}; + +partial interface HTMLScriptElement { + attribute DOMString event; + attribute DOMString htmlFor; +}; + +partial interface HTMLTableElement { + attribute DOMString align; + attribute DOMString border; + attribute DOMString frame; + attribute DOMString rules; + attribute DOMString summary; + attribute DOMString width; + + [TreatNullAs=EmptyString] attribute DOMString bgColor; + [TreatNullAs=EmptyString] attribute DOMString cellPadding; + [TreatNullAs=EmptyString] attribute DOMString cellSpacing; +}; + +partial interface HTMLTableSectionElement { + attribute DOMString align; + attribute DOMString ch; + attribute DOMString chOff; + attribute DOMString vAlign; +}; + +partial interface HTMLTableCellElement { + attribute DOMString align; + attribute DOMString axis; + attribute DOMString height; + attribute DOMString width; + + attribute DOMString ch; + attribute DOMString chOff; + attribute boolean noWrap; + attribute DOMString vAlign; + + [TreatNullAs=EmptyString] attribute DOMString bgColor; +}; + +partial interface HTMLTableRowElement { + attribute DOMString align; + attribute DOMString ch; + attribute DOMString chOff; + attribute DOMString vAlign; + + [TreatNullAs=EmptyString] attribute DOMString bgColor; +}; + +partial interface HTMLUListElement { + attribute boolean compact; + attribute DOMString type; +}; + +partial interface Document { + [TreatNullAs=EmptyString] attribute DOMString fgColor; + [TreatNullAs=EmptyString] attribute DOMString linkColor; + [TreatNullAs=EmptyString] attribute DOMString vlinkColor; + [TreatNullAs=EmptyString] attribute DOMString alinkColor; + [TreatNullAs=EmptyString] attribute DOMString bgColor; + + readonly attribute HTMLCollection anchors; + readonly attribute HTMLCollection applets; + + void clear(); + void captureEvents(); + void releaseEvents(); + + readonly attribute HTMLAllCollection all; +}; + +partial interface Window { + void captureEvents(); + void releaseEvents(); +}; diff --git a/tests/wpt/web-platform-tests/html/dom/resources/self-origin-subframe.html b/tests/wpt/web-platform-tests/html/dom/resources/self-origin-subframe.html new file mode 100644 index 00000000000..8759362bdf0 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/dom/resources/self-origin-subframe.html @@ -0,0 +1,22 @@ + diff --git a/tests/wpt/web-platform-tests/html/dom/resources/untested-interfaces.idl b/tests/wpt/web-platform-tests/html/dom/resources/untested-interfaces.idl new file mode 100644 index 00000000000..75428f83ebe --- /dev/null +++ b/tests/wpt/web-platform-tests/html/dom/resources/untested-interfaces.idl @@ -0,0 +1,830 @@ +// DOM IDLs +[Constructor(DOMString type, optional EventInit eventInitDict), + Exposed=(Window,Worker)] +interface Event { + readonly attribute DOMString type; + readonly attribute EventTarget? target; + readonly attribute EventTarget? currentTarget; + + const unsigned short NONE = 0; + const unsigned short CAPTURING_PHASE = 1; + const unsigned short AT_TARGET = 2; + const unsigned short BUBBLING_PHASE = 3; + readonly attribute unsigned short eventPhase; + + void stopPropagation(); + void stopImmediatePropagation(); + + readonly attribute boolean bubbles; + readonly attribute boolean cancelable; + void preventDefault(); + readonly attribute boolean defaultPrevented; + + [Unforgeable] readonly attribute boolean isTrusted; + readonly attribute DOMTimeStamp timeStamp; + + void initEvent(DOMString type, boolean bubbles, boolean cancelable); +}; + +dictionary EventInit { + boolean bubbles = false; + boolean cancelable = false; +}; + +[Constructor(DOMString type, optional CustomEventInit eventInitDict), + Exposed=(Window,Worker)] +interface CustomEvent : Event { + readonly attribute any detail; + + void initCustomEvent(DOMString type, boolean bubbles, boolean cancelable, any detail); +}; + +dictionary CustomEventInit : EventInit { + any detail = null; +}; + +[Exposed=(Window,Worker)] +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); +}; + +[NoInterfaceObject] +interface NonElementParentNode { + Element? getElementById(DOMString elementId); +}; +Document implements NonElementParentNode; +DocumentFragment implements NonElementParentNode; + +[NoInterfaceObject] +interface ParentNode { + [SameObject] readonly attribute HTMLCollection children; + readonly attribute Element? firstElementChild; + readonly attribute Element? lastElementChild; + readonly attribute unsigned long childElementCount; + + [Unscopable] void prepend((Node or DOMString)... nodes); + [Unscopable] void append((Node or DOMString)... nodes); + + Element? querySelector(DOMString selectors); + [NewObject] NodeList querySelectorAll(DOMString selectors); +}; +Document implements ParentNode; +DocumentFragment implements ParentNode; +Element implements ParentNode; + +[NoInterfaceObject] +interface NonDocumentTypeChildNode { + readonly attribute Element? previousElementSibling; + readonly attribute Element? nextElementSibling; +}; +Element implements NonDocumentTypeChildNode; +CharacterData implements NonDocumentTypeChildNode; + +[NoInterfaceObject] +interface ChildNode { + [Unscopable] void before((Node or DOMString)... nodes); + [Unscopable] void after((Node or DOMString)... nodes); + [Unscopable] void replaceWith((Node or DOMString)... nodes); + [Unscopable] void remove(); +}; +DocumentType implements ChildNode; +Element implements ChildNode; +CharacterData implements ChildNode; + +// XXX unrecognized tokens "class", "extends" +// https://www.w3.org/Bugs/Public/show_bug.cgi?id=20020 +// https://www.w3.org/Bugs/Public/show_bug.cgi?id=23225 +//class Elements extends Array { +// Element? query(DOMString relativeSelectors); +// Elements queryAll(DOMString relativeSelectors); +//}; + +interface NodeList { + getter Node? item(unsigned long index); + readonly attribute unsigned long length; +// iterable; +}; + +interface HTMLCollection { + readonly attribute unsigned long length; + getter Element? item(unsigned long index); + getter Element? namedItem(DOMString name); +}; + +[Constructor(MutationCallback callback)] +interface MutationObserver { + void observe(Node target, MutationObserverInit options); + void disconnect(); + sequence takeRecords(); +}; + +callback MutationCallback = void (sequence mutations, MutationObserver observer); + +dictionary MutationObserverInit { + boolean childList = false; + boolean attributes; + boolean characterData; + boolean subtree = false; + boolean attributeOldValue; + boolean characterDataOldValue; + sequence attributeFilter; +}; + +interface MutationRecord { + readonly attribute DOMString type; + readonly attribute Node target; + [SameObject] readonly attribute NodeList addedNodes; + [SameObject] readonly attribute NodeList removedNodes; + readonly attribute Node? previousSibling; + readonly attribute Node? nextSibling; + readonly attribute DOMString? attributeName; + readonly attribute DOMString? attributeNamespace; + readonly attribute DOMString? oldValue; +}; + +interface Node : EventTarget { + const unsigned short ELEMENT_NODE = 1; + const unsigned short ATTRIBUTE_NODE = 2; // historical + const unsigned short TEXT_NODE = 3; + const unsigned short CDATA_SECTION_NODE = 4; + const unsigned short ENTITY_REFERENCE_NODE = 5; // historical + const unsigned short ENTITY_NODE = 6; // historical + const unsigned short PROCESSING_INSTRUCTION_NODE = 7; + const unsigned short COMMENT_NODE = 8; + const unsigned short DOCUMENT_NODE = 9; + const unsigned short DOCUMENT_TYPE_NODE = 10; + const unsigned short DOCUMENT_FRAGMENT_NODE = 11; + const unsigned short NOTATION_NODE = 12; // historical + readonly attribute unsigned short nodeType; + readonly attribute DOMString nodeName; + + readonly attribute DOMString? baseURI; + + readonly attribute Document? ownerDocument; + readonly attribute Node? parentNode; + readonly attribute Element? parentElement; + boolean hasChildNodes(); + [SameObject] readonly attribute NodeList childNodes; + readonly attribute Node? firstChild; + readonly attribute Node? lastChild; + readonly attribute Node? previousSibling; + readonly attribute Node? nextSibling; + + attribute DOMString? nodeValue; + attribute DOMString? textContent; + void normalize(); + + [NewObject] Node cloneNode(optional boolean deep = false); + boolean isEqualNode(Node? node); + + const unsigned short DOCUMENT_POSITION_DISCONNECTED = 0x01; + const unsigned short DOCUMENT_POSITION_PRECEDING = 0x02; + const unsigned short DOCUMENT_POSITION_FOLLOWING = 0x04; + const unsigned short DOCUMENT_POSITION_CONTAINS = 0x08; + const unsigned short DOCUMENT_POSITION_CONTAINED_BY = 0x10; + const unsigned short DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC = 0x20; + unsigned short compareDocumentPosition(Node other); + boolean contains(Node? other); + + DOMString? lookupPrefix(DOMString? namespace); + DOMString? lookupNamespaceURI(DOMString? prefix); + boolean isDefaultNamespace(DOMString? namespace); + + Node insertBefore(Node node, Node? child); + Node appendChild(Node node); + Node replaceChild(Node node, Node child); + Node removeChild(Node child); +}; + +[Constructor] +interface Document : Node { + [SameObject] readonly attribute DOMImplementation implementation; + readonly attribute DOMString URL; + readonly attribute DOMString documentURI; + readonly attribute DOMString origin; + readonly attribute DOMString compatMode; + readonly attribute DOMString characterSet; + readonly attribute DOMString charset; // legacy alias of .characterSet + readonly attribute DOMString inputEncoding; // legacy alias of .characterSet + readonly attribute DOMString contentType; + + readonly attribute DocumentType? doctype; + readonly attribute Element? documentElement; + HTMLCollection getElementsByTagName(DOMString localName); + HTMLCollection getElementsByTagNameNS(DOMString? namespace, DOMString localName); + HTMLCollection getElementsByClassName(DOMString classNames); + + [NewObject] Element createElement(DOMString localName); + [NewObject] Element createElementNS(DOMString? namespace, DOMString qualifiedName); + [NewObject] DocumentFragment createDocumentFragment(); + [NewObject] Text createTextNode(DOMString data); + [NewObject] CDATASection createCDATASection(DOMString data); + [NewObject] Comment createComment(DOMString data); + [NewObject] ProcessingInstruction createProcessingInstruction(DOMString target, DOMString data); + + [NewObject] Node importNode(Node node, optional boolean deep = false); + Node adoptNode(Node node); + + [NewObject] Attr createAttribute(DOMString localName); + [NewObject] Attr createAttributeNS(DOMString? namespace, DOMString name); + + [NewObject] Event createEvent(DOMString interface); + + [NewObject] Range createRange(); + + // NodeFilter.SHOW_ALL = 0xFFFFFFFF + [NewObject] NodeIterator createNodeIterator(Node root, optional unsigned long whatToShow = 0xFFFFFFFF, optional NodeFilter? filter = null); + [NewObject] TreeWalker createTreeWalker(Node root, optional unsigned long whatToShow = 0xFFFFFFFF, optional NodeFilter? filter = null); +}; + +interface XMLDocument : Document {}; + +interface DOMImplementation { + [NewObject] DocumentType createDocumentType(DOMString qualifiedName, DOMString publicId, DOMString systemId); + [NewObject] XMLDocument createDocument(DOMString? namespace, [TreatNullAs=EmptyString] DOMString qualifiedName, optional DocumentType? doctype = null); + [NewObject] Document createHTMLDocument(optional DOMString title); + + boolean hasFeature(); // useless; always returns true +}; + +[Constructor] +interface DocumentFragment : Node { +}; + +interface DocumentType : Node { + readonly attribute DOMString name; + readonly attribute DOMString publicId; + readonly attribute DOMString systemId; +}; + +interface Element : Node { + readonly attribute DOMString? namespaceURI; + readonly attribute DOMString? prefix; + readonly attribute DOMString localName; + readonly attribute DOMString tagName; + + attribute DOMString id; + attribute DOMString className; + [SameObject, PutForwards=value] readonly attribute DOMTokenList classList; + + boolean hasAttributes(); + [SameObject] readonly attribute NamedNodeMap attributes; + sequence getAttributeNames(); + DOMString? getAttribute(DOMString name); + DOMString? getAttributeNS(DOMString? namespace, DOMString localName); + void setAttribute(DOMString name, DOMString value); + void setAttributeNS(DOMString? namespace, DOMString name, DOMString value); + void removeAttribute(DOMString name); + void removeAttributeNS(DOMString? namespace, DOMString localName); + boolean hasAttribute(DOMString name); + boolean hasAttributeNS(DOMString? namespace, DOMString localName); + + Attr? getAttributeNode(DOMString name); + Attr? getAttributeNodeNS(DOMString? namespace, DOMString localName); + Attr? setAttributeNode(Attr attr); + Attr? setAttributeNodeNS(Attr attr); + Attr removeAttributeNode(Attr attr); + + Element? closest(DOMString selectors); + boolean matches(DOMString selectors); + + HTMLCollection getElementsByTagName(DOMString localName); + HTMLCollection getElementsByTagNameNS(DOMString? namespace, DOMString localName); + HTMLCollection getElementsByClassName(DOMString classNames); +}; + +interface NamedNodeMap { + readonly attribute unsigned long length; + getter Attr? item(unsigned long index); + getter Attr? getNamedItem(DOMString name); + Attr? getNamedItemNS(DOMString? namespace, DOMString localName); + Attr? setNamedItem(Attr attr); + Attr? setNamedItemNS(Attr attr); + Attr removeNamedItem(DOMString name); + Attr removeNamedItemNS(DOMString? namespace, DOMString localName); +}; + +interface Attr { + readonly attribute DOMString? namespaceURI; + readonly attribute DOMString? prefix; + readonly attribute DOMString localName; + readonly attribute DOMString name; + attribute DOMString value; + attribute DOMString nodeValue; // legacy alias of .value + attribute DOMString textContent; // legacy alias of .value + + readonly attribute Element? ownerElement; + + readonly attribute boolean specified; // useless; always returns true +}; + +interface CharacterData : Node { + [TreatNullAs=EmptyString] attribute DOMString data; + readonly attribute unsigned long length; + DOMString substringData(unsigned long offset, unsigned long count); + void appendData(DOMString data); + void insertData(unsigned long offset, DOMString data); + void deleteData(unsigned long offset, unsigned long count); + void replaceData(unsigned long offset, unsigned long count, DOMString data); +}; + +[Constructor(optional DOMString data = "")] +interface Text : CharacterData { + [NewObject] Text splitText(unsigned long offset); + readonly attribute DOMString wholeText; +}; + +[Exposed=Window] +interface CDATASection : Text { +}; + +interface ProcessingInstruction : CharacterData { + readonly attribute DOMString target; +}; + +[Constructor(optional DOMString data = "")] +interface Comment : CharacterData { +}; + +[Constructor] +interface Range { + readonly attribute Node startContainer; + readonly attribute unsigned long startOffset; + readonly attribute Node endContainer; + readonly attribute unsigned long endOffset; + readonly attribute boolean collapsed; + readonly attribute Node commonAncestorContainer; + + void setStart(Node node, unsigned long offset); + void setEnd(Node node, unsigned long offset); + void setStartBefore(Node node); + void setStartAfter(Node node); + void setEndBefore(Node node); + void setEndAfter(Node node); + void collapse(optional boolean toStart = false); + void selectNode(Node node); + void selectNodeContents(Node node); + + const unsigned short START_TO_START = 0; + const unsigned short START_TO_END = 1; + const unsigned short END_TO_END = 2; + const unsigned short END_TO_START = 3; + short compareBoundaryPoints(unsigned short how, Range sourceRange); + + void deleteContents(); + [NewObject] DocumentFragment extractContents(); + [NewObject] DocumentFragment cloneContents(); + void insertNode(Node node); + void surroundContents(Node newParent); + + [NewObject] Range cloneRange(); + void detach(); + + boolean isPointInRange(Node node, unsigned long offset); + short comparePoint(Node node, unsigned long offset); + + boolean intersectsNode(Node node); + + stringifier; +}; + +interface NodeIterator { + [SameObject] readonly attribute Node root; + readonly attribute Node referenceNode; + readonly attribute boolean pointerBeforeReferenceNode; + readonly attribute unsigned long whatToShow; + readonly attribute NodeFilter? filter; + + Node? nextNode(); + Node? previousNode(); + + void detach(); +}; + +interface TreeWalker { + [SameObject] readonly attribute Node root; + readonly attribute unsigned long whatToShow; + readonly attribute NodeFilter? filter; + attribute Node currentNode; + + Node? parentNode(); + Node? firstChild(); + Node? lastChild(); + Node? previousSibling(); + Node? nextSibling(); + Node? previousNode(); + Node? nextNode(); +}; + +callback interface NodeFilter { + // Constants for acceptNode() + const unsigned short FILTER_ACCEPT = 1; + const unsigned short FILTER_REJECT = 2; + const unsigned short FILTER_SKIP = 3; + + // Constants for whatToShow + const unsigned long SHOW_ALL = 0xFFFFFFFF; + const unsigned long SHOW_ELEMENT = 0x1; + const unsigned long SHOW_ATTRIBUTE = 0x2; // historical + const unsigned long SHOW_TEXT = 0x4; + const unsigned long SHOW_CDATA_SECTION = 0x8; + const unsigned long SHOW_ENTITY_REFERENCE = 0x10; // historical + const unsigned long SHOW_ENTITY = 0x20; // historical + const unsigned long SHOW_PROCESSING_INSTRUCTION = 0x40; + const unsigned long SHOW_COMMENT = 0x80; + const unsigned long SHOW_DOCUMENT = 0x100; + const unsigned long SHOW_DOCUMENT_TYPE = 0x200; + const unsigned long SHOW_DOCUMENT_FRAGMENT = 0x400; + const unsigned long SHOW_NOTATION = 0x800; // historical + + unsigned short acceptNode(Node node); +}; + +interface DOMTokenList { + readonly attribute unsigned long length; + getter DOMString? item(unsigned long index); + boolean contains(DOMString token); + [CEReactions] void add(DOMString... tokens); + [CEReactions] void remove(DOMString... tokens); + [CEReactions] boolean toggle(DOMString token, optional boolean force); + [CEReactions] void replace(DOMString token, DOMString newToken); + boolean supports(DOMString token); + [CEReactions] stringifier attribute DOMString value; + // iterable; +}; + +// UI Events IDLs +[Constructor(DOMString type, optional UIEventInit eventInitDict)] +interface UIEvent : Event { + readonly attribute WindowProxy? view; + readonly attribute long detail; +}; + +dictionary UIEventInit : EventInit { + WindowProxy? view = null; + long detail = 0; +}; + +[Constructor(DOMString typeArg, optional MouseEventInit mouseEventInitDict)] +interface MouseEvent : UIEvent { + readonly attribute long screenX; + readonly attribute long screenY; + readonly attribute long clientX; + readonly attribute long clientY; + readonly attribute boolean ctrlKey; + readonly attribute boolean shiftKey; + readonly attribute boolean altKey; + readonly attribute boolean metaKey; + readonly attribute short button; + readonly attribute EventTarget? relatedTarget; + // Introduced in DOM Level 3 + readonly attribute unsigned short buttons; + boolean getModifierState (DOMString keyArg); +}; + +dictionary MouseEventInit : EventModifierInit { + long screenX = 0; + long screenY = 0; + long clientX = 0; + long clientY = 0; + short button = 0; + unsigned short buttons = 0; + EventTarget? relatedTarget = null; +}; + +dictionary EventModifierInit : UIEventInit { + boolean ctrlKey = false; + boolean shiftKey = false; + boolean altKey = false; + boolean metaKey = false; + boolean keyModifierStateAltGraph = false; + boolean keyModifierStateCapsLock = false; + boolean keyModifierStateFn = false; + boolean keyModifierStateFnLock = false; + boolean keyModifierStateHyper = false; + boolean keyModifierStateNumLock = false; + boolean keyModifierStateOS = false; + boolean keyModifierStateScrollLock = false; + boolean keyModifierStateSuper = false; + boolean keyModifierStateSymbol = false; + boolean keyModifierStateSymbolLock = false; +}; + +partial interface MouseEvent { + // Deprecated in DOM Level 3 + void initMouseEvent (DOMString typeArg, boolean bubblesArg, boolean cancelableArg, Window? viewArg, long detailArg, long screenXArg, long screenYArg, long clientXArg, long clientYArg, boolean ctrlKeyArg, boolean altKeyArg, boolean shiftKeyArg, boolean metaKeyArg, short buttonArg, EventTarget? relatedTargetArg); +}; + +// Touch Events IDLs +interface Touch { + readonly attribute long identifier; + readonly attribute EventTarget target; + readonly attribute long screenX; + readonly attribute long screenY; + readonly attribute long clientX; + readonly attribute long clientY; + readonly attribute long pageX; + readonly attribute long pageY; +}; + +// CSSOM IDLs +interface MediaList { + stringifier attribute DOMString mediaText; + readonly attribute unsigned long length; + getter DOMString item(unsigned long index); + void appendMedium(DOMString medium); + void deleteMedium(DOMString medium); +}; + +interface StyleSheet { + readonly attribute DOMString type; + readonly attribute DOMString href; + readonly attribute Node ownerNode; + readonly attribute StyleSheet parentStyleSheet; + readonly attribute DOMString title; + [PutForwards=mediaText] readonly attribute MediaList media; + attribute boolean disabled; +}; + +interface CSSStyleSheet : StyleSheet { + readonly attribute CSSRule ownerRule; + readonly attribute CSSRuleList cssRules; + unsigned long insertRule(DOMString rule, unsigned long index); + void deleteRule(unsigned long index); +}; + +typedef sequence StyleSheetList; + +partial interface Document { + [SameObject] readonly attribute StyleSheetList styleSheets; +}; + +[NoInterfaceObject] interface LinkStyle { + readonly attribute StyleSheet sheet; +}; + +ProcessingInstruction implements LinkStyle; + +typedef sequence CSSRuleList; + +interface CSSRule { + // Types + const unsigned short STYLE_RULE = 1; + const unsigned short IMPORT_RULE = 3; + const unsigned short MEDIA_RULE = 4; + const unsigned short FONT_FACE_RULE = 5; + const unsigned short PAGE_RULE = 6; + const unsigned short NAMESPACE_RULE = 10; + readonly attribute unsigned short type; + + // Parsing and serialization + attribute DOMString cssText; + + // Context + readonly attribute CSSRule parentRule; + readonly attribute CSSStyleSheet parentStyleSheet; +}; + +interface CSSStyleRule : CSSRule { + attribute DOMString selectorText; + readonly attribute CSSStyleDeclaration style; +}; + +interface CSSImportRule : CSSRule { + readonly attribute DOMString href; + [PutForwards=mediaText] readonly attribute MediaList media; + readonly attribute CSSStyleSheet styleSheet; +}; + +interface CSSMediaRule : CSSRule { + [PutForwards=mediaText] readonly attribute MediaList media; + readonly attribute CSSRuleList cssRules; + unsigned long insertRule(DOMString rule, unsigned long index); + void deleteRule(unsigned long index); +}; + +interface CSSFontFaceRule : CSSRule { + readonly attribute CSSStyleDeclaration style; +}; + +interface CSSPageRule : CSSRule { + attribute DOMString selectorText; + readonly attribute CSSStyleDeclaration style; +}; + +interface CSSNamespaceRule : CSSRule { + readonly attribute DOMString namespaceURI; + readonly attribute DOMString? prefix; +}; + +interface CSSStyleDeclaration { + attribute DOMString cssText; + + readonly attribute unsigned long length; + DOMString item(unsigned long index); + + DOMString getPropertyValue(DOMString property); + DOMString getPropertyPriority(DOMString property); + void setProperty(DOMString property, DOMString value, optional DOMString priority); + DOMString removeProperty(DOMString property); + + readonly attribute CSSStyleDeclarationValue values; + + readonly attribute CSSRule parentRule; + + // CSS Properties + attribute DOMString azimuth; + attribute DOMString background; + attribute DOMString backgroundAttachment; + attribute DOMString backgroundColor; + attribute DOMString backgroundImage; + attribute DOMString backgroundPosition; + attribute DOMString backgroundRepeat; + attribute DOMString border; + attribute DOMString borderCollapse; + attribute DOMString borderColor; + attribute DOMString borderSpacing; + attribute DOMString borderStyle; + attribute DOMString borderTop; + attribute DOMString borderRight; + attribute DOMString borderBottom; + attribute DOMString borderLeft; + attribute DOMString borderTopColor; + attribute DOMString borderRightColor; + attribute DOMString borderBottomColor; + attribute DOMString borderLeftColor; + attribute DOMString borderTopStyle; + attribute DOMString borderRightStyle; + attribute DOMString borderBottomStyle; + attribute DOMString borderLeftStyle; + attribute DOMString borderTopWidth; + attribute DOMString borderRightWidth; + attribute DOMString borderBottomWidth; + attribute DOMString borderLeftWidth; + attribute DOMString borderWidth; + attribute DOMString bottom; + attribute DOMString captionSide; + attribute DOMString clear; + attribute DOMString clip; + attribute DOMString color; + attribute DOMString content; + attribute DOMString counterIncrement; + attribute DOMString counterReset; + attribute DOMString cue; + attribute DOMString cueAfter; + attribute DOMString cueBefore; + attribute DOMString cursor; + attribute DOMString direction; + attribute DOMString display; + attribute DOMString elevation; + attribute DOMString emptyCells; + attribute DOMString cssFloat; + attribute DOMString font; + attribute DOMString fontFamily; + attribute DOMString fontSize; + attribute DOMString fontSizeAdjust; + attribute DOMString fontStretch; + attribute DOMString fontStyle; + attribute DOMString fontVariant; + attribute DOMString fontWeight; + attribute DOMString height; + attribute DOMString left; + attribute DOMString letterSpacing; + attribute DOMString lineHeight; + attribute DOMString listStyle; + attribute DOMString listStyleImage; + attribute DOMString listStylePosition; + attribute DOMString listStyleType; + attribute DOMString margin; + attribute DOMString marginTop; + attribute DOMString marginRight; + attribute DOMString marginBottom; + attribute DOMString marginLeft; + attribute DOMString marks; + attribute DOMString maxHeight; + attribute DOMString maxWidth; + attribute DOMString minHeight; + attribute DOMString minWidth; + attribute DOMString orphans; + attribute DOMString outline; + attribute DOMString outlineColor; + attribute DOMString outlineStyle; + attribute DOMString outlineWidth; + attribute DOMString overflow; + attribute DOMString padding; + attribute DOMString paddingTop; + attribute DOMString paddingRight; + attribute DOMString paddingBottom; + attribute DOMString paddingLeft; + attribute DOMString page; + attribute DOMString pageBreakAfter; + attribute DOMString pageBreakBefore; + attribute DOMString pageBreakInside; + attribute DOMString pause; + attribute DOMString pauseAfter; + attribute DOMString pauseBefore; + attribute DOMString pitch; + attribute DOMString pitchRange; + attribute DOMString playDuring; + attribute DOMString position; + attribute DOMString quotes; + attribute DOMString richness; + attribute DOMString right; + attribute DOMString size; + attribute DOMString speak; + attribute DOMString speakHeader; + attribute DOMString speakNumeral; + attribute DOMString speakPunctuation; + attribute DOMString speechRate; + attribute DOMString stress; + attribute DOMString tableLayout; + attribute DOMString textAlign; + attribute DOMString textDecoration; + attribute DOMString textIndent; + attribute DOMString textShadow; + attribute DOMString textTransform; + attribute DOMString top; + attribute DOMString unicodeBidi; + attribute DOMString verticalAlign; + attribute DOMString visibility; + attribute DOMString voiceFamily; + attribute DOMString volume; + attribute DOMString whiteSpace; + attribute DOMString widows; + attribute DOMString width; + attribute DOMString wordSpacing; + attribute DOMString zIndex; +}; + +interface CSSStyleDeclarationValue { + // ... + + // CSS Properties + +}; + +interface CSSPropertyValue { + attribute DOMString cssText; +}; + +[NoInterfaceObject] interface CSSMapValue { + getter CSSValue (DOMString name); +}; + +[NoInterfaceObject] interface CSSPropertyValueList { + readonly attribute CSSValue[] list; +}; + +[NoInterfaceObject] interface CSSComponentValue { + readonly attribute DOMString type; + attribute any value; +}; + +[NoInterfaceObject] interface CSSStringComponentValue { + attribute DOMString string; +}; + +[NoInterfaceObject] interface CSSKeywordComponentValue { + attribute DOMString keyword; +}; + +[NoInterfaceObject] interface CSSIdentifierComponentValue { + attribute DOMString identifier; +}; + +[NoInterfaceObject] interface CSSColorComponentValue { + attribute short red; + attribute short green; + attribute short blue; + attribute float alpha; +}; + +[NoInterfaceObject] interface CSSLengthComponentValue { + attribute float em; + attribute float ex; + attribute float px; + // figure out what to do with absolute lengths +}; + +[NoInterfaceObject] interface CSSPercentageComponentValue { + attribute float percent; +}; + +[NoInterfaceObject] interface CSSURLComponentValue { + attribute DOMString? url; +}; + +[NoInterfaceObject] interface ElementCSSInlineStyle { + readonly attribute CSSStyleDeclaration style; +}; + +//partial interface Window { +// CSSStyleDeclaration getComputedStyle(Element elt); +// CSSStyleDeclaration getComputedStyle(Element elt, DOMString pseudoElt); +//}; diff --git a/tests/wpt/web-platform-tests/html/dom/self-origin.any.js b/tests/wpt/web-platform-tests/html/dom/self-origin.any.js new file mode 100644 index 00000000000..c103a32144f --- /dev/null +++ b/tests/wpt/web-platform-tests/html/dom/self-origin.any.js @@ -0,0 +1,5 @@ +"use strict"; + +test(function() { + assert_equals(self.origin, "http://" + location.host); +}, "self.origin should be correct"); diff --git a/tests/wpt/web-platform-tests/html/dom/self-origin.sub.html b/tests/wpt/web-platform-tests/html/dom/self-origin.sub.html new file mode 100644 index 00000000000..4143a4a20ab --- /dev/null +++ b/tests/wpt/web-platform-tests/html/dom/self-origin.sub.html @@ -0,0 +1,93 @@ + + + + +
+ + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/html/rendering/bindings/the-button-element/button-type-menu-historical-ref.html b/tests/wpt/web-platform-tests/html/rendering/bindings/the-button-element/button-type-menu-historical-ref.html new file mode 100644 index 00000000000..6d728e8136a --- /dev/null +++ b/tests/wpt/web-platform-tests/html/rendering/bindings/the-button-element/button-type-menu-historical-ref.html @@ -0,0 +1,7 @@ + +Test that button with type="menu" renders the same as button with type="submit" + + + + + diff --git a/tests/wpt/web-platform-tests/html/rendering/bindings/the-button-element/button-type-menu-historical.html b/tests/wpt/web-platform-tests/html/rendering/bindings/the-button-element/button-type-menu-historical.html new file mode 100644 index 00000000000..b355afeed1e --- /dev/null +++ b/tests/wpt/web-platform-tests/html/rendering/bindings/the-button-element/button-type-menu-historical.html @@ -0,0 +1,8 @@ + +Test that button with type="menu" renders the same as button with type="submit" + + + + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/media-elements/ready-states/autoplay-with-slow-text-tracks.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/media-elements/ready-states/autoplay-with-slow-text-tracks.html new file mode 100644 index 00000000000..cf1b98c2bce --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/media-elements/ready-states/autoplay-with-slow-text-tracks.html @@ -0,0 +1,45 @@ + +autoplay with slow text tracks + + + +
+ diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/resources/should-load.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/resources/should-load.html new file mode 100644 index 00000000000..a9a178ce51e --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/resources/should-load.html @@ -0,0 +1,3 @@ + diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/resources/should-not-load.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/resources/should-not-load.html new file mode 100644 index 00000000000..6281b2da553 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/resources/should-not-load.html @@ -0,0 +1,5 @@ + diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-area-element/area-download-click.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-area-element/area-download-click.html new file mode 100644 index 00000000000..7554c9b03bc --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-area-element/area-download-click.html @@ -0,0 +1,27 @@ + + +Clicking on an <area> element with a download attribute must not throw an exception + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/toBlob.jpeg.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/toBlob.jpeg.html index 37289fea2cb..1a95d4a6dd8 100644 --- a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/toBlob.jpeg.html +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/toBlob.jpeg.html @@ -1,29 +1,17 @@ - Canvas test: toBlob.jpeg - - - - -

toBlob.jpeg

-

toBlob with image/jpeg returns a JPEG Blob

- - -

Actual output:

-

FAIL (fallback content)

- -
    +
    + - diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/toBlob.null.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/toBlob.null.html new file mode 100644 index 00000000000..b66153c3eed --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/toBlob.null.html @@ -0,0 +1,33 @@ + + +Canvas test: toBlob.null + + + + + + +

    toBlob.null

    +

    toBlob with zero dimension returns a null Blob

    + +

    Actual output:

    +

    FAIL (fallback content)

    + +
      + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/toBlob.png.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/toBlob.png.html index 80bc16c5aa0..1533bfdb6c7 100644 --- a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/toBlob.png.html +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/toBlob.png.html @@ -1,29 +1,17 @@ - Canvas test: toBlob.png - - - - -

      toBlob.png

      -

      toBlob with image/png returns a PNG Blob

      - - -

      Actual output:

      -

      FAIL (fallback content)

      - -
        +
        + - diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-embed-element/embed-ignored-in-media-element.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-embed-element/embed-ignored-in-media-element.html index d29d520f0e5..941b0c0b778 100644 --- a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-embed-element/embed-ignored-in-media-element.html +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-embed-element/embed-ignored-in-media-element.html @@ -5,18 +5,18 @@ diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-embed-element/embed-in-object-fallback-2.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-embed-element/embed-in-object-fallback-2.html new file mode 100644 index 00000000000..d904a7e1a1c --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-embed-element/embed-in-object-fallback-2.html @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + +
        + +
        + +
        + +
        +
        + + + + + + + + + + +
        + + +
        +
        + + +
        + + diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-object-element/object-events.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-object-element/object-events.html index 9cd567173ec..4ead6f56b19 100644 --- a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-object-element/object-events.html +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-object-element/object-events.html @@ -23,7 +23,7 @@ async_test(function(t) { obj.data = "file:\\http://nonexistent.html"; document.body.appendChild(obj); -}, "error event"); +}, "error event (using 'file:' protocol)"); async_test(function(t) { var obj = document.createElement("object"); @@ -37,7 +37,7 @@ async_test(function(t) { obj.data = "http://test:test"; document.body.appendChild(obj); -}, "error event"); +}, "error event (using 'http:' protocol)"); async_test(function(t) { diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-object-element/object-ignored-in-media-element.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-object-element/object-ignored-in-media-element.html new file mode 100644 index 00000000000..2bf84c2946f --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-object-element/object-ignored-in-media-element.html @@ -0,0 +1,22 @@ + + +HTML Test: The embed element represents a document + + + + + + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-object-element/object-in-object-fallback-2.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-object-element/object-in-object-fallback-2.html new file mode 100644 index 00000000000..47cf8016935 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-object-element/object-in-object-fallback-2.html @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + +
        + +
        + +
        + +
        +
        + + + + + + + + + + +
        + + +
        +
        + + +
        + + diff --git a/tests/wpt/web-platform-tests/html/semantics/forms/form-submission-0/form-data-set-usv-form.html b/tests/wpt/web-platform-tests/html/semantics/forms/form-submission-0/form-data-set-usv-form.html new file mode 100644 index 00000000000..ce87abd9570 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/forms/form-submission-0/form-data-set-usv-form.html @@ -0,0 +1,27 @@ + + +This is the form that will be submitted + +
        + + + + +
        + + diff --git a/tests/wpt/web-platform-tests/html/semantics/forms/form-submission-0/form-data-set-usv.html b/tests/wpt/web-platform-tests/html/semantics/forms/form-submission-0/form-data-set-usv.html new file mode 100644 index 00000000000..ea5b0dcc899 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/forms/form-submission-0/form-data-set-usv.html @@ -0,0 +1,40 @@ + + +Submitting a form data set that contains unpaired surrogates must convert to Unicode scalar values + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/forms/form-submission-0/form-echo.py b/tests/wpt/web-platform-tests/html/semantics/forms/form-submission-0/form-echo.py new file mode 100644 index 00000000000..a7f0dc87efd --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/forms/form-submission-0/form-echo.py @@ -0,0 +1,7 @@ +def main(request, response): + bytes = bytearray(request.raw_input.read()) + bytes_string = " ".join("%02x" % b for b in bytes) + return ( + [("Content-Type", "text/plain")], + bytes_string + ) diff --git a/tests/wpt/web-platform-tests/html/semantics/forms/the-button-element/button-menu-historical.html b/tests/wpt/web-platform-tests/html/semantics/forms/the-button-element/button-menu-historical.html new file mode 100644 index 00000000000..fe68be0fd08 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/forms/the-button-element/button-menu-historical.html @@ -0,0 +1,25 @@ + +Test that nobody implemented the now-removed menu type and attribute on button + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/forms/the-input-element/selection.html b/tests/wpt/web-platform-tests/html/semantics/forms/the-input-element/selection.html index 4ed4bc9141c..7d9c1a4fd7e 100644 --- a/tests/wpt/web-platform-tests/html/semantics/forms/the-input-element/selection.html +++ b/tests/wpt/web-platform-tests/html/semantics/forms/the-input-element/selection.html @@ -57,9 +57,18 @@ test(function() { input.type = type; assert_equals(input.type, type, "the given input type is not supported"); - assert_throws("INVALID_STATE_ERR", function() { input.select(); }); + var selectionStartBefore = input.selectionStart; + var selectionEndBefore = input.selectionEnd; + var selectionDirectionBefore = input.selectionDirection; - }, "input type " + type + " should not support the select() method"); + // Does not throw; see https://github.com/whatwg/html/issues/2275 + input.select(); + + assert_equals(input.selectionStart, selectionStartBefore, "selectionStart must not change"); + assert_equals(input.selectionEnd, selectionEndBefore, "selectionEnd must not change"); + assert_equals(input.selectionDirection, selectionDirectionBefore, "selectionDirection must not change"); + + }, "input type " + type + " should do nothing when the select() method is called (but, not throw)"); }); }); diff --git a/tests/wpt/web-platform-tests/html/semantics/forms/the-input-element/valueMode.html b/tests/wpt/web-platform-tests/html/semantics/forms/the-input-element/valueMode.html index 709c176dd63..2a5b9465ad5 100644 --- a/tests/wpt/web-platform-tests/html/semantics/forms/the-input-element/valueMode.html +++ b/tests/wpt/web-platform-tests/html/semantics/forms/the-input-element/valueMode.html @@ -6,67 +6,300 @@
        diff --git a/tests/wpt/web-platform-tests/html/semantics/forms/the-label-element/labelable-elements.html b/tests/wpt/web-platform-tests/html/semantics/forms/the-label-element/labelable-elements.html index a508a9126a4..9dfe214da33 100644 --- a/tests/wpt/web-platform-tests/html/semantics/forms/the-label-element/labelable-elements.html +++ b/tests/wpt/web-platform-tests/html/semantics/forms/the-label-element/labelable-elements.html @@ -36,7 +36,7 @@
        diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/crossorigin-common.js b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/crossorigin-common.js new file mode 100644 index 00000000000..59bf0fd42fc --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/crossorigin-common.js @@ -0,0 +1,8 @@ +document._log = []; +window.addEventListener("error", function (ev) { + var errorSerialized = ev.lineno + "-" + ev.colno; + document._log.push(errorSerialized); +}); +window.addEventListener("load", function () { + document._log = document._log.join(","); +}); diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/crossorigin-import-different.sub.html b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/crossorigin-import-different.sub.html new file mode 100644 index 00000000000..29528d5d737 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/crossorigin-import-different.sub.html @@ -0,0 +1,15 @@ + + + + html-script-module-crossOrigin-import-NoCORS + + + +

        html-script-module-crossOrigin-import-NoCORS

        + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/crossorigin-import-missingheader.sub.html b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/crossorigin-import-missingheader.sub.html new file mode 100644 index 00000000000..cccb30f7188 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/crossorigin-import-missingheader.sub.html @@ -0,0 +1,15 @@ + + + + html-script-module-crossOrigin-root-BlockedMissingHeader + + + +

        html-script-module-crossOrigin-root-BlockedMissingHeader

        + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/crossorigin-import-same.sub.html b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/crossorigin-import-same.sub.html new file mode 100644 index 00000000000..84f4de1d7e0 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/crossorigin-import-same.sub.html @@ -0,0 +1,15 @@ + + + + html-script-module-crossOrigin-root-WithCORS + + + +

        html-script-module-crossOrigin-root-WithCORS

        + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/crossorigin-import-wrongheader.sub.html b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/crossorigin-import-wrongheader.sub.html new file mode 100644 index 00000000000..5743a9e3042 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/crossorigin-import-wrongheader.sub.html @@ -0,0 +1,15 @@ + + + + html-script-module-crossOrigin-root-BlockedWrongHeader + + + +

        html-script-module-crossOrigin-root-BlockedWrongHeader

        + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/crossorigin-root-different.sub.html b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/crossorigin-root-different.sub.html new file mode 100644 index 00000000000..870d8a495ae --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/crossorigin-root-different.sub.html @@ -0,0 +1,11 @@ + + + + html-script-module-crossOrigin-root-NoCORS + + + +

        html-script-module-crossOrigin-root-NoCORS

        + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/crossorigin-root-missingheader.sub.html b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/crossorigin-root-missingheader.sub.html new file mode 100644 index 00000000000..03943002ba3 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/crossorigin-root-missingheader.sub.html @@ -0,0 +1,11 @@ + + + + html-script-module-crossOrigin-root-BlockedMissingHeader + + + +

        html-script-module-crossOrigin-root-BlockedMissingHeader

        + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/crossorigin-root-same.sub.html b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/crossorigin-root-same.sub.html new file mode 100644 index 00000000000..3ec839e9a90 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/crossorigin-root-same.sub.html @@ -0,0 +1,11 @@ + + + + html-script-module-crossOrigin-root-WithCORS + + + +

        html-script-module-crossOrigin-root-WithCORS

        + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/crossorigin-root-wrongheader.sub.html b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/crossorigin-root-wrongheader.sub.html new file mode 100644 index 00000000000..c45736a896b --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/crossorigin-root-wrongheader.sub.html @@ -0,0 +1,11 @@ + + + + html-script-module-crossOrigin-root-BlockedWrongHeader + + + +

        html-script-module-crossOrigin-root-BlockedWrongHeader

        + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/crossorigin-scripterror.js b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/crossorigin-scripterror.js new file mode 100644 index 00000000000..29d04ec6198 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/crossorigin-scripterror.js @@ -0,0 +1,8 @@ +export var foo = {}; + +// Push an event to the log indicating that the script was executed. +document._log.push("running"); + +// Deliberately trigger an error to test what details of the error +// the (possibly) cross-origin parent can listen to. +nonExistentMethod(); diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/crossorigin.html b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/crossorigin.html new file mode 100644 index 00000000000..cf7be01e7b5 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/crossorigin.html @@ -0,0 +1,43 @@ + + + + html-script-module-crossOrigin + + + + +

        html-script-module-crossOrigin

        + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/errorhandling-parseerror-common.js b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/errorhandling-parseerror-common.js new file mode 100644 index 00000000000..4eb5597a582 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/errorhandling-parseerror-common.js @@ -0,0 +1,10 @@ +function errorHandler(ev) +{ + document._errorReported.push("error"); +} + +document._errorReported = []; +window.addEventListener("error", errorHandler); +window.addEventListener("load", function () { + document._errorReported = document._errorReported.join(","); +}); diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/errorhandling-parseerror-dependent.html b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/errorhandling-parseerror-dependent.html new file mode 100644 index 00000000000..3a00f62f00f --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/errorhandling-parseerror-dependent.html @@ -0,0 +1,16 @@ + + + + html-script-module-errorHandling-parseError-Dependent + + + + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/errorhandling-parseerror-dependent.js b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/errorhandling-parseerror-dependent.js new file mode 100644 index 00000000000..71872c47cfe --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/errorhandling-parseerror-dependent.js @@ -0,0 +1,2 @@ +// Parse error in a dependent module +1A diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/errorhandling-parseerror-dependentmultiple.html b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/errorhandling-parseerror-dependentmultiple.html new file mode 100644 index 00000000000..37487aa5352 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/errorhandling-parseerror-dependentmultiple.html @@ -0,0 +1,31 @@ + + + + html-script-module-errorHandling-parseError-DependentMultiple + + + + + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/errorhandling-parseerror-dependentmultiple.js b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/errorhandling-parseerror-dependentmultiple.js new file mode 100644 index 00000000000..71872c47cfe --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/errorhandling-parseerror-dependentmultiple.js @@ -0,0 +1,2 @@ +// Parse error in a dependent module +1A diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/errorhandling-parseerror-root.html b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/errorhandling-parseerror-root.html new file mode 100644 index 00000000000..012f3e9b8c0 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/errorhandling-parseerror-root.html @@ -0,0 +1,15 @@ + + + + html-script-module-errorHandling-parseError-Root + + + + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/errorhandling-wrongMimetype-import.js b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/errorhandling-wrongMimetype-import.js new file mode 100644 index 00000000000..5e7b21b3214 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/errorhandling-wrongMimetype-import.js @@ -0,0 +1,8 @@ +import foo from "./errorhandling-wrongMimetype.js?pipe=header(X-Content-Type-Options,nosniff),header(Content-Type,text/plain)"; + +// We don't expect this code to run, the import above should fail! +// If we do run though, don't trigger an error that the testharness +// might misinterpret as the import itself failing to load. + +var A = null; +export { A }; diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/errorhandling-wrongMimetype.js b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/errorhandling-wrongMimetype.js new file mode 100644 index 00000000000..373a5324455 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/errorhandling-wrongMimetype.js @@ -0,0 +1,7 @@ +// This is a plain JavaScript file, but since it will only be accessed with +// a Content-Type of text/plain and nosniff, it will be seen as invalid. +// The file itself will have no errors/effects, so if it does actually run, +// no error will be detected, and the test will fail. + +var foo = null; +export foo; \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/errorhandling.html b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/errorhandling.html new file mode 100644 index 00000000000..6f36d2ce896 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/errorhandling.html @@ -0,0 +1,61 @@ + + + + html-script-module-errorHandling + + + + + +

        html-script-module-errorHandling

        + + + + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/execorder-dynamicordered2.js b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/execorder-dynamicordered2.js new file mode 100644 index 00000000000..d7115a2ac62 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/execorder-dynamicordered2.js @@ -0,0 +1,3 @@ +test_dynamicOrdered.step(function() { + assert_execCount(1, 2, "External script element (#1) should have fired second"); +}); diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/execorder-dynamicordered3.js b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/execorder-dynamicordered3.js new file mode 100644 index 00000000000..c04e101bb80 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/execorder-dynamicordered3.js @@ -0,0 +1,3 @@ +test_dynamicOrdered.step(function() { + assert_execCount(1, 3, "External script element (#2) should have fired third"); +}); diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/execorder-dynamicordered4.js b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/execorder-dynamicordered4.js new file mode 100644 index 00000000000..958736a3d86 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/execorder-dynamicordered4.js @@ -0,0 +1,3 @@ +test_dynamicOrdered.step(function() { + assert_execCount(1, 4, "External script element (#3) should have fired fourth"); +}); diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/execorder-dynamicunordered1.js b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/execorder-dynamicunordered1.js new file mode 100644 index 00000000000..a54cb7a3032 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/execorder-dynamicunordered1.js @@ -0,0 +1,3 @@ +test_dynamicUnordered1.step(function() { + test_dynamicUnordered1.done(); +}); diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/execorder-dynamicunordered2.js b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/execorder-dynamicunordered2.js new file mode 100644 index 00000000000..df0cd85421d --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/execorder-dynamicunordered2.js @@ -0,0 +1,3 @@ +test_dynamicUnordered2.step(function() { + test_dynamicUnordered2.done(); +}); diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/execorder-parsedordered2.js b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/execorder-parsedordered2.js new file mode 100644 index 00000000000..fca73bd9dbd --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/execorder-parsedordered2.js @@ -0,0 +1,3 @@ +test_parsedOrdered.step(function() { + assert_execCount(0, 2, "External deferred (#1) script element should have fired second"); +}); diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/execorder-parsedordered4.js b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/execorder-parsedordered4.js new file mode 100644 index 00000000000..6435333bb96 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/execorder-parsedordered4.js @@ -0,0 +1,3 @@ +test_parsedOrdered.step(function() { + assert_execCount(0, 4, "External deferred (#2) script element should have fired fourth"); +}); diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/execorder-parsedunordered1.js b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/execorder-parsedunordered1.js new file mode 100644 index 00000000000..ea0bb1b4863 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/execorder-parsedunordered1.js @@ -0,0 +1,3 @@ +test_parsedUnordered1.step(function() { + test_parsedUnordered1.done(); +}); diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/execorder-parsedunordered2.js b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/execorder-parsedunordered2.js new file mode 100644 index 00000000000..ce219ee0ea5 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/execorder-parsedunordered2.js @@ -0,0 +1,3 @@ +test_parsedUnordered2.step(function() { + test_parsedUnordered2.done(); +}); diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/execorder.html b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/execorder.html new file mode 100644 index 00000000000..3f28267298b --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/execorder.html @@ -0,0 +1,105 @@ + + + + html-script-module-execOrder + + + + + +

        html-script-module-execOrder

        + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/imports-a.js b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/imports-a.js new file mode 100644 index 00000000000..2d16783d45d --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/imports-a.js @@ -0,0 +1,2 @@ +var A = { "from": "imports-a.js" }; +export { A }; diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/imports-b.js b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/imports-b.js new file mode 100644 index 00000000000..ae194e4d8a4 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/imports-b.js @@ -0,0 +1 @@ +export var B = { "from": "imports-b.js" }; diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/imports-cycle-a.js b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/imports-cycle-a.js new file mode 100644 index 00000000000..8bd8526f761 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/imports-cycle-a.js @@ -0,0 +1,2 @@ +import { CycleB } from "./imports-cycle-b.js"; +export var CycleA = "CycleA"; diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/imports-cycle-b.js b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/imports-cycle-b.js new file mode 100644 index 00000000000..218f350c391 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/imports-cycle-b.js @@ -0,0 +1,2 @@ +import { CycleA } from "./imports-cycle-a.js"; +export var CycleB = "CycleB"; diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/imports-cycle.js b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/imports-cycle.js new file mode 100644 index 00000000000..9f452e4abeb --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/imports-cycle.js @@ -0,0 +1,5 @@ +import { CycleA } from "./imports-cycle-a.js"; + +test_importCycle.step(function () { + assert_unreached("This module should not have loaded!"); +}); diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/imports-inc-a.js b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/imports-inc-a.js new file mode 100644 index 00000000000..8cb2298e8a0 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/imports-inc-a.js @@ -0,0 +1,2 @@ +import { A } from "./imports-a.js"; +export { A as INC_A }; diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/imports-inc-ab.js b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/imports-inc-ab.js new file mode 100644 index 00000000000..b7d84005c58 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/imports-inc-ab.js @@ -0,0 +1,5 @@ +import { A } from "./imports-a.js"; +export { A as INC_AB_A }; + +import { B } from "./imports-b.js"; +export { B as INC_AB_B }; diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/imports-inc-b.js b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/imports-inc-b.js new file mode 100644 index 00000000000..243b84fdd09 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/imports-inc-b.js @@ -0,0 +1,2 @@ +import { B } from "./imports-b.js"; +export { B as INC_B }; \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/imports-self-inner.js b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/imports-self-inner.js new file mode 100644 index 00000000000..40eca1c8dfb --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/imports-self-inner.js @@ -0,0 +1,2 @@ +import { SelfInner as SelfInnerA } from "./imports-self-inner.js"; +export var SelfInner = "SelfInner"; diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/imports-self.js b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/imports-self.js new file mode 100644 index 00000000000..32eb7b6841d --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/imports-self.js @@ -0,0 +1,5 @@ +import { SelfInner } from "./imports-self-inner.js"; + +test_importSelf.step(function () { + assert_unreached("This module should not have loaded!"); +}); diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/imports.html b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/imports.html new file mode 100644 index 00000000000..91a0fd35e57 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/imports.html @@ -0,0 +1,64 @@ + + + + html-script-module-imports + + + + +

        html-script-module-imports

        + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/text-level-semantics/the-a-element/a-download-click.html b/tests/wpt/web-platform-tests/html/semantics/text-level-semantics/the-a-element/a-download-click.html new file mode 100644 index 00000000000..ad6a3df001e --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/text-level-semantics/the-a-element/a-download-click.html @@ -0,0 +1,24 @@ + + +Clicking on an <a> element with a download attribute must not throw an exception + + + + + + +Click me + + diff --git a/tests/wpt/web-platform-tests/html/syntax/OWNERS b/tests/wpt/web-platform-tests/html/syntax/OWNERS new file mode 100644 index 00000000000..26ea3154662 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/syntax/OWNERS @@ -0,0 +1 @@ +@gsnedders diff --git a/tests/wpt/web-platform-tests/html/syntax/parsing-html-fragments/the-input-byte-stream-015.html b/tests/wpt/web-platform-tests/html/syntax/parsing-html-fragments/the-input-byte-stream-015.html index 383c93b5e57..9be6f5f20ae 100644 --- a/tests/wpt/web-platform-tests/html/syntax/parsing-html-fragments/the-input-byte-stream-015.html +++ b/tests/wpt/web-platform-tests/html/syntax/parsing-html-fragments/the-input-byte-stream-015.html @@ -2,6 +2,7 @@ No encoding declaration + diff --git a/tests/wpt/web-platform-tests/html/tools/OWNERS b/tests/wpt/web-platform-tests/html/tools/OWNERS new file mode 100644 index 00000000000..26ea3154662 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/tools/OWNERS @@ -0,0 +1 @@ +@gsnedders diff --git a/tests/wpt/web-platform-tests/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/origin-check-in-document-open-basic.html b/tests/wpt/web-platform-tests/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/origin-check-in-document-open-basic.html new file mode 100644 index 00000000000..7335122e28f --- /dev/null +++ b/tests/wpt/web-platform-tests/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/origin-check-in-document-open-basic.html @@ -0,0 +1,18 @@ + +Origin check in document.open() - Basic usage + + + + + + + + diff --git a/tests/wpt/web-platform-tests/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/origin-check-in-document-open-same-origin-domain.sub.html b/tests/wpt/web-platform-tests/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/origin-check-in-document-open-same-origin-domain.sub.html new file mode 100644 index 00000000000..d2f4e4023a3 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/origin-check-in-document-open-same-origin-domain.sub.html @@ -0,0 +1,16 @@ + +Origin check in document.open() - same origin-domain (but not same origin) documents + + + + + + + + diff --git a/tests/wpt/web-platform-tests/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/resources/set-document-domain.html b/tests/wpt/web-platform-tests/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/resources/set-document-domain.html new file mode 100644 index 00000000000..a92a7ae39f8 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/resources/set-document-domain.html @@ -0,0 +1,4 @@ + + diff --git a/tests/wpt/web-platform-tests/html/webappapis/idle-callbacks/callback-suspended.html b/tests/wpt/web-platform-tests/html/webappapis/idle-callbacks/callback-suspended.html new file mode 100644 index 00000000000..6040de922fb --- /dev/null +++ b/tests/wpt/web-platform-tests/html/webappapis/idle-callbacks/callback-suspended.html @@ -0,0 +1,93 @@ + + +Dispatching idle callbacks should be able to be suspended and then resumed + + +
        + diff --git a/tests/wpt/web-platform-tests/html/webappapis/idle-callbacks/cancel-invoked.html b/tests/wpt/web-platform-tests/html/webappapis/idle-callbacks/cancel-invoked.html index 8956b8709dc..9fb77d65dc5 100644 --- a/tests/wpt/web-platform-tests/html/webappapis/idle-callbacks/cancel-invoked.html +++ b/tests/wpt/web-platform-tests/html/webappapis/idle-callbacks/cancel-invoked.html @@ -23,4 +23,10 @@ t.done(); }, 2000); }, "A cancelled callback is never invoked"); + + async_test(function (t) { + var handle = requestIdleCallback(t.step_func_done(function () { + cancelIdleCallback(handle); + })); + }, "Cancelling the currently executing idle callback should be allowed"); diff --git a/tests/wpt/web-platform-tests/html/webappapis/idle-callbacks/resources/post_name_on_load.html b/tests/wpt/web-platform-tests/html/webappapis/idle-callbacks/resources/post_name_on_load.html new file mode 100644 index 00000000000..4679a6e6ec7 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/webappapis/idle-callbacks/resources/post_name_on_load.html @@ -0,0 +1,7 @@ + + diff --git a/tests/wpt/web-platform-tests/html/webappapis/scripting/events/body-exposed-window-event-handlers.html b/tests/wpt/web-platform-tests/html/webappapis/scripting/events/body-exposed-window-event-handlers.html index 0bd26dc7576..e4f00b866db 100644 --- a/tests/wpt/web-platform-tests/html/webappapis/scripting/events/body-exposed-window-event-handlers.html +++ b/tests/wpt/web-platform-tests/html/webappapis/scripting/events/body-exposed-window-event-handlers.html @@ -2,7 +2,6 @@ - + + + + + + + + diff --git a/tests/wpt/web-platform-tests/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/disallow-crossorigin.html b/tests/wpt/web-platform-tests/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/disallow-crossorigin.html new file mode 100644 index 00000000000..627a2f3e5a7 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/disallow-crossorigin.html @@ -0,0 +1,34 @@ + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-event-constructor.html b/tests/wpt/web-platform-tests/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-event-constructor.html new file mode 100644 index 00000000000..109b10ead44 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-event-constructor.html @@ -0,0 +1,44 @@ + + + + + + diff --git a/tests/wpt/web-platform-tests/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events-attached-in-event.html b/tests/wpt/web-platform-tests/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events-attached-in-event.html new file mode 100644 index 00000000000..b151bd812f9 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events-attached-in-event.html @@ -0,0 +1,31 @@ + + + + + + diff --git a/tests/wpt/web-platform-tests/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events-onerror.html b/tests/wpt/web-platform-tests/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events-onerror.html new file mode 100644 index 00000000000..386af169a64 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events-onerror.html @@ -0,0 +1,35 @@ + + + + + + + diff --git a/tests/wpt/web-platform-tests/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.dedicatedworker.html b/tests/wpt/web-platform-tests/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.dedicatedworker.html new file mode 100644 index 00000000000..b6a4a9f3e69 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.dedicatedworker.html @@ -0,0 +1,11 @@ + + +Promise rejection events tests: in a dedicated worker context + + + + + diff --git a/tests/wpt/web-platform-tests/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.html b/tests/wpt/web-platform-tests/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.html new file mode 100644 index 00000000000..2fdfe260251 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.html @@ -0,0 +1,8 @@ + + +Promise rejection events tests: in a Window context + + + + + diff --git a/tests/wpt/web-platform-tests/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.serviceworker.https.html b/tests/wpt/web-platform-tests/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.serviceworker.https.html new file mode 100644 index 00000000000..9d12125928e --- /dev/null +++ b/tests/wpt/web-platform-tests/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.serviceworker.https.html @@ -0,0 +1,12 @@ + + +Promise rejection events tests: in a service worker context + + + + + + diff --git a/tests/wpt/web-platform-tests/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.sharedworker.html b/tests/wpt/web-platform-tests/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.sharedworker.html new file mode 100644 index 00000000000..d832d1822fc --- /dev/null +++ b/tests/wpt/web-platform-tests/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.sharedworker.html @@ -0,0 +1,11 @@ + + +Promise rejection events tests: in a shared worker context + + + + + diff --git a/tests/wpt/web-platform-tests/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/support/promise-access-control.py b/tests/wpt/web-platform-tests/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/support/promise-access-control.py new file mode 100644 index 00000000000..3e897bccdce --- /dev/null +++ b/tests/wpt/web-platform-tests/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/support/promise-access-control.py @@ -0,0 +1,10 @@ +def main(request, response): + allow = request.GET.first("allow", "false") + + headers = [("Content-Type", "application/javascript")] + if allow != "false": + headers.append(("Access-Control-Allow-Origin", "*")) + + body = "new Promise(function(resolve, reject) { reject(42); })" + + return headers, body diff --git a/tests/wpt/web-platform-tests/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/support/promise-rejection-events.js b/tests/wpt/web-platform-tests/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/support/promise-rejection-events.js new file mode 100644 index 00000000000..0de39f695ab --- /dev/null +++ b/tests/wpt/web-platform-tests/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/support/promise-rejection-events.js @@ -0,0 +1,900 @@ +'use strict'; + +if (self.importScripts) { + importScripts('/resources/testharness.js'); +} + +setup({ + allow_uncaught_exception: true +}); + +// +// Straightforward unhandledrejection tests +// +async_test(function(t) { + var e = new Error(); + var p; + + onUnhandledSucceed(t, e, function() { return p; }); + + p = Promise.reject(e); +}, 'unhandledrejection: from Promise.reject'); + +async_test(function(t) { + var e = new Error(); + var p; + + onUnhandledSucceed(t, e, function() { return p; }); + + p = new Promise(function(_, reject) { + reject(e); + }); +}, 'unhandledrejection: from a synchronous rejection in new Promise'); + +async_test(function(t) { + var e = new Error(); + var p; + + onUnhandledSucceed(t, e, function() { return p; }); + + p = new Promise(function(_, reject) { + postMessageTask(function() { + reject(e); + }); + }); +}, 'unhandledrejection: from a task-delayed rejection'); + +async_test(function(t) { + var e = new Error(); + var p; + + onUnhandledSucceed(t, e, function() { return p; }); + + p = new Promise(function(_, reject) { + setTimeout(function() { + reject(e); + }, 1); + }); +}, 'unhandledrejection: from a setTimeout-delayed rejection'); + +async_test(function(t) { + var e = new Error(); + var e2 = new Error(); + var promise2; + + onUnhandledSucceed(t, e2, function() { return promise2; }); + + var unreached = t.unreached_func('promise should not be fulfilled'); + promise2 = Promise.reject(e).then(unreached, function(reason) { + t.step(function() { + assert_equals(reason, e); + }); + throw e2; + }); +}, 'unhandledrejection: from a throw in a rejection handler chained off of Promise.reject'); + +async_test(function(t) { + var e = new Error(); + var e2 = new Error(); + var promise2; + + onUnhandledSucceed(t, e2, function() { return promise2; }); + + var unreached = t.unreached_func('promise should not be fulfilled'); + promise2 = new Promise(function(_, reject) { + setTimeout(function() { + reject(e); + }, 1); + }).then(unreached, function(reason) { + t.step(function() { + assert_equals(reason, e); + }); + throw e2; + }); +}, 'unhandledrejection: from a throw in a rejection handler chained off of a setTimeout-delayed rejection'); + +async_test(function(t) { + var e = new Error(); + var e2 = new Error(); + var promise2; + + onUnhandledSucceed(t, e2, function() { return promise2; }); + + var promise = new Promise(function(_, reject) { + setTimeout(function() { + reject(e); + mutationObserverMicrotask(function() { + var unreached = t.unreached_func('promise should not be fulfilled'); + promise2 = promise.then(unreached, function(reason) { + t.step(function() { + assert_equals(reason, e); + }); + throw e2; + }); + }); + }, 1); + }); +}, 'unhandledrejection: from a throw in a rejection handler attached one microtask after a setTimeout-delayed rejection'); + +async_test(function(t) { + var e = new Error(); + var p; + + onUnhandledSucceed(t, e, function() { return p; }); + + p = Promise.resolve().then(function() { + return Promise.reject(e); + }); +}, 'unhandledrejection: from returning a Promise.reject-created rejection in a fulfillment handler'); + +async_test(function(t) { + var e = new Error(); + var p; + + onUnhandledSucceed(t, e, function() { return p; }); + + p = Promise.resolve().then(function() { + throw e; + }); +}, 'unhandledrejection: from a throw in a fulfillment handler'); + +async_test(function(t) { + var e = new Error(); + var p; + + onUnhandledSucceed(t, e, function() { return p; }); + + p = Promise.resolve().then(function() { + return new Promise(function(_, reject) { + setTimeout(function() { + reject(e); + }, 1); + }); + }); +}, 'unhandledrejection: from returning a setTimeout-delayed rejection in a fulfillment handler'); + +async_test(function(t) { + var e = new Error(); + var p; + + onUnhandledSucceed(t, e, function() { return p; }); + + p = Promise.all([Promise.reject(e)]); +}, 'unhandledrejection: from Promise.reject, indirected through Promise.all'); + +// +// Negative unhandledrejection/rejectionhandled tests with immediate attachment +// + +async_test(function(t) { + var e = new Error(); + var p; + + onUnhandledFail(t, function() { return p; }); + + var unreached = t.unreached_func('promise should not be fulfilled'); + p = Promise.reject(e).then(unreached, function() {}); +}, 'no unhandledrejection/rejectionhandled: rejection handler attached synchronously to a promise from Promise.reject'); + +async_test(function(t) { + var e = new Error(); + var p; + + onUnhandledFail(t, function() { return p; }); + + var unreached = t.unreached_func('promise should not be fulfilled'); + p = Promise.all([Promise.reject(e)]).then(unreached, function() {}); +}, 'no unhandledrejection/rejectionhandled: rejection handler attached synchronously to a promise from ' + + 'Promise.reject, indirecting through Promise.all'); + +async_test(function(t) { + var e = new Error(); + var p; + + onUnhandledFail(t, function() { return p; }); + + var unreached = t.unreached_func('promise should not be fulfilled'); + p = new Promise(function(_, reject) { + reject(e); + }).then(unreached, function() {}); +}, 'no unhandledrejection/rejectionhandled: rejection handler attached synchronously to a synchronously-rejected ' + + 'promise created with new Promise'); + +async_test(function(t) { + var e = new Error(); + var p; + + onUnhandledFail(t, function() { return p; }); + + var unreached = t.unreached_func('promise should not be fulfilled'); + p = Promise.resolve().then(function() { + throw e; + }).then(unreached, function(reason) { + t.step(function() { + assert_equals(reason, e); + }); + }); +}, 'no unhandledrejection/rejectionhandled: rejection handler attached synchronously to a promise created from ' + + 'throwing in a fulfillment handler'); + +async_test(function(t) { + var e = new Error(); + var p; + + onUnhandledFail(t, function() { return p; }); + + var unreached = t.unreached_func('promise should not be fulfilled'); + p = Promise.resolve().then(function() { + return Promise.reject(e); + }).then(unreached, function(reason) { + t.step(function() { + assert_equals(reason, e); + }); + }); +}, 'no unhandledrejection/rejectionhandled: rejection handler attached synchronously to a promise created from ' + + 'returning a Promise.reject-created promise in a fulfillment handler'); + +async_test(function(t) { + var e = new Error(); + var p; + + onUnhandledFail(t, function() { return p; }); + + var unreached = t.unreached_func('promise should not be fulfilled'); + p = Promise.resolve().then(function() { + return new Promise(function(_, reject) { + setTimeout(function() { + reject(e); + }, 1); + }); + }).then(unreached, function(reason) { + t.step(function() { + assert_equals(reason, e); + }); + }); +}, 'no unhandledrejection/rejectionhandled: rejection handler attached synchronously to a promise created from ' + + 'returning a setTimeout-delayed rejection in a fulfillment handler'); + +async_test(function(t) { + var e = new Error(); + var p; + + onUnhandledFail(t, function() { return p; }); + + postMessageTask(function() { + p = Promise.resolve().then(function() { + return Promise.reject(e); + }) + .catch(function() {}); + }); +}, 'no unhandledrejection/rejectionhandled: all inside a queued task, a rejection handler attached synchronously to ' + + 'a promise created from returning a Promise.reject-created promise in a fulfillment handler'); + +// +// Negative unhandledrejection/rejectionhandled tests with microtask-delayed attachment +// + +async_test(function(t) { + var e = new Error(); + var p; + + onUnhandledFail(t, function() { return p; }); + + p = Promise.reject(e); + mutationObserverMicrotask(function() { + var unreached = t.unreached_func('promise should not be fulfilled'); + p.then(unreached, function() {}); + }); +}, 'delayed handling: a microtask delay before attaching a handler prevents both events (Promise.reject-created ' + + 'promise)'); + +async_test(function(t) { + var e = new Error(); + var p; + + onUnhandledFail(t, function() { return p; }); + + p = new Promise(function(_, reject) { + reject(e); + }); + mutationObserverMicrotask(function() { + var unreached = t.unreached_func('promise should not be fulfilled'); + p.then(unreached, function() {}); + }); +}, 'delayed handling: a microtask delay before attaching a handler prevents both events (immediately-rejected new ' + + 'Promise-created promise)'); + +async_test(function(t) { + var e = new Error(); + var p1; + var p2; + + onUnhandledFail(t, function() { return p1; }); + onUnhandledFail(t, function() { return p2; }); + + p1 = new Promise(function(_, reject) { + mutationObserverMicrotask(function() { + reject(e); + }); + }); + p2 = Promise.all([p1]); + mutationObserverMicrotask(function() { + var unreached = t.unreached_func('promise should not be fulfilled'); + p2.then(unreached, function() {}); + }); +}, 'delayed handling: a microtask delay before attaching the handler, and before rejecting the promise, indirected ' + + 'through Promise.all'); + +// +// Negative unhandledrejection/rejectionhandled tests with nested-microtask-delayed attachment +// + +async_test(function(t) { + var e = new Error(); + var p; + + onUnhandledFail(t, function() { return p; }); + + p = Promise.reject(e); + mutationObserverMicrotask(function() { + Promise.resolve().then(function() { + mutationObserverMicrotask(function() { + Promise.resolve().then(function() { + p.catch(function() {}); + }); + }); + }); + }); +}, 'microtask nesting: attaching a handler inside a combination of mutationObserverMicrotask + promise microtasks'); + +async_test(function(t) { + var e = new Error(); + var p; + + onUnhandledFail(t, function() { return p; }); + + postMessageTask(function() { + p = Promise.reject(e); + mutationObserverMicrotask(function() { + Promise.resolve().then(function() { + mutationObserverMicrotask(function() { + Promise.resolve().then(function() { + p.catch(function() {}); + }); + }); + }); + }); + }); +}, 'microtask nesting: attaching a handler inside a combination of mutationObserverMicrotask + promise microtasks, ' + + 'all inside a postMessageTask'); + +async_test(function(t) { + var e = new Error(); + var p; + + onUnhandledFail(t, function() { return p; }); + + setTimeout(function() { + p = Promise.reject(e); + mutationObserverMicrotask(function() { + Promise.resolve().then(function() { + mutationObserverMicrotask(function() { + Promise.resolve().then(function() { + p.catch(function() {}); + }); + }); + }); + }); + }, 0); +}, 'microtask nesting: attaching a handler inside a combination of mutationObserverMicrotask + promise microtasks, ' + + 'all inside a setTimeout'); + +async_test(function(t) { + var e = new Error(); + var p; + + onUnhandledFail(t, function() { return p; }); + + p = Promise.reject(e); + Promise.resolve().then(function() { + mutationObserverMicrotask(function() { + Promise.resolve().then(function() { + mutationObserverMicrotask(function() { + p.catch(function() {}); + }); + }); + }); + }); +}, 'microtask nesting: attaching a handler inside a combination of promise microtasks + mutationObserverMicrotask'); + +async_test(function(t) { + var e = new Error(); + var p; + + onUnhandledFail(t, function() { return p; }); + + postMessageTask(function() { + p = Promise.reject(e); + Promise.resolve().then(function() { + mutationObserverMicrotask(function() { + Promise.resolve().then(function() { + mutationObserverMicrotask(function() { + p.catch(function() {}); + }); + }); + }); + }); + }); +}, 'microtask nesting: attaching a handler inside a combination of promise microtasks + mutationObserverMicrotask, ' + + 'all inside a postMessageTask'); + +async_test(function(t) { + var e = new Error(); + var p; + + onUnhandledFail(t, function() { return p; }); + + setTimeout(function() { + p = Promise.reject(e); + Promise.resolve().then(function() { + mutationObserverMicrotask(function() { + Promise.resolve().then(function() { + mutationObserverMicrotask(function() { + p.catch(function() {}); + }); + }); + }); + }); + }, 0); +}, 'microtask nesting: attaching a handler inside a combination of promise microtasks + mutationObserverMicrotask, ' + + 'all inside a setTimeout'); + + +// For workers, postMessageTask() involves posting tasks to other threads, so +// the following tests don't work there. + +if ('document' in self) { + // + // Negative unhandledrejection/rejectionhandled tests with task-delayed attachment + // + + async_test(function(t) { + var e = new Error(); + var p; + + onUnhandledFail(t, function() { return p; }); + + var _reject; + p = new Promise(function(_, reject) { + _reject = reject; + }); + _reject(e); + postMessageTask(function() { + var unreached = t.unreached_func('promise should not be fulfilled'); + p.then(unreached, function() {}); + }); + }, 'delayed handling: a task delay before attaching a handler prevents unhandledrejection'); + + async_test(function(t) { + var e = new Error(); + var p; + + onUnhandledFail(t, function() { return p; }); + + p = Promise.reject(e); + postMessageTask(function() { + Promise.resolve().then(function() { + p.catch(function() {}); + }); + }); + }, 'delayed handling: postMessageTask after promise creation/rejection, plus promise microtasks, is not too late to ' + + 'attach a rejection handler'); + + async_test(function(t) { + var e = new Error(); + var p; + + onUnhandledFail(t, function() { return p; }); + + postMessageTask(function() { + Promise.resolve().then(function() { + Promise.resolve().then(function() { + Promise.resolve().then(function() { + Promise.resolve().then(function() { + p.catch(function() {}); + }); + }); + }); + }); + }); + p = Promise.reject(e); + }, 'delayed handling: postMessageTask before promise creation/rejection, plus many promise microtasks, is not too ' + + 'late to attach a rejection handler'); + + async_test(function(t) { + var e = new Error(); + var p; + + onUnhandledFail(t, function() { return p; }); + + p = Promise.reject(e); + postMessageTask(function() { + Promise.resolve().then(function() { + Promise.resolve().then(function() { + Promise.resolve().then(function() { + Promise.resolve().then(function() { + p.catch(function() {}); + }); + }); + }); + }); + }); + }, 'delayed handling: postMessageTask after promise creation/rejection, plus many promise microtasks, is not too ' + + 'late to attach a rejection handler'); +} + +// +// Positive unhandledrejection/rejectionhandled tests with delayed attachment +// + +async_test(function(t) { + var e = new Error(); + var p; + + onUnhandledSucceed(t, e, function() { return p; }); + + var _reject; + p = new Promise(function(_, reject) { + _reject = reject; + }); + _reject(e); + postMessageTask(function() { + postMessageTask(function() { + var unreached = t.unreached_func('promise should not be fulfilled'); + p.then(unreached, function() {}); + }); + }); +}, 'delayed handling: a nested-task delay before attaching a handler causes unhandledrejection'); + +async_test(function(t) { + var e = new Error(); + var p; + + onUnhandledSucceed(t, e, function() { return p; }); + + p = Promise.reject(e); + postMessageTask(function() { + postMessageTask(function() { + Promise.resolve().then(function() { + p.catch(function() {}); + }); + }); + }); +}, 'delayed handling: a nested-postMessageTask after promise creation/rejection, plus promise microtasks, is too ' + + 'late to attach a rejection handler'); + +async_test(function(t) { + var e = new Error(); + var p; + + onUnhandledSucceed(t, e, function() { return p; }); + + postMessageTask(function() { + postMessageTask(function() { + Promise.resolve().then(function() { + Promise.resolve().then(function() { + Promise.resolve().then(function() { + Promise.resolve().then(function() { + p.catch(function() {}); + }); + }); + }); + }); + }); + }); + p = Promise.reject(e); +}, 'delayed handling: a nested-postMessageTask before promise creation/rejection, plus many promise microtasks, is ' + + 'too late to attach a rejection handler'); + +async_test(function(t) { + var e = new Error(); + var p; + + onUnhandledSucceed(t, e, function() { return p; }); + + p = Promise.reject(e); + postMessageTask(function() { + postMessageTask(function() { + Promise.resolve().then(function() { + Promise.resolve().then(function() { + Promise.resolve().then(function() { + Promise.resolve().then(function() { + p.catch(function() {}); + }); + }); + }); + }); + }); + }); +}, 'delayed handling: a nested-postMessageTask after promise creation/rejection, plus many promise microtasks, is ' + + 'too late to attach a rejection handler'); + +async_test(function(t) { + var unhandledPromises = []; + var unhandledReasons = []; + var e = new Error(); + var p; + + var unhandled = function(ev) { + if (ev.promise === p) { + t.step(function() { + unhandledPromises.push(ev.promise); + unhandledReasons.push(ev.reason); + }); + } + }; + var handled = function(ev) { + if (ev.promise === p) { + t.step(function() { + assert_array_equals(unhandledPromises, [p]); + assert_array_equals(unhandledReasons, [e]); + assert_equals(ev.promise, p); + assert_equals(ev.reason, e); + }); + } + }; + addEventListener('unhandledrejection', unhandled); + addEventListener('rejectionhandled', handled); + ensureCleanup(t, unhandled, handled); + + p = new Promise(function() { + throw e; + }); + setTimeout(function() { + var unreached = t.unreached_func('promise should not be fulfilled'); + p.then(unreached, function(reason) { + assert_equals(reason, e); + setTimeout(function() { t.done(); }, 10); + }); + }, 10); +}, 'delayed handling: delaying handling by setTimeout(,10) will cause both events to fire'); + +// +// Miscellaneous tests about integration with the rest of the platform +// + +async_test(function(t) { + var e = new Error(); + var l = function(ev) { + var order = []; + mutationObserverMicrotask(function() { + order.push(1); + }); + setTimeout(function() { + order.push(2); + t.step(function() { + assert_array_equals(order, [1, 2]); + }); + t.done(); + }, 1); + }; + addEventListener('unhandledrejection', l); + ensureCleanup(t, l); + Promise.reject(e); +}, 'mutationObserverMicrotask vs. postMessageTask ordering is not disturbed inside unhandledrejection events'); + +// For workers, postMessageTask() involves posting tasks to other threads, so +// the following tests don't work there. + +if ('document' in self) { + + // For the next two see https://github.com/domenic/unhandled-rejections-browser-spec/issues/2#issuecomment-121121695 + // and the following comments. + + async_test(function(t) { + var sequenceOfEvents = []; + + addEventListener('unhandledrejection', l); + ensureCleanup(t, l); + + var p1 = Promise.reject(); + var p2; + postMessageTask(function() { + p2 = Promise.reject(); + postMessageTask(function() { + sequenceOfEvents.push('postMessageTask'); + checkSequence(); + }); + }); + + function l(ev) { + if (ev.promise === p1 || ev.promise === p2) { + sequenceOfEvents.push(ev.promise); + checkSequence(); + } + } + + function checkSequence() { + if (sequenceOfEvents.length === 3) { + t.step(function() { + assert_array_equals(sequenceOfEvents, [p1, 'postMessageTask', p2]); + }); + t.done(); + } + } + }, 'postMessageTask ordering vs. the task queued for unhandled rejection notification (1)'); + + async_test(function(t) { + var sequenceOfEvents = []; + + addEventListener('unhandledrejection', l); + ensureCleanup(t, l); + + var p2; + postMessageTask(function() { + p2 = Promise.reject(); + postMessageTask(function() { + sequenceOfEvents.push('postMessageTask'); + checkSequence(); + }); + }); + + function l(ev) { + if (ev.promise == p2) { + sequenceOfEvents.push(ev.promise); + checkSequence(); + } + } + + function checkSequence() { + if (sequenceOfEvents.length === 2) { + t.step(function() { + assert_array_equals(sequenceOfEvents, ['postMessageTask', p2]); + }); + t.done(); + } + } + }, 'postMessageTask ordering vs. the task queued for unhandled rejection notification (2)'); + + async_test(function(t) { + var sequenceOfEvents = []; + + + addEventListener('unhandledrejection', unhandled); + addEventListener('rejectionhandled', handled); + ensureCleanup(t, unhandled, handled); + + var p = Promise.reject(); + + setTimeout(function() { + postMessageTask(function() { + sequenceOfEvents.push('task before catch'); + checkSequence(); + }); + + p.catch(function() { + sequenceOfEvents.push('catch'); + checkSequence(); + }); + + postMessageTask(function() { + sequenceOfEvents.push('task after catch'); + checkSequence(); + }); + + sequenceOfEvents.push('after catch'); + checkSequence(); + }, 10); + + function unhandled(ev) { + if (ev.promise === p) { + sequenceOfEvents.push('unhandled'); + checkSequence(); + } + } + + function handled(ev) { + if (ev.promise === p) { + sequenceOfEvents.push('handled'); + checkSequence(); + } + } + + function checkSequence() { + if (sequenceOfEvents.length === 6) { + t.step(function() { + assert_array_equals(sequenceOfEvents, + ['unhandled', 'after catch', 'catch', 'task before catch', 'handled', 'task after catch']); + }); + t.done(); + } + } + }, 'rejectionhandled is dispatched from a queued task, and not immediately'); +} + +// +// HELPERS +// + +var globalPostMessageCounter = 0; + +function postMessageTask(f) { + if ('document' in self) { + var message = 'abusingpostmessageforfunandprofit' + globalPostMessageCounter; + globalPostMessageCounter++; + var l = function(ev) { + if (ev.data === message) { + removeEventListener('message', l); + f(); + } + }; + addEventListener('message', l); + postMessage(message, '*'); + } else { + var channel = new MessageChannel(); + channel.port1.onmessage = function() { channel.port1.close(); f(); }; + channel.port2.postMessage('abusingpostmessageforfunandprofit'); + channel.port2.close(); + } +} + +function mutationObserverMicrotask(f) { + if ('document' in self) { + var observer = new MutationObserver(function() { f(); }); + var node = document.createTextNode(''); + observer.observe(node, { characterData: true }); + node.data = 'foo'; + } else { + // We don't have mutation observers on workers, so just post a promise-based + // microtask. + Promise.resolve().then(function() { f(); }); + } +} + +function onUnhandledSucceed(t, expectedReason, expectedPromiseGetter) { + var l = function(ev) { + if (ev.promise === expectedPromiseGetter()) { + t.step(function() { + assert_equals(ev.reason, expectedReason); + assert_equals(ev.promise, expectedPromiseGetter()); + }); + t.done(); + } + }; + addEventListener('unhandledrejection', l); + ensureCleanup(t, l); +} + +function onUnhandledFail(t, expectedPromiseGetter) { + var unhandled = function(evt) { + if (evt.promise === expectedPromiseGetter()) { + t.step(function() { + assert_unreached('unhandledrejection event is not supposed to be triggered'); + }); + } + }; + var handled = function(evt) { + if (evt.promise === expectedPromiseGetter()) { + t.step(function() { + assert_unreached('rejectionhandled event is not supposed to be triggered'); + }); + } + }; + addEventListener('unhandledrejection', unhandled); + addEventListener('rejectionhandled', handled); + ensureCleanup(t, unhandled, handled); + setTimeout(function() { + t.done(); + }, 10); +} + +function ensureCleanup(t, unhandled, handled) { + t.add_cleanup(function() { + if (unhandled) + removeEventListener('unhandledrejection', unhandled); + if (handled) + removeEventListener('rejectionhandled', handled); + }); +} + +done(); diff --git a/tests/wpt/web-platform-tests/images/OWNERS b/tests/wpt/web-platform-tests/images/OWNERS index 8ab38aed331..4cf78266c47 100644 --- a/tests/wpt/web-platform-tests/images/OWNERS +++ b/tests/wpt/web-platform-tests/images/OWNERS @@ -1,2 +1,3 @@ @zqzhang @tagawa +@gsnedders diff --git a/tests/wpt/web-platform-tests/media-capabilities/README.md b/tests/wpt/web-platform-tests/media-capabilities/README.md new file mode 100644 index 00000000000..cfe994976c0 --- /dev/null +++ b/tests/wpt/web-platform-tests/media-capabilities/README.md @@ -0,0 +1,14 @@ +# Media Capabilities specification Tests + +The Media Capabilities specification is available here: https://wicg.github.io/media-capabilities + +GitHub repository: https://github.com/WICG/media-capabilities + +File an issue: https://github.com/wicg/media-capabilities/issues/new + +## Status of these tests + +These tests are still very early. The specification is still WIP and they try to +reflect as much as possible the current state of the specification. Please file +issues if there are inconsistencies between the specification and the tests or +if tests are obviously missing. diff --git a/tests/wpt/web-platform-tests/media-capabilities/idlharness.html b/tests/wpt/web-platform-tests/media-capabilities/idlharness.html new file mode 100644 index 00000000000..1fa20c6153d --- /dev/null +++ b/tests/wpt/web-platform-tests/media-capabilities/idlharness.html @@ -0,0 +1,85 @@ + + + + +Media Capabilities IDL tests + + + + + + + +

        Media Session IDL tests

        + +
        +dictionary MediaConfiguration {
        +  required MediaConfigurationType type;
        +
        +  VideoConfiguration video;
        +  AudioConfiguration audio;
        +};
        +
        +enum MediaConfigurationType {
        +  "file",
        +  "MediaSource",
        +};
        +
        +dictionary VideoConfiguration {
        +  required DOMString type;
        +  required unsigned long width;
        +  required unsigned long height;
        +  required unsigned long bitrate;
        +  required double framerate;
        +};
        +
        +dictionary AudioConfiguration {
        +  required DOMString type;
        +  DOMString channels;
        +  unsigned long bitrate;
        +  unsigned long samplerate;
        +};
        +
        +interface MediaDecodingAbility {
        +  readonly attribute boolean supported;
        +  readonly attribute boolean smooth;
        +  readonly attribute boolean powerEfficient;
        +};
        +
        +[Exposed=(Window)]
        +partial interface Navigator {
        +  readonly attribute MediaCapabilities mediaCapabilities;
        +};
        +
        +[Exposed=(Worker)]
        +partial interface WorkerNavigator {
        +  readonly attribute MediaCapabilities mediaCapabilities;
        +};
        +
        +[Exposed=(Window, Worker)]
        +interface MediaCapabilities {
        +  Promise query(MediaConfiguration configuration);
        +};
        +
        + +
        + + diff --git a/tests/wpt/web-platform-tests/media-capabilities/query.html b/tests/wpt/web-platform-tests/media-capabilities/query.html new file mode 100644 index 00000000000..809fbc66ec5 --- /dev/null +++ b/tests/wpt/web-platform-tests/media-capabilities/query.html @@ -0,0 +1,35 @@ + +MediaCapabilities.query() + + + diff --git a/tests/wpt/web-platform-tests/mediasession/README.md b/tests/wpt/web-platform-tests/mediasession/README.md new file mode 100644 index 00000000000..7c7c9f8d57a --- /dev/null +++ b/tests/wpt/web-platform-tests/mediasession/README.md @@ -0,0 +1,20 @@ +# Media Session specification Tests + +The Media Session specification is available here: https://wicg.github.io/mediasession + +GitHub repository: https://github.com/WICG/mediasession + +File an issue: https://github.com/WICG/mediasession/issues/new + +## Device/system dependency + +The Media Session specification defines behaviors related to device or system +features such as the actions to run when a software/hardware media key is used. +These behaviors are not tested because they would depend on user agent specific +implementations and device specific features. + +## Status of these tests + +These tests are not complete and only reflect the Blink tests that could be +exported. If a reader find a behavior that could be tested and is not, they +should feel free to file a bug. diff --git a/tests/wpt/web-platform-tests/mediasession/idlharness.html b/tests/wpt/web-platform-tests/mediasession/idlharness.html new file mode 100644 index 00000000000..a90c83e8319 --- /dev/null +++ b/tests/wpt/web-platform-tests/mediasession/idlharness.html @@ -0,0 +1,89 @@ + + + + +Media Session IDL tests + + + + + + + +

        Media Session IDL tests

        + + + +
        +[Exposed=Window]
        +partial interface Navigator {
        +  [SameObject] readonly attribute MediaSession mediaSession;
        +};
        +
        +enum MediaSessionPlaybackState {
        +  "none",
        +  "paused",
        +  "playing"
        +};
        +
        +enum MediaSessionAction {
        +  "play",
        +  "pause",
        +  "seekbackward",
        +  "seekforward",
        +  "previoustrack",
        +  "nexttrack",
        +};
        +
        +callback MediaSessionActionHandler = void();
        +
        +[Exposed=Window]
        +interface MediaSession {
        +  attribute MediaMetadata? metadata;
        +
        +  attribute MediaSessionPlaybackState playbackState;
        +
        +  void setActionHandler(MediaSessionAction action, MediaSessionActionHandler? handler);
        +};
        +
        +[Constructor(optional MediaMetadataInit init), Exposed=Window]
        +interface MediaMetadata {
        +  attribute DOMString title;
        +  attribute DOMString artist;
        +  attribute DOMString album;
        +  attribute FrozenArray artwork;
        +};
        +
        +dictionary MediaMetadataInit {
        +  DOMString title = "";
        +  DOMString artist = "";
        +  DOMString album = "";
        +  sequence artwork = [];
        +};
        +
        +dictionary MediaImage {
        +  required USVString src;
        +  DOMString sizes = "";
        +  DOMString type = "";
        +};
        +
        + +
        + + diff --git a/tests/wpt/web-platform-tests/mediasession/mediametadata.html b/tests/wpt/web-platform-tests/mediasession/mediametadata.html new file mode 100644 index 00000000000..e545e732dda --- /dev/null +++ b/tests/wpt/web-platform-tests/mediasession/mediametadata.html @@ -0,0 +1,192 @@ + +MediaMetadata interface + + + diff --git a/tests/wpt/web-platform-tests/mediasession/playbackstate.html b/tests/wpt/web-platform-tests/mediasession/playbackstate.html new file mode 100644 index 00000000000..63f3548d941 --- /dev/null +++ b/tests/wpt/web-platform-tests/mediasession/playbackstate.html @@ -0,0 +1,27 @@ + +MediaSession.playbackState attribute + + + diff --git a/tests/wpt/web-platform-tests/mediasession/setactionhandler.html b/tests/wpt/web-platform-tests/mediasession/setactionhandler.html new file mode 100644 index 00000000000..120686ae127 --- /dev/null +++ b/tests/wpt/web-platform-tests/mediasession/setactionhandler.html @@ -0,0 +1,24 @@ + +Test that setting MediaSession event handler should notify the service + + + diff --git a/tests/wpt/web-platform-tests/navigation-timing/nav2_test_attributes_values.html b/tests/wpt/web-platform-tests/navigation-timing/nav2_test_attributes_values.html index cd335233696..1ca4a1be2a6 100644 --- a/tests/wpt/web-platform-tests/navigation-timing/nav2_test_attributes_values.html +++ b/tests/wpt/web-platform-tests/navigation-timing/nav2_test_attributes_values.html @@ -63,8 +63,7 @@ var entries = entryList.getEntries(); assert_equals(entries[0].entryType, "navigation", "Expected entryType to be: navigation."); - assert_equals(entries[0].name, "document", - "Expected name to be: document."); + assert_equals(entries[0].name, "http://web-platform.test:8001/navigation-timing/nav2_test_attributes_values.html"); assert_equals(entries[0].startTime, 0, "Expected startTime to be: 0."); assert_equals(entries[0].duration, entries[0].loadEventEnd, @@ -75,8 +74,8 @@ // running this test. assert_true(entries[0].transferSize > entries[0].encodedBodySize, "Expected transferSize to be greater than encodedBodySize in uncached navigation."); - assert_equals(entries[0].encodedBodySize, 4140); - assert_equals(entries[0].decodedBodySize, 4140); + assert_equals(entries[0].encodedBodySize, 4154); + assert_equals(entries[0].decodedBodySize, 4154); verifyTimingEventOrder(entries[0], navTiming2EventOrder1); // When unloadEvent happens if (entries[0]["unloadEventStart"] != 0) { diff --git a/tests/wpt/web-platform-tests/navigation-timing/nav2_test_instance_accessors.html b/tests/wpt/web-platform-tests/navigation-timing/nav2_test_instance_accessors.html index cf478b955b1..19e31ca76a1 100644 --- a/tests/wpt/web-platform-tests/navigation-timing/nav2_test_instance_accessors.html +++ b/tests/wpt/web-platform-tests/navigation-timing/nav2_test_instance_accessors.html @@ -50,10 +50,10 @@ t.step_func(function (entryList) { var instance1 = performance.getEntries()[0]; var instance2 = performance.getEntriesByType("navigation")[0]; - var instance3 = performance.getEntriesByName("document")[0]; + var instance3 = performance.getEntriesByName("http://web-platform.test:8001/navigation-timing/nav2_test_instance_accessors.html")[0]; assert_equals(performance.getEntriesByType("navigation").length, 1, "Expected there is only one navigation timing instance."); - assert_equals(performance.getEntriesByName("document").length, 1, "Expected there is only one navigation timing instance."); + assert_equals(performance.getEntriesByName("http://web-platform.test:8001/navigation-timing/nav2_test_instance_accessors.html").length, 1, "Expected there is only one navigation timing instance."); for (var i = 0; i < navTiming2Attributes.length; i++) { assert_equals(instance1[navTiming2Attributes[i]], instance2[navTiming2Attributes[i]]); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/tools/OWNERS b/tests/wpt/web-platform-tests/offscreen-canvas/tools/OWNERS new file mode 100644 index 00000000000..26ea3154662 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/tools/OWNERS @@ -0,0 +1 @@ +@gsnedders diff --git a/tests/wpt/web-platform-tests/pointerevents/pointerevent_lostpointercapture_for_disconnected_node-manual.html b/tests/wpt/web-platform-tests/pointerevents/pointerevent_lostpointercapture_for_disconnected_node-manual.html index 4d152b73a6a..ca305f74f78 100644 --- a/tests/wpt/web-platform-tests/pointerevents/pointerevent_lostpointercapture_for_disconnected_node-manual.html +++ b/tests/wpt/web-platform-tests/pointerevents/pointerevent_lostpointercapture_for_disconnected_node-manual.html @@ -39,15 +39,13 @@ window.onload = function() { on_event(captureButton, 'pointerdown', function(event) { detected_pointertypes[event.pointerType] = true; - sPointerCapture(event); + target0.setPointerCapture(event.pointerId); }); on_event(target0, 'gotpointercapture', function(e) { log("gotpointercapture", target1); - setTimeout(function() { - isDisconnected = true; - target0.parentNode.removeChild(target0); - }, 250); + isDisconnected = true; + target0.parentNode.removeChild(target0); }); on_event(target0, 'lostpointercapture', function(e) { @@ -63,7 +61,6 @@ test(function() { // TA: 11.3 assert_true(isDisconnected, "lostpointercapture must be fired on the document"); - }, "lostpointercapture is dispatched on the document"); test_lostpointercapture.done(); }); diff --git a/tests/wpt/web-platform-tests/pointerevents/pointerevent_on_event_handlers.html b/tests/wpt/web-platform-tests/pointerevents/pointerevent_on_event_handlers.html index 268952e41c3..d8cfa7a0f4c 100644 --- a/tests/wpt/web-platform-tests/pointerevents/pointerevent_on_event_handlers.html +++ b/tests/wpt/web-platform-tests/pointerevents/pointerevent_on_event_handlers.html @@ -33,7 +33,7 @@ test(function() { const htmlElement = document.createElement("span"); const svgElement = document.createElementNS("http://www.w3.org/2000/svg", "g"); - for (const location of [window, htmlElement, svgElement, document]) { + for (var location of [window, htmlElement, svgElement, document]) { assert_equals(location[on_event], null, `The default value of the property is null for a ${location.constructor.name} instance`); } diff --git a/tests/wpt/web-platform-tests/pointerevents/pointerevent_pointerout_pen-manual.html b/tests/wpt/web-platform-tests/pointerevents/pointerevent_pointerout_pen-manual.html index 3973948c164..5e389520aa4 100644 --- a/tests/wpt/web-platform-tests/pointerevents/pointerevent_pointerout_pen-manual.html +++ b/tests/wpt/web-platform-tests/pointerevents/pointerevent_pointerout_pen-manual.html @@ -28,7 +28,7 @@ function run() { var target0 = document.getElementById("target0"); - // When a pen stylus leaves the hover range detectable by the digitizer the pointerout event must be dispatched. + // When a pen stylus leaves the hover range detectable by the digitizer the pointerout event must be dispatched. // TA: 7.2 on_event(target0, "pointerout", function (event) { detected_pointertypes[event.pointerType] = true; diff --git a/tests/wpt/web-platform-tests/pointerevents/pointerevent_releasepointercapture_events_to_original_target-manual.html b/tests/wpt/web-platform-tests/pointerevents/pointerevent_releasepointercapture_events_to_original_target-manual.html index 904efa46b76..89f3d839f46 100644 --- a/tests/wpt/web-platform-tests/pointerevents/pointerevent_releasepointercapture_events_to_original_target-manual.html +++ b/tests/wpt/web-platform-tests/pointerevents/pointerevent_releasepointercapture_events_to_original_target-manual.html @@ -11,20 +11,24 @@ +

        Pointer Event: releasePointerCapture() - subsequent events follow normal hitting testing mechanisms

        Test Description: + Use your pointer and press down in the black box. Then move around in the box and release your pointer. After invoking the releasePointerCapture method on an element, subsequent events for the specified - pointer must follow normal hit testing mechanisms for determining the event target + pointer must follow normal hit testing mechanisms for determining the event target.


        - Use mouse, touch or pen to contact here and move around.

        Test complete: Scroll to Summary to view Pass/Fail Results.

        diff --git a/tests/wpt/web-platform-tests/preload/avoid_delaying_onload_link_preload.html b/tests/wpt/web-platform-tests/preload/avoid-delaying-onload-link-preload.html similarity index 70% rename from tests/wpt/web-platform-tests/preload/avoid_delaying_onload_link_preload.html rename to tests/wpt/web-platform-tests/preload/avoid-delaying-onload-link-preload.html index e92658dd267..77838c37741 100644 --- a/tests/wpt/web-platform-tests/preload/avoid_delaying_onload_link_preload.html +++ b/tests/wpt/web-platform-tests/preload/avoid-delaying-onload-link-preload.html @@ -1,13 +1,15 @@ + diff --git a/tests/wpt/web-platform-tests/preload/delaying_onload_link_preload_after_discovery.html b/tests/wpt/web-platform-tests/preload/delaying-onload-link-preload-after-discovery.html similarity index 74% rename from tests/wpt/web-platform-tests/preload/delaying_onload_link_preload_after_discovery.html rename to tests/wpt/web-platform-tests/preload/delaying-onload-link-preload-after-discovery.html index 44a8cef9ee0..095d89ad90c 100644 --- a/tests/wpt/web-platform-tests/preload/delaying_onload_link_preload_after_discovery.html +++ b/tests/wpt/web-platform-tests/preload/delaying-onload-link-preload-after-discovery.html @@ -1,6 +1,7 @@ + @@ -9,7 +10,9 @@ + @@ -18,8 +18,15 @@ diff --git a/tests/wpt/web-platform-tests/preload/dynamic_adding_preload.html b/tests/wpt/web-platform-tests/preload/dynamic-adding-preload.html similarity index 72% rename from tests/wpt/web-platform-tests/preload/dynamic_adding_preload.html rename to tests/wpt/web-platform-tests/preload/dynamic-adding-preload.html index 3b341b5d512..535009e0601 100644 --- a/tests/wpt/web-platform-tests/preload/dynamic_adding_preload.html +++ b/tests/wpt/web-platform-tests/preload/dynamic-adding-preload.html @@ -1,20 +1,21 @@ + + + @@ -18,6 +19,7 @@ diff --git a/tests/wpt/web-platform-tests/preload/link_header_preload_delay_onload.html.headers b/tests/wpt/web-platform-tests/preload/link-header-preload-delay-onload.html.headers similarity index 100% rename from tests/wpt/web-platform-tests/preload/link_header_preload_delay_onload.html.headers rename to tests/wpt/web-platform-tests/preload/link-header-preload-delay-onload.html.headers diff --git a/tests/wpt/web-platform-tests/preload/link_header_preload.html b/tests/wpt/web-platform-tests/preload/link-header-preload.html similarity index 59% rename from tests/wpt/web-platform-tests/preload/link_header_preload.html rename to tests/wpt/web-platform-tests/preload/link-header-preload.html index a63ffde8000..736a70dfe37 100644 --- a/tests/wpt/web-platform-tests/preload/link_header_preload.html +++ b/tests/wpt/web-platform-tests/preload/link-header-preload.html @@ -1,6 +1,7 @@ + @@ -8,8 +9,10 @@ diff --git a/tests/wpt/web-platform-tests/preload/link_header_preload.html.headers b/tests/wpt/web-platform-tests/preload/link-header-preload.html.headers similarity index 100% rename from tests/wpt/web-platform-tests/preload/link_header_preload.html.headers rename to tests/wpt/web-platform-tests/preload/link-header-preload.html.headers diff --git a/tests/wpt/web-platform-tests/preload/onerror_event.html b/tests/wpt/web-platform-tests/preload/onerror-event.html similarity index 95% rename from tests/wpt/web-platform-tests/preload/onerror_event.html rename to tests/wpt/web-platform-tests/preload/onerror-event.html index cb2d9ff84cc..5aeaf084d8d 100644 --- a/tests/wpt/web-platform-tests/preload/onerror_event.html +++ b/tests/wpt/web-platform-tests/preload/onerror-event.html @@ -4,6 +4,7 @@ + + + @@ -17,19 +18,16 @@ diff --git a/tests/wpt/web-platform-tests/preload/preload-default-csp.sub.html b/tests/wpt/web-platform-tests/preload/preload-default-csp.sub.html index 76c1b53196b..de0015ba60d 100644 --- a/tests/wpt/web-platform-tests/preload/preload-default-csp.sub.html +++ b/tests/wpt/web-platform-tests/preload/preload-default-csp.sub.html @@ -2,6 +2,7 @@ + @@ -17,19 +18,16 @@ diff --git a/tests/wpt/web-platform-tests/preload/preload_with_type.html b/tests/wpt/web-platform-tests/preload/preload-with-type.html similarity index 97% rename from tests/wpt/web-platform-tests/preload/preload_with_type.html rename to tests/wpt/web-platform-tests/preload/preload-with-type.html index 1678258ddb7..5bce1da302e 100644 --- a/tests/wpt/web-platform-tests/preload/preload_with_type.html +++ b/tests/wpt/web-platform-tests/preload/preload-with-type.html @@ -1,6 +1,7 @@ + + + @@ -42,9 +43,19 @@ xhr.send(); window.addEventListener("load", t.step_func(function() { - // Audio and video show 2 extra requests as the main request is followed by a range request - assert_equals(performance.getEntriesByType("resource").length, 14); - t.done(); + verifyPreloadAndRTSupport(); + setTimeout(t.step_func(function() { + verifyNumberOfDownloads("resources/dummy.js", 1); + verifyNumberOfDownloads("resources/dummy.css", 1); + verifyNumberOfDownloads("resources/square.png", 1); + verifyNumberOfDownloads("resources/square.png?background", 1); + verifyNumberOfDownloads("/fonts/CanvasTest.ttf", 1); + verifyNumberOfDownloads("resources/dummy.xml?foobar", 0); + verifyNumberOfDownloads("/media/foo.vtt", 1); + verifyNumberOfDownloads("resources/dummy.xml", 1); + // FIXME: We should verify for video and audio as well, but they seem to (flakily?) trigger multiple partial requests. + t.done(); + }), 0); })); PASS - this text is here just so that the browser will download the font. diff --git a/tests/wpt/web-platform-tests/presentation-api/controlling-ua/startNewPresentation_displaynotallowed-manual.html b/tests/wpt/web-platform-tests/presentation-api/controlling-ua/startNewPresentation_displaynotallowed-manual.html index c44baa39356..73570d50f03 100644 --- a/tests/wpt/web-platform-tests/presentation-api/controlling-ua/startNewPresentation_displaynotallowed-manual.html +++ b/tests/wpt/web-platform-tests/presentation-api/controlling-ua/startNewPresentation_displaynotallowed-manual.html @@ -10,7 +10,7 @@

        Before starting this test, confirm that there are one or more available presentation display on your local network.

        Click the button below to start the manual test. If prompted to select a device, please dismiss the dialog box. The test passes if a "PASS" result appears.

        - + + + + + + +

        Referrer Policy: A document with an opaque origin doesn't send referrers

        + + +
        + + diff --git a/tests/wpt/web-platform-tests/referrer-policy/generic/subresource-test/image-decoding.html b/tests/wpt/web-platform-tests/referrer-policy/generic/subresource-test/image-decoding.html index 133c0cf43d3..448f12b1348 100644 --- a/tests/wpt/web-platform-tests/referrer-policy/generic/subresource-test/image-decoding.html +++ b/tests/wpt/web-platform-tests/referrer-policy/generic/subresource-test/image-decoding.html @@ -31,7 +31,7 @@ assert_own_property(headers, "connection") }); messaging_test.done(); - }); + }, null, "always", messaging_test);
        diff --git a/tests/wpt/web-platform-tests/referrer-policy/generic/unsupported-csp-referrer-directive.html b/tests/wpt/web-platform-tests/referrer-policy/generic/unsupported-csp-referrer-directive.html index b6c5b306765..9627d165599 100644 --- a/tests/wpt/web-platform-tests/referrer-policy/generic/unsupported-csp-referrer-directive.html +++ b/tests/wpt/web-platform-tests/referrer-policy/generic/unsupported-csp-referrer-directive.html @@ -22,7 +22,7 @@ queryImage(url, test.step_func(function(message) { assert_equals(message.referrer, document.location.href); test.done(); - })); + }), null, 'always', test);
        diff --git a/tests/wpt/web-platform-tests/remote-playback/README.md b/tests/wpt/web-platform-tests/remote-playback/README.md new file mode 100644 index 00000000000..de0a6d8e1fb --- /dev/null +++ b/tests/wpt/web-platform-tests/remote-playback/README.md @@ -0,0 +1,19 @@ +# Remote Playback API specification Tests + +The Remote Playback API can be found here: + +GitHub repository: https://github.com/w3c/remote-playback/ + +File an issue: https://github.com/w3c/remote-playback/issues/new + +## Hardware/network dependency + +The Remote Playback API requires to communicate with a device over the network. +Some behavior would require a real devices to be implemented. In order to keep +these tests automated, only behaviors that can be run without user gesture or +specific configurations are available here. + +## TODO + +Some tests are missing, including, but not only: +* IDL tests diff --git a/tests/wpt/web-platform-tests/remote-playback/cancel-watch-availability.html b/tests/wpt/web-platform-tests/remote-playback/cancel-watch-availability.html new file mode 100644 index 00000000000..99cae8e46bf --- /dev/null +++ b/tests/wpt/web-platform-tests/remote-playback/cancel-watch-availability.html @@ -0,0 +1,44 @@ + + +Tests various ways to call cancelWatchAvailability() + + + + + diff --git a/tests/wpt/web-platform-tests/remote-playback/disable-remote-playback-cancel-watch-availability-throws.html b/tests/wpt/web-platform-tests/remote-playback/disable-remote-playback-cancel-watch-availability-throws.html new file mode 100644 index 00000000000..fdcc734346e --- /dev/null +++ b/tests/wpt/web-platform-tests/remote-playback/disable-remote-playback-cancel-watch-availability-throws.html @@ -0,0 +1,29 @@ + + +Test that calling cancelWatchAvailability() when disableRemotePlayback attribute is set throws an exception + + + + + diff --git a/tests/wpt/web-platform-tests/remote-playback/disable-remote-playback-prompt-throws.html b/tests/wpt/web-platform-tests/remote-playback/disable-remote-playback-prompt-throws.html new file mode 100644 index 00000000000..7ddc2ad13f3 --- /dev/null +++ b/tests/wpt/web-platform-tests/remote-playback/disable-remote-playback-prompt-throws.html @@ -0,0 +1,16 @@ + + +Test that calling prompt() when disableRemotePlayback attribute is set throws an exception + + + + + diff --git a/tests/wpt/web-platform-tests/remote-playback/disable-remote-playback-watch-availability-throws.html b/tests/wpt/web-platform-tests/remote-playback/disable-remote-playback-watch-availability-throws.html new file mode 100644 index 00000000000..3c21f017b48 --- /dev/null +++ b/tests/wpt/web-platform-tests/remote-playback/disable-remote-playback-watch-availability-throws.html @@ -0,0 +1,17 @@ + + +Test that calling watchAvailability() when disableRemotePlayback attribute is set throws an exception + + + + + diff --git a/tests/wpt/web-platform-tests/remote-playback/watch-availability-initial-callback.html b/tests/wpt/web-platform-tests/remote-playback/watch-availability-initial-callback.html new file mode 100644 index 00000000000..851558b06f2 --- /dev/null +++ b/tests/wpt/web-platform-tests/remote-playback/watch-availability-initial-callback.html @@ -0,0 +1,22 @@ + + +Test that the callback is called once watchAvailability() resolves. + + + + + diff --git a/tests/wpt/web-platform-tests/resources/idlharness.js b/tests/wpt/web-platform-tests/resources/idlharness.js index a52228ef2c3..5fca23e56ac 100644 --- a/tests/wpt/web-platform-tests/resources/idlharness.js +++ b/tests/wpt/web-platform-tests/resources/idlharness.js @@ -322,6 +322,24 @@ IdlArray.prototype.recursively_get_implements = function(interface_name) return ret; }; +function exposure_set(object, default_set) { + var exposed = object.extAttrs.filter(function(a) { return a.name == "Exposed" }); + if (exposed.length > 1 || exposed.length < 0) { + throw "Unexpected Exposed extended attributes on " + memberName + ": " + exposed; + } + + if (exposed.length === 0) { + return default_set; + } + + var set = exposed[0].rhs.value; + // Could be a list or a string. + if (typeof set == "string") { + set = [ set ]; + } + return set; +} + function exposed_in(globals) { if ('document' in self) { return globals.indexOf("Window") >= 0; @@ -396,15 +414,9 @@ IdlArray.prototype.test = function() return; } - var exposed = member.extAttrs.filter(function(a) { return a.name == "Exposed" }); - if (exposed.length > 1) { - throw "Unexpected Exposed extended attributes on " + memberName + ": " + exposed; - } - - var globals = exposed.length === 1 - ? exposed[0].rhs.value - : ["Window"]; + var globals = exposure_set(member, ["Window"]); member.exposed = exposed_in(globals); + member.exposureSet = globals; }.bind(this)); // Now run test() on every member, and test_object() for every object. @@ -458,7 +470,7 @@ IdlArray.prototype.assert_type_is = function(value, type) // Nothing we can do. return; } - this.assert_type_is(value[0], type.idlType.idlType); + this.assert_type_is(value[0], type.idlType); return; } @@ -470,6 +482,18 @@ IdlArray.prototype.assert_type_is = function(value, type) return; } + if (type.generic === "FrozenArray") { + assert_true(Array.isArray(value), "Value should be array"); + assert_true(Object.isFrozen(value), "Value should be frozen"); + if (!value.length) + { + // Nothing we can do. + return; + } + this.assert_type_is(value[0], type.idlType); + return; + } + type = type.idlType; switch(type) @@ -975,14 +999,13 @@ IdlInterface.prototype.test_self = function() // following steps: // "If A is declared with the [Global] or [PrimaryGlobal] extended // attribute, and A supports named properties, then return the named - // properties object for A, as defined in section 4.5.5 below. + // properties object for A, as defined in §3.6.4 Named properties + // object. // "Otherwise, if A is declared to inherit from another interface, then // return the interface prototype object for the inherited interface. - // "Otherwise, if A is declared with the [ArrayClass] extended - // attribute, then return %ArrayPrototype% ([ECMA-262], section - // 6.1.7.4). - // "Otherwise, return %ObjectPrototype% ([ECMA-262], section 6.1.7.4). - // ([ECMA-262], section 15.2.4). + // "Otherwise, if A is declared with the [LegacyArrayClass] extended + // attribute, then return %ArrayPrototype%. + // "Otherwise, return %ObjectPrototype%. if (this.name === "Window") { assert_class_string(Object.getPrototypeOf(self[this.name].prototype), 'WindowProperties', @@ -996,7 +1019,7 @@ IdlInterface.prototype.test_self = function() !this.array .members[inherit_interface] .has_extended_attribute("NoInterfaceObject"); - } else if (this.has_extended_attribute('ArrayClass')) { + } else if (this.has_extended_attribute('LegacyArrayClass')) { inherit_interface = 'Array'; inherit_interface_has_interface_object = true; } else { @@ -1359,12 +1382,17 @@ IdlInterface.prototype.do_member_operation_asserts = function(memberHolderObject IdlInterface.prototype.add_iterable_members = function(member) //@{ { - this.members.push({type: "operation", name: "entries", idlType: "iterator", arguments: []}); - this.members.push({type: "operation", name: "keys", idlType: "iterator", arguments: []}); - this.members.push({type: "operation", name: "values", idlType: "iterator", arguments: []}); - this.members.push({type: "operation", name: "forEach", idlType: "void", arguments: - [{ name: "callback", idlType: {idlType: "function"}}, - { name: "thisValue", idlType: {idlType: "any"}, optional: true}]}); + this.members.push(new IdlInterfaceMember( + { type: "operation", name: "entries", idlType: "iterator", arguments: []})); + this.members.push(new IdlInterfaceMember( + { type: "operation", name: "keys", idlType: "iterator", arguments: []})); + this.members.push(new IdlInterfaceMember( + { type: "operation", name: "values", idlType: "iterator", arguments: []})); + this.members.push(new IdlInterfaceMember( + { type: "operation", name: "forEach", idlType: "void", + arguments: + [{ name: "callback", idlType: {idlType: "function"}}, + { name: "thisValue", idlType: {idlType: "any"}, optional: true}]})); }; //@} @@ -1483,6 +1511,19 @@ IdlInterface.prototype.test_members = function() continue; } + if (!exposed_in(exposure_set(member, this.exposureSet))) { + test(function() { + // It's not exposed, so we shouldn't find it anywhere. + assert_false(member.name in self[this.name], + "The interface object must not have a property " + + format_value(member.name)); + assert_false(member.name in self[this.name].prototype, + "The prototype object must not have a property " + + format_value(member.name)); + }.bind(this), this.name + " interface: member " + member.name); + continue; + } + switch (member.type) { case "const": this.test_member_const(member); @@ -1616,6 +1657,12 @@ IdlInterface.prototype.test_interface_of = function(desc, obj, exception, expect for (var i = 0; i < this.members.length; i++) { var member = this.members[i]; + if (!exposed_in(exposure_set(member, this.exposureSet))) { + test(function() { + assert_false(member.name in obj); + }.bind(this), this.name + "interface: " + desc + 'must not have property "' + member.name + '"'); + continue; + } if (member.type == "attribute" && member.isUnforgeable) { var a_test = async_test(this.name + " interface: " + desc + ' must have own property "' + member.name + '"'); diff --git a/tests/wpt/web-platform-tests/resources/testharness.js b/tests/wpt/web-platform-tests/resources/testharness.js index 20318b0bd08..fe9ac185b03 100644 --- a/tests/wpt/web-platform-tests/resources/testharness.js +++ b/tests/wpt/web-platform-tests/resources/testharness.js @@ -2673,20 +2673,31 @@ policies and contribution forms [3]. var tests = new Tests(); var error_handler = function(e) { + if (tests.tests.length === 0 && !tests.allow_uncaught_exception) { + tests.set_file_is_test(); + } + + var stack; + if (e.error && e.error.stack) { + stack = e.error.stack; + } else { + stack = e.filename + ":" + e.lineno + ":" + e.colno; + } + if (tests.file_is_test) { var test = tests.tests[0]; if (test.phase >= test.phases.HAS_RESULT) { return; } - test.set_status(test.FAIL, e.message, e.stack); + test.set_status(test.FAIL, e.message, stack); test.phase = test.phases.HAS_RESULT; test.done(); - done(); } else if (!tests.allow_uncaught_exception) { tests.status.status = tests.status.ERROR; tests.status.message = e.message; - tests.status.stack = e.stack; + tests.status.stack = stack; } + done(); }; addEventListener("error", error_handler, false); diff --git a/tests/wpt/web-platform-tests/selection/collapse.js b/tests/wpt/web-platform-tests/selection/collapse.js index 1894aad92b2..7c97e2725d6 100644 --- a/tests/wpt/web-platform-tests/selection/collapse.js +++ b/tests/wpt/web-platform-tests/selection/collapse.js @@ -22,6 +22,13 @@ function testCollapse(range, point) { return; } + if (!document.contains(point[0])) { + assertSelectionNoChange(function() { + selection.collapse(point[0], point[1]); + }); + return; + } + selection.collapse(point[0], point[1]); assert_equals(selection.rangeCount, 1, diff --git a/tests/wpt/web-platform-tests/selection/common.js b/tests/wpt/web-platform-tests/selection/common.js index 85375d5723a..4b37c2632c2 100644 --- a/tests/wpt/web-platform-tests/selection/common.js +++ b/tests/wpt/web-platform-tests/selection/common.js @@ -958,3 +958,22 @@ function setSelectionBackwards(endpoints) { selection.extend(endpoints[0], endpoints[1]); } } + +/** + * Verify that the specified func doesn't change the selection. + * This function should be used in testharness tests. + */ +function assertSelectionNoChange(func) { + var originalCount = getSelection().rangeCount; + var originalRange = originalCount == 0 ? null : selection.getRangeAt(0); + + func(); + + assert_equals(selection.rangeCount, originalCount, + "The operation should not add Range"); + if (originalCount < 1) + return; + assert_equals(selection.getRangeAt(0), originalRange, + "The operation should not replace a registered Range"); +} + diff --git a/tests/wpt/web-platform-tests/selection/extend.js b/tests/wpt/web-platform-tests/selection/extend.js index 6c4c2cacf8f..6a2307e5e53 100644 --- a/tests/wpt/web-platform-tests/selection/extend.js +++ b/tests/wpt/web-platform-tests/selection/extend.js @@ -56,6 +56,15 @@ function testExtend(endpoints, target) { var node = target[0]; var offset = target[1]; + // "If node's root is not the document associated with the context object, + // abort these steps." + if (!document.contains(node)) { + assertSelectionNoChange(function() { + selection.extend(node, offset); + }); + return; + } + // "If the context object's range is null, throw an InvalidStateError // exception and abort these steps." if (getSelection().rangeCount == 0) { diff --git a/tests/wpt/web-platform-tests/selection/selectAllChildren.html b/tests/wpt/web-platform-tests/selection/selectAllChildren.html index 904e0cb2ba3..65a4ff3c6c5 100644 --- a/tests/wpt/web-platform-tests/selection/selectAllChildren.html +++ b/tests/wpt/web-platform-tests/selection/selectAllChildren.html @@ -1,5 +1,6 @@ Selection.selectAllChildren tests +
        @@ -29,6 +30,16 @@ for (var i = 0; i < testRanges.length; i++) { } selection.selectAllChildren(node); + if (!document.contains(node)) { + if (originalRange) { + assert_equals(getSelection().getRangeAt(0), originalRange, + "selectAllChildren must do nothing"); + } else { + assert_equals(getSelection().rangeCount, 0, + "selectAllChildren must do nothing"); + } + return; + } // This implicitly tests that the selection is forwards, by using // anchorOffset/focusOffset instead of getRangeAt. assert_equals(selection.rangeCount, 1, diff --git a/tests/wpt/web-platform-tests/selection/setBaseAndExtent.html b/tests/wpt/web-platform-tests/selection/setBaseAndExtent.html index 081c5941817..13108bb506d 100644 --- a/tests/wpt/web-platform-tests/selection/setBaseAndExtent.html +++ b/tests/wpt/web-platform-tests/selection/setBaseAndExtent.html @@ -10,7 +10,12 @@ for (var i = 0; i < testRanges.length; i++) { test(function() { var data = eval(testRanges[i]); + selection.removeAllRanges(); selection.setBaseAndExtent(data[0], data[1], data[2], data[3]); + if (!document.contains(data[0]) || !document.contains(data[2])) { + assert_equals(selection.rangeCount, 0); + return; + } assert_equals(selection.rangeCount, 1, "selection.rangeCount must equal 1"); assert_equals(selection.anchorNode, data[0], @@ -25,7 +30,12 @@ for (var i = 0; i < testRanges.length; i++) { test(function() { var data = eval(testRanges[i]); + selection.removeAllRanges(); selection.setBaseAndExtent(data[2], data[3], data[0], data[1]); + if (!document.contains(data[0]) || !document.contains(data[2])) { + assert_equals(selection.rangeCount, 0); + return; + } assert_equals(selection.rangeCount, 1, "selection.rangeCount must equal 1"); assert_equals(selection.anchorNode, data[2], diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/client-navigate.https.html b/tests/wpt/web-platform-tests/service-workers/service-worker/client-navigate.https.html index a505e872279..b651a20a111 100644 --- a/tests/wpt/web-platform-tests/service-workers/service-worker/client-navigate.https.html +++ b/tests/wpt/web-platform-tests/service-workers/service-worker/client-navigate.https.html @@ -3,7 +3,7 @@ Service Worker: WindowClient.navigate - + - + - + - + - + - + - + - + + + + + + + diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/fetch-event-within-sw.html b/tests/wpt/web-platform-tests/service-workers/service-worker/fetch-event-within-sw.html new file mode 100644 index 00000000000..c73abc4c98c --- /dev/null +++ b/tests/wpt/web-platform-tests/service-workers/service-worker/fetch-event-within-sw.html @@ -0,0 +1,79 @@ + + + + + + + + diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/fetch-event.https.html b/tests/wpt/web-platform-tests/service-workers/service-worker/fetch-event.https.html index 26409e9ff64..de0046ada7d 100644 --- a/tests/wpt/web-platform-tests/service-workers/service-worker/fetch-event.https.html +++ b/tests/wpt/web-platform-tests/service-workers/service-worker/fetch-event.https.html @@ -1,7 +1,7 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + + + + + + + + diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/foreign-fetch-cors.https.html b/tests/wpt/web-platform-tests/service-workers/service-worker/foreign-fetch-cors.https.html new file mode 100644 index 00000000000..c111a313576 --- /dev/null +++ b/tests/wpt/web-platform-tests/service-workers/service-worker/foreign-fetch-cors.https.html @@ -0,0 +1,306 @@ + +Service Worker: Foreign Fetch CORS functionality + + + + + + + + diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/foreign-fetch-event.https.html b/tests/wpt/web-platform-tests/service-workers/service-worker/foreign-fetch-event.https.html new file mode 100644 index 00000000000..94eeda39662 --- /dev/null +++ b/tests/wpt/web-platform-tests/service-workers/service-worker/foreign-fetch-event.https.html @@ -0,0 +1,9 @@ + +Service Worker: ForeignFetchEvent + + + + diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/foreign-fetch-workers.https.html b/tests/wpt/web-platform-tests/service-workers/service-worker/foreign-fetch-workers.https.html new file mode 100644 index 00000000000..65972900648 --- /dev/null +++ b/tests/wpt/web-platform-tests/service-workers/service-worker/foreign-fetch-workers.https.html @@ -0,0 +1,88 @@ + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/getregistrations.https.html b/tests/wpt/web-platform-tests/service-workers/service-worker/getregistrations.https.html index b65a9786956..036764d1133 100644 --- a/tests/wpt/web-platform-tests/service-workers/service-worker/getregistrations.https.html +++ b/tests/wpt/web-platform-tests/service-workers/service-worker/getregistrations.https.html @@ -3,7 +3,7 @@ - + - + - + diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/multi-globals/incumbent/test-sw.js b/tests/wpt/web-platform-tests/service-workers/service-worker/multi-globals/incumbent/test-sw.js new file mode 100644 index 00000000000..e2a0e93b583 --- /dev/null +++ b/tests/wpt/web-platform-tests/service-workers/service-worker/multi-globals/incumbent/test-sw.js @@ -0,0 +1 @@ +// Service worker for incumbent/ \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/multi-globals/relevant/relevant.https.html b/tests/wpt/web-platform-tests/service-workers/service-worker/multi-globals/relevant/relevant.https.html new file mode 100644 index 00000000000..44f42eda493 --- /dev/null +++ b/tests/wpt/web-platform-tests/service-workers/service-worker/multi-globals/relevant/relevant.https.html @@ -0,0 +1,2 @@ + +Relevant page used as a test helper diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/multi-globals/relevant/test-sw.js b/tests/wpt/web-platform-tests/service-workers/service-worker/multi-globals/relevant/test-sw.js new file mode 100644 index 00000000000..ff44cdf0867 --- /dev/null +++ b/tests/wpt/web-platform-tests/service-workers/service-worker/multi-globals/relevant/test-sw.js @@ -0,0 +1 @@ +// Service worker for relevant/ \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/multi-globals/test-sw.js b/tests/wpt/web-platform-tests/service-workers/service-worker/multi-globals/test-sw.js new file mode 100644 index 00000000000..ce3c940eced --- /dev/null +++ b/tests/wpt/web-platform-tests/service-workers/service-worker/multi-globals/test-sw.js @@ -0,0 +1 @@ +// Service worker for / \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/multi-globals/url-parsing.https.html b/tests/wpt/web-platform-tests/service-workers/service-worker/multi-globals/url-parsing.https.html new file mode 100644 index 00000000000..b9dfe363435 --- /dev/null +++ b/tests/wpt/web-platform-tests/service-workers/service-worker/multi-globals/url-parsing.https.html @@ -0,0 +1,73 @@ + +register()/getRegistration() URL parsing, with multiple globals in play + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/navigate-window.https.html b/tests/wpt/web-platform-tests/service-workers/service-worker/navigate-window.https.html index e3aaf4c5cd4..31e800f2904 100644 --- a/tests/wpt/web-platform-tests/service-workers/service-worker/navigate-window.https.html +++ b/tests/wpt/web-platform-tests/service-workers/service-worker/navigate-window.https.html @@ -2,7 +2,7 @@ Service Worker: Navigate a Window - + - + + + + diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/postmessage-to-client.https.html b/tests/wpt/web-platform-tests/service-workers/service-worker/postmessage-to-client.https.html index 2ee98084680..8eac04a63d9 100644 --- a/tests/wpt/web-platform-tests/service-workers/service-worker/postmessage-to-client.https.html +++ b/tests/wpt/web-platform-tests/service-workers/service-worker/postmessage-to-client.https.html @@ -2,7 +2,7 @@ Service Worker: postMessage to Client - + - + - + + + + + + diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/register-link-header.https.html b/tests/wpt/web-platform-tests/service-workers/service-worker/register-link-header.https.html new file mode 100644 index 00000000000..dd71c9b892e --- /dev/null +++ b/tests/wpt/web-platform-tests/service-workers/service-worker/register-link-header.https.html @@ -0,0 +1,73 @@ + +Service Worker: Registration using Link header + + + + + diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/registration.https.html b/tests/wpt/web-platform-tests/service-workers/service-worker/registration.https.html index ae9f85fb27c..587cac2fe4a 100644 --- a/tests/wpt/web-platform-tests/service-workers/service-worker/registration.https.html +++ b/tests/wpt/web-platform-tests/service-workers/service-worker/registration.https.html @@ -1,368 +1,9 @@ Service Worker: Registration - + diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/resource-timing.https.html b/tests/wpt/web-platform-tests/service-workers/service-worker/resource-timing.https.html index f33c41d715e..797896759fe 100644 --- a/tests/wpt/web-platform-tests/service-workers/service-worker/resource-timing.https.html +++ b/tests/wpt/web-platform-tests/service-workers/service-worker/resource-timing.https.html @@ -1,7 +1,7 @@ - + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/foreign-fetch-helper-script.js b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/foreign-fetch-helper-script.js new file mode 100644 index 00000000000..5ecaa9e3616 --- /dev/null +++ b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/foreign-fetch-helper-script.js @@ -0,0 +1,11 @@ +function handle_message(e) { + fetch(e.data.url) + .then(response => response.text()) + .then(text => e.ports[0].postMessage('Success: ' + text)) + .catch(error => e.ports[0].postMessage('Error: ' + error)); +} + +self.onmessage = handle_message; +self.onconnect = e => { + e.ports[0].onmessage = handle_message; +}; diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/foreign-fetch-helper-worker.js b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/foreign-fetch-helper-worker.js new file mode 100644 index 00000000000..7a852cb3fcf --- /dev/null +++ b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/foreign-fetch-helper-worker.js @@ -0,0 +1,8 @@ +importScripts('get-host-info.sub.js'); +const host_info = get_host_info(); + +self.onfetch = e => { + const remote_url = host_info.HTTPS_REMOTE_ORIGIN + + new URL('./', location).pathname + 'simple.txt?basic_sw'; + e.respondWith(fetch(remote_url)); +}; diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/foreign-fetch-helpers.js b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/foreign-fetch-helpers.js new file mode 100644 index 00000000000..e1831ed173c --- /dev/null +++ b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/foreign-fetch-helpers.js @@ -0,0 +1,44 @@ +// Common helper functions for foreign fetch tests. + +// Installs a service worker on a different origin. Both |worker| and |scope| +// are resolved relative to the /service-workers/service-worker/resources/ +// directory on a remote origin. +function install_cross_origin_worker( + t, worker, scope, origin = get_host_info().HTTPS_REMOTE_ORIGIN) { + return with_iframe(origin + new URL('resources/install-worker-helper.html', location).pathname) + .then(frame => new Promise((resolve, reject) => { + frame.contentWindow.postMessage({worker: worker, + options: {scope: scope}}, + '*'); + window.addEventListener('message', reply => { + if (reply.source != frame.contentWindow) return; + if (reply.data == 'success') resolve(); + else reject(reply.data); + }); + })); +} + +// Performs a fetch from a different origin. By default this performs a fetch +// from a window on that origin, but if |worker_type| is 'dedicated' or 'shared' +// the fetch is made from a worker on that origin instead. +// This uses a window rather than an iframe because an iframe might get blocked +// by mixed content checks. +function fetch_from_different_origin(origin, url, worker_type) { + const win = open(origin + new URL('resources/foreign-fetch-helper-iframe.html', location).pathname); + return new Promise(resolve => { + self.addEventListener('message', e => { + if (e.source != win) return; + resolve(); + }); + }) + .then(() => new Promise((resolve) => { + const channel = new MessageChannel(); + win.postMessage({url: url, + worker: worker_type}, + '*', [channel.port1]); + channel.port2.onmessage = reply => { + win.close(); + resolve(reply.data); + }; + })); +} diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/foreign-fetch-worker.js b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/foreign-fetch-worker.js new file mode 100644 index 00000000000..55a740753fc --- /dev/null +++ b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/foreign-fetch-worker.js @@ -0,0 +1,78 @@ +self.addEventListener('install', function(event) { + var params = JSON.parse(decodeURIComponent(location.search.substring(1))); + if (!('scopes' in params)) { + if ('relscopes' in params) { + params.scopes = params.relscopes.map(s => registration.scope + s); + } else { + params.scopes = [registration.scope]; + } + } + if (!('origins' in params)) + params.origins = ['*']; + event.registerForeignFetch(params); + }); + +function handle_basic(event) { + event.respondWith({response: new Response('Foreign Fetch'), origin: event.origin}); +} + +function handle_null(event) { + event.respondWith({response: null }); +} + +function handle_onmessage(event) { + event.respondWith({origin: event.origin, response: + new Response('', + {headers: {'Content-Type': 'text/html'}})}); +} + +function handle_fallback(event) { + // Do nothing. +} + +function handle_fetch(event) { + event.respondWith( + fetch(event.request).then(response => ({response, origin: event.origin}))); +} + +function handle_meta(event) { + var data = { + origin: event.origin, + referrer: event.request.referrer + }; + event.respondWith({response: new Response(JSON.stringify(data)), + origin: event.origin}); +} + +function handle_script(event) { + event.respondWith({origin: event.origin, response: + new Response('self.DidLoad("Foreign Fetch");')}); +} + +self.addEventListener('foreignfetch', function(event) { + var url = event.request.url; + var handlers = [ + { pattern: '?basic', fn: handle_basic }, + { pattern: '?null', fn: handle_null }, + { pattern: '?fallback', fn: handle_fallback }, + { pattern: '?fetch', fn: handle_fetch }, + { pattern: '?onmessage', fn: handle_onmessage }, + { pattern: '?meta', fn: handle_meta }, + { pattern: '?script', fn: handle_script } + ]; + + var handler = null; + for (var i = 0; i < handlers.length; ++i) { + if (url.indexOf(handlers[i].pattern) != -1) { + handler = handlers[i]; + break; + } + } + + if (handler) { + handler.fn(event); + } else { + event.respondWith({origin: event.origin, + response: new Response('unexpected request')}); + } + }); diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/get-host-info.sub.js b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/get-host-info.sub.js deleted file mode 100644 index b64334df667..00000000000 --- a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/get-host-info.sub.js +++ /dev/null @@ -1,26 +0,0 @@ -function get_host_info() { - var ORIGINAL_HOST = '127.0.0.1'; - var REMOTE_HOST = 'localhost'; - var UNAUTHENTICATED_HOST = 'example.test'; - var HTTP_PORT = 8000; - var HTTPS_PORT = 8443; - try { - // In W3C test, we can get the hostname and port number in config.json - // using wptserve's built-in pipe. - // http://wptserve.readthedocs.org/en/latest/pipes.html#built-in-pipes - HTTP_PORT = eval('{{ports[http][0]}}'); - HTTPS_PORT = eval('{{ports[https][0]}}'); - ORIGINAL_HOST = eval('\'{{host}}\''); - REMOTE_HOST = 'www1.' + ORIGINAL_HOST; - } catch (e) { - } - return { - HTTP_ORIGIN: 'http://' + ORIGINAL_HOST + ':' + HTTP_PORT, - HTTPS_ORIGIN: 'https://' + ORIGINAL_HOST + ':' + HTTPS_PORT, - HTTPS_ORIGIN_WITH_CREDS: 'https://foo:bar@' + ORIGINAL_HOST + ':' + HTTPS_PORT, - HTTP_REMOTE_ORIGIN: 'http://' + REMOTE_HOST + ':' + HTTP_PORT, - HTTPS_REMOTE_ORIGIN: 'https://' + REMOTE_HOST + ':' + HTTPS_PORT, - HTTPS_REMOTE_ORIGIN_WITH_CREDS: 'https://foo:bar@' + REMOTE_HOST + ':' + HTTPS_PORT, - UNAUTHENTICATED_ORIGIN: 'http://' + UNAUTHENTICATED_HOST + ':' + HTTP_PORT - }; -} diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/install-worker-helper.html b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/install-worker-helper.html new file mode 100644 index 00000000000..fcb8f6d83c7 --- /dev/null +++ b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/install-worker-helper.html @@ -0,0 +1,21 @@ + + + diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/link-header.py b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/link-header.py new file mode 100644 index 00000000000..1ea37c31218 --- /dev/null +++ b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/link-header.py @@ -0,0 +1,4 @@ +def main(request, response): + if 'Link' in request.GET: + return [('Link', request.GET['Link'])], "" + return [], "" diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/navigation-redirect-other-origin.html b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/navigation-redirect-other-origin.html index c1441ba685a..8688c8a8000 100644 --- a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/navigation-redirect-other-origin.html +++ b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/navigation-redirect-other-origin.html @@ -1,5 +1,5 @@ - + + diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/service-worker-csp-worker.py b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/service-worker-csp-worker.py index 4e5c6f3b6ea..5f06454f144 100644 --- a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/service-worker-csp-worker.py +++ b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/service-worker-csp-worker.py @@ -1,7 +1,7 @@ bodyDefault = ''' importScripts('worker-testharness.js'); importScripts('test-helpers.sub.js'); -importScripts('../resources/get-host-info.sub.js'); +importScripts('/common/get-host-info.sub.js'); var host_info = get_host_info(); @@ -47,7 +47,7 @@ async_test(function(t) { bodyScript = ''' importScripts('worker-testharness.js'); importScripts('test-helpers.sub.js'); -importScripts('../resources/get-host-info.sub.js'); +importScripts('/common/get-host-info.sub.js'); var host_info = get_host_info(); @@ -93,7 +93,7 @@ async_test(function(t) { bodyConnect = ''' importScripts('worker-testharness.js'); importScripts('test-helpers.sub.js'); -importScripts('../resources/get-host-info.sub.js'); +importScripts('/common/get-host-info.sub.js'); var host_info = get_host_info(); diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/test-helpers.sub.js b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/test-helpers.sub.js index b0ffbd40625..1d7643a71e9 100644 --- a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/test-helpers.sub.js +++ b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/test-helpers.sub.js @@ -52,6 +52,7 @@ function unreached_rejection(test, prefix) { function with_iframe(url) { return new Promise(function(resolve) { var frame = document.createElement('iframe'); + frame.className = 'test-iframe'; frame.src = url; frame.onload = function() { resolve(frame); }; document.body.appendChild(frame); diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/worker-interception-iframe.https.html b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/worker-interception-iframe.https.html index 12a461ea5db..e89b38691cd 100644 --- a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/worker-interception-iframe.https.html +++ b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/worker-interception-iframe.https.html @@ -1,4 +1,4 @@ - + - + - + + + + + + diff --git a/tests/wpt/web-platform-tests/storage/interfaces.idl b/tests/wpt/web-platform-tests/storage/interfaces.idl new file mode 100644 index 00000000000..4967404225e --- /dev/null +++ b/tests/wpt/web-platform-tests/storage/interfaces.idl @@ -0,0 +1,22 @@ +[SecureContext, + NoInterfaceObject, + Exposed=(Window,Worker)] +interface NavigatorStorage { + readonly attribute StorageManager storage; +}; +Navigator implements NavigatorStorage; +WorkerNavigator implements NavigatorStorage; + +[SecureContext, + Exposed=(Window,Worker)] +interface StorageManager { + Promise persisted(); + [Exposed=Window] Promise persist(); + + Promise estimate(); +}; + +dictionary StorageEstimate { + unsigned long long usage; + unsigned long long quota; +}; diff --git a/tests/wpt/web-platform-tests/storage/interfaces.worker.js b/tests/wpt/web-platform-tests/storage/interfaces.worker.js new file mode 100644 index 00000000000..e6feed7db9d --- /dev/null +++ b/tests/wpt/web-platform-tests/storage/interfaces.worker.js @@ -0,0 +1,26 @@ +'use strict'; + +importScripts('/resources/testharness.js'); +importScripts('/resources/WebIDLParser.js', '/resources/idlharness.js'); + +promise_test(t => { + return fetch('interfaces.idl') + .then(response => response.text()) + .then(idls => { + var idl_array = new IdlArray(); + + idl_array.add_untested_idls('interface Navigator {};'); + idl_array.add_untested_idls('[Exposed=Worker] interface WorkerNavigator {};'); + + idl_array.add_idls(idls); + + idl_array.add_objects({ + StorageManager: ['navigator.storage'] + }); + + idl_array.test(); + t.done(); + }); +}, 'Storage API IDL test'); + +done(); diff --git a/tests/wpt/web-platform-tests/streams/readable-byte-streams/general.js b/tests/wpt/web-platform-tests/streams/readable-byte-streams/general.js index 589b9510786..ef74ae1bdfd 100644 --- a/tests/wpt/web-platform-tests/streams/readable-byte-streams/general.js +++ b/tests/wpt/web-platform-tests/streams/readable-byte-streams/general.js @@ -20,6 +20,8 @@ test(() => { promise_test(() => { let startCalled = false; + let startCalledBeforePull = false; + let desiredSize; let controller; let resolveTestPromise; @@ -33,8 +35,8 @@ promise_test(() => { startCalled = true; }, pull() { - assert_true(startCalled, 'start has been called'); - assert_equals(controller.desiredSize, 256, 'desiredSize'); + startCalledBeforePull = startCalled; + desiredSize = controller.desiredSize; resolveTestPromise(); }, type: 'bytes' @@ -42,7 +44,10 @@ promise_test(() => { highWaterMark: 256 }); - return testPromise; + return testPromise.then(() => { + assert_true(startCalledBeforePull, 'start should be called before pull'); + assert_equals(desiredSize, 256, 'desiredSize should equal highWaterMark'); + }); }, 'ReadableStream with byte source: Construct and expect start and pull being called'); @@ -84,19 +89,43 @@ promise_test(() => { }, 'ReadableStream with byte source: No automatic pull call if start doesn\'t finish'); -promise_test(() => { +promise_test(t => { new ReadableStream({ - pull() { - assert_unreached('pull must not be called'); - }, + pull: t.unreached_func('pull() should not be called'), type: 'bytes' }, { highWaterMark: 0 }); - return Promise.resolve().then(() => {}); + return Promise.resolve(); }, 'ReadableStream with byte source: Construct with highWaterMark of 0'); +test(() => { + const rs = new ReadableStream({ + start(c) { + assert_equals(c.desiredSize, 10, 'desiredSize must start at the highWaterMark'); + c.close(); + assert_equals(c.desiredSize, 0, 'after closing, desiredSize must be 0'); + }, + type: 'bytes' + }, { + highWaterMark: 10 + }); +}, 'ReadableStream with byte source: desiredSize when closed'); + +test(() => { + const rs = new ReadableStream({ + start(c) { + assert_equals(c.desiredSize, 10, 'desiredSize must start at the highWaterMark'); + c.error(); + assert_equals(c.desiredSize, null, 'after erroring, desiredSize must be null'); + }, + type: 'bytes' + }, { + highWaterMark: 10 + }); +}, 'ReadableStream with byte source: desiredSize when errored'); + promise_test(t => { const stream = new ReadableStream({ type: 'bytes' @@ -119,14 +148,12 @@ promise_test(t => { return promise_rejects(t, new TypeError(), reader.closed, 'closed must reject'); }, 'ReadableStream with byte source: getReader() with mode set to byob, then releaseLock()'); -promise_test(() => { +promise_test(t => { const stream = new ReadableStream({ start(c) { c.close(); }, - pull() { - assert_unreached('pull must not be called'); - }, + pull: t.unreached_func('pull() should not be called'), type: 'bytes' }); @@ -137,14 +164,12 @@ promise_test(() => { }); }, 'ReadableStream with byte source: Test that closing a stream does not release a reader automatically'); -promise_test(() => { +promise_test(t => { const stream = new ReadableStream({ start(c) { c.close(); }, - pull() { - assert_unreached('pull must not be called'); - }, + pull: t.unreached_func('pull() should not be called'), type: 'bytes' }); @@ -160,9 +185,7 @@ promise_test(t => { start(c) { c.error(error1); }, - pull() { - assert_unreached('pull must not be called'); - }, + pull: t.unreached_func('pull() should not be called'), type: 'bytes' }); @@ -178,9 +201,7 @@ promise_test(t => { start(c) { c.error(error1); }, - pull() { - assert_unreached('pull must not be called'); - }, + pull: t.unreached_func('pull() should not be called'), type: 'bytes' }); @@ -244,31 +265,35 @@ promise_test(() => { }); }, 'ReadableStream with byte source: Automatic pull() after start() and read()'); +// View buffers are detached after pull() returns, so record the information at the time that pull() was called. +function extractViewInfo(view) { + return { + constructor: view.constructor, + bufferByteLength: view.buffer.byteLength, + byteOffset: view.byteOffset, + byteLength: view.byteLength + }; +} + promise_test(() => { let pullCount = 0; let controller; + let byobRequest; + let viewDefined = false; + let viewInfo; const stream = new ReadableStream({ start(c) { controller = c; }, pull() { - if (pullCount === 0) { - const byobRequest = controller.byobRequest; - assert_not_equals(byobRequest, undefined, 'byobRequest must not be undefined'); + byobRequest = controller.byobRequest; + const view = byobRequest.view; + viewDefined = view !== undefined; + viewInfo = extractViewInfo(view); - const view = byobRequest.view; - assert_not_equals(view, undefined, 'byobRequest.view must no be undefined'); - assert_equals(view.constructor, Uint8Array); - assert_equals(view.buffer.byteLength, 16); - assert_equals(view.byteOffset, 0); - assert_equals(view.byteLength, 16); - - view[0] = 0x01; - byobRequest.respond(1); - } else { - assert_unreached('Too many pull() calls'); - } + view[0] = 0x01; + byobRequest.respond(1); ++pullCount; }, @@ -286,6 +311,12 @@ promise_test(() => { return Promise.resolve().then(() => { assert_equals(pullCount, 1, 'pull() must have been invoked once'); + assert_not_equals(byobRequest, undefined, 'byobRequest must not be undefined'); + assert_true(viewDefined, 'byobRequest.view must not be undefined'); + assert_equals(viewInfo.constructor, Uint8Array, 'view.constructor should be Uint8Array'); + assert_equals(viewInfo.bufferByteLength, 16, 'view.buffer.byteLength should be 16'); + assert_equals(viewInfo.byteOffset, 0, 'view.byteOffset should be 0'); + assert_equals(viewInfo.byteLength, 16, 'view.byteLength should be 16'); return readPromise; }).then(result => { assert_not_equals(result.value, undefined); @@ -294,47 +325,34 @@ promise_test(() => { assert_equals(result.value.byteOffset, 0); assert_equals(result.value.byteLength, 1); assert_equals(result.value[0], 0x01); + assert_equals(pullCount, 1, 'pull() should only be invoked once'); }); }, 'ReadableStream with byte source: autoAllocateChunkSize'); promise_test(() => { let pullCount = 0; let controller; + const byobRequests = []; const stream = new ReadableStream({ start(c) { controller = c; }, pull() { + const byobRequest = controller.byobRequest; + const view = byobRequest.view; + byobRequests[pullCount] = { + defined: byobRequest !== undefined, + viewDefined: view !== undefined, + viewInfo: extractViewInfo(view) + }; if (pullCount === 0) { - const byobRequest = controller.byobRequest; - assert_not_equals(byobRequest, undefined, 'byobRequest must not be undefined'); - - const view = byobRequest.view; - assert_not_equals(view, undefined, 'byobRequest.view must no be undefined'); - assert_equals(view.constructor, Uint8Array); - assert_equals(view.buffer.byteLength, 16); - assert_equals(view.byteOffset, 0); - assert_equals(view.byteLength, 16); - view[0] = 0x01; byobRequest.respond(1); } else if (pullCount === 1) { - const byobRequest = controller.byobRequest; - assert_not_equals(byobRequest, undefined, 'byobRequest must not be undefined'); - - const view = byobRequest.view; - assert_not_equals(view, undefined, 'byobRequest.view must no be undefined'); - assert_equals(view.constructor, Uint8Array); - assert_equals(view.buffer.byteLength, 32); - assert_equals(view.byteOffset, 0); - assert_equals(view.byteLength, 32); - view[0] = 0x02; view[1] = 0x03; byobRequest.respond(2); - } else { - assert_unreached('Too many pull() calls'); } ++pullCount; @@ -353,6 +371,14 @@ promise_test(() => { assert_equals(result.value.byteOffset, 0); assert_equals(result.value.byteLength, 1); assert_equals(result.value[0], 0x01); + const byobRequest = byobRequests[0]; + assert_true(byobRequest.defined, 'first byobRequest must not be undefined'); + assert_true(byobRequest.viewDefined, 'first byobRequest.view must not be undefined'); + const viewInfo = byobRequest.viewInfo; + assert_equals(viewInfo.constructor, Uint8Array, 'first view.constructor should be Uint8Array'); + assert_equals(viewInfo.bufferByteLength, 16, 'first view.buffer.byteLength should be 16'); + assert_equals(viewInfo.byteOffset, 0, 'first view.byteOffset should be 0'); + assert_equals(viewInfo.byteLength, 16, 'first view.byteLength should be 16'); reader.releaseLock(); const byobReader = stream.getReader({ mode: 'byob' }); @@ -365,6 +391,15 @@ promise_test(() => { assert_equals(result.value.byteLength, 2); assert_equals(result.value[0], 0x02); assert_equals(result.value[1], 0x03); + const byobRequest = byobRequests[1]; + assert_true(byobRequest.defined, 'second byobRequest must not be undefined'); + assert_true(byobRequest.viewDefined, 'second byobRequest.view must not be undefined'); + const viewInfo = byobRequest.viewInfo; + assert_equals(viewInfo.constructor, Uint8Array, 'second view.constructor should be Uint8Array'); + assert_equals(viewInfo.bufferByteLength, 32, 'second view.buffer.byteLength should be 32'); + assert_equals(viewInfo.byteOffset, 0, 'second view.byteOffset should be 0'); + assert_equals(viewInfo.byteLength, 32, 'second view.byteLength should be 32'); + assert_equals(pullCount, 2, 'pullCount should be 2'); }); }, 'ReadableStream with byte source: Mix of auto allocate and BYOB'); @@ -394,19 +429,20 @@ promise_test(() => { let pullCount = 0; let controller; + let desiredSizeInStart; + let desiredSizeInPull; const stream = new ReadableStream({ start(c) { c.enqueue(new Uint8Array(16)); - assert_equals(c.desiredSize, -8, 'desiredSize after enqueue() in start()'); - + desiredSizeInStart = c.desiredSize; controller = c; }, pull() { ++pullCount; if (pullCount === 1) { - assert_equals(controller.desiredSize, 8, 'desiredSize in pull()'); + desiredSizeInPull = controller.desiredSize; } }, type: 'bytes' @@ -416,11 +452,13 @@ promise_test(() => { return Promise.resolve().then(() => { assert_equals(pullCount, 0, 'No pull as the queue was filled by start()'); + assert_equals(desiredSizeInStart, -8, 'desiredSize after enqueue() in start()'); const reader = stream.getReader(); const promise = reader.read(); assert_equals(pullCount, 1, 'The first pull() should be made on read()'); + assert_equals(desiredSizeInPull, 8, 'desiredSize in pull()'); return promise.then(result => { assert_equals(result.done, false, 'result.done'); @@ -504,7 +542,7 @@ promise_test(() => { }); }, 'ReadableStream with byte source: enqueue() with Uint16Array, getReader(), then read()'); -promise_test(() => { +promise_test(t => { const stream = new ReadableStream({ start(c) { const view = new Uint8Array(16); @@ -512,9 +550,7 @@ promise_test(() => { view[8] = 0x02; c.enqueue(view); }, - pull() { - assert_unreached('pull must not be called'); - }, + pull: t.unreached_func('pull() should not be called'), type: 'bytes' }); @@ -547,16 +583,14 @@ promise_test(() => { }); }, 'ReadableStream with byte source: enqueue(), read(view) partially, then read()'); -promise_test(() => { +promise_test(t => { let controller; const stream = new ReadableStream({ start(c) { controller = c; }, - pull() { - assert_unreached('pull must not be called'); - }, + pull: t.unreached_func('pull() should not be called'), type: 'bytes' }); @@ -579,15 +613,13 @@ promise_test(() => { }); }, 'ReadableStream with byte source: getReader(), enqueue(), close(), then read()'); -promise_test(() => { +promise_test(t => { const stream = new ReadableStream({ start(c) { c.enqueue(new Uint8Array(16)); c.close(); }, - pull() { - assert_unreached('pull must not be called'); - }, + pull: t.unreached_func('pull() should not be called'), type: 'bytes' }); @@ -609,6 +641,7 @@ promise_test(() => { promise_test(() => { let controller; + let byobRequest; const stream = new ReadableStream({ start(c) { @@ -616,7 +649,7 @@ promise_test(() => { }, pull() { controller.enqueue(new Uint8Array(16)); - assert_equals(controller.byobRequest, undefined, 'byobRequest must be undefined'); + byobRequest = controller.byobRequest; }, type: 'bytes' }); @@ -626,6 +659,7 @@ promise_test(() => { return reader.read().then(result => { assert_equals(result.done, false, 'done'); assert_equals(result.value.byteLength, 16, 'byteLength'); + assert_equals(byobRequest, undefined, 'byobRequest must be undefined'); }); }, 'ReadableStream with byte source: Respond to pull() by enqueue()'); @@ -633,25 +667,20 @@ promise_test(() => { let pullCount = 0; let controller; + let byobRequest; + const desiredSizes = []; const stream = new ReadableStream({ start(c) { controller = c; }, pull() { - assert_equals(controller.byobRequest, undefined, 'byobRequest is undefined'); - - if (pullCount === 0) { - assert_equals(controller.desiredSize, 256, 'desiredSize on pull'); - - controller.enqueue(new Uint8Array(1)); - assert_equals(controller.desiredSize, 256, 'desiredSize after 1st enqueue()'); - - controller.enqueue(new Uint8Array(1)); - assert_equals(controller.desiredSize, 256, 'desiredSize after 2nd enqueue()'); - } else { - assert_unreached('Too many pull() calls'); - } + byobRequest = controller.byobRequest; + desiredSizes.push(controller.desiredSize); + controller.enqueue(new Uint8Array(1)); + desiredSizes.push(controller.desiredSize); + controller.enqueue(new Uint8Array(1)); + desiredSizes.push(controller.desiredSize); ++pullCount; }, @@ -680,6 +709,11 @@ promise_test(() => { assert_equals(result[1].value.byteLength, 1, 'result[1].value.byteLength'); assert_equals(result[2].done, false, 'result[2].done'); assert_equals(result[2].value.byteLength, 1, 'result[2].value.byteLength'); + assert_equals(byobRequest, undefined, 'byobRequest should be undefined'); + assert_equals(desiredSizes[0], 256, 'desiredSize on pull should be 256'); + assert_equals(desiredSizes[1], 256, 'desiredSize after 1st enqueue() should be 256'); + assert_equals(desiredSizes[2], 256, 'desiredSize after 2nd enqueue() should be 256'); + assert_equals(pullCount, 1, 'pull() should only be called once'); }); }, 'ReadableStream with byte source: Respond to pull() by enqueue() asynchronously'); @@ -687,23 +721,20 @@ promise_test(() => { let controller; let pullCount = 0; + const byobRequestDefined = []; const stream = new ReadableStream({ start(c) { controller = c; }, pull() { - if (pullCount === 0) { - assert_not_equals(controller.byobRequest, undefined, 'byobRequest must not be undefined before respond()'); + byobRequestDefined.push(controller.byobRequest !== undefined); - const view = controller.byobRequest.view; - view[0] = 0x01; - controller.byobRequest.respond(1); + const view = controller.byobRequest.view; + view[0] = 0x01; + controller.byobRequest.respond(1); - assert_equals(controller.byobRequest, undefined, 'byobRequest must be undefined after respond()'); - } else { - assert_unreached('Too many pull() calls'); - } + byobRequestDefined.push(controller.byobRequest !== undefined); ++pullCount; }, @@ -716,6 +747,9 @@ promise_test(() => { assert_equals(result.done, false, 'result.done'); assert_equals(result.value.byteLength, 1, 'result.value.byteLength'); assert_equals(result.value[0], 0x01, 'result.value[0]'); + assert_equals(pullCount, 1, 'pull() should be called only once'); + assert_true(byobRequestDefined[0], 'byobRequest must not be undefined before respond()'); + assert_false(byobRequestDefined[1], 'byobRequest must be undefined after respond()'); }); }, 'ReadableStream with byte source: read(view), then respond()'); @@ -723,28 +757,25 @@ promise_test(() => { let controller; let pullCount = 0; + const byobRequestDefined = []; const stream = new ReadableStream({ start(c) { controller = c; }, pull() { - if (pullCount === 0) { - assert_not_equals(controller.byobRequest, undefined, 'byobRequest must not be undefined before respond()'); + byobRequestDefined.push(controller.byobRequest !== undefined); - // Emulate ArrayBuffer transfer by just creating a new ArrayBuffer and pass it. By checking the result of - // read(view), we test that the respond()'s buffer argument is working correctly. - // - // A real implementation of the underlying byte source would transfer controller.byobRequest.view.buffer into - // a new ArrayBuffer, then construct a view around it and write to it. - const transferredView = new Uint8Array(1); - transferredView[0] = 0x01; - controller.byobRequest.respondWithNewView(transferredView); + // Emulate ArrayBuffer transfer by just creating a new ArrayBuffer and pass it. By checking the result of + // read(view), we test that the respond()'s buffer argument is working correctly. + // + // A real implementation of the underlying byte source would transfer controller.byobRequest.view.buffer into + // a new ArrayBuffer, then construct a view around it and write to it. + const transferredView = new Uint8Array(1); + transferredView[0] = 0x01; + controller.byobRequest.respondWithNewView(transferredView); - assert_equals(controller.byobRequest, undefined, 'byobRequest must be undefined after respond()'); - } else { - assert_unreached('Too many pull() calls'); - } + byobRequestDefined.push(controller.byobRequest !== undefined); ++pullCount; }, @@ -757,20 +788,30 @@ promise_test(() => { assert_equals(result.done, false, 'result.done'); assert_equals(result.value.byteLength, 1, 'result.value.byteLength'); assert_equals(result.value[0], 0x01, 'result.value[0]'); + assert_equals(pullCount, 1, 'pull() should be called only once'); + assert_true(byobRequestDefined[0], 'byobRequest must not be undefined before respond()'); + assert_false(byobRequestDefined[1], 'byobRequest must be undefined after respond()'); }); }, 'ReadableStream with byte source: read(view), then respond() with a transferred ArrayBuffer'); -promise_test(t => { +promise_test(() => { let controller; + let byobRequestWasDefined; + let incorrectRespondException; const stream = new ReadableStream({ start(c) { controller = c; }, pull() { - assert_not_equals(controller.byobRequest, undefined, 'byobRequest is not undefined'); + byobRequestWasDefined = controller.byobRequest !== undefined; + + try { + controller.byobRequest.respond(2); + } catch (e) { + incorrectRespondException = e; + } - assert_throws(new RangeError(), () => controller.byobRequest.respond(2), 'respond() must throw'); controller.byobRequest.respond(1); }, type: 'bytes' @@ -778,9 +819,10 @@ promise_test(t => { const reader = stream.getReader({ mode: 'byob' }); - return reader.read(new Uint8Array(1)).catch(e => { - assert_unreached(e); - t.done(); + return reader.read(new Uint8Array(1)).then(() => { + assert_true(byobRequestWasDefined, 'byobRequest should be defined'); + assert_not_equals(incorrectRespondException, undefined, 'respond() must throw'); + assert_equals(incorrectRespondException.name, 'RangeError', 'respond() must throw a RangeError'); }); }, 'ReadableStream with byte source: read(view), then respond() with too big value'); @@ -788,26 +830,19 @@ promise_test(() => { let pullCount = 0; let controller; + let byobRequest; + let viewInfo; const stream = new ReadableStream({ start(c) { controller = c; }, pull() { - if (pullCount > 1) { - assert_unreached('Too many pull calls'); - } - ++pullCount; - assert_not_equals(controller.byobRequest, undefined, 'byobRequest must not be undefined'); - const view = controller.byobRequest.view; - - assert_equals(view.constructor, Uint8Array); - assert_equals(view.buffer.byteLength, 4); - - assert_equals(view.byteOffset, 0); - assert_equals(view.byteLength, 4); + byobRequest = controller.byobRequest; + const view = byobRequest.view; + viewInfo = extractViewInfo(view); view[0] = 0x01; view[1] = 0x02; @@ -834,6 +869,11 @@ promise_test(() => { return reader.read(new Uint8Array(1)); }).then(result => { assert_equals(pullCount, 1); + assert_not_equals(byobRequest, undefined, 'byobRequest must not be undefined'); + assert_equals(viewInfo.constructor, Uint8Array, 'view.constructor should be Uint8Array'); + assert_equals(viewInfo.bufferByteLength, 4, 'view.buffer.byteLength should be 4'); + assert_equals(viewInfo.byteOffset, 0, 'view.byteOffset should be 0'); + assert_equals(viewInfo.byteLength, 4, 'view.byteLength should be 4'); assert_equals(result.done, false, 'done'); @@ -846,20 +886,14 @@ promise_test(() => { }, 'ReadableStream with byte source: respond(3) to read(view) with 2 element Uint16Array enqueues the 1 byte ' + 'remainder'); -promise_test(() => { - let controller; - +promise_test(t => { const stream = new ReadableStream({ - start(c) { + start(controller) { const view = new Uint8Array(16); view[15] = 0x01; - c.enqueue(view); - - controller = c; - }, - pull() { - assert_equals(controller.byobRequest, undefined, 'byobRequest is undefined'); + controller.enqueue(view); }, + pull: t.unreached_func('pull() should not be called'), type: 'bytes' }); @@ -875,8 +909,9 @@ promise_test(() => { }); }, 'ReadableStream with byte source: enqueue(), getReader(), then read(view)'); -promise_test(() => { +promise_test(t => { let cancelCount = 0; + let reason; const passedReason = new TypeError('foo'); @@ -884,14 +919,10 @@ promise_test(() => { start(c) { c.enqueue(new Uint8Array(16)); }, - pull() { - assert_unreached('pull must not be called'); - }, - cancel(reason) { + pull: t.unreached_func('pull() should not be called'), + cancel(r) { if (cancelCount === 0) { - assert_equals(reason, passedReason); - } else { - assert_unreached('Too many cancel calls'); + reason = r; } ++cancelCount; @@ -904,11 +935,13 @@ promise_test(() => { return reader.cancel(passedReason).then(result => { assert_equals(result, undefined); assert_equals(cancelCount, 1); + assert_equals(reason, passedReason, 'reason should equal the passed reason'); }); }, 'ReadableStream with byte source: enqueue(), getReader(), then cancel() (mode = not BYOB)'); -promise_test(() => { +promise_test(t => { let cancelCount = 0; + let reason; const passedReason = new TypeError('foo'); @@ -916,14 +949,10 @@ promise_test(() => { start(c) { c.enqueue(new Uint8Array(16)); }, - pull() { - assert_unreached('pull must not be called'); - }, - cancel(reason) { + pull: t.unreached_func('pull() should not be called'), + cancel(r) { if (cancelCount === 0) { - assert_equals(reason, passedReason); - } else { - assert_unreached('Too many cancel calls'); + reason = r; } ++cancelCount; @@ -936,11 +965,13 @@ promise_test(() => { return reader.cancel(passedReason).then(result => { assert_equals(result, undefined); assert_equals(cancelCount, 1); + assert_equals(reason, passedReason, 'reason should equal the passed reason'); }); }, 'ReadableStream with byte source: enqueue(), getReader(), then cancel() (mode = BYOB)'); -promise_test(() => { +promise_test(t => { let cancelCount = 0; + let reason; const passedReason = new TypeError('foo'); @@ -950,16 +981,11 @@ promise_test(() => { start(c) { controller = c; }, - pull() { - assert_unreached('pull must not be called'); - }, - cancel(reason) { + pull: t.unreached_func('pull() should not be called'), + cancel(r) { if (cancelCount === 0) { - assert_equals(reason, passedReason); - + reason = r; controller.byobRequest.respond(0); - } else { - assert_unreached('Too many cancel calls'); } ++cancelCount; @@ -971,37 +997,36 @@ promise_test(() => { const reader = stream.getReader({ mode: 'byob' }); - const readPromise0 = reader.read(new Uint8Array(1)).then(result => { + const readPromise = reader.read(new Uint8Array(1)).then(result => { assert_equals(result.done, true); }); - const readPromise1 = reader.cancel(passedReason).then(result => { + const cancelPromise = reader.cancel(passedReason).then(result => { assert_equals(result, undefined); assert_equals(cancelCount, 1); + assert_equals(reason, passedReason, 'reason should equal the passed reason'); }); - return Promise.all([readPromise0, readPromise1]); + return Promise.all([readPromise, cancelPromise]); }, 'ReadableStream with byte source: getReader(), read(view), then cancel()'); promise_test(() => { let pullCount = 0; let controller; + let byobRequest; + const viewInfos = []; const stream = new ReadableStream({ start(c) { controller = c; }, pull() { - assert_not_equals(controller.byobRequest, undefined, 'byobRequest is undefined'); + byobRequest = controller.byobRequest; - if (pullCount === 0) { - assert_equals(controller.byobRequest.view.byteLength, 2, 'byteLength before enqueue()'); - controller.enqueue(new Uint8Array(1)); - assert_equals(controller.byobRequest.view.byteLength, 1, 'byteLength after enqueue()'); - } else { - assert_unreached('Too many pull calls'); - } + viewInfos.push(extractViewInfo(controller.byobRequest.view)); + controller.enqueue(new Uint8Array(1)); + viewInfos.push(extractViewInfo(controller.byobRequest.view)); ++pullCount; }, @@ -1019,18 +1044,24 @@ promise_test(() => { }); assert_equals(pullCount, 1, '1 pull() should have been made in response to partial fill by enqueue()'); + assert_not_equals(byobRequest, undefined, 'byobRequest should not be undefined'); + assert_equals(viewInfos[0].byteLength, 2, 'byteLength before enqueue() shouild be 2'); + assert_equals(viewInfos[1].byteLength, 1, 'byteLength after enqueue() should be 1'); + reader.cancel(); // Tell that the buffer given via pull() is returned. controller.byobRequest.respond(0); + assert_equals(pullCount, 1, 'pull() should only be called once'); return promise; }); }, 'ReadableStream with byte source: cancel() with partially filled pending pull() request'); promise_test(() => { let controller; + let byobRequest; const stream = new ReadableStream({ start(c) { @@ -1041,7 +1072,7 @@ promise_test(() => { controller = c; }, pull() { - assert_equals(controller.byobRequest, undefined, 'byobRequest must be undefined'); + byobRequest = controller.byobRequest; }, type: 'bytes' }); @@ -1053,6 +1084,8 @@ promise_test(() => { return reader.read(new Uint8Array(buffer, 8, 8)).then(result => { assert_equals(result.done, false); + assert_equals(byobRequest, undefined, 'byobRequest must be undefined'); + const view = result.value; assert_equals(view.constructor, Uint8Array); assert_equals(view.buffer.byteLength, 16); @@ -1065,6 +1098,7 @@ promise_test(() => { promise_test(() => { let controller; + let byobRequest; const stream = new ReadableStream({ start(c) { @@ -1081,7 +1115,7 @@ promise_test(() => { controller = c; }, pull() { - assert_equals(controller.byobRequest, undefined, 'byobRequest must be undefined'); + byobRequest = controller.byobRequest; }, type: 'bytes' }); @@ -1091,6 +1125,8 @@ promise_test(() => { return reader.read(new Uint8Array(24)).then(result => { assert_equals(result.done, false, 'done'); + assert_equals(byobRequest, undefined, 'byobRequest must be undefined'); + const view = result.value; assert_equals(view.byteOffset, 0, 'byteOffset'); assert_equals(view.byteLength, 24, 'byteLength'); @@ -1100,6 +1136,8 @@ promise_test(() => { }, 'ReadableStream with byte source: Multiple enqueue(), getReader(), then read(view)'); promise_test(() => { + let byobRequest; + const stream = new ReadableStream({ start(c) { const view = new Uint8Array(16); @@ -1107,7 +1145,7 @@ promise_test(() => { c.enqueue(view); }, pull(controller) { - assert_equals(controller.byobRequest, undefined, 'byobRequest must be undefined'); + byobRequest = controller.byobRequest; }, type: 'bytes' }); @@ -1117,6 +1155,8 @@ promise_test(() => { return reader.read(new Uint8Array(24)).then(result => { assert_equals(result.done, false); + assert_equals(byobRequest, undefined, 'byobRequest must be undefined'); + const view = result.value; assert_equals(view.byteOffset, 0); assert_equals(view.byteLength, 16); @@ -1125,6 +1165,8 @@ promise_test(() => { }, 'ReadableStream with byte source: enqueue(), getReader(), then read(view) with a bigger view'); promise_test(() => { + let byobRequest; + const stream = new ReadableStream({ start(c) { const view = new Uint8Array(16); @@ -1133,7 +1175,7 @@ promise_test(() => { c.enqueue(view); }, pull(controller) { - assert_equals(controller.byobRequest, undefined, 'byobRequest must be undefined'); + byobRequest = controller.byobRequest; }, type: 'bytes' }); @@ -1152,6 +1194,8 @@ promise_test(() => { }).then(result => { assert_equals(result.done, false, 'done'); + assert_equals(byobRequest, undefined, 'byobRequest must be undefined'); + const view = result.value; assert_equals(view.byteOffset, 0); assert_equals(view.byteLength, 8); @@ -1161,6 +1205,7 @@ promise_test(() => { promise_test(() => { let controller; + let viewInfo; const stream = new ReadableStream({ start(c) { @@ -1176,12 +1221,7 @@ promise_test(() => { } const view = controller.byobRequest.view; - - assert_equals(view.constructor, Uint8Array); - assert_equals(view.buffer.byteLength, 2); - - assert_equals(view.byteOffset, 1); - assert_equals(view.byteLength, 1); + viewInfo = extractViewInfo(view); view[0] = 0xaa; controller.byobRequest.respond(1); @@ -1198,6 +1238,11 @@ promise_test(() => { assert_equals(view.byteOffset, 0); assert_equals(view.byteLength, 2); assert_equals(view[0], 0xaaff); + + assert_equals(viewInfo.constructor, Uint8Array, 'view.constructor should be Uint8Array'); + assert_equals(viewInfo.bufferByteLength, 2, 'view.buffer.byteLength should be 2'); + assert_equals(viewInfo.byteOffset, 1, 'view.byteOffset should be 1'); + assert_equals(viewInfo.byteLength, 1, 'view.byteLength should be 1'); }); }, 'ReadableStream with byte source: enqueue() 1 byte, getReader(), then read(view) with Uint16Array'); @@ -1205,6 +1250,9 @@ promise_test(() => { let pullCount = 0; let controller; + let byobRequest; + let viewInfo; + let desiredSize; const stream = new ReadableStream({ start(c) { @@ -1216,23 +1264,16 @@ promise_test(() => { controller = c; }, pull() { - assert_not_equals(controller.byobRequest, undefined, 'byobRequest must not be undefined'); + byobRequest = controller.byobRequest; - if (pullCount === 0) { - const view = controller.byobRequest.view; + const view = controller.byobRequest.view; - assert_equals(view.constructor, Uint8Array); - assert_equals(view.buffer.byteLength, 2); - assert_equals(view.byteOffset, 1); - assert_equals(view.byteLength, 1); + viewInfo = extractViewInfo(view); - view[0] = 0x03; - controller.byobRequest.respond(1); + view[0] = 0x03; + controller.byobRequest.respond(1); - assert_equals(controller.desiredSize, 0, 'desiredSize'); - } else { - assert_unreached('Too many pull calls'); - } + desiredSize = controller.desiredSize; ++pullCount; }, @@ -1266,6 +1307,13 @@ promise_test(() => { assert_equals(view.byteOffset, 0, 'byteOffset'); assert_equals(view.byteLength, 2, 'byteLength'); assert_equals(view[0], 0x0302, 'Contents are set'); + + assert_not_equals(byobRequest, undefined, 'byobRequest must not be undefined'); + assert_equals(viewInfo.constructor, Uint8Array, 'view.constructor should be Uint8Array'); + assert_equals(viewInfo.bufferByteLength, 2, 'view.buffer.byteLength should be 2'); + assert_equals(viewInfo.byteOffset, 1, 'view.byteOffset should be 1'); + assert_equals(viewInfo.byteLength, 1, 'view.byteLength should be 1'); + assert_equals(desiredSize, 0, 'desiredSize should be zero'); }); assert_equals(pullCount, 0); @@ -1282,23 +1330,19 @@ promise_test(t => { c.enqueue(view); c.close(); }, - pull() { - assert_unreached('pull must not be called'); - }, + pull: t.unreached_func('pull() should not be called'), type: 'bytes' }); const reader = stream.getReader({ mode: 'byob' }); - const promise = promise_rejects(t, new TypeError(), reader.read(new Uint16Array(1)), 'read(view) must fail'); - return promise_rejects(t, new TypeError(), promise.then(() => reader.closed)); + return promise_rejects(t, new TypeError(), reader.read(new Uint16Array(1)), 'read(view) must fail') + .then(() => promise_rejects(t, new TypeError(), reader.closed, 'reader.closed should reject')); }, 'ReadableStream with byte source: read(view) with Uint16Array on close()-d stream with 1 byte enqueue()-d must ' + 'fail'); promise_test(t => { - let pullCount = 0; - let controller; const stream = new ReadableStream({ @@ -1309,37 +1353,18 @@ promise_test(t => { controller = c; }, - pull() { - assert_not_equals(controller.byobRequest, undefined, 'byobRequest must not be undefined'); - - if (pullCount === 0) { - const view = controller.byobRequest.view; - - assert_equals(view.constructor, Uint8Array); - assert_equals(view.buffer.byteLength, 2); - - assert_equals(view.byteOffset, 1); - assert_equals(view.byteLength, 1); - } else { - assert_unreached('Too many pull calls'); - } - - ++pullCount; - }, + pull: t.unreached_func('pull() should not be called'), type: 'bytes' }); const reader = stream.getReader({ mode: 'byob' }); - let promise = promise_rejects(t, new TypeError(), reader.read(new Uint16Array(1)), 'read(view) must fail'); - promise = promise_rejects(t, new TypeError(), promise.then(() => reader.closed)); - promise = promise.then(() => { - assert_equals(pullCount, 0); - }); + const readPromise = reader.read(new Uint16Array(1)); assert_throws(new TypeError(), () => controller.close(), 'controller.close() must throw'); - return promise; + return promise_rejects(t, new TypeError(), readPromise, 'read(view) must fail') + .then(() => promise_rejects(t, new TypeError(), reader.closed, 'reader.closed must reject')); }, 'ReadableStream with byte source: A stream must be errored if close()-d before fulfilling read(view) with ' + 'Uint16Array'); @@ -1383,20 +1408,17 @@ test(() => { promise_test(() => { let controller; + let byobRequest; + let viewInfo; const stream = new ReadableStream({ start(c) { controller = c; }, pull() { - assert_not_equals(controller.byobRequest, undefined, 'byobRequest must not be undefined'); + byobRequest = controller.byobRequest; const view = controller.byobRequest.view; - - assert_equals(view.constructor, Uint8Array); - assert_equals(view.buffer.byteLength, 16); - - assert_equals(view.byteOffset, 0); - assert_equals(view.byteLength, 16); + viewInfo = extractViewInfo(view); view[15] = 0x01; controller.byobRequest.respond(16); @@ -1422,6 +1444,12 @@ promise_test(() => { const view = result.value; assert_equals(view.byteOffset, 0); assert_equals(view.byteLength, 0); + + assert_not_equals(byobRequest, undefined, 'byobRequest must not be undefined'); + assert_equals(viewInfo.constructor, Uint8Array, 'view.constructor should be Uint8Array'); + assert_equals(viewInfo.bufferByteLength, 16, 'view.buffer.byteLength should be 16'); + assert_equals(viewInfo.byteOffset, 0, 'view.byteOffset should be 0'); + assert_equals(viewInfo.byteLength, 16, 'view.byteLength should be 16'); }); }, 'ReadableStream with byte source: read(view), then respond() and close() in pull()'); @@ -1429,6 +1457,7 @@ promise_test(() => { let pullCount = 0; let controller; + const viewInfos = []; const stream = new ReadableStream({ start(c) { @@ -1439,21 +1468,12 @@ promise_test(() => { return; } - if (pullCount < 1) { - for (let i = 0; i < 4; ++i) { - const view = controller.byobRequest.view; + for (let i = 0; i < 4; ++i) { + const view = controller.byobRequest.view; + viewInfos.push(extractViewInfo(view)); - assert_equals(view.constructor, Uint8Array); - assert_equals(view.buffer.byteLength, 4); - - assert_equals(view.byteOffset, i); - assert_equals(view.byteLength, 4 - i); - - view[0] = 0x01; - controller.byobRequest.respond(1); - } - } else { - assert_unreached('Too many pull() calls'); + view[0] = 0x01; + controller.byobRequest.respond(1); } ++pullCount; @@ -1470,6 +1490,16 @@ promise_test(() => { assert_equals(view.byteOffset, 0); assert_equals(view.byteLength, 4); assert_equals(view[0], 0x01010101); + + assert_equals(pullCount, 1, 'pull() should only be called once'); + + for (let i = 0; i < 4; ++i) { + assert_equals(viewInfos[i].constructor, Uint8Array, 'view.constructor should be Uint8Array'); + assert_equals(viewInfos[i].bufferByteLength, 4, 'view.buffer.byteLength should be 4'); + + assert_equals(viewInfos[i].byteOffset, i, 'view.byteOffset should be i'); + assert_equals(viewInfos[i].byteLength, 4 - i, 'view.byteLength should be 4 - i'); + } }); }, 'ReadableStream with byte source: read(view) with Uint32Array, then fill it by multiple respond() calls'); @@ -1477,17 +1507,14 @@ promise_test(() => { let pullCount = 0; let controller; + let byobRequest; const stream = new ReadableStream({ start(c) { controller = c; }, pull() { - assert_equals(controller.byobRequest, undefined, 'byobRequest must be undefined'); - - if (pullCount > 1) { - assert_unreached('Too many pull calls'); - } + byobRequest = controller.byobRequest; ++pullCount; }, @@ -1525,6 +1552,8 @@ promise_test(() => { assert_equals(view.buffer.byteLength, 2); assert_equals(view.byteOffset, 0); assert_equals(view.byteLength, 2); + + assert_equals(byobRequest, undefined, 'byobRequest must be undefined'); }); assert_equals(pullCount, 0, 'No pull should have been made since the startPromise has not yet been handled'); @@ -1536,32 +1565,14 @@ promise_test(() => { return Promise.all([p0, p1]); }, 'ReadableStream with byte source: read() twice, then enqueue() twice'); -promise_test(() => { - let pullCount = 0; - +promise_test(t => { let controller; const stream = new ReadableStream({ start(c) { controller = c; }, - pull() { - assert_not_equals(controller.byobRequest, undefined, 'byobRequest must not be undefined'); - - if (pullCount === 0) { - const view = controller.byobRequest.view; - - assert_equals(view.constructor, Uint8Array); - assert_equals(view.buffer.byteLength, 16); - - assert_equals(view.byteOffset, 0); - assert_equals(view.byteLength, 16); - } else { - assert_unreached('Too many pull calls'); - } - - ++pullCount; - }, + pull: t.unreached_func('pull() should not be called'), type: 'bytes' }); @@ -1591,31 +1602,14 @@ promise_test(() => { return Promise.all([p0, p1]); }, 'ReadableStream with byte source: Multiple read(view), close() and respond()'); -promise_test(() => { - let pullCount = 0; - +promise_test(t => { let controller; const stream = new ReadableStream({ start(c) { controller = c; }, - pull() { - if (pullCount === 0) { - assert_not_equals(controller.byobRequest, undefined, 'byobRequest must not be undefined'); - const view = controller.byobRequest.view; - - assert_equals(view.constructor, Uint8Array); - assert_equals(view.buffer.byteLength, 16); - - assert_equals(view.byteOffset, 0); - assert_equals(view.byteLength, 16); - } else { - assert_unreached(); - } - - ++pullCount; - }, + pull: t.unreached_func('pull() should not be called'), type: 'bytes' }); @@ -1644,16 +1638,14 @@ promise_test(() => { return Promise.all([p0, p1]); }, 'ReadableStream with byte source: Multiple read(view), big enqueue()'); -promise_test(() => { +promise_test(t => { let controller; const stream = new ReadableStream({ start(c) { controller = c; }, - pull() { - assert_unreached('pull must not be called'); - }, + pull: t.unreached_func('pull() should not be called'), type: 'bytes' }); @@ -1665,15 +1657,12 @@ promise_test(() => { return reader.read(new Uint8Array(7)).then(result => { if (result.done) { assert_equals(bytesRead, 1024); - - return null; + return undefined; } bytesRead += result.value.byteLength; return pump(); - }).catch(e => { - assert_unreached(e); }); } const promise = pump(); @@ -1686,29 +1675,33 @@ promise_test(() => { }, 'ReadableStream with byte source: Multiple read(view) and multiple enqueue()'); promise_test(t => { + let byobRequest; const stream = new ReadableStream({ pull(controller) { - assert_equals(controller.byobRequest, undefined, 'byobRequest must be undefined'); + byobRequest = controller.byobRequest; }, type: 'bytes' }); const reader = stream.getReader({ mode: 'byob' }); - return promise_rejects(t, new TypeError(), reader.read(), 'read() must fail'); + return promise_rejects(t, new TypeError(), reader.read(), 'read() must fail') + .then(() => assert_equals(byobRequest, undefined, 'byobRequest must be undefined')); }, 'ReadableStream with byte source: read(view) with passing undefined as view must fail'); promise_test(t => { + let byobRequest; const stream = new ReadableStream({ pull(controller) { - assert_equals(controller.byobRequest, undefined, 'byobRequest must be undefined'); + byobRequest = controller.byobRequest; }, type: 'bytes' }); const reader = stream.getReader({ mode: 'byob' }); - return promise_rejects(t, new TypeError(), reader.read(new Uint8Array(0)), 'read(view) must fail'); + return promise_rejects(t, new TypeError(), reader.read(new Uint8Array(0)), 'read(view) must fail') + .then(() => assert_equals(byobRequest, undefined, 'byobRequest must be undefined')); }, 'ReadableStream with byte source: read(view) with zero-length view must fail'); promise_test(t => { @@ -1738,9 +1731,7 @@ promise_test(t => { start(c) { c.error(error1); }, - pull() { - assert_unreached('pull must not be called'); - }, + pull: t.unreached_func('pull() should not be called'), type: 'bytes' }); @@ -1773,9 +1764,7 @@ promise_test(t => { start(c) { c.error(error1); }, - pull() { - assert_unreached('pull must not be called'); - }, + pull: t.unreached_func('pull() should not be called'), type: 'bytes' }); @@ -1805,6 +1794,7 @@ promise_test(t => { promise_test(t => { let controller; + let byobRequest; const testError = new TypeError('foo'); @@ -1813,7 +1803,7 @@ promise_test(t => { controller = c; }, pull() { - assert_equals(controller.byobRequest, undefined, 'byobRequest must be undefined'); + byobRequest = controller.byobRequest; throw testError; }, type: 'bytes' @@ -1822,18 +1812,16 @@ promise_test(t => { const reader = stream.getReader(); const promise = promise_rejects(t, testError, reader.read(), 'read() must fail'); - return promise_rejects(t, testError, promise.then(() => reader.closed)); + return promise_rejects(t, testError, promise.then(() => reader.closed)) + .then(() => assert_equals(byobRequest, undefined, 'byobRequest must be undefined')); }, 'ReadableStream with byte source: Throwing in pull function must error the stream'); promise_test(t => { - let controller; + let byobRequest; const stream = new ReadableStream({ - start(c) { - controller = c; - }, - pull() { - assert_equals(controller.byobRequest, undefined, 'byobRequest must be undefined'); + pull(controller) { + byobRequest = controller.byobRequest; controller.error(error1); throw new TypeError('foo'); }, @@ -1842,23 +1830,20 @@ promise_test(t => { const reader = stream.getReader(); - return promise_rejects(t, error1, reader.read(), 'read() must fail').then(() => { - return promise_rejects(t, error1, reader.closed, 'closed must fail'); - }); + return promise_rejects(t, error1, reader.read(), 'read() must fail') + .then(() => promise_rejects(t, error1, reader.closed, 'closed must fail')) + .then(() => assert_equals(byobRequest, undefined, 'byobRequest must be undefined')); }, 'ReadableStream with byte source: Throwing in pull in response to read() must be ignored if the stream is ' + 'errored in it'); promise_test(t => { - let controller; + let byobRequest; const testError = new TypeError('foo'); const stream = new ReadableStream({ - start(c) { - controller = c; - }, - pull() { - assert_not_equals(controller.byobRequest, undefined, 'byobRequest must not be undefined'); + pull(controller) { + byobRequest = controller.byobRequest; throw testError; }, type: 'bytes' @@ -1866,19 +1851,17 @@ promise_test(t => { const reader = stream.getReader({ mode: 'byob' }); - const promise = promise_rejects(t, testError, reader.read(new Uint8Array(1)), 'read(view) must fail'); - return promise_rejects(t, testError, promise.then(() => reader.closed)); + return promise_rejects(t, testError, reader.read(new Uint8Array(1)), 'read(view) must fail') + .then(() => promise_rejects(t, testError, reader.closed, 'reader.closed must reject')) + .then(() => assert_not_equals(byobRequest, undefined, 'byobRequest must not be undefined')); }, 'ReadableStream with byte source: Throwing in pull in response to read(view) function must error the stream'); promise_test(t => { - let controller; + let byobRequest; const stream = new ReadableStream({ - start(c) { - controller = c; - }, - pull() { - assert_not_equals(controller.byobRequest, undefined, 'byobRequest must not be undefined'); + pull(controller) { + byobRequest = controller.byobRequest; controller.error(error1); throw new TypeError('foo'); }, @@ -1887,13 +1870,12 @@ promise_test(t => { const reader = stream.getReader({ mode: 'byob' }); - return promise_rejects(t, error1, reader.read(new Uint8Array(1)), 'read(view) must fail').then(() => { - return promise_rejects(t, error1, reader.closed, 'closed must fail'); - }); + return promise_rejects(t, error1, reader.read(new Uint8Array(1)), 'read(view) must fail') + .then(() => promise_rejects(t, error1, reader.closed, 'closed must fail')) + .then(() => assert_not_equals(byobRequest, undefined, 'byobRequest must not be undefined')); }, 'ReadableStream with byte source: Throwing in pull in response to read(view) must be ignored if the stream is ' + 'errored in it'); - test(() => { const ReadableStreamBYOBReader = new ReadableStream({ type: 'bytes' }).getReader({ mode: 'byob' }).constructor; const stream = new ReadableStream({ type: 'bytes' }); diff --git a/tests/wpt/web-platform-tests/streams/readable-streams/floating-point-total-queue-size.dedicatedworker.html b/tests/wpt/web-platform-tests/streams/readable-streams/floating-point-total-queue-size.dedicatedworker.html new file mode 100644 index 00000000000..f098b39a345 --- /dev/null +++ b/tests/wpt/web-platform-tests/streams/readable-streams/floating-point-total-queue-size.dedicatedworker.html @@ -0,0 +1,11 @@ + + +floating-point-total-queue-size.js dedicated worker wrapper file + + + + + diff --git a/tests/wpt/web-platform-tests/streams/readable-streams/floating-point-total-queue-size.html b/tests/wpt/web-platform-tests/streams/readable-streams/floating-point-total-queue-size.html new file mode 100644 index 00000000000..b0ea67973f2 --- /dev/null +++ b/tests/wpt/web-platform-tests/streams/readable-streams/floating-point-total-queue-size.html @@ -0,0 +1,10 @@ + + +floating-point-total-queue-size.js browser context wrapper file + + + + + + + diff --git a/tests/wpt/web-platform-tests/streams/readable-streams/floating-point-total-queue-size.js b/tests/wpt/web-platform-tests/streams/readable-streams/floating-point-total-queue-size.js new file mode 100644 index 00000000000..3bb3b6a90d0 --- /dev/null +++ b/tests/wpt/web-platform-tests/streams/readable-streams/floating-point-total-queue-size.js @@ -0,0 +1,119 @@ +'use strict'; + +if (self.importScripts) { + self.importScripts('/resources/testharness.js'); +} + +// Due to the limitations of floating-point precision, the calculation of desiredSize sometimes gives different answers +// than adding up the items in the queue would. It is important that implementations give the same result in these edge +// cases so that developers do not come to depend on non-standard behaviour. See +// https://github.com/whatwg/streams/issues/582 and linked issues for further discussion. + +promise_test(() => { + const { reader, controller } = setupTestStream(); + + controller.enqueue(2); + assert_equals(controller.desiredSize, 0 - 2, 'desiredSize must be -2 after enqueueing such a chunk'); + + controller.enqueue(Number.MAX_SAFE_INTEGER); + assert_equals(controller.desiredSize, 0 - Number.MAX_SAFE_INTEGER - 2, + 'desiredSize must be calculated using double-precision floating-point arithmetic (adding a second chunk)'); + + return reader.read().then(() => { + assert_equals(controller.desiredSize, 0 - Number.MAX_SAFE_INTEGER - 2 + 2, + 'desiredSize must be calculated using double-precision floating-point arithmetic (subtracting a chunk)'); + + return reader.read(); + }).then(() => { + assert_equals(controller.desiredSize, 0, '[[queueTotalSize]] must clamp to 0 if it becomes negative'); + }); +}, 'Floating point arithmetic must manifest near NUMBER.MAX_SAFE_INTEGER (total ends up positive)'); + +promise_test(() => { + const { reader, controller } = setupTestStream(); + + controller.enqueue(1e-16); + assert_equals(controller.desiredSize, 0 - 1e-16, 'desiredSize must be -1e16 after enqueueing such a chunk'); + + controller.enqueue(1); + assert_equals(controller.desiredSize, 0 - 1e-16 - 1, + 'desiredSize must be calculated using double-precision floating-point arithmetic (adding a second chunk)'); + + return reader.read().then(() => { + assert_equals(controller.desiredSize, 0 - 1e-16 - 1 + 1e-16, + 'desiredSize must be calculated using double-precision floating-point arithmetic (subtracting a chunk)'); + + return reader.read(); + }).then(() => { + assert_equals(controller.desiredSize, 0, '[[queueTotalSize]] must clamp to 0 if it becomes negative'); + }); +}, 'Floating point arithmetic must manifest near 0 (total ends up positive, but clamped)'); + +promise_test(() => { + const { reader, controller } = setupTestStream(); + + controller.enqueue(1e-16); + assert_equals(controller.desiredSize, 0 - 1e-16, 'desiredSize must be -2e16 after enqueueing such a chunk'); + + controller.enqueue(1); + assert_equals(controller.desiredSize, 0 - 1e-16 - 1, + 'desiredSize must be calculated using double-precision floating-point arithmetic (adding a second chunk)'); + + controller.enqueue(2e-16); + assert_equals(controller.desiredSize, 0 - 1e-16 - 1 - 2e-16, + 'desiredSize must be calculated using double-precision floating-point arithmetic (adding a third chunk)'); + + return reader.read().then(() => { + assert_equals(controller.desiredSize, 0 - 1e-16 - 1 - 2e-16 + 1e-16, + 'desiredSize must be calculated using double-precision floating-point arithmetic (subtracting a chunk)'); + + return reader.read(); + }).then(() => { + assert_equals(controller.desiredSize, 0 - 1e-16 - 1 - 2e-16 + 1e-16 + 1, + 'desiredSize must be calculated using double-precision floating-point arithmetic (subtracting a second chunk)'); + + return reader.read(); + }).then(() => { + assert_equals(controller.desiredSize, 0 - 1e-16 - 1 - 2e-16 + 1e-16 + 1 + 2e-16, + 'desiredSize must be calculated using double-precision floating-point arithmetic (subtracting a third chunk)'); + }); +}, 'Floating point arithmetic must manifest near 0 (total ends up positive, and not clamped)'); + +promise_test(() => { + const { reader, controller } = setupTestStream(); + + controller.enqueue(2e-16); + assert_equals(controller.desiredSize, 0 - 2e-16, 'desiredSize must be -2e16 after enqueueing such a chunk'); + + controller.enqueue(1); + assert_equals(controller.desiredSize, 0 - 2e-16 - 1, + 'desiredSize must be calculated using double-precision floating-point arithmetic (adding a second chunk)'); + + return reader.read().then(() => { + assert_equals(controller.desiredSize, 0 - 2e-16 - 1 + 2e-16, + 'desiredSize must be calculated using double-precision floating-point arithmetic (subtracting a chunk)'); + + return reader.read(); + }).then(() => { + assert_equals(controller.desiredSize, 0, + 'desiredSize must be calculated using double-precision floating-point arithmetic (subtracting a second chunk)'); + }); +}, 'Floating point arithmetic must manifest near 0 (total ends up zero)'); + +function setupTestStream() { + const strategy = { + size(x) { + return x; + }, + highWaterMark: 0 + }; + + let controller; + const rs = new ReadableStream({ + start(c) { + controller = c; + } + }, strategy); + + return { reader: rs.getReader(), controller }; +} diff --git a/tests/wpt/web-platform-tests/streams/readable-streams/floating-point-total-queue-size.serviceworker.https.html b/tests/wpt/web-platform-tests/streams/readable-streams/floating-point-total-queue-size.serviceworker.https.html new file mode 100644 index 00000000000..1eb7c9e53de --- /dev/null +++ b/tests/wpt/web-platform-tests/streams/readable-streams/floating-point-total-queue-size.serviceworker.https.html @@ -0,0 +1,12 @@ + + +floating-point-total-queue-size.js service worker wrapper file + + + + + + diff --git a/tests/wpt/web-platform-tests/streams/readable-streams/floating-point-total-queue-size.sharedworker.html b/tests/wpt/web-platform-tests/streams/readable-streams/floating-point-total-queue-size.sharedworker.html new file mode 100644 index 00000000000..17be746220f --- /dev/null +++ b/tests/wpt/web-platform-tests/streams/readable-streams/floating-point-total-queue-size.sharedworker.html @@ -0,0 +1,11 @@ + + +floating-point-total-queue-size.js shared worker wrapper file + + + + + diff --git a/tests/wpt/web-platform-tests/streams/readable-streams/general.js b/tests/wpt/web-platform-tests/streams/readable-streams/general.js index a8924be0532..edb49f4263e 100644 --- a/tests/wpt/web-platform-tests/streams/readable-streams/general.js +++ b/tests/wpt/web-platform-tests/streams/readable-streams/general.js @@ -732,6 +732,30 @@ promise_test(() => { }, 'ReadableStream: should call underlying source methods as methods'); +test(() => { + const rs = new ReadableStream({ + start(c) { + assert_equals(c.desiredSize, 10, 'desiredSize must start at highWaterMark'); + c.close(); + assert_equals(c.desiredSize, 0, 'after closing, desiredSize must be 0'); + } + }, { + highWaterMark: 10 + }); +}, 'ReadableStream: desiredSize when closed'); + +test(() => { + const rs = new ReadableStream({ + start(c) { + assert_equals(c.desiredSize, 10, 'desiredSize must start at highWaterMark'); + c.error(); + assert_equals(c.desiredSize, null, 'after erroring, desiredSize must be null'); + } + }, { + highWaterMark: 10 + }); +}, 'ReadableStream: desiredSize when errored'); + test(() => { let startCalled = false; diff --git a/tests/wpt/web-platform-tests/streams/writable-streams/bad-strategies.js b/tests/wpt/web-platform-tests/streams/writable-streams/bad-strategies.js index eb14cf22e12..0eed5faeac4 100644 --- a/tests/wpt/web-platform-tests/streams/writable-streams/bad-strategies.js +++ b/tests/wpt/web-platform-tests/streams/writable-streams/bad-strategies.js @@ -61,7 +61,7 @@ promise_test(t => { const writer = ws.getWriter(); - const p1 = promise_rejects(t, error1, writer.write('a'), 'write should reject with the thrown error'); + const p1 = promise_rejects(t, new TypeError(), writer.write('a'), 'write should reject with a TypeError'); const p2 = promise_rejects(t, error1, writer.closed, 'closed should reject with the thrown error'); diff --git a/tests/wpt/web-platform-tests/streams/writable-streams/floating-point-total-queue-size.dedicatedworker.html b/tests/wpt/web-platform-tests/streams/writable-streams/floating-point-total-queue-size.dedicatedworker.html new file mode 100644 index 00000000000..f098b39a345 --- /dev/null +++ b/tests/wpt/web-platform-tests/streams/writable-streams/floating-point-total-queue-size.dedicatedworker.html @@ -0,0 +1,11 @@ + + +floating-point-total-queue-size.js dedicated worker wrapper file + + + + + diff --git a/tests/wpt/web-platform-tests/streams/writable-streams/floating-point-total-queue-size.html b/tests/wpt/web-platform-tests/streams/writable-streams/floating-point-total-queue-size.html new file mode 100644 index 00000000000..b0ea67973f2 --- /dev/null +++ b/tests/wpt/web-platform-tests/streams/writable-streams/floating-point-total-queue-size.html @@ -0,0 +1,10 @@ + + +floating-point-total-queue-size.js browser context wrapper file + + + + + + + diff --git a/tests/wpt/web-platform-tests/streams/writable-streams/floating-point-total-queue-size.js b/tests/wpt/web-platform-tests/streams/writable-streams/floating-point-total-queue-size.js new file mode 100644 index 00000000000..44cf5fb22fd --- /dev/null +++ b/tests/wpt/web-platform-tests/streams/writable-streams/floating-point-total-queue-size.js @@ -0,0 +1,90 @@ +'use strict'; + +if (self.importScripts) { + self.importScripts('/resources/testharness.js'); +} + +// Due to the limitations of floating-point precision, the calculation of desiredSize sometimes gives different answers +// than adding up the items in the queue would. It is important that implementations give the same result in these edge +// cases so that developers do not come to depend on non-standard behaviour. See +// https://github.com/whatwg/streams/issues/582 and linked issues for further discussion. + +promise_test(() => { + const writer = setupTestStream(); + + const writePromises = [ + writer.write(2), + writer.write(Number.MAX_SAFE_INTEGER) + ]; + + assert_equals(writer.desiredSize, 0 - 2 - Number.MAX_SAFE_INTEGER, + 'desiredSize must be calculated using double-precision floating-point arithmetic (after writing two chunks)'); + + return Promise.all(writePromises).then(() => { + assert_equals(writer.desiredSize, 0, '[[queueTotalSize]] must clamp to 0 if it becomes negative'); + }); +}, 'Floating point arithmetic must manifest near NUMBER.MAX_SAFE_INTEGER (total ends up positive)'); + +promise_test(() => { + const writer = setupTestStream(); + + const writePromises = [ + writer.write(1e-16), + writer.write(1) + ]; + + assert_equals(writer.desiredSize, 0 - 1e-16 - 1, + 'desiredSize must be calculated using double-precision floating-point arithmetic (after writing two chunks)'); + + return Promise.all(writePromises).then(() => { + assert_equals(writer.desiredSize, 0, '[[queueTotalSize]] must clamp to 0 if it becomes negative'); + }); +}, 'Floating point arithmetic must manifest near 0 (total ends up positive, but clamped)'); + +promise_test(() => { + const writer = setupTestStream(); + + const writePromises = [ + writer.write(1e-16), + writer.write(1), + writer.write(2e-16) + ]; + + assert_equals(writer.desiredSize, 0 - 1e-16 - 1 - 2e-16, + 'desiredSize must be calculated using double-precision floating-point arithmetic (after writing three chunks)'); + + return Promise.all(writePromises).then(() => { + assert_equals(writer.desiredSize, 0 - 1e-16 - 1 - 2e-16 + 1e-16 + 1 + 2e-16, + 'desiredSize must be calculated using floating-point arithmetic (after the three chunks have finished writing)'); + }); +}, 'Floating point arithmetic must manifest near 0 (total ends up positive, and not clamped)'); + +promise_test(() => { + const writer = setupTestStream(); + + const writePromises = [ + writer.write(2e-16), + writer.write(1) + ]; + + assert_equals(writer.desiredSize, 0 - 2e-16 - 1, + 'desiredSize must be calculated using double-precision floating-point arithmetic (after writing two chunks)'); + + return Promise.all(writePromises).then(() => { + assert_equals(writer.desiredSize, 0 - 2e-16 - 1 + 2e-16 + 1, + 'desiredSize must be calculated using floating-point arithmetic (after the two chunks have finished writing)'); + }); +}, 'Floating point arithmetic must manifest near 0 (total ends up zero)'); + +function setupTestStream() { + const strategy = { + size(x) { + return x; + }, + highWaterMark: 0 + }; + + const ws = new WritableStream({}, strategy); + + return ws.getWriter(); +} diff --git a/tests/wpt/web-platform-tests/streams/writable-streams/floating-point-total-queue-size.serviceworker.https.html b/tests/wpt/web-platform-tests/streams/writable-streams/floating-point-total-queue-size.serviceworker.https.html new file mode 100644 index 00000000000..1eb7c9e53de --- /dev/null +++ b/tests/wpt/web-platform-tests/streams/writable-streams/floating-point-total-queue-size.serviceworker.https.html @@ -0,0 +1,12 @@ + + +floating-point-total-queue-size.js service worker wrapper file + + + + + + diff --git a/tests/wpt/web-platform-tests/streams/writable-streams/floating-point-total-queue-size.sharedworker.html b/tests/wpt/web-platform-tests/streams/writable-streams/floating-point-total-queue-size.sharedworker.html new file mode 100644 index 00000000000..17be746220f --- /dev/null +++ b/tests/wpt/web-platform-tests/streams/writable-streams/floating-point-total-queue-size.sharedworker.html @@ -0,0 +1,11 @@ + + +floating-point-total-queue-size.js shared worker wrapper file + + + + + diff --git a/tests/wpt/web-platform-tests/streams/writable-streams/general.js b/tests/wpt/web-platform-tests/streams/writable-streams/general.js index c284338a3c3..bb48859ef6a 100644 --- a/tests/wpt/web-platform-tests/streams/writable-streams/general.js +++ b/tests/wpt/web-platform-tests/streams/writable-streams/general.js @@ -32,6 +32,17 @@ promise_test(() => { }); }, 'desiredSize on a writer for a closed stream'); +test(() => { + const ws = new WritableStream({ + start(c) { + c.error(); + } + }); + + const writer = ws.getWriter(); + assert_equals(writer.desiredSize, null, 'desiredSize should be null'); +}, 'desiredSize on a writer for an errored stream'); + test(() => { const ws = new WritableStream({}); diff --git a/tests/wpt/web-platform-tests/streams/writable-streams/reentrant-strategy.dedicatedworker.html b/tests/wpt/web-platform-tests/streams/writable-streams/reentrant-strategy.dedicatedworker.html new file mode 100644 index 00000000000..52f26395ba3 --- /dev/null +++ b/tests/wpt/web-platform-tests/streams/writable-streams/reentrant-strategy.dedicatedworker.html @@ -0,0 +1,11 @@ + + +reentrant-strategy.js dedicated worker wrapper file + + + + + diff --git a/tests/wpt/web-platform-tests/streams/writable-streams/reentrant-strategy.html b/tests/wpt/web-platform-tests/streams/writable-streams/reentrant-strategy.html new file mode 100644 index 00000000000..4d9c33a5408 --- /dev/null +++ b/tests/wpt/web-platform-tests/streams/writable-streams/reentrant-strategy.html @@ -0,0 +1,11 @@ + + +reentrant-strategy.js browser context wrapper file + + + + + + + + diff --git a/tests/wpt/web-platform-tests/streams/writable-streams/reentrant-strategy.js b/tests/wpt/web-platform-tests/streams/writable-streams/reentrant-strategy.js new file mode 100644 index 00000000000..4ef9957f966 --- /dev/null +++ b/tests/wpt/web-platform-tests/streams/writable-streams/reentrant-strategy.js @@ -0,0 +1,179 @@ +'use strict'; + +// These tests exercise the pathological case of calling WritableStream* methods from within the strategy.size() +// callback. This is not something any real code should ever do. Failures here indicate subtle deviations from the +// standard that may affect real, non-pathological code. + +if (self.importScripts) { + self.importScripts('/resources/testharness.js'); + self.importScripts('../resources/test-utils.js'); + self.importScripts('../resources/recording-streams.js'); +} + +const error1 = { name: 'error1' }; + +promise_test(() => { + let writer; + const strategy = { + size(chunk) { + if (chunk > 0) { + writer.write(chunk - 1); + } + return chunk; + } + }; + + const ws = recordingWritableStream({}, strategy); + writer = ws.getWriter(); + return writer.write(2) + .then(() => { + assert_array_equals(ws.events, ['write', 0, 'write', 1, 'write', 2], 'writes should appear in order'); + }); +}, 'writes should be written in the standard order'); + +promise_test(() => { + let writer; + const events = []; + const strategy = { + size(chunk) { + events.push('size', chunk); + if (chunk > 0) { + writer.write(chunk - 1) + .then(() => events.push('writer.write done', chunk - 1)); + } + return chunk; + } + }; + const ws = new WritableStream({ + write(chunk) { + events.push('sink.write', chunk); + } + }, strategy); + writer = ws.getWriter(); + return writer.write(2) + .then(() => events.push('writer.write done', 2)) + .then(() => flushAsyncEvents()) + .then(() => { + assert_array_equals(events, ['size', 2, 'size', 1, 'size', 0, + 'sink.write', 0, 'sink.write', 1, 'writer.write done', 0, + 'sink.write', 2, 'writer.write done', 1, + 'writer.write done', 2], + 'events should happen in standard order'); + }); +}, 'writer.write() promises should resolve in the standard order'); + +promise_test(t => { + let controller; + const strategy = { + size() { + controller.error(error1); + return 1; + } + }; + const ws = recordingWritableStream({ + start(c) { + controller = c; + } + }, strategy); + const resolved = []; + const writer = ws.getWriter(); + const readyPromise1 = writer.ready.then(() => resolved.push('ready1')); + const writePromise = promise_rejects(t, new TypeError(), writer.write(), + 'write() should reject with a TypeError') + .then(() => resolved.push('write')); + const readyPromise2 = promise_rejects(t, error1, writer.ready, 'ready should reject with error1') + .then(() => resolved.push('ready2')); + const closedPromise = promise_rejects(t, error1, writer.closed, 'closed should reject with error1') + .then(() => resolved.push('closed')); + return Promise.all([readyPromise1, writePromise, readyPromise2, closedPromise]) + .then(() => { + assert_array_equals(resolved, ['ready1', 'write', 'ready2', 'closed'], + 'promises should resolve in standard order'); + assert_array_equals(ws.events, [], 'underlying sink write should not be called'); + }); +}, 'controller.error() should work when called from within strategy.size()'); + +promise_test(t => { + let writer; + const strategy = { + size() { + writer.close(); + return 1; + } + }; + + const ws = recordingWritableStream({}, strategy); + writer = ws.getWriter(); + return promise_rejects(t, new TypeError(), writer.write('a'), 'write() promise should reject') + .then(() => { + assert_array_equals(ws.events, ['close'], 'sink.write() should not be called'); + }); +}, 'close() should work when called from within strategy.size()'); + +promise_test(t => { + let writer; + const strategy = { + size() { + writer.abort('nice'); + return 1; + } + }; + + const ws = recordingWritableStream({}, strategy); + writer = ws.getWriter(); + return promise_rejects(t, new TypeError(), writer.write('a'), 'write() promise should reject') + .then(() => { + assert_array_equals(ws.events, ['abort', 'nice'], 'sink.write() should not be called'); + }); +}, 'abort() should work when called from within strategy.size()'); + +promise_test(t => { + let writer; + const strategy = { + size() { + writer.releaseLock(); + return 1; + } + }; + + const ws = recordingWritableStream({}, strategy); + writer = ws.getWriter(); + const writePromise = promise_rejects(t, new TypeError(), writer.write('a'), 'write() promise should reject'); + const readyPromise = promise_rejects(t, new TypeError(), writer.ready, 'ready promise should reject'); + const closedPromise = promise_rejects(t, new TypeError(), writer.closed, 'closed promise should reject'); + return Promise.all([writePromise, readyPromise, closedPromise]) + .then(() => { + assert_array_equals(ws.events, [], 'sink.write() should not be called'); + }); +}, 'releaseLock() should abort the write() when called within strategy.size()'); + +promise_test(t => { + let writer1; + let ws; + let writePromise2; + let closePromise; + let closedPromise2; + const strategy = { + size(chunk) { + if (chunk > 0) { + writer1.releaseLock(); + const writer2 = ws.getWriter(); + writePromise2 = writer2.write(0); + closePromise = writer2.close(); + closedPromise2 = writer2.closed; + } + return 1; + } + }; + ws = recordingWritableStream({}, strategy); + writer1 = ws.getWriter(); + const writePromise1 = promise_rejects(t, new TypeError(), writer1.write(1), 'write() promise should reject'); + const readyPromise = promise_rejects(t, new TypeError(), writer1.ready, 'ready promise should reject'); + const closedPromise1 = promise_rejects(t, new TypeError(), writer1.closed, 'closed promise should reject'); + return Promise.all([writePromise1, readyPromise, closedPromise1, writePromise2, closePromise, closedPromise2]) + .then(() => { + assert_array_equals(ws.events, ['write', 0, 'close'], 'sink.write() should only be called once'); + }); +}, 'original reader should error when new reader is created within strategy.size()'); + +done(); diff --git a/tests/wpt/web-platform-tests/streams/writable-streams/reentrant-strategy.serviceworker.https.html b/tests/wpt/web-platform-tests/streams/writable-streams/reentrant-strategy.serviceworker.https.html new file mode 100644 index 00000000000..49fdf6da2aa --- /dev/null +++ b/tests/wpt/web-platform-tests/streams/writable-streams/reentrant-strategy.serviceworker.https.html @@ -0,0 +1,12 @@ + + +reentrant-strategy.js service worker wrapper file + + + + + + diff --git a/tests/wpt/web-platform-tests/streams/writable-streams/reentrant-strategy.sharedworker.html b/tests/wpt/web-platform-tests/streams/writable-streams/reentrant-strategy.sharedworker.html new file mode 100644 index 00000000000..1bd555aa9a5 --- /dev/null +++ b/tests/wpt/web-platform-tests/streams/writable-streams/reentrant-strategy.sharedworker.html @@ -0,0 +1,11 @@ + + +reentrant-strategy.js shared worker wrapper file + + + + + diff --git a/tests/wpt/web-platform-tests/tools/runner/runner.js b/tests/wpt/web-platform-tests/tools/runner/runner.js index ae8f240342c..1230cb8931a 100644 --- a/tests/wpt/web-platform-tests/tools/runner/runner.js +++ b/tests/wpt/web-platform-tests/tools/runner/runner.js @@ -644,8 +644,10 @@ Runner.prototype = { return this.manifest[this.mTestCount]; }, - open_test_window: function() { - this.test_window = window.open("about:blank", 800, 600); + ensure_test_window: function() { + if (!this.test_window || this.test_window.location === null) { + this.test_window = window.open("about:blank", 800, 600); + } }, manifest_loaded: function() { @@ -666,6 +668,7 @@ Runner.prototype = { this.manifest_iterator = new ManifestIterator(this.manifest, this.path, this.test_types, this.use_regex); this.num_tests = null; + this.ensure_test_window(); if (this.manifest.data === null) { this.wait_for_manifest(); } else { @@ -682,7 +685,6 @@ Runner.prototype = { do_start: function() { if (this.manifest_iterator.count() > 0) { - this.open_test_window(); this.start_callbacks.forEach(function(callback) { callback(); }); @@ -727,6 +729,7 @@ Runner.prototype = { this.done_flag = true; if (this.test_window) { this.test_window.close(); + this.test_window = undefined; } this.done_callbacks.forEach(function(callback) { callback(); @@ -758,9 +761,7 @@ Runner.prototype = { }, load: function(path) { - if (this.test_window.location === null) { - this.open_test_window(); - } + this.ensure_test_window(); this.test_window.location.href = this.server + path; }, diff --git a/tests/wpt/web-platform-tests/tools/sslutils/openssl.py b/tests/wpt/web-platform-tests/tools/sslutils/openssl.py index 1b636f02272..c340e95d8a8 100644 --- a/tests/wpt/web-platform-tests/tools/sslutils/openssl.py +++ b/tests/wpt/web-platform-tests/tools/sslutils/openssl.py @@ -4,7 +4,12 @@ import random import shutil import subprocess import tempfile -from datetime import datetime +from datetime import datetime, timedelta + +# Amount of time beyond the present to consider certificates "expired." This +# allows certificates to be proactively re-generated in the "buffer" period +# prior to their exact expiration time. +CERT_EXPIRY_BUFFER = dict(hours=6) class OpenSSL(object): def __init__(self, logger, binary, base_path, conf_path, hosts, duration, @@ -305,8 +310,11 @@ class OpenSSLEnvironment(object): "-in", cert_path).split("=", 1)[1].strip() # Not sure if this works in other locales end_date = datetime.strptime(end_date_str, "%b %d %H:%M:%S %Y %Z") - # Should have some buffer here e.g. 1 hr - if end_date < datetime.now(): + time_buffer = timedelta(**CERT_EXPIRY_BUFFER) + # Because `strptime` does not account for time zone offsets, it is + # always in terms of UTC, so the current time should be calculated + # accordingly. + if end_date < datetime.utcnow() + time_buffer: return False #TODO: check the key actually signed the cert. diff --git a/tests/wpt/web-platform-tests/url/OWNERS b/tests/wpt/web-platform-tests/url/OWNERS index bddf6d57514..5da6e32bf18 100644 --- a/tests/wpt/web-platform-tests/url/OWNERS +++ b/tests/wpt/web-platform-tests/url/OWNERS @@ -1,7 +1,6 @@ @mikewest @tomalec @rubys -@sideshowbarker @zcorpan @xiaojunwu @smola diff --git a/tests/wpt/web-platform-tests/url/interfaces.html b/tests/wpt/web-platform-tests/url/interfaces.html index 5d871ad684c..0daf3f58c97 100644 --- a/tests/wpt/web-platform-tests/url/interfaces.html +++ b/tests/wpt/web-platform-tests/url/interfaces.html @@ -24,6 +24,8 @@ interface URL { attribute USVString search; readonly attribute URLSearchParams searchParams; attribute USVString hash; + + USVString toJSON(); }; [Constructor(optional (USVString or URLSearchParams) init = ""), diff --git a/tests/wpt/web-platform-tests/url/setters_tests.json b/tests/wpt/web-platform-tests/url/setters_tests.json index 549034e76b9..77b82f59b31 100644 --- a/tests/wpt/web-platform-tests/url/setters_tests.json +++ b/tests/wpt/web-platform-tests/url/setters_tests.json @@ -264,6 +264,22 @@ "href": "http://%c3%89t%C3%A9@example.net/", "username": "%c3%89t%C3%A9" } + }, + { + "href": "sc:///", + "new_value": "x", + "expected": { + "href": "sc:///", + "username": "" + } + }, + { + "href": "file://test/", + "new_value": "test", + "expected": { + "href": "file://test/", + "username": "" + } } ], "password": [ @@ -343,6 +359,22 @@ "href": "http://:%c3%89t%C3%A9@example.net/", "password": "%c3%89t%C3%A9" } + }, + { + "href": "sc:///", + "new_value": "x", + "expected": { + "href": "sc:///", + "password": "" + } + }, + { + "href": "file://test/", + "new_value": "test", + "expected": { + "href": "file://test/", + "password": "" + } } ], "host": [ @@ -428,6 +460,25 @@ "hostname": "x" } }, + { + "href": "sc://x/", + "new_value": "ß", + "expected": { + "href": "sc://%C3%9F/", + "host": "%C3%9F", + "hostname": "%C3%9F" + } + }, + { + "comment": "IDNA Nontransitional_Processing", + "href": "https://x/", + "new_value": "ß", + "expected": { + "href": "https://xn--zca/", + "host": "xn--zca", + "hostname": "xn--zca" + } + }, { "comment": "Cannot-be-a-base means no host", "href": "mailto:me@example.net", @@ -759,6 +810,56 @@ "host": "example.net", "hostname": "example.net" } + }, + { + "href": "file://y/", + "new_value": "x:123", + "expected": { + "href": "file://y/", + "host": "y", + "hostname": "y", + "port": "" + } + }, + { + "href": "file://y/", + "new_value": "loc%41lhost", + "expected": { + "href": "file:///", + "host": "", + "hostname": "", + "port": "" + } + }, + { + "href": "file://hi/x", + "new_value": "", + "expected": { + "href": "file:///x", + "host": "", + "hostname": "", + "port": "" + } + }, + { + "href": "sc://test@test/", + "new_value": "", + "expected": { + "href": "sc://test@test/", + "host": "test", + "hostname": "test", + "username": "test" + } + }, + { + "href": "sc://test:12/", + "new_value": "", + "expected": { + "href": "sc://test:12/", + "host": "test:12", + "hostname": "test", + "port": "12" + } } ], "hostname": [ @@ -1043,6 +1144,56 @@ "host": "example.net", "hostname": "example.net" } + }, + { + "href": "file://y/", + "new_value": "x:123", + "expected": { + "href": "file://y/", + "host": "y", + "hostname": "y", + "port": "" + } + }, + { + "href": "file://y/", + "new_value": "loc%41lhost", + "expected": { + "href": "file:///", + "host": "", + "hostname": "", + "port": "" + } + }, + { + "href": "file://hi/x", + "new_value": "", + "expected": { + "href": "file:///x", + "host": "", + "hostname": "", + "port": "" + } + }, + { + "href": "sc://test@test/", + "new_value": "", + "expected": { + "href": "sc://test@test/", + "host": "test", + "hostname": "test", + "username": "test" + } + }, + { + "href": "sc://test:12/", + "new_value": "", + "expected": { + "href": "sc://test:12/", + "host": "test:12", + "hostname": "test", + "port": "12" + } } ], "port": [ @@ -1198,6 +1349,46 @@ "hostname": "example.net", "port": "8080" } + }, + { + "href": "file://test/", + "new_value": "12", + "expected": { + "href": "file://test/", + "port": "" + } + }, + { + "href": "file://localhost/", + "new_value": "12", + "expected": { + "href": "file:///", + "port": "" + } + }, + { + "href": "non-base:value", + "new_value": "12", + "expected": { + "href": "non-base:value", + "port": "" + } + }, + { + "href": "sc:///", + "new_value": "12", + "expected": { + "href": "sc:///", + "port": "" + } + }, + { + "href": "sc://x/", + "new_value": "12", + "expected": { + "href": "sc://x:12/", + "port": "12" + } } ], "pathname": [ diff --git a/tests/wpt/web-platform-tests/url/url-tojson.html b/tests/wpt/web-platform-tests/url/url-tojson.html new file mode 100644 index 00000000000..3e8798c08b5 --- /dev/null +++ b/tests/wpt/web-platform-tests/url/url-tojson.html @@ -0,0 +1,12 @@ + + +URL's toJSON() + + +
        + diff --git a/tests/wpt/web-platform-tests/url/urltestdata.json b/tests/wpt/web-platform-tests/url/urltestdata.json index 1ce70b54d5b..f3df8fb2583 100644 --- a/tests/wpt/web-platform-tests/url/urltestdata.json +++ b/tests/wpt/web-platform-tests/url/urltestdata.json @@ -165,6 +165,20 @@ "search": "?%20d%20", "hash": "# e" }, + { + "input": "lolscheme:x x#x x", + "base": "about:blank", + "href": "lolscheme:x x#x x", + "protocol": "lolscheme:", + "username": "", + "password": "", + "host": "", + "hostname": "", + "port": "", + "pathname": "x x", + "search": "", + "hash": "#x x" + }, { "input": "http://f:/c", "base": "http://example.org/foo/bar", @@ -1019,6 +1033,26 @@ "search": "", "hash": "" }, + { + "input": "file://example:1/", + "base": "about:blank", + "failure": true + }, + { + "input": "file://example:test/", + "base": "about:blank", + "failure": true + }, + { + "input": "file://example%/", + "base": "about:blank", + "failure": true + }, + { + "input": "file://[example]/", + "base": "about:blank", + "failure": true + }, { "input": "ftps:/example.com/", "base": "http://example.org/foo/bar", @@ -3548,7 +3582,7 @@ "base": "http://other.com/", "failure": true }, - "U+FFFD is disallowed", + "U+FFFD", { "input": "https://\ufffd", "base": "about:blank", @@ -3559,6 +3593,21 @@ "base": "about:blank", "failure": true }, + { + "input": "https://x/\ufffd?\ufffd#\ufffd", + "base": "about:blank", + "href": "https://x/%EF%BF%BD?%EF%BF%BD#%EF%BF%BD", + "origin": "https://x", + "protocol": "https:", + "username": "", + "password": "", + "host": "x", + "hostname": "x", + "port": "", + "pathname": "/%EF%BF%BD", + "search": "?%EF%BF%BD", + "hash": "#%EF%BF%BD" + }, "Test name prepping, fullwidth input should be converted to ASCII and NOT IDN-ized. This is 'Go' in fullwidth UTF-8/UTF-16.", { "input": "http://Go.com", @@ -3613,6 +3662,35 @@ "search": "", "hash": "" }, + { + "input": "https://faß.ExAmPlE/", + "base": "about:blank", + "href": "https://xn--fa-hia.example/", + "origin": "https://faß.example", + "protocol": "https:", + "username": "", + "password": "", + "host": "xn--fa-hia.example", + "hostname": "xn--fa-hia.example", + "port": "", + "pathname": "/", + "search": "", + "hash": "" + }, + { + "input": "sc://faß.ExAmPlE/", + "base": "about:blank", + "href": "sc://fa%C3%9F.ExAmPlE/", + "protocol": "sc:", + "username": "", + "password": "", + "host": "fa%C3%9F.ExAmPlE", + "hostname": "fa%C3%9F.ExAmPlE", + "port": "", + "pathname": "/", + "search": "", + "hash": "" + }, "Invalid escaped characters should fail and the percents should be escaped. https://www.w3.org/Bugs/Public/show_bug.cgi?id=24191", { "input": "http://%zz%66%a.com", @@ -3666,18 +3744,23 @@ "base": "http://other.com/", "failure": true }, - "Invalid escaping should trigger the regular host error handling", + "Invalid escaping in hosts causes failure", { "input": "http://%3g%78%63%30%2e%30%32%35%30%2E.01", "base": "http://other.com/", "failure": true }, - "Something that isn't exactly an IP should get treated as a host and spaces escaped", + "A space in a host causes failure", { "input": "http://192.168.0.1 hello", "base": "http://other.com/", "failure": true }, + { + "input": "https://x x:12", + "base": "about:blank", + "failure": true + }, "Fullwidth and escaped UTF-8 fullwidth should still be treated as IP", { "input": "http://0Xc0.0250.01", @@ -4311,7 +4394,16 @@ { "input": "sc://%/", "base": "about:blank", - "failure": true + "href": "sc://%/", + "protocol": "sc:", + "username": "", + "password": "", + "host": "%", + "hostname": "%", + "port": "", + "pathname": "/", + "search": "", + "hash": "" }, { "input": "sc://@/", @@ -4395,6 +4487,37 @@ "search": "", "hash": "" }, + "# unknown scheme with bogus percent-encoding", + { + "input": "wow:%NBD", + "base": "about:blank", + "href": "wow:%NBD", + "origin": "null", + "protocol": "wow:", + "username": "", + "password": "", + "host": "", + "hostname": "", + "port": "", + "pathname": "%NBD", + "search": "", + "hash": "" + }, + { + "input": "wow:%1G", + "base": "about:blank", + "href": "wow:%1G", + "origin": "null", + "protocol": "wow:", + "username": "", + "password": "", + "host": "", + "hostname": "", + "port": "", + "pathname": "%1G", + "search": "", + "hash": "" + }, "# Hosts and percent-encoding", { "input": "ftp://example.com%80/", @@ -4593,7 +4716,7 @@ "port": "", "pathname": "/baz", "search": "?qux", - "searchParams": "", + "searchParams": "qux=", "hash": "#foo%08bar" }, "# IPv4 parsing (via https://github.com/nodejs/node/pull/10317)", @@ -4767,6 +4890,21 @@ "search": "", "hash": "" }, + { + "input": "https://0x.0x.0", + "base": "about:blank", + "href": "https://0.0.0.0/", + "origin": "https://0.0.0.0", + "protocol": "https:", + "username": "", + "password": "", + "host": "0.0.0.0", + "hostname": "0.0.0.0", + "port": "", + "pathname": "/", + "search": "", + "hash": "" + }, "# file URLs containing percent-encoded Windows drive letters (shouldn't work)", { "input": "file:///C%3A/", @@ -4839,7 +4977,7 @@ "search": "", "hash": "" }, - "# More file URL tests by zcorpan", + "# More file URL tests by zcorpan and annevk", { "input": "/", "base": "file:///C:/a/b", @@ -4910,7 +5048,134 @@ "search": "", "hash": "" }, - "# IPv6 trailing zeros test", + { + "input": "", + "base": "file:///test?test#test", + "href": "file:///test?test", + "protocol": "file:", + "username": "", + "password": "", + "host": "", + "hostname": "", + "port": "", + "pathname": "/test", + "search": "?test", + "hash": "" + }, + { + "input": "file:", + "base": "file:///test?test#test", + "href": "file:///test?test", + "protocol": "file:", + "username": "", + "password": "", + "host": "", + "hostname": "", + "port": "", + "pathname": "/test", + "search": "?test", + "hash": "" + }, + { + "input": "?x", + "base": "file:///test?test#test", + "href": "file:///test?x", + "protocol": "file:", + "username": "", + "password": "", + "host": "", + "hostname": "", + "port": "", + "pathname": "/test", + "search": "?x", + "hash": "" + }, + { + "input": "file:?x", + "base": "file:///test?test#test", + "href": "file:///test?x", + "protocol": "file:", + "username": "", + "password": "", + "host": "", + "hostname": "", + "port": "", + "pathname": "/test", + "search": "?x", + "hash": "" + }, + { + "input": "#x", + "base": "file:///test?test#test", + "href": "file:///test?test#x", + "protocol": "file:", + "username": "", + "password": "", + "host": "", + "hostname": "", + "port": "", + "pathname": "/test", + "search": "?test", + "hash": "#x" + }, + { + "input": "file:#x", + "base": "file:///test?test#test", + "href": "file:///test?test#x", + "protocol": "file:", + "username": "", + "password": "", + "host": "", + "hostname": "", + "port": "", + "pathname": "/test", + "search": "?test", + "hash": "#x" + }, + "# file URLs without base URL by Rimas Misevičius", + { + "input": "file:", + "base": "about:blank", + "href": "file:///", + "protocol": "file:", + "username": "", + "password": "", + "host": "", + "hostname": "", + "port": "", + "pathname": "/", + "search": "", + "hash": "" + }, + { + "input": "file:?q=v", + "base": "about:blank", + "href": "file:///?q=v", + "protocol": "file:", + "username": "", + "password": "", + "host": "", + "hostname": "", + "port": "", + "pathname": "/", + "search": "?q=v", + "hash": "" + }, + { + "input": "file:#frag", + "base": "about:blank", + "href": "file:///#frag", + "protocol": "file:", + "username": "", + "password": "", + "host": "", + "hostname": "", + "port": "", + "pathname": "/", + "search": "", + "hash": "#frag" + }, + "# IPv6 tests", { "input": "http://[1:0::]", "base": "http://example.net/", @@ -4926,6 +5191,46 @@ "search": "", "hash": "" }, + { + "input": "http://[0:1:2:3:4:5:6:7:8]", + "base": "http://example.net/", + "failure": true + }, + { + "input": "https://[0::0::0]", + "base": "about:blank", + "failure": true + }, + { + "input": "https://[0:.0]", + "base": "about:blank", + "failure": true + }, + { + "input": "https://[0:0:]", + "base": "about:blank", + "failure": true + }, + { + "input": "https://[0:1:2:3:4:5:6:7.0.0.0.1]", + "base": "about:blank", + "failure": true + }, + { + "input": "https://[0:1.00.0.0.0]", + "base": "about:blank", + "failure": true + }, + { + "input": "https://[0:1.290.0.0.0]", + "base": "about:blank", + "failure": true + }, + { + "input": "https://[0:1.23.23]", + "base": "about:blank", + "failure": true + }, "# Empty host", { "input": "http://?", @@ -5262,5 +5567,82 @@ "pathname": "joe@example.org,2001:foo/bar", "search": "", "hash": "" + }, + "# percent encoded hosts in non-special-URLs", + { + "input": "non-special://%E2%80%A0/", + "base": "about:blank", + "href": "non-special://%E2%80%A0/", + "protocol": "non-special:", + "username": "", + "password": "", + "host": "%E2%80%A0", + "hostname": "%E2%80%A0", + "port": "", + "pathname": "/", + "search": "", + "hash": "" + }, + { + "input": "non-special://H%4fSt/path", + "base": "about:blank", + "href": "non-special://H%4fSt/path", + "protocol": "non-special:", + "username": "", + "password": "", + "host": "H%4fSt", + "hostname": "H%4fSt", + "port": "", + "pathname": "/path", + "search": "", + "hash": "" + }, + "# IPv6 in non-special-URLs", + { + "input": "non-special://[1:2:0:0:5:0:0:0]/", + "base": "about:blank", + "href": "non-special://[1:2:0:0:5::]/", + "protocol": "non-special:", + "username": "", + "password": "", + "host": "[1:2:0:0:5::]", + "hostname": "[1:2:0:0:5::]", + "port": "", + "pathname": "/", + "search": "", + "hash": "" + }, + { + "input": "non-special://[1:2:0:0:0:0:0:3]/", + "base": "about:blank", + "href": "non-special://[1:2::3]/", + "protocol": "non-special:", + "username": "", + "password": "", + "host": "[1:2::3]", + "hostname": "[1:2::3]", + "port": "", + "pathname": "/", + "search": "", + "hash": "" + }, + { + "input": "non-special://[1:2::3]:80/", + "base": "about:blank", + "href": "non-special://[1:2::3]:80/", + "protocol": "non-special:", + "username": "", + "password": "", + "host": "[1:2::3]:80", + "hostname": "[1:2::3]", + "port": "80", + "pathname": "/", + "search": "", + "hash": "" + }, + { + "input": "non-special://[:80/", + "base": "about:blank", + "failure": true } ] diff --git a/tests/wpt/web-platform-tests/web-animations/animation-model/animation-types/addition-per-property.html b/tests/wpt/web-platform-tests/web-animations/animation-model/animation-types/addition-per-property.html index b6210c6df31..97f722064c1 100644 --- a/tests/wpt/web-platform-tests/web-animations/animation-model/animation-types/addition-per-property.html +++ b/tests/wpt/web-platform-tests/web-animations/animation-model/animation-types/addition-per-property.html @@ -44,7 +44,8 @@ for (var property in gCSSProperties) { ' should have testAddition property'); assert_equals(typeof typeObject.testAddition, 'function', 'testAddition method should be a function'); - }, animationTypeString + ' has testAddition function'); + }, property + ' (type: ' + animationTypeString + + ') has testAddition function'); if (typeObject.testAddition && typeof typeObject.testAddition === 'function') { diff --git a/tests/wpt/web-platform-tests/web-animations/animation-model/animation-types/interpolation-per-property.html b/tests/wpt/web-platform-tests/web-animations/animation-model/animation-types/interpolation-per-property.html index 9062116af10..e8e4b48fa69 100644 --- a/tests/wpt/web-platform-tests/web-animations/animation-model/animation-types/interpolation-per-property.html +++ b/tests/wpt/web-platform-tests/web-animations/animation-model/animation-types/interpolation-per-property.html @@ -44,7 +44,8 @@ for (var property in gCSSProperties) { ' should have testInterpolation property'); assert_equals(typeof typeObject.testInterpolation, 'function', 'testInterpolation method should be a function'); - }, animationTypeString + ' has testInterpolation function'); + }, property + ' (type: ' + animationTypeString + + ') has testInterpolation function'); if (typeObject.testInterpolation && typeof typeObject.testInterpolation === 'function') { diff --git a/tests/wpt/web-platform-tests/web-animations/animation-model/animation-types/spacing-keyframes-filters.html b/tests/wpt/web-platform-tests/web-animations/animation-model/animation-types/spacing-keyframes-filters.html index 11c865a7fdd..ad930408450 100644 --- a/tests/wpt/web-platform-tests/web-animations/animation-model/animation-types/spacing-keyframes-filters.html +++ b/tests/wpt/web-platform-tests/web-animations/animation-model/animation-types/spacing-keyframes-filters.html @@ -189,7 +189,7 @@ test(function(t) { Math.sqrt(1 * 1 + 0.5 * 0.5 + 1 * 1), Math.sqrt(0.25 * 0.25 + 1 * 1) ]; assert_animation_offsets(anim, dist); -}, 'Test spacing on filter function lists' ); +}, 'Test spacing on filter function lists with consistent sequence' ); test(function(t) { var anim = @@ -204,7 +204,7 @@ test(function(t) { 0, Math.sqrt(0.25 * 0.25 + 1 * 1) ]; assert_animation_offsets(anim, dist); -}, 'Test spacing on filter function lists' ); +}, 'Test spacing on filter function lists with inconsistent sequence' ); diff --git a/tests/wpt/web-platform-tests/web-animations/animation-model/keyframe-effects/the-effect-value-of-a-keyframe-effect.html b/tests/wpt/web-platform-tests/web-animations/animation-model/keyframe-effects/effect-value-overlapping-keyframes.html similarity index 67% rename from tests/wpt/web-platform-tests/web-animations/animation-model/keyframe-effects/the-effect-value-of-a-keyframe-effect.html rename to tests/wpt/web-platform-tests/web-animations/animation-model/keyframe-effects/effect-value-overlapping-keyframes.html index eb67f669acd..99b4f3df6fe 100644 --- a/tests/wpt/web-platform-tests/web-animations/animation-model/keyframe-effects/the-effect-value-of-a-keyframe-effect.html +++ b/tests/wpt/web-platform-tests/web-animations/animation-model/keyframe-effects/effect-value-overlapping-keyframes.html @@ -1,6 +1,6 @@ -Keyframe handling tests +Effect value computation tests when keyframes overlap @@ -69,46 +69,5 @@ test(function(t) { }, 'Overlapping keyframes between 0 and 1 use the appropriate value on each' + ' side of the overlap point'); -test(function(t) { - var div = createDiv(t); - var anim = div.animate({ visibility: ['hidden','visible'] }, - { duration: 100 * MS_PER_SEC, fill: 'both' }); - - anim.currentTime = 0; - assert_equals(getComputedStyle(div).visibility, 'hidden', - 'Visibility when progress = 0.'); - - anim.currentTime = 10 * MS_PER_SEC + 1; - assert_equals(getComputedStyle(div).visibility, 'visible', - 'Visibility when progress > 0 due to linear easing.'); - - anim.finish(); - assert_equals(getComputedStyle(div).visibility, 'visible', - 'Visibility when progress = 1.'); - -}, "Test visibility clamping behavior."); - -test(function(t) { - var div = createDiv(t); - var anim = div.animate({ visibility: ['hidden', 'visible'] }, - { duration: 100 * MS_PER_SEC, fill: 'both', - easing: 'cubic-bezier(0.25, -0.6, 0, 0.5)' }); - - anim.currentTime = 0; - assert_equals(getComputedStyle(div).visibility, 'hidden', - 'Visibility when progress = 0.'); - - // Timing function is below zero. So we expected visibility is hidden. - anim.currentTime = 10 * MS_PER_SEC + 1; - assert_equals(getComputedStyle(div).visibility, 'hidden', - 'Visibility when progress < 0 due to cubic-bezier easing.'); - - anim.currentTime = 60 * MS_PER_SEC; - assert_equals(getComputedStyle(div).visibility, 'visible', - 'Visibility when progress > 0 due to cubic-bezier easing.'); - -}, "Test visibility clamping behavior with an easing that has a negative component"); - -done(); diff --git a/tests/wpt/web-platform-tests/web-animations/animation-model/keyframe-effects/effect-value-transformed-distance.html b/tests/wpt/web-platform-tests/web-animations/animation-model/keyframe-effects/effect-value-transformed-distance.html new file mode 100644 index 00000000000..2766745d9d5 --- /dev/null +++ b/tests/wpt/web-platform-tests/web-animations/animation-model/keyframe-effects/effect-value-transformed-distance.html @@ -0,0 +1,417 @@ + + +Tests for calculation of the transformed distance when computing an effect value + + + + + + +
        +
        + + diff --git a/tests/wpt/web-platform-tests/web-animations/animation-model/keyframe-effects/effect-value-visibility.html b/tests/wpt/web-platform-tests/web-animations/animation-model/keyframe-effects/effect-value-visibility.html new file mode 100644 index 00000000000..cf951b01233 --- /dev/null +++ b/tests/wpt/web-platform-tests/web-animations/animation-model/keyframe-effects/effect-value-visibility.html @@ -0,0 +1,55 @@ + + +Effect value computation tests for 'visibility' property + + + + + +
        +
        + + diff --git a/tests/wpt/web-platform-tests/web-animations/interfaces/Animatable/animate.html b/tests/wpt/web-platform-tests/web-animations/interfaces/Animatable/animate.html index a54298aa4f4..6c5dae0717a 100644 --- a/tests/wpt/web-platform-tests/web-animations/interfaces/Animatable/animate.html +++ b/tests/wpt/web-platform-tests/web-animations/interfaces/Animatable/animate.html @@ -5,6 +5,7 @@ +
        @@ -96,6 +97,15 @@ gInvalidKeyframesTests.forEach(function(subtest) { }, 'Element.animate() does not accept ' + subtest.desc); }); +gInvalidEasings.forEach(invalidEasing => { + test(function(t) { + var div = createDiv(t); + assert_throws(new TypeError, () => { + div.animate({ easing: invalidEasing }, 2000); + }); + }, `Element.animate() does not accept invalid easing: '${invalidEasing}'`); +}); + test(function(t) { var div = createDiv(t); var anim = div.animate({ opacity: [ 0, 1 ] }, 2000); diff --git a/tests/wpt/web-platform-tests/web-animations/interfaces/Animatable/getAnimations.html b/tests/wpt/web-platform-tests/web-animations/interfaces/Animatable/getAnimations.html new file mode 100644 index 00000000000..49551a8ef2b --- /dev/null +++ b/tests/wpt/web-platform-tests/web-animations/interfaces/Animatable/getAnimations.html @@ -0,0 +1,70 @@ + + +Animatable.getAnimations tests + + + + + + + diff --git a/tests/wpt/web-platform-tests/web-animations/interfaces/Animation/finished.html b/tests/wpt/web-platform-tests/web-animations/interfaces/Animation/finished.html index d56de1b0313..006b54a0af3 100644 --- a/tests/wpt/web-platform-tests/web-animations/interfaces/Animation/finished.html +++ b/tests/wpt/web-platform-tests/web-animations/interfaces/Animation/finished.html @@ -366,5 +366,55 @@ promise_test(function(t) { 'falls out finished state even though the current finished ' + 'promise is generated soon after animation state became finished'); +promise_test(function(t) { + var animation = createDiv(t).animate(null, 100 * MS_PER_SEC); + var ready = false; + animation.ready.then( + t.step_func(function() { + ready = true; + }), + t.unreached_func('Ready promise must not be rejected') + ); + + var testSuccess = animation.finished.then( + t.step_func(function() { + assert_true(ready, 'Ready promise has resolved'); + }), + t.unreached_func('Finished promise must not be rejected') + ); + + var timeout = waitForAnimationFrames(3).then(function() { + return Promise.reject('Finished promise did not arrive in time'); + }); + + animation.finish(); + return Promise.race([timeout, testSuccess]); +}, 'Finished promise should be resolved after the ready promise is resolved'); + +promise_test(function(t) { + var animation = createDiv(t).animate(null, 100 * MS_PER_SEC); + var caught = false; + animation.ready.then( + t.unreached_func('Ready promise must not be resolved'), + t.step_func(function() { + caught = true; + }) + ); + + var testSuccess = animation.finished.then( + t.unreached_func('Finished promise must not be resolved'), + t.step_func(function() { + assert_true(caught, 'Ready promise has been rejected'); + }) + ); + + var timeout = waitForAnimationFrames(3).then(function() { + return Promise.reject('Finished promise was not rejected in time'); + }); + + animation.cancel(); + return Promise.race([timeout, testSuccess]); +}, 'Finished promise should be rejected after the ready promise is rejected'); + diff --git a/tests/wpt/web-platform-tests/web-animations/interfaces/Animation/ready.html b/tests/wpt/web-platform-tests/web-animations/interfaces/Animation/ready.html index 815fe3da725..86595c3e378 100644 --- a/tests/wpt/web-platform-tests/web-animations/interfaces/Animation/ready.html +++ b/tests/wpt/web-platform-tests/web-animations/interfaces/Animation/ready.html @@ -71,7 +71,7 @@ promise_test(function(t) { animation.cancel(); return retPromise; -}, 'ready promise is rejected when a pause-pending animation is cancelled by' +}, 'ready promise is rejected when a play-pending animation is cancelled by' + ' calling cancel()'); promise_test(function(t) { diff --git a/tests/wpt/web-platform-tests/web-animations/interfaces/AnimationEffectTiming/delay.html b/tests/wpt/web-platform-tests/web-animations/interfaces/AnimationEffectTiming/delay.html index d6e1cd90454..1b34f7dbe76 100644 --- a/tests/wpt/web-platform-tests/web-animations/interfaces/AnimationEffectTiming/delay.html +++ b/tests/wpt/web-platform-tests/web-animations/interfaces/AnimationEffectTiming/delay.html @@ -11,6 +11,11 @@ diff --git a/tests/wpt/web-platform-tests/web-animations/interfaces/AnimationEffectTiming/direction.html b/tests/wpt/web-platform-tests/web-animations/interfaces/AnimationEffectTiming/direction.html index c3657f3a09b..95718120245 100644 --- a/tests/wpt/web-platform-tests/web-animations/interfaces/AnimationEffectTiming/direction.html +++ b/tests/wpt/web-platform-tests/web-animations/interfaces/AnimationEffectTiming/direction.html @@ -11,6 +11,11 @@ - +
        diff --git a/tests/wpt/web-platform-tests/web-animations/interfaces/AnimationEffectTiming/iterationStart.html b/tests/wpt/web-platform-tests/web-animations/interfaces/AnimationEffectTiming/iterationStart.html index 0273fd12b6a..df3f992d4c2 100644 --- a/tests/wpt/web-platform-tests/web-animations/interfaces/AnimationEffectTiming/iterationStart.html +++ b/tests/wpt/web-platform-tests/web-animations/interfaces/AnimationEffectTiming/iterationStart.html @@ -11,6 +11,11 @@ diff --git a/tests/wpt/web-platform-tests/web-animations/interfaces/AnimationEffectTiming/iterations.html b/tests/wpt/web-platform-tests/web-animations/interfaces/AnimationEffectTiming/iterations.html index 1ba41028b22..8dfe1695643 100644 --- a/tests/wpt/web-platform-tests/web-animations/interfaces/AnimationEffectTiming/iterations.html +++ b/tests/wpt/web-platform-tests/web-animations/interfaces/AnimationEffectTiming/iterations.html @@ -10,6 +10,11 @@ +
        @@ -66,7 +67,25 @@ test(function(t) { "resulting easing for '" + easing + "'"); }); }, "easing values are parsed correctly when passed to the " + - "KeyframeEffectReadOnly constructor in KeyframeTimingOptions"); + "KeyframeEffectReadOnly constructor in KeyframeEffectOptions"); + +test(function(t) { + gInvalidEasings.forEach(invalidEasing => { + assert_throws(new TypeError, () => { + new KeyframeEffectReadOnly(target, { easing: invalidEasing }); + }, `TypeError is thrown for easing '${invalidEasing}'`); + }); +}, 'invalid easing values are correctly rejected when passed to the ' + + 'KeyframeEffectReadOnly constructor in regular keyframes'); + +test(function(t) { + gInvalidEasings.forEach(invalidEasing => { + assert_throws(new TypeError, () => { + new KeyframeEffectReadOnly(target, null, { easing: invalidEasing }); + }, `TypeError is thrown for easing '${invalidEasing}'`); + }); +}, 'invalid easing values are correctly rejected when passed to the ' + + 'KeyframeEffectReadOnly constructor in KeyframeEffectOptions'); test(function(t) { var getKeyframe = function(composite) { diff --git a/tests/wpt/web-platform-tests/web-animations/interfaces/KeyframeEffect/effect-easing.html b/tests/wpt/web-platform-tests/web-animations/interfaces/KeyframeEffect/effect-easing.html deleted file mode 100644 index 05019cdf3e4..00000000000 --- a/tests/wpt/web-platform-tests/web-animations/interfaces/KeyframeEffect/effect-easing.html +++ /dev/null @@ -1,683 +0,0 @@ - - -Effect-level easing tests - - - - - - - -
        -
        - - diff --git a/tests/wpt/web-platform-tests/web-animations/interfaces/KeyframeEffect/processing-a-keyframes-argument.html b/tests/wpt/web-platform-tests/web-animations/interfaces/KeyframeEffect/processing-a-keyframes-argument.html index d1683128188..cbd50900429 100644 --- a/tests/wpt/web-platform-tests/web-animations/interfaces/KeyframeEffect/processing-a-keyframes-argument.html +++ b/tests/wpt/web-platform-tests/web-animations/interfaces/KeyframeEffect/processing-a-keyframes-argument.html @@ -39,6 +39,7 @@ var gNonAnimatableProps = [ 'transitionTimingFunction', 'display', 'unsupportedProperty', + 'font-size', // Supported property that uses dashes ]; function TestKeyframe(testProp) { diff --git a/tests/wpt/web-platform-tests/web-animations/interfaces/KeyframeEffectReadOnly/spacing.html b/tests/wpt/web-platform-tests/web-animations/interfaces/KeyframeEffectReadOnly/spacing.html index c83d1ebcb83..9c54d970a22 100644 --- a/tests/wpt/web-platform-tests/web-animations/interfaces/KeyframeEffectReadOnly/spacing.html +++ b/tests/wpt/web-platform-tests/web-animations/interfaces/KeyframeEffectReadOnly/spacing.html @@ -59,13 +59,15 @@ test(function(t) { assert_throws(new TypeError, function() { createDiv(t).animate(null, { spacing: 'paced(.margin)' }); }); -}, 'Test throwing TypeError if using a non-ident started string'); +}, 'Test throwing TypeError if using a non-ident started string with ' + + 'a period'); test(function(t) { assert_throws(new TypeError, function() { createDiv(t).animate(null, { spacing: 'paced(1margin)' }); }); -}, 'Test throwing TypeError if using a non-ident started string'); +}, 'Test throwing TypeError if using a non-ident started string with ' + + 'a number'); test(function(t) { assert_throws(new TypeError, function() { diff --git a/tests/wpt/web-platform-tests/web-animations/resources/effect-easing-tests.js b/tests/wpt/web-platform-tests/web-animations/resources/easing-tests.js similarity index 81% rename from tests/wpt/web-platform-tests/web-animations/resources/effect-easing-tests.js rename to tests/wpt/web-platform-tests/web-animations/resources/easing-tests.js index 49c4ff5b8c2..b983eaedcfd 100644 --- a/tests/wpt/web-platform-tests/web-animations/resources/effect-easing-tests.js +++ b/tests/wpt/web-platform-tests/web-animations/resources/easing-tests.js @@ -1,4 +1,4 @@ -var gEffectEasingTests = [ +var gEasingTests = [ { desc: 'step-start function', easing: 'step-start', @@ -67,32 +67,21 @@ var gEffectEasingTests = [ desc: 'easing function which produces values greater than 1', easing: 'cubic-bezier(0, 1.5, 1, 1.5)', easingFunction: cubicBezier(0, 1.5, 1, 1.5) + }, + { + desc: 'easing function which produces values less than 1', + easing: 'cubic-bezier(0, -0.5, 1, -0.5)', + easingFunction: cubicBezier(0, -0.5, 1, -0.5) } ]; -var gInvalidEasingTests = [ - { - easing: '' - }, - { - easing: 'test' - }, - { - easing: 'cubic-bezier(1.1, 0, 1, 1)' - }, - { - easing: 'cubic-bezier(0, 0, 1.1, 1)' - }, - { - easing: 'cubic-bezier(-0.1, 0, 1, 1)' - }, - { - easing: 'cubic-bezier(0, 0, -0.1, 1)' - }, - { - easing: 'steps(-1, start)' - }, - { - easing: 'steps(0.1, start)' - }, +var gInvalidEasings = [ + '', + 'test', + 'cubic-bezier(1.1, 0, 1, 1)', + 'cubic-bezier(0, 0, 1.1, 1)', + 'cubic-bezier(-0.1, 0, 1, 1)', + 'cubic-bezier(0, 0, -0.1, 1)', + 'steps(-1, start)', + 'steps(0.1, start)' ]; diff --git a/tests/wpt/web-platform-tests/web-animations/timing-model/animation-effects/local-time.html b/tests/wpt/web-platform-tests/web-animations/timing-model/animation-effects/local-time.html new file mode 100644 index 00000000000..91c1ed401c9 --- /dev/null +++ b/tests/wpt/web-platform-tests/web-animations/timing-model/animation-effects/local-time.html @@ -0,0 +1,26 @@ + + +AnimationEffect local time tests + + + + + + + diff --git a/tests/wpt/web-platform-tests/web-animations/timing-model/animations/current-time.html b/tests/wpt/web-platform-tests/web-animations/timing-model/animations/current-time.html index df7228f43f5..7500175435c 100644 --- a/tests/wpt/web-platform-tests/web-animations/timing-model/animations/current-time.html +++ b/tests/wpt/web-platform-tests/web-animations/timing-model/animations/current-time.html @@ -61,5 +61,17 @@ test(function(t) { 'Animation has a unresolved start time'); }, 'The current time is calculated from the timeline time, start time and ' + 'playback rate'); + +promise_test(function(t) { + var animation = createDiv(t).animate(null, 100 * MS_PER_SEC); + animation.playbackRate = 0; + + return animation.ready.then(function() { + return waitForAnimationFrames(1); + }).then(function() { + assert_times_equal(animation.currentTime, 0); + }); +}, 'The current time does not progress if playback rate is 0'); + diff --git a/tests/wpt/web-platform-tests/web-animations/timing-model/time-transformations/transformed-progress.html b/tests/wpt/web-platform-tests/web-animations/timing-model/time-transformations/transformed-progress.html new file mode 100644 index 00000000000..3d97e4c1e0f --- /dev/null +++ b/tests/wpt/web-platform-tests/web-animations/timing-model/time-transformations/transformed-progress.html @@ -0,0 +1,272 @@ + + +Tests for the transformed progress + + + + + + +
        +
        + + diff --git a/tests/wpt/web-platform-tests/webauthn/helpers.js b/tests/wpt/web-platform-tests/webauthn/helpers.js new file mode 100644 index 00000000000..e36cb6d7adb --- /dev/null +++ b/tests/wpt/web-platform-tests/webauthn/helpers.js @@ -0,0 +1,209 @@ +/** + * TestCase + * + * A generic template for test cases + * Is intended to be overloaded with subclasses that override testObject, testFunction and argOrder + * The testObject is the default arguments for the testFunction + * The default testObject can be modified with the modify() method, making it easy to create new tests based on the default + * The testFunction is the target of the test and is called by the test() method. test() applies the testObject as arguments via toArgs() + * toArgs() uses argOrder to make sure the resulting array is in the right order of the arguments for the testFunction + */ +class TestCase { + constructor() { + this.testFunction = function() { + throw new Error("Test Function not implemented"); + }; + this.testObject = {}; + this.argOrder = []; + } + + /** + * toObject + * + * return a copy of the testObject + */ + toObject() { + return JSON.parse(JSON.stringify(this.testObject)); // cheap clone + } + + /** + * toArgs + * + * converts test object to an array that is ordered in the same way as the arguments to the test function + */ + toArgs() { + var ret = []; + // XXX, TODO: this won't necessarily produce the args in the right order + for (let idx of this.argOrder) { + ret.push(this.testObject[idx]); + } + return ret; + } + + /** + * modify + * + * update the internal object by a path / value combination + * e.g. : + * modify ("foo.bar", 3) + * accepts three types of args: + * "foo.bar", 3 + * {path: "foo.bar", value: 3} + * [{path: "foo.bar", value: 3}, ...] + */ + modify(arg1, arg2) { + var mods; + + // check for the two argument scenario + if (typeof arg1 === "string" && arg2 !== undefined) { + mods = { + path: arg1, + value: arg2 + }; + } else { + mods = arg1; + } + + // accept a single modification object instead of an array + if (!Array.isArray(mods) && typeof mods === "object") { + mods = [mods]; + } + + // iterate through each of the desired modifications, and call recursiveSetObject on them + var obj = this.testObject; + for (let idx in mods) { + var mod = mods[idx]; + let paths = mod.path.split("."); + recursiveSetObject(this.testObject, paths, mod.value); + } + + // iterates through nested `obj` using the `pathArray`, creating the path if it doesn't exist + // when the final leaf of the path is found, it is assigned the specified value + function recursiveSetObject(obj, pathArray, value) { + var currPath = pathArray.shift(); + if (typeof obj[currPath] !== "object") { + obj[currPath] = {}; + } + if (pathArray.length > 0) { + return recursiveSetObject(obj[currPath], pathArray, value); + } + obj[currPath] = value; + } + + return this; + } + + /** + * test + * + * run the test function with the top-level properties of the test object applied as arguments + */ + test() { + return this.testFunction(...this.toArgs()); + } + + /** + * testArgs + * + * calls test() with testObject() and expects it to fail with a TypeError() + */ + testBadArgs(testDesc) { + promise_test(function(t) { + return promise_rejects(t, new TypeError(), this.test()); + }.bind(this), testDesc); + } +} + +/** + * MakeCredentialTest + * + * tests the WebAuthn makeCredential() interface + */ +class MakeCredentialTest extends TestCase { + constructor() { + // initialize the parent class + super(); + + // the function to be tested + this.testFunction = navigator.authentication.makeCredential; + + // the default object to pass to makeCredential, to be modified with modify() for various tests + // var challenge = Uint8Array.from("Y2xpbWIgYSBtb3VudGFpbg"); + this.testObject = { + accountInformation: { + rpDisplayName: "ACME", + displayName: "John P. Smith", + name: "johnpsmith@example.com", + id: "1098237235409872", + imageUri: "https://pics.acme.com/00/p/aBjjjpqPb.png" + }, + cryptoParameters: [{ + type: "ScopedCred", + algorithm: "RSASSA-PKCS1-v1_5", + }], + attestationChallenge: Uint8Array.from([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17]).buffer + }; + + // how to order the properties of testObject when passing them to makeCredential + this.argOrder = [ + "accountInformation", + "cryptoParameters", + "attestationChallenge", + "options" + ]; + + // enable the constructor to modify the default testObject + // would prefer to do this in the super class, but have to call super() before using `this.*` + if (arguments.length) this.modify(...arguments); + } +} + +//************* BEGIN DELETE AFTER 1/1/2017 *************** // +// XXX for development mode only!! +// debug() for debugging purposes... we can drop this later if it is considered ugly +// note that debug is currently an empty function (i.e. - prints no output) +// and debug only prints output if the polyfill is loaded +var debug = function() {}; +// if the WebAuthn API doesn't exist load a polyfill for testing +// note that the polyfill only gets loaded if navigator.authentication doesn't exist +// AND if the polyfill script is found at the right path (i.e. - the polyfill is opt-in) +function ensureInterface() { + return new Promise(function(resolve, reject) { + if (typeof navigator.authentication !== "object") { + debug = console.log; + + // dynamic loading of polyfill script by creating new + diff --git a/tests/wpt/web-platform-tests/webauthn/interfaces.idl b/tests/wpt/web-platform-tests/webauthn/interfaces.idl index a42ac1e37cc..173e5150cd4 100644 --- a/tests/wpt/web-platform-tests/webauthn/interfaces.idl +++ b/tests/wpt/web-platform-tests/webauthn/interfaces.idl @@ -1,4 +1,4 @@ -[SecureContext, NoInterfaceObject] interface WebAuthentication { +[SecureContext] interface WebAuthentication { Promise < ScopedCredentialInfo > makeCredential ( Account accountInformation, sequence < ScopedCredentialParameters > cryptoParameters, @@ -12,3 +12,85 @@ ); }; +[SecureContext] +interface ScopedCredentialInfo { + readonly attribute ScopedCredential credential; + readonly attribute CryptoKey publicKey; + readonly attribute WebAuthnAttestation attestation; +}; + +dictionary Account { + required DOMString rpDisplayName; + required DOMString displayName; + required DOMString id; + DOMString name; + DOMString imageURL; +}; + +dictionary ScopedCredentialParameters { + required ScopedCredentialType type; + required AlgorithmIdentifier algorithm; +}; + +dictionary ScopedCredentialOptions { + unsigned long timeoutSeconds; + USVString rpId; + sequence < ScopedCredentialDescriptor > excludeList; + WebAuthnExtensions extensions; +}; + +[SecureContext] +interface WebAuthnAssertion { + readonly attribute ScopedCredential credential; + readonly attribute ArrayBuffer clientData; + readonly attribute ArrayBuffer authenticatorData; + readonly attribute ArrayBuffer signature; +}; + +dictionary AssertionOptions { + unsigned long timeoutSeconds; + USVString rpId; + sequence < ScopedCredentialDescriptor > allowList; + WebAuthnExtensions extensions; +}; + +dictionary WebAuthnExtensions { +}; + +[SecureContext] +interface WebAuthnAttestation { + readonly attribute USVString format; + readonly attribute ArrayBuffer clientData; + readonly attribute ArrayBuffer authenticatorData; + readonly attribute any attestation; +}; + +dictionary ClientData { + required DOMString challenge; + required DOMString origin; + required AlgorithmIdentifier hashAlg; + DOMString tokenBinding; + WebAuthnExtensions extensions; +}; + +enum ScopedCredentialType { + "ScopedCred" +}; + +[SecureContext] +interface ScopedCredential { + readonly attribute ScopedCredentialType type; + readonly attribute ArrayBuffer id; +}; + +dictionary ScopedCredentialDescriptor { + required ScopedCredentialType type; + required BufferSource id; + sequence < Transport > transports; +}; + +enum Transport { + "usb", + "nfc", + "ble" +}; \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/webauthn/makecredential-badargs-accountinformation.https.html b/tests/wpt/web-platform-tests/webauthn/makecredential-badargs-accountinformation.https.html new file mode 100644 index 00000000000..e0e95e584c7 --- /dev/null +++ b/tests/wpt/web-platform-tests/webauthn/makecredential-badargs-accountinformation.https.html @@ -0,0 +1,34 @@ + + +WebAuthn makeCredential accountInformation Tests + + + + + + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/webauthn/makecredential-badargs-attestationchallenge.https.html b/tests/wpt/web-platform-tests/webauthn/makecredential-badargs-attestationchallenge.https.html new file mode 100644 index 00000000000..441d1adfa2c --- /dev/null +++ b/tests/wpt/web-platform-tests/webauthn/makecredential-badargs-attestationchallenge.https.html @@ -0,0 +1,20 @@ + + +WebAuthn makeCredential attestationChallenge Tests + + + + + + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/webauthn/makecredential-badargs-cryptoparameters.https.html b/tests/wpt/web-platform-tests/webauthn/makecredential-badargs-cryptoparameters.https.html new file mode 100644 index 00000000000..7e177573966 --- /dev/null +++ b/tests/wpt/web-platform-tests/webauthn/makecredential-badargs-cryptoparameters.https.html @@ -0,0 +1,33 @@ + + +WebAuthn makeCredential cryptoParameters Tests + + + + + + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/webdriver/conftest.py b/tests/wpt/web-platform-tests/webdriver/conftest.py index 07443bec6b1..8160adf6a10 100644 --- a/tests/wpt/web-platform-tests/webdriver/conftest.py +++ b/tests/wpt/web-platform-tests/webdriver/conftest.py @@ -1,3 +1,4 @@ +import json import os import pytest @@ -13,8 +14,9 @@ default_port = "4444" def _session(request): host = os.environ.get("WD_HOST", default_host) port = int(os.environ.get("WD_PORT", default_port)) + capabilities = json.loads(os.environ.get("WD_CAPABILITIES", "{}")) - session = webdriver.Session(host, port) + session = webdriver.Session(host, port, desired_capabilities=capabilities) def destroy(): if session.session_id is not None: diff --git a/tests/wpt/web-platform-tests/webdriver/contexts.py b/tests/wpt/web-platform-tests/webdriver/contexts.py index c49f85b4635..7170663ef57 100644 --- a/tests/wpt/web-platform-tests/webdriver/contexts.py +++ b/tests/wpt/web-platform-tests/webdriver/contexts.py @@ -2,10 +2,26 @@ import json import pytest import webdriver +def window_size_supported(session): + try: + session.window.size = ("a", "b") + except webdriver.UnsupportedOperationException: + return False + except webdriver.InvalidArgumentException: + return True + +def window_position_supported(session): + try: + session.window.position = ("a", "b") + except webdriver.UnsupportedOperationException: + return False + except webdriver.InvalidArgumentException: + return True -@pytest.mark.xfail(raises=webdriver.UnsupportedOperationException) def test_window_size_types(http, session): - session.start() + if not window_size_supported(session): + pytest.skip() + with http.get("/session/%s/window/size" % session.session_id) as resp: assert resp.status == 200 body = json.load(resp) @@ -20,8 +36,10 @@ def test_window_size_types(http, session): assert isinstance(size[1], int) -@pytest.mark.xfail(raises=webdriver.UnsupportedOperationException) def test_window_resize(session): + if not window_size_supported(session): + pytest.skip() + # setting the window size by webdriver is synchronous # so we should see the results immediately @@ -58,9 +76,10 @@ def test_window_resize_by_script(session): assert size2 == {"width": 200, "height": 100} """ -@pytest.mark.xfail(raises=webdriver.UnsupportedOperationException) def test_window_position_types(http, session): - session.start() + if not window_position_supported(session): + pytest.skip() + with http.get("/session/%s/window/position" % session.session_id) as resp: assert resp.status == 200 body = json.load(resp) @@ -69,7 +88,7 @@ def test_window_position_types(http, session): assert isinstance(body["x"], int) assert isinstance(body["y"], int) - size = session.window.position - assert isinstance(size, tuple) - assert isinstance(size[0], int) - assert isinstance(size[1], int) + pos = session.window.position + assert isinstance(pos, tuple) + assert isinstance(pos[0], int) + assert isinstance(pos[1], int) diff --git a/tests/wpt/web-platform-tests/webdriver/navigation.py b/tests/wpt/web-platform-tests/webdriver/navigation.py index 74f4ef9f709..5faba9aa1ca 100644 --- a/tests/wpt/web-platform-tests/webdriver/navigation.py +++ b/tests/wpt/web-platform-tests/webdriver/navigation.py @@ -65,12 +65,16 @@ def test_get_current_url_special_pages(session): assert session.url == "about:blank" +""" +Disabled due to https://bugzilla.mozilla.org/show_bug.cgi?id=1332122 + # TODO(ato): This test requires modification to pass on Windows def test_get_current_url_file_protocol(session): # tests that the browsing context remains the same # when navigated privileged documents session.url = "file:///" assert session.url == "file:///" +""" # TODO(ato): Test for http:// and https:// protocols. @@ -100,10 +104,10 @@ def test_get_current_url_nested_browsing_contexts(session): session.url = two_frames_doc top_level_url = session.url - outer_frame = session.find("iframe", all=False) + outer_frame = session.find.css("iframe", all=False) session.switch_frame(outer_frame) - inner_frame = session.find("iframe", all=False) + inner_frame = session.find.css("iframe", all=False) session.switch_frame(frame) assert session.url == top_level_url diff --git a/tests/wpt/web-platform-tests/webmessaging/MessageEvent-trusted-worker.js b/tests/wpt/web-platform-tests/webmessaging/MessageEvent-trusted-worker.js new file mode 100644 index 00000000000..6e8c3a781bf --- /dev/null +++ b/tests/wpt/web-platform-tests/webmessaging/MessageEvent-trusted-worker.js @@ -0,0 +1,4 @@ +"use strict"; + +const channel = new BroadcastChannel("channel name"); +channel.postMessage("ping"); diff --git a/tests/wpt/web-platform-tests/webmessaging/MessageEvent-trusted.html b/tests/wpt/web-platform-tests/webmessaging/MessageEvent-trusted.html new file mode 100644 index 00000000000..8cde663339d --- /dev/null +++ b/tests/wpt/web-platform-tests/webmessaging/MessageEvent-trusted.html @@ -0,0 +1,45 @@ + +MessagePort message events are trusted + + + + + + diff --git a/tests/wpt/web-platform-tests/websockets/Close-0.htm b/tests/wpt/web-platform-tests/websockets/Close-0.htm deleted file mode 100644 index 4dd88f6c718..00000000000 --- a/tests/wpt/web-platform-tests/websockets/Close-0.htm +++ /dev/null @@ -1,25 +0,0 @@ - - - - W3C WebSocket API - Close WebSocket - Code is 0 - - - - - -
        - - - - diff --git a/tests/wpt/web-platform-tests/websockets/Close-NaN.htm b/tests/wpt/web-platform-tests/websockets/Close-NaN.htm deleted file mode 100644 index 8fd2219299b..00000000000 --- a/tests/wpt/web-platform-tests/websockets/Close-NaN.htm +++ /dev/null @@ -1,25 +0,0 @@ - - - - W3C WebSocket API - Close WebSocket - Code is NaN - - - - - -
        - - - - diff --git a/tests/wpt/web-platform-tests/websockets/Close-clamp.htm b/tests/wpt/web-platform-tests/websockets/Close-clamp.htm deleted file mode 100644 index 6660e813e2c..00000000000 --- a/tests/wpt/web-platform-tests/websockets/Close-clamp.htm +++ /dev/null @@ -1,14 +0,0 @@ - -WebSocket#close(2**16+1000) - - - -
        - diff --git a/tests/wpt/web-platform-tests/websockets/Close-null.htm b/tests/wpt/web-platform-tests/websockets/Close-null.htm deleted file mode 100644 index dcd477313e6..00000000000 --- a/tests/wpt/web-platform-tests/websockets/Close-null.htm +++ /dev/null @@ -1,25 +0,0 @@ - - - - W3C WebSocket API - Close WebSocket - Code is null - - - - - -
        - - - - diff --git a/tests/wpt/web-platform-tests/websockets/Close-string.htm b/tests/wpt/web-platform-tests/websockets/Close-string.htm deleted file mode 100644 index d394d5ccad0..00000000000 --- a/tests/wpt/web-platform-tests/websockets/Close-string.htm +++ /dev/null @@ -1,25 +0,0 @@ - - - - W3C WebSocket API - Close WebSocket - Code is String - - - - - -
        - - - - diff --git a/tests/wpt/web-platform-tests/websockets/Secure-Close-0.htm b/tests/wpt/web-platform-tests/websockets/Secure-Close-0.htm deleted file mode 100644 index 03f8aa5faf7..00000000000 --- a/tests/wpt/web-platform-tests/websockets/Secure-Close-0.htm +++ /dev/null @@ -1,25 +0,0 @@ - - - - W3C WebSocket API - Close Secure WebSocket - Code is 0 - - - - - -
        - - - - diff --git a/tests/wpt/web-platform-tests/websockets/Secure-Close-NaN.htm b/tests/wpt/web-platform-tests/websockets/Secure-Close-NaN.htm deleted file mode 100644 index aae6075dc23..00000000000 --- a/tests/wpt/web-platform-tests/websockets/Secure-Close-NaN.htm +++ /dev/null @@ -1,25 +0,0 @@ - - - - W3C WebSocket API - Close Secure WebSocket - Code is NaN - - - - - -
        - - - - diff --git a/tests/wpt/web-platform-tests/websockets/Secure-Close-null.htm b/tests/wpt/web-platform-tests/websockets/Secure-Close-null.htm deleted file mode 100644 index f6b67d5ffca..00000000000 --- a/tests/wpt/web-platform-tests/websockets/Secure-Close-null.htm +++ /dev/null @@ -1,25 +0,0 @@ - - - - W3C WebSocket API - Close Secure WebSocket - Code is null - - - - - -
        - - - - diff --git a/tests/wpt/web-platform-tests/websockets/Secure-Close-string.htm b/tests/wpt/web-platform-tests/websockets/Secure-Close-string.htm deleted file mode 100644 index 64bf16b1ee5..00000000000 --- a/tests/wpt/web-platform-tests/websockets/Secure-Close-string.htm +++ /dev/null @@ -1,25 +0,0 @@ - - - - W3C WebSocket API - Close Secure WebSocket - Code is string - - - - - -
        - - - - diff --git a/tests/wpt/web-platform-tests/websockets/close-invalid.any.js b/tests/wpt/web-platform-tests/websockets/close-invalid.any.js new file mode 100644 index 00000000000..a930495ab2c --- /dev/null +++ b/tests/wpt/web-platform-tests/websockets/close-invalid.any.js @@ -0,0 +1,20 @@ +// META: script=websocket.sub.js + +[ + [0, "0"], + [500, "500"], + [NaN, "NaN"], + ["string", "String"], + [null, "null"], + [0x10000 + 1000, "2**16+1000"], +].forEach(function(t) { + [true, false].forEach(function(secure) { + test(function() { + var ws = CreateWebSocket(secure, false, false); + assert_throws("InvalidAccessError", function () { + ws.close(t[0]); + }); + wsocket.onerror = this.unreached_func(); + }, t[1] + " on a " + (secure ? "secure" : "insecure") + " websocket"); + }); +}); diff --git a/tests/wpt/web-platform-tests/webstorage/event_no_duplicates.html b/tests/wpt/web-platform-tests/webstorage/event_no_duplicates.html new file mode 100644 index 00000000000..149e201c7dd --- /dev/null +++ b/tests/wpt/web-platform-tests/webstorage/event_no_duplicates.html @@ -0,0 +1,111 @@ + + +WebStorage Test: StorageEvent - only if something changes + + + + + + + diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/2_cues_overlapping_completely_move_up-ref.html b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/2_cues_overlapping_completely_move_up-ref.html index f90f72343fc..f73008f702a 100644 --- a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/2_cues_overlapping_completely_move_up-ref.html +++ b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/2_cues_overlapping_completely_move_up-ref.html @@ -5,16 +5,17 @@ html { overflow:hidden } body { margin:0 } .video { display: inline-block; - width: 1280px; - height: 720px; - position: relative + width: 320px; + height: 180px; + position: relative; + font-size: 9px; } #cue1 { position: absolute; top: 50%; left: 0; right: 0; - margin-top: -18px; + margin-top: -4.5px; text-align: center } #cue2 { @@ -22,14 +23,13 @@ body { margin:0 } top: 50%; left: 0; right: 0; - margin-top: -54px; + margin-top: -13.5px; text-align: center } .cue > span { font-family: Ahem, sans-serif; background: rgba(0,0,0,0.8); color: green; - font-size: 36px; }
        This is a test subtitleThis is another test subtitle
        diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/2_cues_overlapping_completely_move_up.html b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/2_cues_overlapping_completely_move_up.html index 11ea59d9ac1..72e904f5e30 100644 --- a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/2_cues_overlapping_completely_move_up.html +++ b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/2_cues_overlapping_completely_move_up.html @@ -11,7 +11,7 @@ body { margin:0 } } -