From f115b4f38d3b5d79127bb3dc5bf0cc51d1755008 Mon Sep 17 00:00:00 2001 From: James Graham Date: Wed, 8 Mar 2017 14:52:45 +0000 Subject: [PATCH 001/164] Bug 1345490 - Update web-platform-tests to revision 7c7db1b516b01394e19fad80094fbb81ab02ce75, a=testonly MozReview-Commit-ID: 4wsHtf9312c --HG-- rename : testing/web-platform/tests/html/browsers/windows/support-window-name-echo.html => testing/web-platform/tests/html/browsers/windows/resources/echo-window-name.html rename : testing/web-platform/tests/html/browsers/windows/support-nested-browsing-contexts.html => testing/web-platform/tests/html/browsers/windows/resources/nested-post-to-opener.html rename : testing/web-platform/tests/html/browsers/windows/support-named-null-opener.html => testing/web-platform/tests/html/browsers/windows/resources/noreferrer-window-name.html rename : testing/web-platform/tests/html/browsers/windows/support-post-to-opener.html => testing/web-platform/tests/html/browsers/windows/resources/post-to-opener.html rename : testing/web-platform/tests/html/browsers/windows/support-close.html => testing/web-platform/tests/html/browsers/windows/resources/window-close-button.html rename : testing/web-platform/tests/html/browsers/windows/support-opener-null.html => testing/web-platform/tests/html/browsers/windows/resources/window-opener.html rename : testing/web-platform/tests/mediacapture-streams/MediaStreamTrack-end.https.html => testing/web-platform/tests/mediacapture-streams/MediaStreamTrack-end-manual.https.html rename : testing/web-platform/tests/notifications/shownotification-resolve-manual.html => testing/web-platform/tests/notifications/shownotification-resolve-manual.https.html rename : testing/web-platform/tests/service-workers/service-worker/fetch-event-within-sw-manual.html => testing/web-platform/tests/service-workers/service-worker/fetch-event-within-sw-manual.https.html rename : testing/web-platform/tests/service-workers/service-worker/fetch-event-within-sw.html => testing/web-platform/tests/service-workers/service-worker/fetch-event-within-sw.https.html rename : testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-cue-text-parsing-rules/buildtests.py => testing/web-platform/tests/webvtt/parsing/cue-text-parsing/buildtests.py rename : testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-cue-text-parsing-rules/common.js => testing/web-platform/tests/webvtt/parsing/cue-text-parsing/common.js rename : testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-cue-text-parsing-rules/dat/entities.dat => testing/web-platform/tests/webvtt/parsing/cue-text-parsing/dat/entities.dat rename : testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-cue-text-parsing-rules/dat/tags.dat => testing/web-platform/tests/webvtt/parsing/cue-text-parsing/dat/tags.dat rename : testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-cue-text-parsing-rules/dat/timestamps.dat => testing/web-platform/tests/webvtt/parsing/cue-text-parsing/dat/timestamps.dat rename : testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-cue-text-parsing-rules/dat/tree-building.dat => testing/web-platform/tests/webvtt/parsing/cue-text-parsing/dat/tree-building.dat rename : testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-cue-text-parsing-rules/tests/entities.html => testing/web-platform/tests/webvtt/parsing/cue-text-parsing/tests/entities.html rename : testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-cue-text-parsing-rules/tests/tags.html => testing/web-platform/tests/webvtt/parsing/cue-text-parsing/tests/tags.html rename : testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-cue-text-parsing-rules/tests/timestamps.html => testing/web-platform/tests/webvtt/parsing/cue-text-parsing/tests/timestamps.html rename : testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-cue-text-parsing-rules/tests/tree-building.html => testing/web-platform/tests/webvtt/parsing/cue-text-parsing/tests/tree-building.html rename : testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/signature-formfeed.vtt => testing/web-platform/tests/webvtt/parsing/file-parsing/support/signature-formfeed.vtt rename : testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/signature-lowercase.vtt => testing/web-platform/tests/webvtt/parsing/file-parsing/support/signature-lowercase.vtt rename : testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/signature-null.vtt => testing/web-platform/tests/webvtt/parsing/file-parsing/support/signature-null.vtt rename : testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/signature-too-short.vtt => testing/web-platform/tests/webvtt/parsing/file-parsing/support/signature-partial.vtt rename : testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/signature-two-boms.vtt => testing/web-platform/tests/webvtt/parsing/file-parsing/support/signature-two-boms.vtt rename : testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/signature-websrt.vtt => testing/web-platform/tests/webvtt/parsing/file-parsing/support/signature-websrt.vtt rename : testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/signature-bom.vtt => testing/web-platform/tests/webvtt/parsing/file-parsing/tests/support/signature-bom.vtt rename : testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/signature-no-newline.vtt => testing/web-platform/tests/webvtt/parsing/file-parsing/tests/support/signature-no-newline.vtt rename : testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/signature-space-no-newline.vtt => testing/web-platform/tests/webvtt/parsing/file-parsing/tests/support/signature-space-no-newline.vtt rename : testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/signature-space.vtt => testing/web-platform/tests/webvtt/parsing/file-parsing/tests/support/signature-space.vtt rename : testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/signature-tab-no-newline.vtt => testing/web-platform/tests/webvtt/parsing/file-parsing/tests/support/signature-tab-no-newline.vtt rename : testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/signature-tab.vtt => testing/web-platform/tests/webvtt/parsing/file-parsing/tests/support/signature-tab.vtt --- testing/web-platform/meta/MANIFEST.json | 5001 ++++++++++++----- testing/web-platform/meta/mozilla-sync | 4 +- .../2d.drawImage.animated.apng.html | 2 +- .../2d.drawImage.animated.gif.html | 2 +- .../2d.text.draw.align.center.html | 2 +- .../2d.text.draw.align.end.ltr.html | 2 +- .../2d.text.draw.align.end.rtl.html | 2 +- .../2d.text.draw.align.left.html | 2 +- .../2d.text.draw.align.right.html | 2 +- .../2d.text.draw.align.start.ltr.html | 2 +- .../2d.text.draw.align.start.rtl.html | 2 +- .../2d.text.draw.baseline.alphabetic.html | 2 +- .../2d.text.draw.fill.maxWidth.bound.html | 2 +- .../2d.text.draw.fill.maxWidth.fontface.html | 2 +- .../2d.text.draw.fontface.html | 2 +- .../2d.text.draw.fontface.notinpage.html | 2 +- .../2d.text.draw.fontface.repeat.html | 2 +- .../2d.text.draw.space.basic.html | 2 +- .../2d.text.draw.space.collapse.nonspace.html | 2 +- .../2d.text.measure.width.basic.html | 2 +- .../2d.text.measure.width.empty.html | 2 +- .../2d.pattern.animated.gif.html | 4 +- .../2d.text.draw.baseline.bottom.html | 2 +- .../2d.text.draw.baseline.hanging.html | 2 +- .../2d.text.draw.baseline.ideographic.html | 2 +- .../2d.text.draw.baseline.middle.html | 2 +- .../2d.text.draw.baseline.top.html | 2 +- .../2d.text.draw.space.collapse.end.html | 2 +- .../2d.text.draw.space.collapse.other.html | 2 +- .../2d.text.draw.space.collapse.space.html | 2 +- .../2d.text.draw.space.collapse.start.html | 2 +- .../2d.text.measure.width.space.html | 2 +- .../tests/2dcontext/tools/tests2d.yaml | 8 +- .../tests/2dcontext/tools/tests2dtext.yaml | 56 +- testing/web-platform/tests/FileAPI/OWNERS | 1 - .../tests/FileAPI/blob/Blob-XHR-revoke.html | 18 +- .../abort-in-initial-upgradeneeded.html | 2 +- .../IndexedDB/close-in-upgradeneeded.html | 1 + .../IndexedDB/event-dispatch-active-flag.html | 154 + .../IndexedDB/fire-error-event-exception.html | 205 + .../fire-success-event-exception.html | 72 + .../fire-upgradeneeded-event-exception.html | 77 + .../idbcursor_continue_objectstore.htm | 2 +- ...bfactory-deleteDatabase-opaque-origin.html | 66 + .../idbfactory-open-opaque-origin.html | 68 + .../IndexedDB/idbfactory_deleteDatabase4.htm | 7 +- .../tests/IndexedDB/idbindex_get.htm | 2 +- .../tests/IndexedDB/idbindex_get4.htm | 2 +- .../tests/IndexedDB/idbindex_getKey4.htm | 2 +- .../idbobjectstore_createIndex13.htm | 2 +- .../tests/IndexedDB/idbobjectstore_get4.htm | 2 +- .../IndexedDB/keygenerator-explicit.html | 146 + .../tests/IndexedDB/keygenerator-inject.html | 119 + .../tests/IndexedDB/keypath_invalid.htm | 2 +- .../web-platform/tests/IndexedDB/support.js | 53 +- .../transaction-deactivation-timing.html | 143 + .../transaction-lifetime-blocked.htm | 4 +- .../tests/IndexedDB/transaction-lifetime.htm | 4 +- ...grade-transaction-deactivation-timing.html | 48 + .../tests/IndexedDB/writer-starvation.htm | 4 +- .../web-platform/tests/WebCryptoAPI/OWNERS | 1 - .../web-platform/tests/XMLHttpRequest/OWNERS | 3 +- .../tests/XMLHttpRequest/README.md | 7 + .../XMLHttpRequest/abort-after-receive.htm | 4 +- .../tests/XMLHttpRequest/abort-after-stop.htm | 8 +- .../XMLHttpRequest/abort-after-timeout.htm | 10 +- .../anonymous-mode-unsupported.htm | 2 +- .../tests/XMLHttpRequest/data-uri.htm | 24 +- .../tests/XMLHttpRequest/event-abort.htm | 4 +- .../tests/XMLHttpRequest/event-load.htm | 12 +- .../tests/XMLHttpRequest/event-loadend.htm | 7 +- .../XMLHttpRequest/event-loadstart-upload.htm | 28 + .../tests/XMLHttpRequest/event-loadstart.htm | 4 +- .../tests/XMLHttpRequest/event-progress.htm | 3 - .../event-readystatechange-loaded.htm | 2 - .../XMLHttpRequest/event-timeout-order.htm | 4 +- .../tests/XMLHttpRequest/event-timeout.htm | 4 +- .../event-upload-progress-crossorigin.htm | 1 - .../XMLHttpRequest/event-upload-progress.htm | 8 +- .../getallresponseheaders-cl.htm | 27 + .../XMLHttpRequest/getallresponseheaders.htm | 24 + .../getresponseheader-case-insensitive.htm | 4 +- .../XMLHttpRequest/loadstart-and-state.html | 40 + .../open-after-setrequestheader.htm | 2 +- .../tests/XMLHttpRequest/open-referer.htm | 4 +- .../XMLHttpRequest/open-send-during-abort.htm | 27 + .../tests/XMLHttpRequest/open-url-bogus.htm | 25 - .../XMLHttpRequest/overridemimetype-blob.html | 65 + .../overridemimetype-invalid-mime-type.htm | 64 +- .../preserve-ua-header-on-redirect.htm | 4 +- .../tests/XMLHttpRequest/readme.txt | 31 - .../XMLHttpRequest/resources/echo-headers.py | 6 + .../resources/header-content-length.asis | 2 + .../resources/headers-basic.asis | 4 + .../XMLHttpRequest/resources/headers.asis | 5 + .../resources/inspect-headers.py | 29 +- .../XMLHttpRequest/responsetext-decoding.htm | 13 +- .../XMLHttpRequest/send-accept-language.htm | 6 +- .../XMLHttpRequest/send-data-formdata.htm | 21 +- .../XMLHttpRequest/send-entity-body-basic.htm | 4 +- .../send-network-error-async-events.sub.htm | 41 +- .../send-network-error-sync-events.sub.htm | 2 +- .../XMLHttpRequest/send-sync-blocks-async.htm | 36 +- .../XMLHttpRequest/send-sync-timeout.htm | 3 +- .../setrequestheader-allow-empty-value.htm | 4 +- ...equestheader-allow-whitespace-in-value.htm | 4 +- .../setrequestheader-case-insensitive.htm | 4 +- .../setrequestheader-content-type.htm | 24 +- .../setrequestheader-header-allowed.htm | 6 +- .../setrequestheader-header-forbidden.htm | 3 +- ...setrequestheader-open-setrequestheader.htm | 35 +- .../tests/XMLHttpRequest/status-error.htm | 4 +- .../XMLHttpRequest/template-element.html | 36 + testing/web-platform/tests/check_stability.py | 102 +- testing/web-platform/tests/console/OWNERS | 1 + .../console-count-label-conversion.any.js | 24 + .../console-time-label-conversion.any.js | 46 + ...rc-about-blank-allowed-by-default.sub.html | 4 +- .../inside-dedicated-worker.html | 22 + .../inside-service-worker.https.html | 27 + .../inside-shared-worker.html | 23 + .../script-sample-no-opt-in.html | 67 + .../script-sample.html | 67 + ...ck-cross-origin-image-from-script.sub.html | 28 + ...iolation-block-cross-origin-image.sub.html | 27 + ...violation-block-image-from-script.sub.html | 28 + ...curitypolicyviolation-block-image.sub.html | 28 + .../style-sample-no-opt-in.html | 39 + .../securitypolicyviolation/style-sample.html | 39 + .../support/inside-worker.sub.js | 44 + .../support/inside-worker.sub.js.headers | 5 + .../securitypolicyviolation/targeting.html | 1 + .../support/inject-image.sub.js | 3 + .../support/resource.py | 5 + .../support/testharness-helper.js | 5 +- testing/web-platform/tests/cors/304.htm | 97 + testing/web-platform/tests/cors/OWNERS | 1 + testing/web-platform/tests/cors/README.md | 8 + testing/web-platform/tests/cors/basic.htm | 2 +- .../tests/cors/late-upload-events.htm | 16 +- testing/web-platform/tests/cors/origin.htm | 2 +- .../tests/cors/preflight-cache.htm | 4 +- .../web-platform/tests/cors/resources/304.py | 62 + .../tests/cors/status-preflight.htm | 5 +- testing/web-platform/tests/cors/status.htm | 6 +- .../CSSMatrixComponent-DOMMatrix-mutable.html | 16 + .../declared-styleMap-accepts-inherit.html | 15 + .../styleMap-update-function.html | 17 + testing/web-platform/tests/docs/OWNERS | 1 - .../web-platform/tests/docs/assets/main.scss | 1 + testing/web-platform/tests/docs/index.html | 60 +- testing/web-platform/tests/dom/OWNERS | 1 - .../tests/dom/events/CustomEvent.html | 18 +- .../tests/dom/events/Event-initEvent.html | 15 + .../web-platform/tests/dom/interfaces.html | 4 +- .../DOMTokenList-coverage-for-attributes.html | 3 +- .../tests/dom/nodes/Element-matches.html | 32 +- .../tests/dom/nodes/Element-matches.js | 54 +- .../nodes/Element-webkitMatchesSelector.html | 89 + .../editing/data/inserthorizontalrule.js | 15 - .../web-platform/tests/editing/data/italic.js | 40 - .../tests/editing/data/multitest.js | 4 +- .../tests/editing/data/removeformat.js | 25 - .../tests/editing/data/strikethrough.js | 20 - .../tests/editing/data/subscript.js | 10 - .../tests/editing/data/superscript.js | 10 - .../tests/editing/data/underline.js | 20 - .../tests/editing/include/tests.js | 19 +- testing/web-platform/tests/fetch/OWNERS | 1 + testing/web-platform/tests/fetch/README.md | 6 + .../tests/fetch/api/basic/request-upload.js | 140 +- .../api/cors/cors-expose-star-worker.html | 14 + .../fetch/api/cors/cors-expose-star.html | 13 + .../tests/fetch/api/cors/cors-expose-star.js | 31 + .../api/cors/cors-preflight-star-worker.html | 14 + .../fetch/api/cors/cors-preflight-star.html | 14 + .../fetch/api/cors/cors-preflight-star.js | 45 + .../api/cors/cors-redirect-credentials.js | 16 +- .../fetch/api/policies/referrer-origin.js | 2 +- .../tests/fetch/api/request/request-cache.js | 2 +- .../api/request/request-keepalive-quota.html | 93 + .../tests/fetch/api/resources/preflight.py | 15 +- .../fetch/api/response/response-idl.html | 1 + .../fetch/api/response/response-trailer.html | 24 + ...it-fullscreen-nested-in-iframe-manual.html | 40 + ...ocument-exit-fullscreen-nested-manual.html | 31 + testing/web-platform/tests/html/OWNERS | 2 - .../beforeunload-canceling.html | 9 +- ...cation-protocol-setter-with-colon.sub.html | 18 +- .../application-cache-api/api_update.html | 17 +- .../api_update_error.html | 7 +- ...appcache-in-shared-workers-historical.html | 19 + ...o-appcache-in-shared-workers-historical.js | 14 + .../support/noopener-target.html | 9 +- .../window-open-noopener.html | 5 +- .../windows/browsing-context-window.html | 37 + ...st-created.xhtml => browsing-context.html} | 38 +- ...eferrer-cross-origin-close-manual.sub.html | 2 +- ...-cross-origin-window-name-manual.sub.html} | 2 +- ...errer.html => noreferrer-null-opener.html} | 2 +- .../windows/noreferrer-window-name.html | 2 +- .../resources/browsing-context-window.html | 7 + .../echo-window-name.html} | 0 .../nested-post-to-opener.html} | 0 .../noreferrer-window-name.html} | 0 .../post-to-opener.html} | 0 .../target-cross-origin.sub.html} | 2 +- .../window-close-button.html} | 0 .../window-opener.html} | 0 ...cross-origin-nested-browsing-contexts.html | 4 +- ...ting-multiple-cross-origin-manual.sub.html | 4 +- .../elements-in-the-dom/historical.html | 2 + .../web-platform/tests/html/dom/reflection.js | 3 +- .../tests/html/dom/resources/interfaces.idl | 3 +- .../replaced-elements/resources/svg-sizing.js | 2 +- .../svg-embedded-sizing.js | 4 +- .../document-metadata/styling/LinkStyle.html | 48 +- .../autoplay-with-slow-text-tracks.html | 45 + ..._navigation_by_user_activation-manual.html | 24 + ..._user_activation_without_user_gesture.html | 19 + ...avigation-without-user-gesture-failed.html | 16 + .../iframe-that-performs-top-navigation.html | 20 + .../support/navigation-changed-iframe.html | 14 + .../textfieldselection/select-event.html | 100 +- .../selection-not-application.html | 9 +- .../textfieldselection-setRangeText.html | 1 + .../textfieldselection-setSelectionRange.html | 13 - .../the-select-element/selected-index.html | 56 +- .../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-input-byte-stream-015.html | 35 - .../the-input-byte-stream-015.html.headers | 1 - .../tests/html/syntax/parsing/test.js | 2 +- .../origin-check-in-document-open-basic.html | 8 + ...-document-open-same-origin-domain.sub.html | 6 + ...ompile-event-handler-settings-objects.html | 69 + .../messageevent-constructor.https.html | 16 +- ...vent-handler-settings-objects-support.html | 12 + .../events/resources/open-window.html | 4 + ...compile-error-cross-origin-setTimeout.html | 2 +- .../compile-error-in-setInterval.html | 2 +- .../compile-error-in-setTimeout.html | 2 +- ...runtime-error-cross-origin-setTimeout.html | 2 +- .../runtime-error-in-setInterval.html | 2 +- .../runtime-error-in-setTimeout.html | 2 +- .../support/syntax-error-in-setInterval.js | 2 +- .../undefined-variable-in-setInterval.js | 2 +- .../Worker_Self_Origin.html | 45 + .../support/WorkerSelfOriginSharedWorker.js | 5 + .../support/WorkerSelfOriginWorker.js | 4 + .../infrastructure/reftest-wait-ref.html | 13 + .../tests/infrastructure/reftest-wait.html | 21 + testing/web-platform/tests/lint.whitelist | 73 +- .../tests/media-capabilities/idlharness.html | 10 +- .../tests/media-capabilities/query.html | 70 +- .../web-platform/tests/media/CanvasTest.ttf | Bin 0 -> 2528 bytes ...tream-MediaElement-preload-none.https.html | 3 + ...=> MediaStreamTrack-end-manual.https.html} | 0 ...hownotification-resolve-manual.https.html} | 0 .../web-platform/tests/payment-request/OWNERS | 1 + .../pointerevents/extension/idlharness.html | 55 + .../extension/pointerevent_constructor.html | 78 + ...nterevent_click_during_capture-manual.html | 108 + ...terevent_disabled_form_control-manual.html | 66 + .../tests/preload/download-resources.html | 4 +- .../tests/preload/onload-event.html | 2 +- .../tests/preload/preload-with-type.html | 4 +- .../preload/single-download-preload.html | 8 +- ...esentationConnection_onmessage-manual.html | 138 + .../PresentationConnection_send-manual.html | 128 + .../presentation-api/controlling-ua/common.js | 9 + .../controlling-ua/support/presentation.html | 81 +- .../controlling-ua/support/stash.js | 83 + .../controlling-ua/support/stash.py | 10 + .../presentation-api/receiving-ua/common.js | 10 + .../receiving-ua/idlharness-manual.html | 52 + .../idlharness_receiving-ua.html} | 57 +- .../receiving-ua/support/stash.js | 83 + .../receiving-ua/support/stash.py | 10 + .../tests/referrer-policy/README.md | 2 +- .../tests/resources/testharness.js | 38 +- .../tests/screen-orientation/OWNERS | 1 + .../web-platform/tests/selection/addRange.js | 24 +- .../web-platform/tests/selection/collapse.js | 7 + .../tests/selection/collapseToStartEnd.html | 25 +- .../web-platform/tests/selection/common.js | 42 + .../web-platform/tests/selection/extend.js | 12 + .../tests/selection/interfaces.html | 50 +- .../tests/selection/isCollapsed.html | 4 +- .../tests/selection/removeRange.html | 45 + .../controller-on-reload.https.html | 7 +- ...> fetch-event-within-sw-manual.https.html} | 0 ....html => fetch-event-within-sw.https.html} | 0 .../multiple-register.https.html | 3 +- .../service-worker/navigate-window.https.html | 20 +- .../postmessage-blob-url.https.html | 33 + .../registration-iframe.https.html | 88 +- .../request-end-to-end.https.html | 28 +- .../resources/postmessage-blob-url.js | 5 + .../resources/request-end-to-end-worker.js | 11 + .../inert-html-elements/test-001.html | 2 +- testing/web-platform/tests/storage/OWNERS | 2 + testing/web-platform/tests/storage/README.md | 7 + .../tests/storage/interfaces.html | 30 + .../web-platform/tests/storage/interfaces.idl | 22 + .../tests/storage/interfaces.worker.js | 26 + .../tests/storage/opaque-origin.https.html | 79 + .../streams/readable-streams/brand-checks.js | 40 +- ...ml => default-reader.dedicatedworker.html} | 4 +- ...stream-reader.html => default-reader.html} | 4 +- ...ble-stream-reader.js => default-reader.js} | 55 +- ...> default-reader.serviceworker.https.html} | 4 +- ....html => default-reader.sharedworker.html} | 4 +- .../readable-streams/garbage-collection.js | 2 +- .../writable-streams/bad-strategies.js | 2 +- .../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 + testing/web-platform/tests/svg/OWNERS | 1 - testing/web-platform/tests/tools/.travis.yml | 2 + testing/web-platform/tests/tools/appveyor.yml | 1 + testing/web-platform/tests/tools/lint/lint.py | 70 +- .../tools/lint/tests/dummy/dependency.html | 1 + .../tools/lint/tests/dummy/ref/absolute.html | 1 + .../dummy/ref/existent_relative-ref.html | 0 .../tests/dummy/ref/existent_relative.html | 1 + .../dummy/ref/existent_root_relative.html | 1 + .../dummy/ref/non_existent_relative.html | 1 + .../dummy/ref/non_existent_root_relative.html | 1 + .../lint/tests/dummy/ref/same_file_empty.html | 1 + .../lint/tests/dummy/ref/same_file_path.html | 1 + .../tests/tools/lint/tests/test_file_lints.py | 55 + .../tests/tools/lint/tests/test_lint.py | 142 +- .../web-platform/tests/tools/manifest/item.py | 17 + .../tests/tools/manifest/sourcefile.py | 29 +- .../tools/manifest/tests/test_sourcefile.py | 27 +- .../tests/tools/runner/index.html | 4 +- .../tests/tools/runner/runner.css | 12 +- .../web-platform/tests/tools/runner/runner.js | 42 +- .../web-platform/tests/tools/serve/serve.py | 11 +- .../tests/tools/sslutils/openssl.py | 19 +- testing/web-platform/tests/tools/tox.ini | 2 +- .../tests/tools/webdriver/webdriver/client.py | 287 +- .../tools/webdriver/webdriver/transport.py | 6 +- .../tests/tools/wptserve/README.md | 4 +- .../tools/wptserve/tests/functional/base.py | 19 +- .../tests/functional/test_handlers.py | 19 +- .../wptserve/tests/functional/test_server.py | 7 +- .../web-platform/tests/tools/wptserve/tox.ini | 3 +- .../tests/tools/wptserve/wptserve/handlers.py | 12 +- .../tests/tools/wptserve/wptserve/pipes.py | 5 +- .../tests/tools/wptserve/wptserve/request.py | 27 +- .../tests/tools/wptserve/wptserve/server.py | 13 +- testing/web-platform/tests/typedarrays/OWNERS | 1 - testing/web-platform/tests/uievents/OWNERS | 1 - .../constructors/inputevent-constructor.html | 10 + testing/web-platform/tests/url/OWNERS | 2 +- testing/web-platform/tests/url/failure.html | 38 + .../web-platform/tests/url/setters_tests.json | 87 + .../web-platform/tests/url/urltestdata.json | 257 +- .../AnimationEffectTiming/delay.html | 18 + .../AnimationEffectTiming/direction.html | 5 + .../AnimationEffectTiming/duration.html | 24 + .../AnimationEffectTiming/easing.html | 5 + .../AnimationEffectTiming/endDelay.html | 5 + .../AnimationEffectTiming/fill.html | 5 + .../AnimationEffectTiming/iterationStart.html | 26 +- .../AnimationEffectTiming/iterations.html | 5 + .../resources/keyframe-utils.js | 22 +- .../animation-effects/local-time.html | 26 + .../tests/webdriver/actions/conftest.py | 4 +- .../tests/webdriver/actions/key.py | 2 + .../web-platform/tests/webdriver/conftest.py | 22 + .../web-platform/tests/webdriver/contexts.py | 18 +- .../tests/webdriver/navigation.py | 12 +- .../tests/webdriver/util/cleanup.py | 2 +- testing/web-platform/tests/webgl/OWNERS | 1 - .../web-platform/tests/webmessaging/OWNERS | 1 - .../setRemoteDescription.html | 56 + testing/web-platform/tests/websockets/OWNERS | 1 - testing/web-platform/tests/webstorage/OWNERS | 1 - .../tests/webstorage/event_no_duplicates.html | 111 + testing/web-platform/tests/webvtt/OWNERS | 1 - .../VTTCue}/align.html | 36 +- .../tests/webvtt/api/VTTCue/constructor.html | 49 + .../VTTCue}/getCueAsHTML.html | 1 + .../vttcue-interface => api/VTTCue}/line.html | 2 + .../tests/webvtt/api/VTTCue/lineAlign.html | 39 + .../tests/webvtt/api/VTTCue/position.html | 32 + .../webvtt/api/VTTCue/positionAlign.html | 23 + .../tests/webvtt/api/VTTCue/region.html | 38 + .../tests/webvtt/api/VTTCue/size.html | 26 + .../VTTCue}/snapToLines.html | 2 + .../vttcue-interface => api/VTTCue}/text.html | 2 + .../VTTCue}/vertical.html | 2 + .../webvtt/api/VTTRegion/constructor.html | 18 + .../tests/webvtt/api/VTTRegion/lines.html | 37 + .../webvtt/api/VTTRegion/regionAnchorX.html | 26 + .../webvtt/api/VTTRegion/regionAnchorY.html | 26 + .../tests/webvtt/api/VTTRegion/scroll.html | 27 + .../webvtt/api/VTTRegion/viewportAnchorX.html | 26 + .../webvtt/api/VTTRegion/viewportAnchorY.html | 26 + .../tests/webvtt/api/VTTRegion/width.html | 26 + .../tests/webvtt/parsing/README.md | 9 + .../cue-text-parsing}/buildtests.py | 0 .../cue-text-parsing}/common.js | 0 .../cue-text-parsing}/dat/entities.dat | 0 .../cue-text-parsing}/dat/tags.dat | 0 .../cue-text-parsing}/dat/timestamps.dat | 0 .../cue-text-parsing}/dat/tree-building.dat | 0 .../cue-text-parsing}/tests/entities.html | 0 .../cue-text-parsing}/tests/tags.html | 0 .../cue-text-parsing}/tests/timestamps.html | 0 .../tests/tree-building.html | 0 .../webvtt/parsing/file-parsing/README.md | 52 + .../file-parsing/signature-invalid.html | 49 + .../parsing/file-parsing/support/arrows.test | 38 + .../parsing/file-parsing/support/empty.vtt | 0 .../file-parsing/support/header-garbage.test | 15 + .../file-parsing/support/header-space.test | 14 + .../file-parsing/support/header-tab.test | 14 + .../file-parsing/support/header-timings.test | 13 + .../parsing/file-parsing/support/ids.test | 32 + .../file-parsing/support/newlines.test | 36 + .../parsing/file-parsing/support/nulls.test | 232 + .../file-parsing/support/regions-id.test | 52 + .../file-parsing/support/regions-lines.test | 129 + .../file-parsing/support/regions-old.test | 18 + .../support/regions-regionanchor.test | 182 + .../file-parsing/support/regions-scroll.test | 67 + .../support/regions-viewportanchor.test | 182 + .../file-parsing/support/settings-align.test | 64 + .../file-parsing/support/settings-line.test | 178 + .../support/settings-multiple.test | 34 + .../support/settings-position.test | 104 + .../file-parsing/support/settings-region.test | 71 + .../file-parsing/support/settings-size.test | 78 + .../support/settings-vertical.test | 47 + .../file-parsing/support/signature-bom.test | 7 + .../support/signature-formfeed.vtt | 0 .../support/signature-invalid-whitespace.vtt | 1 + .../support/signature-invalid.vtt | 1 + .../support/signature-lowercase.vtt | 0 .../support/signature-missing-whitespace.vtt | 1 + .../support/signature-missing.vtt} | 2 +- .../support/signature-no-newline.test | 7 + .../file-parsing}/support/signature-null.vtt | Bin .../support/signature-partial.vtt} | 0 .../support/signature-space-no-newline.test | 7 + .../file-parsing/support/signature-space.test | 7 + .../support/signature-tab-no-newline.test | 7 + .../file-parsing/support/signature-tab.test | 7 + .../support/signature-timings.test | 8 + .../support/signature-two-boms.vtt | 0 .../support/signature-websrt.vtt | 0 .../file-parsing/support/stylesheets.test | 36 + .../file-parsing/support/timings-60.test | 33 + .../file-parsing/support/timings-eof.test | 9 + .../file-parsing/support/timings-garbage.test | 197 + .../support/timings-negative.test | 33 + .../support/timings-omitted-hours.test | 22 + .../support/timings-too-long.test | 60 + .../support/timings-too-short.test | 111 + .../support/whitespace-chars.test | 32 + .../parsing/file-parsing/tests/arrows.html | 44 + .../file-parsing/tests/header-garbage.html | 43 + .../file-parsing/tests/header-space.html | 43 + .../file-parsing/tests/header-tab.html | 43 + .../file-parsing/tests/header-timings.html | 43 + .../parsing/file-parsing/tests/ids.html | 44 + .../parsing/file-parsing/tests/newlines.html | 51 + .../parsing/file-parsing/tests/nulls.html | 60 + .../file-parsing/tests/regions-id.html | 51 + .../file-parsing/tests/regions-lines.html | 64 + .../file-parsing/tests/regions-old.html | 42 + .../tests/regions-regionanchor.html | 66 + .../file-parsing/tests/regions-scroll.html | 54 + .../tests/regions-viewportanchor.html | 66 + .../file-parsing/tests/settings-align.html | 57 + .../file-parsing/tests/settings-line.html | 96 + .../file-parsing/tests/settings-multiple.html | 58 + .../file-parsing/tests/settings-position.html | 66 + .../file-parsing/tests/settings-region.html | 64 + .../file-parsing/tests/settings-size.html | 58 + .../file-parsing/tests/settings-vertical.html | 55 + .../file-parsing/tests/signature-bom.html | 39 + .../tests/signature-no-newline.html | 39 + .../tests/signature-space-no-newline.html | 39 + .../file-parsing/tests/signature-space.html | 39 + .../tests/signature-tab-no-newline.html | 39 + .../file-parsing/tests/signature-tab.html | 39 + .../file-parsing/tests/signature-timings.html | 39 + .../file-parsing/tests/stylesheets.html | 40 + .../file-parsing/tests}/support/arrows.vtt | 20 +- .../tests}/support/header-garbage.vtt | 2 +- .../tests}/support/header-space.vtt | 2 +- .../tests}/support/header-tab.vtt | 2 +- .../tests}/support/header-timings.vtt | 2 +- .../file-parsing/tests}/support/ids.vtt | 10 +- .../file-parsing/tests}/support/newlines.vtt | 9 +- .../file-parsing/tests}/support/nulls.vtt | Bin 2773 -> 2792 bytes .../file-parsing/tests/support/regions-id.vtt | 34 + .../tests/support/regions-lines.vtt | 98 + .../tests/support/regions-old.vtt | 9 + .../tests/support/regions-regionanchor.vtt | 149 + .../tests/support/regions-scroll.vtt | 46 + .../tests/support/regions-viewportanchor.vtt | 149 + .../tests}/support/settings-align.vtt | 30 +- .../tests}/support/settings-line.vtt | 111 +- .../tests}/support/settings-multiple.vtt | 15 +- .../tests/support/settings-position.vtt | 71 + .../tests/support/settings-region.vtt | 40 + .../tests}/support/settings-size.vtt | 64 +- .../tests}/support/settings-vertical.vtt | 18 +- .../tests}/support/signature-bom.vtt | 0 .../tests}/support/signature-no-newline.vtt | 0 .../support/signature-space-no-newline.vtt | 0 .../tests}/support/signature-space.vtt | 0 .../support/signature-tab-no-newline.vtt | 0 .../tests}/support/signature-tab.vtt | 0 .../tests}/support/signature-timings.vtt | 2 +- .../tests/support/stylesheets.vtt | 29 + .../tests}/support/timings-60.vtt | 13 +- .../tests/support/timings-eof.vtt | 3 + .../tests}/support/timings-garbage.vtt | 126 +- .../tests}/support/timings-negative.vtt | 8 +- .../tests/support/timings-omitted-hours.vtt} | 6 +- .../tests}/support/timings-too-long.vtt | 31 +- .../tests}/support/timings-too-short.vtt | 65 +- .../tests/support/whitespace-chars.vtt} | 8 +- .../file-parsing/tests/timings-60.html | 47 + .../file-parsing/tests/timings-eof.html | 39 + .../file-parsing/tests/timings-garbage.html | 40 + .../file-parsing/tests/timings-negative.html | 53 + .../tests/timings-omitted-hours.html | 45 + .../file-parsing/tests/timings-too-long.html | 47 + .../file-parsing/tests/timings-too-short.html | 47 + .../file-parsing/tests/whitespace-chars.html | 48 + .../parsing/file-parsing/tools/build.py | 120 + .../parsing/file-parsing/tools/parser.py | 702 +++ .../parsing/file-parsing/tools/spec_report.py | 99 + ...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 +- .../webvtt-file-parsing/001.html | 96 - .../support/cue-counts.json | 36 - .../support/settings-position.vtt | 40 - testing/web-platform/tests/workers/OWNERS | 1 - .../tests/workers/SharedWorker_blobUrl.html | 30 + .../SharedWorker/global-members.html | 2 +- .../tests/workers/data-url-shared.html | 8 +- .../web-platform/tests/workers/data-url.html | 7 +- .../tests/workers/support/WorkerFetchURL.js | 8 + 1032 files changed, 19188 insertions(+), 4547 deletions(-) create mode 100644 testing/web-platform/tests/IndexedDB/event-dispatch-active-flag.html create mode 100644 testing/web-platform/tests/IndexedDB/fire-error-event-exception.html create mode 100644 testing/web-platform/tests/IndexedDB/fire-success-event-exception.html create mode 100644 testing/web-platform/tests/IndexedDB/fire-upgradeneeded-event-exception.html create mode 100644 testing/web-platform/tests/IndexedDB/idbfactory-deleteDatabase-opaque-origin.html create mode 100644 testing/web-platform/tests/IndexedDB/idbfactory-open-opaque-origin.html create mode 100644 testing/web-platform/tests/IndexedDB/keygenerator-explicit.html create mode 100644 testing/web-platform/tests/IndexedDB/keygenerator-inject.html create mode 100644 testing/web-platform/tests/IndexedDB/transaction-deactivation-timing.html create mode 100644 testing/web-platform/tests/IndexedDB/upgrade-transaction-deactivation-timing.html create mode 100644 testing/web-platform/tests/XMLHttpRequest/README.md create mode 100644 testing/web-platform/tests/XMLHttpRequest/event-loadstart-upload.htm create mode 100644 testing/web-platform/tests/XMLHttpRequest/getallresponseheaders-cl.htm create mode 100644 testing/web-platform/tests/XMLHttpRequest/getallresponseheaders.htm create mode 100644 testing/web-platform/tests/XMLHttpRequest/loadstart-and-state.html create mode 100644 testing/web-platform/tests/XMLHttpRequest/open-send-during-abort.htm delete mode 100644 testing/web-platform/tests/XMLHttpRequest/open-url-bogus.htm create mode 100644 testing/web-platform/tests/XMLHttpRequest/overridemimetype-blob.html delete mode 100644 testing/web-platform/tests/XMLHttpRequest/readme.txt create mode 100644 testing/web-platform/tests/XMLHttpRequest/resources/echo-headers.py create mode 100644 testing/web-platform/tests/XMLHttpRequest/resources/header-content-length.asis create mode 100644 testing/web-platform/tests/XMLHttpRequest/resources/headers-basic.asis create mode 100644 testing/web-platform/tests/XMLHttpRequest/resources/headers.asis create mode 100644 testing/web-platform/tests/XMLHttpRequest/template-element.html create mode 100644 testing/web-platform/tests/console/console-count-label-conversion.any.js create mode 100644 testing/web-platform/tests/console/console-time-label-conversion.any.js create mode 100644 testing/web-platform/tests/content-security-policy/securitypolicyviolation/inside-dedicated-worker.html create mode 100644 testing/web-platform/tests/content-security-policy/securitypolicyviolation/inside-service-worker.https.html create mode 100644 testing/web-platform/tests/content-security-policy/securitypolicyviolation/inside-shared-worker.html create mode 100644 testing/web-platform/tests/content-security-policy/securitypolicyviolation/script-sample-no-opt-in.html create mode 100644 testing/web-platform/tests/content-security-policy/securitypolicyviolation/script-sample.html create mode 100644 testing/web-platform/tests/content-security-policy/securitypolicyviolation/securitypolicyviolation-block-cross-origin-image-from-script.sub.html create mode 100644 testing/web-platform/tests/content-security-policy/securitypolicyviolation/securitypolicyviolation-block-cross-origin-image.sub.html create mode 100644 testing/web-platform/tests/content-security-policy/securitypolicyviolation/securitypolicyviolation-block-image-from-script.sub.html create mode 100644 testing/web-platform/tests/content-security-policy/securitypolicyviolation/securitypolicyviolation-block-image.sub.html create mode 100644 testing/web-platform/tests/content-security-policy/securitypolicyviolation/style-sample-no-opt-in.html create mode 100644 testing/web-platform/tests/content-security-policy/securitypolicyviolation/style-sample.html create mode 100644 testing/web-platform/tests/content-security-policy/securitypolicyviolation/support/inside-worker.sub.js create mode 100644 testing/web-platform/tests/content-security-policy/securitypolicyviolation/support/inside-worker.sub.js.headers create mode 100644 testing/web-platform/tests/content-security-policy/support/inject-image.sub.js create mode 100644 testing/web-platform/tests/content-security-policy/support/resource.py create mode 100644 testing/web-platform/tests/cors/304.htm create mode 100644 testing/web-platform/tests/cors/README.md create mode 100755 testing/web-platform/tests/cors/resources/304.py create mode 100644 testing/web-platform/tests/css-typed-om/CSSMatrixComponent-DOMMatrix-mutable.html create mode 100644 testing/web-platform/tests/css-typed-om/declared-styleMap-accepts-inherit.html create mode 100644 testing/web-platform/tests/css-typed-om/styleMap-update-function.html create mode 100644 testing/web-platform/tests/dom/nodes/Element-webkitMatchesSelector.html create mode 100644 testing/web-platform/tests/fetch/README.md create mode 100644 testing/web-platform/tests/fetch/api/cors/cors-expose-star-worker.html create mode 100644 testing/web-platform/tests/fetch/api/cors/cors-expose-star.html create mode 100644 testing/web-platform/tests/fetch/api/cors/cors-expose-star.js create mode 100644 testing/web-platform/tests/fetch/api/cors/cors-preflight-star-worker.html create mode 100644 testing/web-platform/tests/fetch/api/cors/cors-preflight-star.html create mode 100644 testing/web-platform/tests/fetch/api/cors/cors-preflight-star.js create mode 100644 testing/web-platform/tests/fetch/api/request/request-keepalive-quota.html create mode 100644 testing/web-platform/tests/fetch/api/response/response-trailer.html create mode 100644 testing/web-platform/tests/fullscreen/api/document-exit-fullscreen-nested-in-iframe-manual.html create mode 100644 testing/web-platform/tests/fullscreen/api/document-exit-fullscreen-nested-manual.html create mode 100644 testing/web-platform/tests/html/browsers/offline/no-appcache-in-shared-workers-historical.html create mode 100644 testing/web-platform/tests/html/browsers/offline/no-appcache-in-shared-workers-historical.js create mode 100644 testing/web-platform/tests/html/browsers/windows/browsing-context-window.html rename testing/web-platform/tests/html/browsers/windows/{browsing-context-first-created.xhtml => browsing-context.html} (82%) rename testing/web-platform/tests/html/browsers/windows/{noreferrer-cross-origin-window-name.sub.html => noreferrer-cross-origin-window-name-manual.sub.html} (67%) rename testing/web-platform/tests/html/browsers/windows/{noreferrer.html => noreferrer-null-opener.html} (92%) create mode 100644 testing/web-platform/tests/html/browsers/windows/resources/browsing-context-window.html rename testing/web-platform/tests/html/browsers/windows/{support-window-name-echo.html => resources/echo-window-name.html} (100%) rename testing/web-platform/tests/html/browsers/windows/{support-nested-browsing-contexts.html => resources/nested-post-to-opener.html} (100%) rename testing/web-platform/tests/html/browsers/windows/{support-named-null-opener.html => resources/noreferrer-window-name.html} (100%) rename testing/web-platform/tests/html/browsers/windows/{support-post-to-opener.html => resources/post-to-opener.html} (100%) rename testing/web-platform/tests/html/browsers/windows/{support-open-cross-origin.sub.html => resources/target-cross-origin.sub.html} (63%) rename testing/web-platform/tests/html/browsers/windows/{support-close.html => resources/window-close-button.html} (100%) rename testing/web-platform/tests/html/browsers/windows/{support-opener-null.html => resources/window-opener.html} (100%) create mode 100644 testing/web-platform/tests/html/semantics/embedded-content/media-elements/ready-states/autoplay-with-slow-text-tracks.html create mode 100644 testing/web-platform/tests/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_allow_top_navigation_by_user_activation-manual.html create mode 100644 testing/web-platform/tests/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_allow_top_navigation_by_user_activation_without_user_gesture.html create mode 100644 testing/web-platform/tests/html/semantics/embedded-content/the-iframe-element/support/iframe-that-performs-top-navigation-without-user-gesture-failed.html create mode 100644 testing/web-platform/tests/html/semantics/embedded-content/the-iframe-element/support/iframe-that-performs-top-navigation.html create mode 100644 testing/web-platform/tests/html/semantics/embedded-content/the-iframe-element/support/navigation-changed-iframe.html create mode 100644 testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/crossorigin-common.js create mode 100644 testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/crossorigin-import-different.sub.html create mode 100644 testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/crossorigin-import-missingheader.sub.html create mode 100644 testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/crossorigin-import-same.sub.html create mode 100644 testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/crossorigin-import-wrongheader.sub.html create mode 100644 testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/crossorigin-root-different.sub.html create mode 100644 testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/crossorigin-root-missingheader.sub.html create mode 100644 testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/crossorigin-root-same.sub.html create mode 100644 testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/crossorigin-root-wrongheader.sub.html create mode 100644 testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/crossorigin-scripterror.js create mode 100644 testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/crossorigin.html create mode 100644 testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/errorhandling-parseerror-common.js create mode 100644 testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/errorhandling-parseerror-dependent.html create mode 100644 testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/errorhandling-parseerror-dependent.js create mode 100644 testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/errorhandling-parseerror-dependentmultiple.html create mode 100644 testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/errorhandling-parseerror-dependentmultiple.js create mode 100644 testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/errorhandling-parseerror-root.html create mode 100644 testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/errorhandling-wrongMimetype-import.js create mode 100644 testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/errorhandling-wrongMimetype.js create mode 100644 testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/errorhandling.html create mode 100644 testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/execorder-dynamicordered2.js create mode 100644 testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/execorder-dynamicordered3.js create mode 100644 testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/execorder-dynamicordered4.js create mode 100644 testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/execorder-dynamicunordered1.js create mode 100644 testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/execorder-dynamicunordered2.js create mode 100644 testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/execorder-parsedordered2.js create mode 100644 testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/execorder-parsedordered4.js create mode 100644 testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/execorder-parsedunordered1.js create mode 100644 testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/execorder-parsedunordered2.js create mode 100644 testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/execorder.html create mode 100644 testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/imports-a.js create mode 100644 testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/imports-b.js create mode 100644 testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/imports-cycle-a.js create mode 100644 testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/imports-cycle-b.js create mode 100644 testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/imports-cycle.js create mode 100644 testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/imports-inc-a.js create mode 100644 testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/imports-inc-ab.js create mode 100644 testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/imports-inc-b.js create mode 100644 testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/imports-self-inner.js create mode 100644 testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/imports-self.js create mode 100644 testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/imports.html delete mode 100644 testing/web-platform/tests/html/syntax/parsing-html-fragments/the-input-byte-stream-015.html delete mode 100644 testing/web-platform/tests/html/syntax/parsing-html-fragments/the-input-byte-stream-015.html.headers create mode 100644 testing/web-platform/tests/html/webappapis/scripting/events/compile-event-handler-settings-objects.html create mode 100644 testing/web-platform/tests/html/webappapis/scripting/events/resources/compiled-event-handler-settings-objects-support.html create mode 100644 testing/web-platform/tests/html/webappapis/scripting/events/resources/open-window.html create mode 100644 testing/web-platform/tests/html/webappapis/the-windoworworkerglobalscope-mixin/Worker_Self_Origin.html create mode 100644 testing/web-platform/tests/html/webappapis/the-windoworworkerglobalscope-mixin/support/WorkerSelfOriginSharedWorker.js create mode 100644 testing/web-platform/tests/html/webappapis/the-windoworworkerglobalscope-mixin/support/WorkerSelfOriginWorker.js create mode 100644 testing/web-platform/tests/infrastructure/reftest-wait-ref.html create mode 100644 testing/web-platform/tests/infrastructure/reftest-wait.html create mode 100644 testing/web-platform/tests/media/CanvasTest.ttf rename testing/web-platform/tests/mediacapture-streams/{MediaStreamTrack-end.https.html => MediaStreamTrack-end-manual.https.html} (100%) rename testing/web-platform/tests/notifications/{shownotification-resolve-manual.html => shownotification-resolve-manual.https.html} (100%) create mode 100644 testing/web-platform/tests/pointerevents/extension/idlharness.html create mode 100644 testing/web-platform/tests/pointerevents/extension/pointerevent_constructor.html create mode 100644 testing/web-platform/tests/pointerevents/pointerevent_click_during_capture-manual.html create mode 100644 testing/web-platform/tests/pointerevents/pointerevent_disabled_form_control-manual.html create mode 100644 testing/web-platform/tests/presentation-api/controlling-ua/PresentationConnection_onmessage-manual.html create mode 100644 testing/web-platform/tests/presentation-api/controlling-ua/PresentationConnection_send-manual.html create mode 100644 testing/web-platform/tests/presentation-api/controlling-ua/support/stash.js create mode 100644 testing/web-platform/tests/presentation-api/controlling-ua/support/stash.py create mode 100644 testing/web-platform/tests/presentation-api/receiving-ua/common.js create mode 100644 testing/web-platform/tests/presentation-api/receiving-ua/idlharness-manual.html rename testing/web-platform/tests/presentation-api/receiving-ua/{idlharness.html => support/idlharness_receiving-ua.html} (60%) create mode 100644 testing/web-platform/tests/presentation-api/receiving-ua/support/stash.js create mode 100644 testing/web-platform/tests/presentation-api/receiving-ua/support/stash.py create mode 100644 testing/web-platform/tests/selection/removeRange.html rename testing/web-platform/tests/service-workers/service-worker/{fetch-event-within-sw-manual.html => fetch-event-within-sw-manual.https.html} (100%) rename testing/web-platform/tests/service-workers/service-worker/{fetch-event-within-sw.html => fetch-event-within-sw.https.html} (100%) create mode 100644 testing/web-platform/tests/service-workers/service-worker/postmessage-blob-url.https.html create mode 100644 testing/web-platform/tests/service-workers/service-worker/resources/postmessage-blob-url.js create mode 100644 testing/web-platform/tests/storage/OWNERS create mode 100644 testing/web-platform/tests/storage/README.md create mode 100644 testing/web-platform/tests/storage/interfaces.html create mode 100644 testing/web-platform/tests/storage/interfaces.idl create mode 100644 testing/web-platform/tests/storage/interfaces.worker.js create mode 100644 testing/web-platform/tests/storage/opaque-origin.https.html rename testing/web-platform/tests/streams/readable-streams/{readable-stream-reader.dedicatedworker.html => default-reader.dedicatedworker.html} (56%) rename testing/web-platform/tests/streams/readable-streams/{readable-stream-reader.html => default-reader.html} (62%) rename testing/web-platform/tests/streams/readable-streams/{readable-stream-reader.js => default-reader.js} (82%) rename testing/web-platform/tests/streams/readable-streams/{readable-stream-reader.serviceworker.https.html => default-reader.serviceworker.https.html} (64%) rename testing/web-platform/tests/streams/readable-streams/{readable-stream-reader.sharedworker.html => default-reader.sharedworker.html} (56%) create mode 100644 testing/web-platform/tests/streams/writable-streams/reentrant-strategy.dedicatedworker.html create mode 100644 testing/web-platform/tests/streams/writable-streams/reentrant-strategy.html create mode 100644 testing/web-platform/tests/streams/writable-streams/reentrant-strategy.js create mode 100644 testing/web-platform/tests/streams/writable-streams/reentrant-strategy.serviceworker.https.html create mode 100644 testing/web-platform/tests/streams/writable-streams/reentrant-strategy.sharedworker.html create mode 100644 testing/web-platform/tests/tools/lint/tests/dummy/dependency.html create mode 100644 testing/web-platform/tests/tools/lint/tests/dummy/ref/absolute.html create mode 100644 testing/web-platform/tests/tools/lint/tests/dummy/ref/existent_relative-ref.html create mode 100644 testing/web-platform/tests/tools/lint/tests/dummy/ref/existent_relative.html create mode 100644 testing/web-platform/tests/tools/lint/tests/dummy/ref/existent_root_relative.html create mode 100644 testing/web-platform/tests/tools/lint/tests/dummy/ref/non_existent_relative.html create mode 100644 testing/web-platform/tests/tools/lint/tests/dummy/ref/non_existent_root_relative.html create mode 100644 testing/web-platform/tests/tools/lint/tests/dummy/ref/same_file_empty.html create mode 100644 testing/web-platform/tests/tools/lint/tests/dummy/ref/same_file_path.html create mode 100644 testing/web-platform/tests/url/failure.html create mode 100644 testing/web-platform/tests/web-animations/timing-model/animation-effects/local-time.html create mode 100644 testing/web-platform/tests/webrtc/rtcpeerconnection/setRemoteDescription.html create mode 100644 testing/web-platform/tests/webstorage/event_no_duplicates.html rename testing/web-platform/tests/webvtt/{webvtt-api-for-browsers/vttcue-interface => api/VTTCue}/align.html (71%) create mode 100644 testing/web-platform/tests/webvtt/api/VTTCue/constructor.html rename testing/web-platform/tests/webvtt/{webvtt-api-for-browsers/vttcue-interface => api/VTTCue}/getCueAsHTML.html (98%) rename testing/web-platform/tests/webvtt/{webvtt-api-for-browsers/vttcue-interface => api/VTTCue}/line.html (94%) create mode 100644 testing/web-platform/tests/webvtt/api/VTTCue/lineAlign.html create mode 100644 testing/web-platform/tests/webvtt/api/VTTCue/position.html create mode 100644 testing/web-platform/tests/webvtt/api/VTTCue/positionAlign.html create mode 100644 testing/web-platform/tests/webvtt/api/VTTCue/region.html create mode 100644 testing/web-platform/tests/webvtt/api/VTTCue/size.html rename testing/web-platform/tests/webvtt/{webvtt-api-for-browsers/vttcue-interface => api/VTTCue}/snapToLines.html (95%) rename testing/web-platform/tests/webvtt/{webvtt-api-for-browsers/vttcue-interface => api/VTTCue}/text.html (91%) rename testing/web-platform/tests/webvtt/{webvtt-api-for-browsers/vttcue-interface => api/VTTCue}/vertical.html (93%) create mode 100644 testing/web-platform/tests/webvtt/api/VTTRegion/constructor.html create mode 100644 testing/web-platform/tests/webvtt/api/VTTRegion/lines.html create mode 100644 testing/web-platform/tests/webvtt/api/VTTRegion/regionAnchorX.html create mode 100644 testing/web-platform/tests/webvtt/api/VTTRegion/regionAnchorY.html create mode 100644 testing/web-platform/tests/webvtt/api/VTTRegion/scroll.html create mode 100644 testing/web-platform/tests/webvtt/api/VTTRegion/viewportAnchorX.html create mode 100644 testing/web-platform/tests/webvtt/api/VTTRegion/viewportAnchorY.html create mode 100644 testing/web-platform/tests/webvtt/api/VTTRegion/width.html create mode 100644 testing/web-platform/tests/webvtt/parsing/README.md rename testing/web-platform/tests/webvtt/{webvtt-file-format-parsing/webvtt-cue-text-parsing-rules => parsing/cue-text-parsing}/buildtests.py (100%) rename testing/web-platform/tests/webvtt/{webvtt-file-format-parsing/webvtt-cue-text-parsing-rules => parsing/cue-text-parsing}/common.js (100%) rename testing/web-platform/tests/webvtt/{webvtt-file-format-parsing/webvtt-cue-text-parsing-rules => parsing/cue-text-parsing}/dat/entities.dat (100%) rename testing/web-platform/tests/webvtt/{webvtt-file-format-parsing/webvtt-cue-text-parsing-rules => parsing/cue-text-parsing}/dat/tags.dat (100%) rename testing/web-platform/tests/webvtt/{webvtt-file-format-parsing/webvtt-cue-text-parsing-rules => parsing/cue-text-parsing}/dat/timestamps.dat (100%) rename testing/web-platform/tests/webvtt/{webvtt-file-format-parsing/webvtt-cue-text-parsing-rules => parsing/cue-text-parsing}/dat/tree-building.dat (100%) rename testing/web-platform/tests/webvtt/{webvtt-file-format-parsing/webvtt-cue-text-parsing-rules => parsing/cue-text-parsing}/tests/entities.html (100%) rename testing/web-platform/tests/webvtt/{webvtt-file-format-parsing/webvtt-cue-text-parsing-rules => parsing/cue-text-parsing}/tests/tags.html (100%) rename testing/web-platform/tests/webvtt/{webvtt-file-format-parsing/webvtt-cue-text-parsing-rules => parsing/cue-text-parsing}/tests/timestamps.html (100%) rename testing/web-platform/tests/webvtt/{webvtt-file-format-parsing/webvtt-cue-text-parsing-rules => parsing/cue-text-parsing}/tests/tree-building.html (100%) create mode 100644 testing/web-platform/tests/webvtt/parsing/file-parsing/README.md create mode 100644 testing/web-platform/tests/webvtt/parsing/file-parsing/signature-invalid.html create mode 100644 testing/web-platform/tests/webvtt/parsing/file-parsing/support/arrows.test create mode 100644 testing/web-platform/tests/webvtt/parsing/file-parsing/support/empty.vtt create mode 100644 testing/web-platform/tests/webvtt/parsing/file-parsing/support/header-garbage.test create mode 100644 testing/web-platform/tests/webvtt/parsing/file-parsing/support/header-space.test create mode 100644 testing/web-platform/tests/webvtt/parsing/file-parsing/support/header-tab.test create mode 100644 testing/web-platform/tests/webvtt/parsing/file-parsing/support/header-timings.test create mode 100644 testing/web-platform/tests/webvtt/parsing/file-parsing/support/ids.test create mode 100644 testing/web-platform/tests/webvtt/parsing/file-parsing/support/newlines.test create mode 100644 testing/web-platform/tests/webvtt/parsing/file-parsing/support/nulls.test create mode 100644 testing/web-platform/tests/webvtt/parsing/file-parsing/support/regions-id.test create mode 100644 testing/web-platform/tests/webvtt/parsing/file-parsing/support/regions-lines.test create mode 100644 testing/web-platform/tests/webvtt/parsing/file-parsing/support/regions-old.test create mode 100644 testing/web-platform/tests/webvtt/parsing/file-parsing/support/regions-regionanchor.test create mode 100644 testing/web-platform/tests/webvtt/parsing/file-parsing/support/regions-scroll.test create mode 100644 testing/web-platform/tests/webvtt/parsing/file-parsing/support/regions-viewportanchor.test create mode 100644 testing/web-platform/tests/webvtt/parsing/file-parsing/support/settings-align.test create mode 100644 testing/web-platform/tests/webvtt/parsing/file-parsing/support/settings-line.test create mode 100644 testing/web-platform/tests/webvtt/parsing/file-parsing/support/settings-multiple.test create mode 100644 testing/web-platform/tests/webvtt/parsing/file-parsing/support/settings-position.test create mode 100644 testing/web-platform/tests/webvtt/parsing/file-parsing/support/settings-region.test create mode 100644 testing/web-platform/tests/webvtt/parsing/file-parsing/support/settings-size.test create mode 100644 testing/web-platform/tests/webvtt/parsing/file-parsing/support/settings-vertical.test create mode 100644 testing/web-platform/tests/webvtt/parsing/file-parsing/support/signature-bom.test rename testing/web-platform/tests/webvtt/{webvtt-file-format-parsing/webvtt-file-parsing => parsing/file-parsing}/support/signature-formfeed.vtt (100%) create mode 100644 testing/web-platform/tests/webvtt/parsing/file-parsing/support/signature-invalid-whitespace.vtt create mode 100644 testing/web-platform/tests/webvtt/parsing/file-parsing/support/signature-invalid.vtt rename testing/web-platform/tests/webvtt/{webvtt-file-format-parsing/webvtt-file-parsing => parsing/file-parsing}/support/signature-lowercase.vtt (100%) create mode 100644 testing/web-platform/tests/webvtt/parsing/file-parsing/support/signature-missing-whitespace.vtt rename testing/web-platform/tests/webvtt/{webvtt-file-format-parsing/webvtt-file-parsing/support/no-signature.vtt => parsing/file-parsing/support/signature-missing.vtt} (78%) create mode 100644 testing/web-platform/tests/webvtt/parsing/file-parsing/support/signature-no-newline.test rename testing/web-platform/tests/webvtt/{webvtt-file-format-parsing/webvtt-file-parsing => parsing/file-parsing}/support/signature-null.vtt (100%) rename testing/web-platform/tests/webvtt/{webvtt-file-format-parsing/webvtt-file-parsing/support/signature-too-short.vtt => parsing/file-parsing/support/signature-partial.vtt} (100%) create mode 100644 testing/web-platform/tests/webvtt/parsing/file-parsing/support/signature-space-no-newline.test create mode 100644 testing/web-platform/tests/webvtt/parsing/file-parsing/support/signature-space.test create mode 100644 testing/web-platform/tests/webvtt/parsing/file-parsing/support/signature-tab-no-newline.test create mode 100644 testing/web-platform/tests/webvtt/parsing/file-parsing/support/signature-tab.test create mode 100644 testing/web-platform/tests/webvtt/parsing/file-parsing/support/signature-timings.test rename testing/web-platform/tests/webvtt/{webvtt-file-format-parsing/webvtt-file-parsing => parsing/file-parsing}/support/signature-two-boms.vtt (100%) rename testing/web-platform/tests/webvtt/{webvtt-file-format-parsing/webvtt-file-parsing => parsing/file-parsing}/support/signature-websrt.vtt (100%) create mode 100644 testing/web-platform/tests/webvtt/parsing/file-parsing/support/stylesheets.test create mode 100644 testing/web-platform/tests/webvtt/parsing/file-parsing/support/timings-60.test create mode 100644 testing/web-platform/tests/webvtt/parsing/file-parsing/support/timings-eof.test create mode 100644 testing/web-platform/tests/webvtt/parsing/file-parsing/support/timings-garbage.test create mode 100644 testing/web-platform/tests/webvtt/parsing/file-parsing/support/timings-negative.test create mode 100644 testing/web-platform/tests/webvtt/parsing/file-parsing/support/timings-omitted-hours.test create mode 100644 testing/web-platform/tests/webvtt/parsing/file-parsing/support/timings-too-long.test create mode 100644 testing/web-platform/tests/webvtt/parsing/file-parsing/support/timings-too-short.test create mode 100644 testing/web-platform/tests/webvtt/parsing/file-parsing/support/whitespace-chars.test create mode 100644 testing/web-platform/tests/webvtt/parsing/file-parsing/tests/arrows.html create mode 100644 testing/web-platform/tests/webvtt/parsing/file-parsing/tests/header-garbage.html create mode 100644 testing/web-platform/tests/webvtt/parsing/file-parsing/tests/header-space.html create mode 100644 testing/web-platform/tests/webvtt/parsing/file-parsing/tests/header-tab.html create mode 100644 testing/web-platform/tests/webvtt/parsing/file-parsing/tests/header-timings.html create mode 100644 testing/web-platform/tests/webvtt/parsing/file-parsing/tests/ids.html create mode 100644 testing/web-platform/tests/webvtt/parsing/file-parsing/tests/newlines.html create mode 100644 testing/web-platform/tests/webvtt/parsing/file-parsing/tests/nulls.html create mode 100644 testing/web-platform/tests/webvtt/parsing/file-parsing/tests/regions-id.html create mode 100644 testing/web-platform/tests/webvtt/parsing/file-parsing/tests/regions-lines.html create mode 100644 testing/web-platform/tests/webvtt/parsing/file-parsing/tests/regions-old.html create mode 100644 testing/web-platform/tests/webvtt/parsing/file-parsing/tests/regions-regionanchor.html create mode 100644 testing/web-platform/tests/webvtt/parsing/file-parsing/tests/regions-scroll.html create mode 100644 testing/web-platform/tests/webvtt/parsing/file-parsing/tests/regions-viewportanchor.html create mode 100644 testing/web-platform/tests/webvtt/parsing/file-parsing/tests/settings-align.html create mode 100644 testing/web-platform/tests/webvtt/parsing/file-parsing/tests/settings-line.html create mode 100644 testing/web-platform/tests/webvtt/parsing/file-parsing/tests/settings-multiple.html create mode 100644 testing/web-platform/tests/webvtt/parsing/file-parsing/tests/settings-position.html create mode 100644 testing/web-platform/tests/webvtt/parsing/file-parsing/tests/settings-region.html create mode 100644 testing/web-platform/tests/webvtt/parsing/file-parsing/tests/settings-size.html create mode 100644 testing/web-platform/tests/webvtt/parsing/file-parsing/tests/settings-vertical.html create mode 100644 testing/web-platform/tests/webvtt/parsing/file-parsing/tests/signature-bom.html create mode 100644 testing/web-platform/tests/webvtt/parsing/file-parsing/tests/signature-no-newline.html create mode 100644 testing/web-platform/tests/webvtt/parsing/file-parsing/tests/signature-space-no-newline.html create mode 100644 testing/web-platform/tests/webvtt/parsing/file-parsing/tests/signature-space.html create mode 100644 testing/web-platform/tests/webvtt/parsing/file-parsing/tests/signature-tab-no-newline.html create mode 100644 testing/web-platform/tests/webvtt/parsing/file-parsing/tests/signature-tab.html create mode 100644 testing/web-platform/tests/webvtt/parsing/file-parsing/tests/signature-timings.html create mode 100644 testing/web-platform/tests/webvtt/parsing/file-parsing/tests/stylesheets.html rename testing/web-platform/tests/webvtt/{webvtt-file-format-parsing/webvtt-file-parsing => parsing/file-parsing/tests}/support/arrows.vtt (64%) rename testing/web-platform/tests/webvtt/{webvtt-file-format-parsing/webvtt-file-parsing => parsing/file-parsing/tests}/support/header-garbage.vtt (91%) rename testing/web-platform/tests/webvtt/{webvtt-file-format-parsing/webvtt-file-parsing => parsing/file-parsing/tests}/support/header-space.vtt (90%) rename testing/web-platform/tests/webvtt/{webvtt-file-format-parsing/webvtt-file-parsing => parsing/file-parsing/tests}/support/header-tab.vtt (88%) rename testing/web-platform/tests/webvtt/{webvtt-file-format-parsing/webvtt-file-parsing => parsing/file-parsing/tests}/support/header-timings.vtt (90%) rename testing/web-platform/tests/webvtt/{webvtt-file-format-parsing/webvtt-file-parsing => parsing/file-parsing/tests}/support/ids.vtt (70%) rename testing/web-platform/tests/webvtt/{webvtt-file-format-parsing/webvtt-file-parsing => parsing/file-parsing/tests}/support/newlines.vtt (52%) rename testing/web-platform/tests/webvtt/{webvtt-file-format-parsing/webvtt-file-parsing => parsing/file-parsing/tests}/support/nulls.vtt (81%) create mode 100644 testing/web-platform/tests/webvtt/parsing/file-parsing/tests/support/regions-id.vtt create mode 100644 testing/web-platform/tests/webvtt/parsing/file-parsing/tests/support/regions-lines.vtt create mode 100644 testing/web-platform/tests/webvtt/parsing/file-parsing/tests/support/regions-old.vtt create mode 100644 testing/web-platform/tests/webvtt/parsing/file-parsing/tests/support/regions-regionanchor.vtt create mode 100644 testing/web-platform/tests/webvtt/parsing/file-parsing/tests/support/regions-scroll.vtt create mode 100644 testing/web-platform/tests/webvtt/parsing/file-parsing/tests/support/regions-viewportanchor.vtt rename testing/web-platform/tests/webvtt/{webvtt-file-format-parsing/webvtt-file-parsing => parsing/file-parsing/tests}/support/settings-align.vtt (97%) rename testing/web-platform/tests/webvtt/{webvtt-file-format-parsing/webvtt-file-parsing => parsing/file-parsing/tests}/support/settings-line.vtt (66%) rename testing/web-platform/tests/webvtt/{webvtt-file-format-parsing/webvtt-file-parsing => parsing/file-parsing/tests}/support/settings-multiple.vtt (52%) create mode 100644 testing/web-platform/tests/webvtt/parsing/file-parsing/tests/support/settings-position.vtt create mode 100644 testing/web-platform/tests/webvtt/parsing/file-parsing/tests/support/settings-region.vtt rename testing/web-platform/tests/webvtt/{webvtt-file-format-parsing/webvtt-file-parsing => parsing/file-parsing/tests}/support/settings-size.vtt (62%) rename testing/web-platform/tests/webvtt/{webvtt-file-format-parsing/webvtt-file-parsing => parsing/file-parsing/tests}/support/settings-vertical.vtt (67%) rename testing/web-platform/tests/webvtt/{webvtt-file-format-parsing/webvtt-file-parsing => parsing/file-parsing/tests}/support/signature-bom.vtt (100%) rename testing/web-platform/tests/webvtt/{webvtt-file-format-parsing/webvtt-file-parsing => parsing/file-parsing/tests}/support/signature-no-newline.vtt (100%) rename testing/web-platform/tests/webvtt/{webvtt-file-format-parsing/webvtt-file-parsing => parsing/file-parsing/tests}/support/signature-space-no-newline.vtt (100%) rename testing/web-platform/tests/webvtt/{webvtt-file-format-parsing/webvtt-file-parsing => parsing/file-parsing/tests}/support/signature-space.vtt (100%) rename testing/web-platform/tests/webvtt/{webvtt-file-format-parsing/webvtt-file-parsing => parsing/file-parsing/tests}/support/signature-tab-no-newline.vtt (100%) rename testing/web-platform/tests/webvtt/{webvtt-file-format-parsing/webvtt-file-parsing => parsing/file-parsing/tests}/support/signature-tab.vtt (100%) rename testing/web-platform/tests/webvtt/{webvtt-file-format-parsing/webvtt-file-parsing => parsing/file-parsing/tests}/support/signature-timings.vtt (84%) create mode 100644 testing/web-platform/tests/webvtt/parsing/file-parsing/tests/support/stylesheets.vtt rename testing/web-platform/tests/webvtt/{webvtt-file-format-parsing/webvtt-file-parsing => parsing/file-parsing/tests}/support/timings-60.vtt (69%) create mode 100644 testing/web-platform/tests/webvtt/parsing/file-parsing/tests/support/timings-eof.vtt rename testing/web-platform/tests/webvtt/{webvtt-file-format-parsing/webvtt-file-parsing => parsing/file-parsing/tests}/support/timings-garbage.vtt (79%) rename testing/web-platform/tests/webvtt/{webvtt-file-format-parsing/webvtt-file-parsing => parsing/file-parsing/tests}/support/timings-negative.vtt (51%) rename testing/web-platform/tests/webvtt/{webvtt-file-format-parsing/webvtt-file-parsing/support/omitted-hours.vtt => parsing/file-parsing/tests/support/timings-omitted-hours.vtt} (83%) rename testing/web-platform/tests/webvtt/{webvtt-file-format-parsing/webvtt-file-parsing => parsing/file-parsing/tests}/support/timings-too-long.vtt (79%) rename testing/web-platform/tests/webvtt/{webvtt-file-format-parsing/webvtt-file-parsing => parsing/file-parsing/tests}/support/timings-too-short.vtt (75%) rename testing/web-platform/tests/webvtt/{webvtt-file-format-parsing/webvtt-file-parsing/support/space-chars.vtt => parsing/file-parsing/tests/support/whitespace-chars.vtt} (78%) create mode 100644 testing/web-platform/tests/webvtt/parsing/file-parsing/tests/timings-60.html create mode 100644 testing/web-platform/tests/webvtt/parsing/file-parsing/tests/timings-eof.html create mode 100644 testing/web-platform/tests/webvtt/parsing/file-parsing/tests/timings-garbage.html create mode 100644 testing/web-platform/tests/webvtt/parsing/file-parsing/tests/timings-negative.html create mode 100644 testing/web-platform/tests/webvtt/parsing/file-parsing/tests/timings-omitted-hours.html create mode 100644 testing/web-platform/tests/webvtt/parsing/file-parsing/tests/timings-too-long.html create mode 100644 testing/web-platform/tests/webvtt/parsing/file-parsing/tests/timings-too-short.html create mode 100644 testing/web-platform/tests/webvtt/parsing/file-parsing/tests/whitespace-chars.html create mode 100644 testing/web-platform/tests/webvtt/parsing/file-parsing/tools/build.py create mode 100644 testing/web-platform/tests/webvtt/parsing/file-parsing/tools/parser.py create mode 100644 testing/web-platform/tests/webvtt/parsing/file-parsing/tools/spec_report.py delete mode 100644 testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-file-parsing/001.html delete mode 100644 testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/cue-counts.json delete mode 100644 testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/settings-position.vtt create mode 100644 testing/web-platform/tests/workers/SharedWorker_blobUrl.html create mode 100644 testing/web-platform/tests/workers/support/WorkerFetchURL.js diff --git a/testing/web-platform/meta/MANIFEST.json b/testing/web-platform/meta/MANIFEST.json index 23a06eb0d0e1..26b6b5d20360 100644 --- a/testing/web-platform/meta/MANIFEST.json +++ b/testing/web-platform/meta/MANIFEST.json @@ -283,6 +283,18 @@ {} ] ], + "fullscreen/api/document-exit-fullscreen-nested-in-iframe-manual.html": [ + [ + "/fullscreen/api/document-exit-fullscreen-nested-in-iframe-manual.html", + {} + ] + ], + "fullscreen/api/document-exit-fullscreen-nested-manual.html": [ + [ + "/fullscreen/api/document-exit-fullscreen-nested-manual.html", + {} + ] + ], "fullscreen/api/document-exit-fullscreen-timing-manual.html": [ [ "/fullscreen/api/document-exit-fullscreen-timing-manual.html", @@ -901,6 +913,12 @@ {} ] ], + "html/browsers/windows/noreferrer-cross-origin-window-name-manual.sub.html": [ + [ + "/html/browsers/windows/noreferrer-cross-origin-window-name-manual.sub.html", + {} + ] + ], "html/browsers/windows/targeting-multiple-cross-origin-manual.sub.html": [ [ "/html/browsers/windows/targeting-multiple-cross-origin-manual.sub.html", @@ -1435,6 +1453,12 @@ {} ] ], + "html/semantics/embedded-content/the-iframe-element/iframe_sandbox_allow_top_navigation_by_user_activation-manual.html": [ + [ + "/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_allow_top_navigation_by_user_activation-manual.html", + {} + ] + ], "html/semantics/forms/attributes-common-to-form-controls/dirname-rtl-manual.html": [ [ "/html/semantics/forms/attributes-common-to-form-controls/dirname-rtl-manual.html", @@ -1603,6 +1627,12 @@ {} ] ], + "mediacapture-streams/MediaStreamTrack-end-manual.https.html": [ + [ + "/mediacapture-streams/MediaStreamTrack-end-manual.https.html", + {} + ] + ], "notifications/body-basic-manual.html": [ [ "/notifications/body-basic-manual.html", @@ -1657,9 +1687,9 @@ {} ] ], - "notifications/shownotification-resolve-manual.html": [ + "notifications/shownotification-resolve-manual.https.html": [ [ - "/notifications/shownotification-resolve-manual.html", + "/notifications/shownotification-resolve-manual.https.html", {} ] ], @@ -2023,6 +2053,18 @@ {} ] ], + "pointerevents/pointerevent_click_during_capture-manual.html": [ + [ + "/pointerevents/pointerevent_click_during_capture-manual.html", + {} + ] + ], + "pointerevents/pointerevent_disabled_form_control-manual.html": [ + [ + "/pointerevents/pointerevent_disabled_form_control-manual.html", + {} + ] + ], "pointerevents/pointerevent_element_haspointercapture-manual.html": [ [ "/pointerevents/pointerevent_element_haspointercapture-manual.html", @@ -2437,12 +2479,24 @@ {} ] ], + "presentation-api/controlling-ua/PresentationConnection_onmessage-manual.html": [ + [ + "/presentation-api/controlling-ua/PresentationConnection_onmessage-manual.html", + {} + ] + ], "presentation-api/controlling-ua/PresentationConnection_onterminated-manual.html": [ [ "/presentation-api/controlling-ua/PresentationConnection_onterminated-manual.html", {} ] ], + "presentation-api/controlling-ua/PresentationConnection_send-manual.html": [ + [ + "/presentation-api/controlling-ua/PresentationConnection_send-manual.html", + {} + ] + ], "presentation-api/controlling-ua/PresentationRequest_onconnectionavailable-manual.html": [ [ "/presentation-api/controlling-ua/PresentationRequest_onconnectionavailable-manual.html", @@ -2491,6 +2545,12 @@ {} ] ], + "presentation-api/receiving-ua/idlharness-manual.html": [ + [ + "/presentation-api/receiving-ua/idlharness-manual.html", + {} + ] + ], "quirks-mode/active-and-hover-manual.html": [ [ "/quirks-mode/active-and-hover-manual.html", @@ -2509,9 +2569,9 @@ {} ] ], - "service-workers/service-worker/fetch-event-within-sw-manual.html": [ + "service-workers/service-worker/fetch-event-within-sw-manual.https.html": [ [ - "/service-workers/service-worker/fetch-event-within-sw-manual.html", + "/service-workers/service-worker/fetch-event-within-sw-manual.https.html", {} ] ], @@ -9129,6 +9189,18 @@ {} ] ], + "infrastructure/reftest-wait.html": [ + [ + "/infrastructure/reftest-wait.html", + [ + [ + "/infrastructure/reftest-wait-ref.html", + "==" + ] + ], + {} + ] + ], "mathml/presentation-markup/spaces/space-2.html": [ [ "/mathml/presentation-markup/spaces/space-2.html", @@ -14869,6 +14941,11 @@ {} ] ], + "XMLHttpRequest/README.md": [ + [ + {} + ] + ], "XMLHttpRequest/abort-during-open.js": [ [ {} @@ -14879,11 +14956,6 @@ {} ] ], - "XMLHttpRequest/readme.txt": [ - [ - {} - ] - ], "XMLHttpRequest/resources/accept-language.py": [ [ {} @@ -14974,6 +15046,11 @@ {} ] ], + "XMLHttpRequest/resources/echo-headers.py": [ + [ + {} + ] + ], "XMLHttpRequest/resources/echo-method.py": [ [ {} @@ -14999,6 +15076,21 @@ {} ] ], + "XMLHttpRequest/resources/header-content-length.asis": [ + [ + {} + ] + ], + "XMLHttpRequest/resources/headers-basic.asis": [ + [ + {} + ] + ], + "XMLHttpRequest/resources/headers.asis": [ + [ + {} + ] + ], "XMLHttpRequest/resources/headers.py": [ [ {} @@ -41259,6 +41351,16 @@ {} ] ], + "content-security-policy/securitypolicyviolation/support/inside-worker.sub.js": [ + [ + {} + ] + ], + "content-security-policy/securitypolicyviolation/support/inside-worker.sub.js.headers": [ + [ + {} + ] + ], "content-security-policy/style-src/3_3.css": [ [ {} @@ -41334,6 +41436,11 @@ {} ] ], + "content-security-policy/support/inject-image.sub.js": [ + [ + {} + ] + ], "content-security-policy/support/logTest.sub.js": [ [ {} @@ -41359,6 +41466,11 @@ {} ] ], + "content-security-policy/support/resource.py": [ + [ + {} + ] + ], "content-security-policy/support/siblingPath.js": [ [ {} @@ -41429,11 +41541,21 @@ {} ] ], + "cors/README.md": [ + [ + {} + ] + ], "cors/resources/.gitignore": [ [ {} ] ], + "cors/resources/304.py": [ + [ + {} + ] + ], "cors/resources/checkandremove.py": [ [ {} @@ -43264,6 +43386,11 @@ {} ] ], + "fetch/README.md": [ + [ + {} + ] + ], "fetch/api/basic/accept-header.js": [ [ {} @@ -43354,6 +43481,11 @@ {} ] ], + "fetch/api/cors/cors-expose-star.js": [ + [ + {} + ] + ], "fetch/api/cors/cors-filtering.js": [ [ {} @@ -43384,6 +43516,11 @@ {} ] ], + "fetch/api/cors/cors-preflight-star.js": [ + [ + {} + ] + ], "fetch/api/cors/cors-preflight-status.js": [ [ {} @@ -45179,6 +45316,11 @@ {} ] ], + "html/browsers/offline/no-appcache-in-shared-workers-historical.js": [ + [ + {} + ] + ], "html/browsers/offline/resources/css/clock.css": [ [ {} @@ -45539,7 +45681,42 @@ {} ] ], - "html/browsers/windows/noreferrer-cross-origin-window-name.sub.html": [ + "html/browsers/windows/resources/browsing-context-window.html": [ + [ + {} + ] + ], + "html/browsers/windows/resources/echo-window-name.html": [ + [ + {} + ] + ], + "html/browsers/windows/resources/nested-post-to-opener.html": [ + [ + {} + ] + ], + "html/browsers/windows/resources/noreferrer-window-name.html": [ + [ + {} + ] + ], + "html/browsers/windows/resources/post-to-opener.html": [ + [ + {} + ] + ], + "html/browsers/windows/resources/target-cross-origin.sub.html": [ + [ + {} + ] + ], + "html/browsers/windows/resources/window-close-button.html": [ + [ + {} + ] + ], + "html/browsers/windows/resources/window-opener.html": [ [ {} ] @@ -45554,41 +45731,6 @@ {} ] ], - "html/browsers/windows/support-close.html": [ - [ - {} - ] - ], - "html/browsers/windows/support-named-null-opener.html": [ - [ - {} - ] - ], - "html/browsers/windows/support-nested-browsing-contexts.html": [ - [ - {} - ] - ], - "html/browsers/windows/support-open-cross-origin.sub.html": [ - [ - {} - ] - ], - "html/browsers/windows/support-opener-null.html": [ - [ - {} - ] - ], - "html/browsers/windows/support-post-to-opener.html": [ - [ - {} - ] - ], - "html/browsers/windows/support-window-name-echo.html": [ - [ - {} - ] - ], "html/dom/.gitkeep": [ [ {} @@ -52444,6 +52586,21 @@ {} ] ], + "html/semantics/embedded-content/the-iframe-element/support/iframe-that-performs-top-navigation-without-user-gesture-failed.html": [ + [ + {} + ] + ], + "html/semantics/embedded-content/the-iframe-element/support/iframe-that-performs-top-navigation.html": [ + [ + {} + ] + ], + "html/semantics/embedded-content/the-iframe-element/support/navigation-changed-iframe.html": [ + [ + {} + ] + ], "html/semantics/embedded-content/the-iframe-element/support/sandbox_allow_script.html": [ [ {} @@ -53114,6 +53271,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": [ [ {} @@ -53784,11 +54126,6 @@ {} ] ], - "html/syntax/parsing-html-fragments/the-input-byte-stream-015.html.headers": [ - [ - {} - ] - ], "html/syntax/parsing-html-fragments/the-input-byte-stream-016.html.headers": [ [ {} @@ -54069,6 +54406,16 @@ {} ] ], + "html/webappapis/scripting/events/resources/compiled-event-handler-settings-objects-support.html": [ + [ + {} + ] + ], + "html/webappapis/scripting/events/resources/open-window.html": [ + [ + {} + ] + ], "html/webappapis/scripting/introduction-5/.gitkeep": [ [ {} @@ -54154,6 +54501,16 @@ {} ] ], + "html/webappapis/the-windoworworkerglobalscope-mixin/support/WorkerSelfOriginSharedWorker.js": [ + [ + {} + ] + ], + "html/webappapis/the-windoworworkerglobalscope-mixin/support/WorkerSelfOriginWorker.js": [ + [ + {} + ] + ], "html/webappapis/timers/.gitkeep": [ [ {} @@ -54379,6 +54736,11 @@ {} ] ], + "infrastructure/reftest-wait-ref.html": [ + [ + {} + ] + ], "innerText/getter-tests.js": [ [ {} @@ -54939,6 +55301,11 @@ {} ] ], + "media/CanvasTest.ttf": [ + [ + {} + ] + ], "media/OWNERS": [ [ {} @@ -57189,6 +57556,36 @@ {} ] ], + "presentation-api/controlling-ua/support/stash.js": [ + [ + {} + ] + ], + "presentation-api/controlling-ua/support/stash.py": [ + [ + {} + ] + ], + "presentation-api/receiving-ua/common.js": [ + [ + {} + ] + ], + "presentation-api/receiving-ua/support/idlharness_receiving-ua.html": [ + [ + {} + ] + ], + "presentation-api/receiving-ua/support/stash.js": [ + [ + {} + ] + ], + "presentation-api/receiving-ua/support/stash.py": [ + [ + {} + ] + ], "progress-events/Status.html": [ [ {} @@ -60734,6 +61131,11 @@ {} ] ], + "service-workers/service-worker/resources/postmessage-blob-url.js": [ + [ + {} + ] + ], "service-workers/service-worker/resources/postmessage-msgport-to-client-worker.js": [ [ {} @@ -61019,6 +61421,21 @@ {} ] ], + "storage/OWNERS": [ + [ + {} + ] + ], + "storage/README.md": [ + [ + {} + ] + ], + "storage/interfaces.idl": [ + [ + {} + ] + ], "streams/OWNERS": [ [ {} @@ -61119,6 +61536,11 @@ {} ] ], + "streams/readable-streams/default-reader.js": [ + [ + {} + ] + ], "streams/readable-streams/floating-point-total-queue-size.js": [ [ {} @@ -61139,11 +61561,6 @@ {} ] ], - "streams/readable-streams/readable-stream-reader.js": [ - [ - {} - ] - ], "streams/readable-streams/tee.js": [ [ {} @@ -61224,6 +61641,11 @@ {} ] ], + "streams/writable-streams/reentrant-strategy.js": [ + [ + {} + ] + ], "streams/writable-streams/start.js": [ [ {} @@ -70929,6 +71351,486 @@ {} ] ], + "webvtt/parsing/README.md": [ + [ + {} + ] + ], + "webvtt/parsing/cue-text-parsing/buildtests.py": [ + [ + {} + ] + ], + "webvtt/parsing/cue-text-parsing/common.js": [ + [ + {} + ] + ], + "webvtt/parsing/cue-text-parsing/dat/entities.dat": [ + [ + {} + ] + ], + "webvtt/parsing/cue-text-parsing/dat/tags.dat": [ + [ + {} + ] + ], + "webvtt/parsing/cue-text-parsing/dat/timestamps.dat": [ + [ + {} + ] + ], + "webvtt/parsing/cue-text-parsing/dat/tree-building.dat": [ + [ + {} + ] + ], + "webvtt/parsing/file-parsing/README.md": [ + [ + {} + ] + ], + "webvtt/parsing/file-parsing/support/arrows.test": [ + [ + {} + ] + ], + "webvtt/parsing/file-parsing/support/empty.vtt": [ + [ + {} + ] + ], + "webvtt/parsing/file-parsing/support/header-garbage.test": [ + [ + {} + ] + ], + "webvtt/parsing/file-parsing/support/header-space.test": [ + [ + {} + ] + ], + "webvtt/parsing/file-parsing/support/header-tab.test": [ + [ + {} + ] + ], + "webvtt/parsing/file-parsing/support/header-timings.test": [ + [ + {} + ] + ], + "webvtt/parsing/file-parsing/support/ids.test": [ + [ + {} + ] + ], + "webvtt/parsing/file-parsing/support/newlines.test": [ + [ + {} + ] + ], + "webvtt/parsing/file-parsing/support/nulls.test": [ + [ + {} + ] + ], + "webvtt/parsing/file-parsing/support/regions-id.test": [ + [ + {} + ] + ], + "webvtt/parsing/file-parsing/support/regions-lines.test": [ + [ + {} + ] + ], + "webvtt/parsing/file-parsing/support/regions-old.test": [ + [ + {} + ] + ], + "webvtt/parsing/file-parsing/support/regions-regionanchor.test": [ + [ + {} + ] + ], + "webvtt/parsing/file-parsing/support/regions-scroll.test": [ + [ + {} + ] + ], + "webvtt/parsing/file-parsing/support/regions-viewportanchor.test": [ + [ + {} + ] + ], + "webvtt/parsing/file-parsing/support/settings-align.test": [ + [ + {} + ] + ], + "webvtt/parsing/file-parsing/support/settings-line.test": [ + [ + {} + ] + ], + "webvtt/parsing/file-parsing/support/settings-multiple.test": [ + [ + {} + ] + ], + "webvtt/parsing/file-parsing/support/settings-position.test": [ + [ + {} + ] + ], + "webvtt/parsing/file-parsing/support/settings-region.test": [ + [ + {} + ] + ], + "webvtt/parsing/file-parsing/support/settings-size.test": [ + [ + {} + ] + ], + "webvtt/parsing/file-parsing/support/settings-vertical.test": [ + [ + {} + ] + ], + "webvtt/parsing/file-parsing/support/signature-bom.test": [ + [ + {} + ] + ], + "webvtt/parsing/file-parsing/support/signature-formfeed.vtt": [ + [ + {} + ] + ], + "webvtt/parsing/file-parsing/support/signature-invalid-whitespace.vtt": [ + [ + {} + ] + ], + "webvtt/parsing/file-parsing/support/signature-invalid.vtt": [ + [ + {} + ] + ], + "webvtt/parsing/file-parsing/support/signature-lowercase.vtt": [ + [ + {} + ] + ], + "webvtt/parsing/file-parsing/support/signature-missing-whitespace.vtt": [ + [ + {} + ] + ], + "webvtt/parsing/file-parsing/support/signature-missing.vtt": [ + [ + {} + ] + ], + "webvtt/parsing/file-parsing/support/signature-no-newline.test": [ + [ + {} + ] + ], + "webvtt/parsing/file-parsing/support/signature-null.vtt": [ + [ + {} + ] + ], + "webvtt/parsing/file-parsing/support/signature-partial.vtt": [ + [ + {} + ] + ], + "webvtt/parsing/file-parsing/support/signature-space-no-newline.test": [ + [ + {} + ] + ], + "webvtt/parsing/file-parsing/support/signature-space.test": [ + [ + {} + ] + ], + "webvtt/parsing/file-parsing/support/signature-tab-no-newline.test": [ + [ + {} + ] + ], + "webvtt/parsing/file-parsing/support/signature-tab.test": [ + [ + {} + ] + ], + "webvtt/parsing/file-parsing/support/signature-timings.test": [ + [ + {} + ] + ], + "webvtt/parsing/file-parsing/support/signature-two-boms.vtt": [ + [ + {} + ] + ], + "webvtt/parsing/file-parsing/support/signature-websrt.vtt": [ + [ + {} + ] + ], + "webvtt/parsing/file-parsing/support/stylesheets.test": [ + [ + {} + ] + ], + "webvtt/parsing/file-parsing/support/timings-60.test": [ + [ + {} + ] + ], + "webvtt/parsing/file-parsing/support/timings-eof.test": [ + [ + {} + ] + ], + "webvtt/parsing/file-parsing/support/timings-garbage.test": [ + [ + {} + ] + ], + "webvtt/parsing/file-parsing/support/timings-negative.test": [ + [ + {} + ] + ], + "webvtt/parsing/file-parsing/support/timings-omitted-hours.test": [ + [ + {} + ] + ], + "webvtt/parsing/file-parsing/support/timings-too-long.test": [ + [ + {} + ] + ], + "webvtt/parsing/file-parsing/support/timings-too-short.test": [ + [ + {} + ] + ], + "webvtt/parsing/file-parsing/support/whitespace-chars.test": [ + [ + {} + ] + ], + "webvtt/parsing/file-parsing/tests/support/arrows.vtt": [ + [ + {} + ] + ], + "webvtt/parsing/file-parsing/tests/support/header-garbage.vtt": [ + [ + {} + ] + ], + "webvtt/parsing/file-parsing/tests/support/header-space.vtt": [ + [ + {} + ] + ], + "webvtt/parsing/file-parsing/tests/support/header-tab.vtt": [ + [ + {} + ] + ], + "webvtt/parsing/file-parsing/tests/support/header-timings.vtt": [ + [ + {} + ] + ], + "webvtt/parsing/file-parsing/tests/support/ids.vtt": [ + [ + {} + ] + ], + "webvtt/parsing/file-parsing/tests/support/newlines.vtt": [ + [ + {} + ] + ], + "webvtt/parsing/file-parsing/tests/support/nulls.vtt": [ + [ + {} + ] + ], + "webvtt/parsing/file-parsing/tests/support/regions-id.vtt": [ + [ + {} + ] + ], + "webvtt/parsing/file-parsing/tests/support/regions-lines.vtt": [ + [ + {} + ] + ], + "webvtt/parsing/file-parsing/tests/support/regions-old.vtt": [ + [ + {} + ] + ], + "webvtt/parsing/file-parsing/tests/support/regions-regionanchor.vtt": [ + [ + {} + ] + ], + "webvtt/parsing/file-parsing/tests/support/regions-scroll.vtt": [ + [ + {} + ] + ], + "webvtt/parsing/file-parsing/tests/support/regions-viewportanchor.vtt": [ + [ + {} + ] + ], + "webvtt/parsing/file-parsing/tests/support/settings-align.vtt": [ + [ + {} + ] + ], + "webvtt/parsing/file-parsing/tests/support/settings-line.vtt": [ + [ + {} + ] + ], + "webvtt/parsing/file-parsing/tests/support/settings-multiple.vtt": [ + [ + {} + ] + ], + "webvtt/parsing/file-parsing/tests/support/settings-position.vtt": [ + [ + {} + ] + ], + "webvtt/parsing/file-parsing/tests/support/settings-region.vtt": [ + [ + {} + ] + ], + "webvtt/parsing/file-parsing/tests/support/settings-size.vtt": [ + [ + {} + ] + ], + "webvtt/parsing/file-parsing/tests/support/settings-vertical.vtt": [ + [ + {} + ] + ], + "webvtt/parsing/file-parsing/tests/support/signature-bom.vtt": [ + [ + {} + ] + ], + "webvtt/parsing/file-parsing/tests/support/signature-no-newline.vtt": [ + [ + {} + ] + ], + "webvtt/parsing/file-parsing/tests/support/signature-space-no-newline.vtt": [ + [ + {} + ] + ], + "webvtt/parsing/file-parsing/tests/support/signature-space.vtt": [ + [ + {} + ] + ], + "webvtt/parsing/file-parsing/tests/support/signature-tab-no-newline.vtt": [ + [ + {} + ] + ], + "webvtt/parsing/file-parsing/tests/support/signature-tab.vtt": [ + [ + {} + ] + ], + "webvtt/parsing/file-parsing/tests/support/signature-timings.vtt": [ + [ + {} + ] + ], + "webvtt/parsing/file-parsing/tests/support/stylesheets.vtt": [ + [ + {} + ] + ], + "webvtt/parsing/file-parsing/tests/support/timings-60.vtt": [ + [ + {} + ] + ], + "webvtt/parsing/file-parsing/tests/support/timings-eof.vtt": [ + [ + {} + ] + ], + "webvtt/parsing/file-parsing/tests/support/timings-garbage.vtt": [ + [ + {} + ] + ], + "webvtt/parsing/file-parsing/tests/support/timings-negative.vtt": [ + [ + {} + ] + ], + "webvtt/parsing/file-parsing/tests/support/timings-omitted-hours.vtt": [ + [ + {} + ] + ], + "webvtt/parsing/file-parsing/tests/support/timings-too-long.vtt": [ + [ + {} + ] + ], + "webvtt/parsing/file-parsing/tests/support/timings-too-short.vtt": [ + [ + {} + ] + ], + "webvtt/parsing/file-parsing/tests/support/whitespace-chars.vtt": [ + [ + {} + ] + ], + "webvtt/parsing/file-parsing/tools/build.py": [ + [ + {} + ] + ], + "webvtt/parsing/file-parsing/tools/parser.py": [ + [ + {} + ] + ], + "webvtt/parsing/file-parsing/tools/spec_report.py": [ + [ + {} + ] + ], "webvtt/rendering/cues-with-video/processing-model/2_cues_overlapping_completely_move_up-ref.html": [ [ {} @@ -72429,216 +73331,6 @@ {} ] ], - "webvtt/webvtt-file-format-parsing/webvtt-cue-text-parsing-rules/buildtests.py": [ - [ - {} - ] - ], - "webvtt/webvtt-file-format-parsing/webvtt-cue-text-parsing-rules/common.js": [ - [ - {} - ] - ], - "webvtt/webvtt-file-format-parsing/webvtt-cue-text-parsing-rules/dat/entities.dat": [ - [ - {} - ] - ], - "webvtt/webvtt-file-format-parsing/webvtt-cue-text-parsing-rules/dat/tags.dat": [ - [ - {} - ] - ], - "webvtt/webvtt-file-format-parsing/webvtt-cue-text-parsing-rules/dat/timestamps.dat": [ - [ - {} - ] - ], - "webvtt/webvtt-file-format-parsing/webvtt-cue-text-parsing-rules/dat/tree-building.dat": [ - [ - {} - ] - ], - "webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/arrows.vtt": [ - [ - {} - ] - ], - "webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/cue-counts.json": [ - [ - {} - ] - ], - "webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/header-garbage.vtt": [ - [ - {} - ] - ], - "webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/header-space.vtt": [ - [ - {} - ] - ], - "webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/header-tab.vtt": [ - [ - {} - ] - ], - "webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/header-timings.vtt": [ - [ - {} - ] - ], - "webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/ids.vtt": [ - [ - {} - ] - ], - "webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/newlines.vtt": [ - [ - {} - ] - ], - "webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/no-signature.vtt": [ - [ - {} - ] - ], - "webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/nulls.vtt": [ - [ - {} - ] - ], - "webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/omitted-hours.vtt": [ - [ - {} - ] - ], - "webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/settings-align.vtt": [ - [ - {} - ] - ], - "webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/settings-line.vtt": [ - [ - {} - ] - ], - "webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/settings-multiple.vtt": [ - [ - {} - ] - ], - "webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/settings-position.vtt": [ - [ - {} - ] - ], - "webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/settings-size.vtt": [ - [ - {} - ] - ], - "webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/settings-vertical.vtt": [ - [ - {} - ] - ], - "webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/signature-bom.vtt": [ - [ - {} - ] - ], - "webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/signature-formfeed.vtt": [ - [ - {} - ] - ], - "webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/signature-lowercase.vtt": [ - [ - {} - ] - ], - "webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/signature-no-newline.vtt": [ - [ - {} - ] - ], - "webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/signature-null.vtt": [ - [ - {} - ] - ], - "webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/signature-space-no-newline.vtt": [ - [ - {} - ] - ], - "webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/signature-space.vtt": [ - [ - {} - ] - ], - "webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/signature-tab-no-newline.vtt": [ - [ - {} - ] - ], - "webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/signature-tab.vtt": [ - [ - {} - ] - ], - "webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/signature-timings.vtt": [ - [ - {} - ] - ], - "webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/signature-too-short.vtt": [ - [ - {} - ] - ], - "webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/signature-two-boms.vtt": [ - [ - {} - ] - ], - "webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/signature-websrt.vtt": [ - [ - {} - ] - ], - "webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/space-chars.vtt": [ - [ - {} - ] - ], - "webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/timings-60.vtt": [ - [ - {} - ] - ], - "webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/timings-garbage.vtt": [ - [ - {} - ] - ], - "webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/timings-negative.vtt": [ - [ - {} - ] - ], - "webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/timings-too-long.vtt": [ - [ - {} - ] - ], - "webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/timings-too-short.vtt": [ - [ - {} - ] - ], "workers/OWNERS": [ [ {} @@ -72989,6 +73681,11 @@ {} ] ], + "workers/support/WorkerFetchURL.js": [ + [ + {} + ] + ], "workers/support/WorkerLocation.js": [ [ {} @@ -77887,6 +78584,30 @@ {} ] ], + "IndexedDB/event-dispatch-active-flag.html": [ + [ + "/IndexedDB/event-dispatch-active-flag.html", + {} + ] + ], + "IndexedDB/fire-error-event-exception.html": [ + [ + "/IndexedDB/fire-error-event-exception.html", + {} + ] + ], + "IndexedDB/fire-success-event-exception.html": [ + [ + "/IndexedDB/fire-success-event-exception.html", + {} + ] + ], + "IndexedDB/fire-upgradeneeded-event-exception.html": [ + [ + "/IndexedDB/fire-upgradeneeded-event-exception.html", + {} + ] + ], "IndexedDB/historical.html": [ [ "/IndexedDB/historical.html", @@ -78567,6 +79288,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", @@ -79571,6 +80304,18 @@ {} ] ], + "IndexedDB/keygenerator-explicit.html": [ + [ + "/IndexedDB/keygenerator-explicit.html", + {} + ] + ], + "IndexedDB/keygenerator-inject.html": [ + [ + "/IndexedDB/keygenerator-inject.html", + {} + ] + ], "IndexedDB/keygenerator-overflow.htm": [ [ "/IndexedDB/keygenerator-overflow.htm", @@ -79687,6 +80432,12 @@ {} ] ], + "IndexedDB/transaction-deactivation-timing.html": [ + [ + "/IndexedDB/transaction-deactivation-timing.html", + {} + ] + ], "IndexedDB/transaction-lifetime-blocked.htm": [ [ "/IndexedDB/transaction-lifetime-blocked.htm", @@ -79717,6 +80468,12 @@ {} ] ], + "IndexedDB/upgrade-transaction-deactivation-timing.html": [ + [ + "/IndexedDB/upgrade-transaction-deactivation-timing.html", + {} + ] + ], "IndexedDB/upgrade-transaction-lifecycle-backend-aborted.html": [ [ "/IndexedDB/upgrade-transaction-lifecycle-backend-aborted.html", @@ -80575,6 +81332,12 @@ {} ] ], + "XMLHttpRequest/event-loadstart-upload.htm": [ + [ + "/XMLHttpRequest/event-loadstart-upload.htm", + {} + ] + ], "XMLHttpRequest/event-loadstart.htm": [ [ "/XMLHttpRequest/event-loadstart.htm", @@ -80665,6 +81428,12 @@ {} ] ], + "XMLHttpRequest/getallresponseheaders-cl.htm": [ + [ + "/XMLHttpRequest/getallresponseheaders-cl.htm", + {} + ] + ], "XMLHttpRequest/getallresponseheaders-cookies.htm": [ [ "/XMLHttpRequest/getallresponseheaders-cookies.htm", @@ -80677,6 +81446,12 @@ {} ] ], + "XMLHttpRequest/getallresponseheaders.htm": [ + [ + "/XMLHttpRequest/getallresponseheaders.htm", + {} + ] + ], "XMLHttpRequest/getresponseheader-case-insensitive.htm": [ [ "/XMLHttpRequest/getresponseheader-case-insensitive.htm", @@ -80737,6 +81512,12 @@ {} ] ], + "XMLHttpRequest/loadstart-and-state.html": [ + [ + "/XMLHttpRequest/loadstart-and-state.html", + {} + ] + ], "XMLHttpRequest/open-after-abort.htm": [ [ "/XMLHttpRequest/open-after-abort.htm", @@ -80803,6 +81584,12 @@ {} ] ], + "XMLHttpRequest/open-send-during-abort.htm": [ + [ + "/XMLHttpRequest/open-send-during-abort.htm", + {} + ] + ], "XMLHttpRequest/open-send-open.htm": [ [ "/XMLHttpRequest/open-send-open.htm", @@ -80839,12 +81626,6 @@ {} ] ], - "XMLHttpRequest/open-url-bogus.htm": [ - [ - "/XMLHttpRequest/open-url-bogus.htm", - {} - ] - ], "XMLHttpRequest/open-url-encoding.htm": [ [ "/XMLHttpRequest/open-url-encoding.htm", @@ -80929,6 +81710,12 @@ {} ] ], + "XMLHttpRequest/overridemimetype-blob.html": [ + [ + "/XMLHttpRequest/overridemimetype-blob.html", + {} + ] + ], "XMLHttpRequest/overridemimetype-done-state.htm": [ [ "/XMLHttpRequest/overridemimetype-done-state.htm", @@ -81545,6 +82332,12 @@ {} ] ], + "XMLHttpRequest/template-element.html": [ + [ + "/XMLHttpRequest/template-element.html", + {} + ] + ], "XMLHttpRequest/timeout-cors-async.htm": [ [ "/XMLHttpRequest/timeout-cors-async.htm", @@ -81869,6 +82662,16 @@ {} ] ], + "console/console-count-label-conversion.any.js": [ + [ + "/console/console-count-label-conversion.any.html", + {} + ], + [ + "/console/console-count-label-conversion.any.worker.html", + {} + ] + ], "console/console-is-a-namespace.any.js": [ [ "/console/console-is-a-namespace.any.html", @@ -81879,6 +82682,16 @@ {} ] ], + "console/console-time-label-conversion.any.js": [ + [ + "/console/console-time-label-conversion.any.html", + {} + ], + [ + "/console/console-time-label-conversion.any.worker.html", + {} + ] + ], "content-security-policy/blink-contrib-2/base-uri-allow.sub.html": [ [ "/content-security-policy/blink-contrib-2/base-uri-allow.sub.html", @@ -83081,6 +83894,72 @@ {} ] ], + "content-security-policy/securitypolicyviolation/inside-dedicated-worker.html": [ + [ + "/content-security-policy/securitypolicyviolation/inside-dedicated-worker.html", + {} + ] + ], + "content-security-policy/securitypolicyviolation/inside-service-worker.https.html": [ + [ + "/content-security-policy/securitypolicyviolation/inside-service-worker.https.html", + {} + ] + ], + "content-security-policy/securitypolicyviolation/inside-shared-worker.html": [ + [ + "/content-security-policy/securitypolicyviolation/inside-shared-worker.html", + {} + ] + ], + "content-security-policy/securitypolicyviolation/script-sample-no-opt-in.html": [ + [ + "/content-security-policy/securitypolicyviolation/script-sample-no-opt-in.html", + {} + ] + ], + "content-security-policy/securitypolicyviolation/script-sample.html": [ + [ + "/content-security-policy/securitypolicyviolation/script-sample.html", + {} + ] + ], + "content-security-policy/securitypolicyviolation/securitypolicyviolation-block-cross-origin-image-from-script.sub.html": [ + [ + "/content-security-policy/securitypolicyviolation/securitypolicyviolation-block-cross-origin-image-from-script.sub.html", + {} + ] + ], + "content-security-policy/securitypolicyviolation/securitypolicyviolation-block-cross-origin-image.sub.html": [ + [ + "/content-security-policy/securitypolicyviolation/securitypolicyviolation-block-cross-origin-image.sub.html", + {} + ] + ], + "content-security-policy/securitypolicyviolation/securitypolicyviolation-block-image-from-script.sub.html": [ + [ + "/content-security-policy/securitypolicyviolation/securitypolicyviolation-block-image-from-script.sub.html", + {} + ] + ], + "content-security-policy/securitypolicyviolation/securitypolicyviolation-block-image.sub.html": [ + [ + "/content-security-policy/securitypolicyviolation/securitypolicyviolation-block-image.sub.html", + {} + ] + ], + "content-security-policy/securitypolicyviolation/style-sample-no-opt-in.html": [ + [ + "/content-security-policy/securitypolicyviolation/style-sample-no-opt-in.html", + {} + ] + ], + "content-security-policy/securitypolicyviolation/style-sample.html": [ + [ + "/content-security-policy/securitypolicyviolation/style-sample.html", + {} + ] + ], "content-security-policy/securitypolicyviolation/targeting.html": [ [ "/content-security-policy/securitypolicyviolation/targeting.html", @@ -83255,6 +84134,12 @@ {} ] ], + "cors/304.htm": [ + [ + "/cors/304.htm", + {} + ] + ], "cors/allow-headers.htm": [ [ "/cors/allow-headers.htm", @@ -83383,6 +84268,24 @@ {} ] ], + "css-typed-om/CSSMatrixComponent-DOMMatrix-mutable.html": [ + [ + "/css-typed-om/CSSMatrixComponent-DOMMatrix-mutable.html", + {} + ] + ], + "css-typed-om/declared-styleMap-accepts-inherit.html": [ + [ + "/css-typed-om/declared-styleMap-accepts-inherit.html", + {} + ] + ], + "css-typed-om/styleMap-update-function.html": [ + [ + "/css-typed-om/styleMap-update-function.html", + {} + ] + ], "css-values/unset-value-storage.html": [ [ "/css-values/unset-value-storage.html", @@ -84777,6 +85680,12 @@ {} ] ], + "dom/nodes/Element-webkitMatchesSelector.html": [ + [ + "/dom/nodes/Element-webkitMatchesSelector.html", + {} + ] + ], "dom/nodes/MutationObserver-attributes.html": [ [ "/dom/nodes/MutationObserver-attributes.html", @@ -87353,6 +88262,18 @@ {} ] ], + "fetch/api/cors/cors-expose-star-worker.html": [ + [ + "/fetch/api/cors/cors-expose-star-worker.html", + {} + ] + ], + "fetch/api/cors/cors-expose-star.html": [ + [ + "/fetch/api/cors/cors-expose-star.html", + {} + ] + ], "fetch/api/cors/cors-filtering-worker.html": [ [ "/fetch/api/cors/cors-filtering-worker.html", @@ -87425,6 +88346,18 @@ {} ] ], + "fetch/api/cors/cors-preflight-star-worker.html": [ + [ + "/fetch/api/cors/cors-preflight-star-worker.html", + {} + ] + ], + "fetch/api/cors/cors-preflight-star.html": [ + [ + "/fetch/api/cors/cors-preflight-star.html", + {} + ] + ], "fetch/api/cors/cors-preflight-status-worker.html": [ [ "/fetch/api/cors/cors-preflight-status-worker.html", @@ -87865,6 +88798,14 @@ {} ] ], + "fetch/api/request/request-keepalive-quota.html": [ + [ + "/fetch/api/request/request-keepalive-quota.html", + { + "timeout": "long" + } + ] + ], "fetch/api/request/request-structure.html": [ [ "/fetch/api/request/request-structure.html", @@ -87973,6 +88914,12 @@ {} ] ], + "fetch/api/response/response-trailer.html": [ + [ + "/fetch/api/response/response-trailer.html", + {} + ] + ], "fetch/nosniff/image.html": [ [ "/fetch/nosniff/image.html", @@ -89249,6 +90196,12 @@ {} ] ], + "html/browsers/offline/no-appcache-in-shared-workers-historical.html": [ + [ + "/html/browsers/offline/no-appcache-in-shared-workers-historical.html", + {} + ] + ], "html/browsers/origin/cross-origin-objects/cross-origin-objects-on-new-window.html": [ [ "/html/browsers/origin/cross-origin-objects/cross-origin-objects-on-new-window.html", @@ -89453,12 +90406,6 @@ {} ] ], - "html/browsers/windows/browsing-context-first-created.xhtml": [ - [ - "/html/browsers/windows/browsing-context-first-created.xhtml", - {} - ] - ], "html/browsers/windows/browsing-context-names/001.html": [ [ "/html/browsers/windows/browsing-context-names/001.html", @@ -89501,6 +90448,18 @@ {} ] ], + "html/browsers/windows/browsing-context-window.html": [ + [ + "/html/browsers/windows/browsing-context-window.html", + {} + ] + ], + "html/browsers/windows/browsing-context.html": [ + [ + "/html/browsers/windows/browsing-context.html", + {} + ] + ], "html/browsers/windows/nested-browsing-contexts/frameElement.html": [ [ "/html/browsers/windows/nested-browsing-contexts/frameElement.html", @@ -89513,15 +90472,15 @@ {} ] ], - "html/browsers/windows/noreferrer-window-name.html": [ + "html/browsers/windows/noreferrer-null-opener.html": [ [ - "/html/browsers/windows/noreferrer-window-name.html", + "/html/browsers/windows/noreferrer-null-opener.html", {} ] ], - "html/browsers/windows/noreferrer.html": [ + "html/browsers/windows/noreferrer-window-name.html": [ [ - "/html/browsers/windows/noreferrer.html", + "/html/browsers/windows/noreferrer-window-name.html", {} ] ], @@ -92015,6 +92974,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", @@ -93175,6 +94140,12 @@ {} ] ], + "html/semantics/embedded-content/the-iframe-element/iframe_sandbox_allow_top_navigation_by_user_activation_without_user_gesture.html": [ + [ + "/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_allow_top_navigation_by_user_activation_without_user_gesture.html", + {} + ] + ], "html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-1.html": [ [ "/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-1.html", @@ -94357,6 +95328,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", @@ -94939,12 +95934,6 @@ {} ] ], - "html/syntax/parsing-html-fragments/the-input-byte-stream-015.html": [ - [ - "/html/syntax/parsing-html-fragments/the-input-byte-stream-015.html", - {} - ] - ], "html/syntax/parsing-html-fragments/the-input-byte-stream-016.html": [ [ "/html/syntax/parsing-html-fragments/the-input-byte-stream-016.html", @@ -96393,6 +97382,12 @@ {} ] ], + "html/webappapis/scripting/events/compile-event-handler-settings-objects.html": [ + [ + "/html/webappapis/scripting/events/compile-event-handler-settings-objects.html", + {} + ] + ], "html/webappapis/scripting/events/event-handler-attributes-body-window.html": [ [ "/html/webappapis/scripting/events/event-handler-attributes-body-window.html", @@ -96837,6 +97832,12 @@ {} ] ], + "html/webappapis/the-windoworworkerglobalscope-mixin/Worker_Self_Origin.html": [ + [ + "/html/webappapis/the-windoworworkerglobalscope-mixin/Worker_Self_Origin.html", + {} + ] + ], "html/webappapis/timers/evil-spec-example.html": [ [ "/html/webappapis/timers/evil-spec-example.html", @@ -97641,12 +98642,6 @@ {} ] ], - "mediacapture-streams/MediaStreamTrack-end.https.html": [ - [ - "/mediacapture-streams/MediaStreamTrack-end.https.html", - {} - ] - ], "mediacapture-streams/MediaStreamTrack-id.https.html": [ [ "/mediacapture-streams/MediaStreamTrack-id.https.html", @@ -109733,6 +110728,18 @@ {} ] ], + "pointerevents/extension/idlharness.html": [ + [ + "/pointerevents/extension/idlharness.html", + {} + ] + ], + "pointerevents/extension/pointerevent_constructor.html": [ + [ + "/pointerevents/extension/pointerevent_constructor.html", + {} + ] + ], "pointerevents/idlharness.html": [ [ "/pointerevents/idlharness.html", @@ -109931,12 +110938,6 @@ {} ] ], - "presentation-api/receiving-ua/idlharness.html": [ - [ - "/presentation-api/receiving-ua/idlharness.html", - {} - ] - ], "progress-events/constructor.html": [ [ "/progress-events/constructor.html", @@ -118379,6 +119380,12 @@ {} ] ], + "selection/removeRange.html": [ + [ + "/selection/removeRange.html", + {} + ] + ], "selection/selectAllChildren.html": [ [ "/selection/selectAllChildren.html", @@ -118843,9 +119850,9 @@ {} ] ], - "service-workers/service-worker/fetch-event-within-sw.html": [ + "service-workers/service-worker/fetch-event-within-sw.https.html": [ [ - "/service-workers/service-worker/fetch-event-within-sw.html", + "/service-workers/service-worker/fetch-event-within-sw.https.html", {} ] ], @@ -119063,6 +120070,12 @@ {} ] ], + "service-workers/service-worker/postmessage-blob-url.https.html": [ + [ + "/service-workers/service-worker/postmessage-blob-url.https.html", + {} + ] + ], "service-workers/service-worker/postmessage-from-waiting-serviceworker.https.html": [ [ "/service-workers/service-worker/postmessage-from-waiting-serviceworker.https.html", @@ -119827,6 +120840,24 @@ {} ] ], + "storage/interfaces.html": [ + [ + "/storage/interfaces.html", + {} + ] + ], + "storage/interfaces.worker.js": [ + [ + "/storage/interfaces.worker.html", + {} + ] + ], + "storage/opaque-origin.https.html": [ + [ + "/storage/opaque-origin.https.html", + {} + ] + ], "streams/byte-length-queuing-strategy.dedicatedworker.html": [ [ "/streams/byte-length-queuing-strategy.dedicatedworker.html", @@ -120235,6 +121266,30 @@ {} ] ], + "streams/readable-streams/default-reader.dedicatedworker.html": [ + [ + "/streams/readable-streams/default-reader.dedicatedworker.html", + {} + ] + ], + "streams/readable-streams/default-reader.html": [ + [ + "/streams/readable-streams/default-reader.html", + {} + ] + ], + "streams/readable-streams/default-reader.serviceworker.https.html": [ + [ + "/streams/readable-streams/default-reader.serviceworker.https.html", + {} + ] + ], + "streams/readable-streams/default-reader.sharedworker.html": [ + [ + "/streams/readable-streams/default-reader.sharedworker.html", + {} + ] + ], "streams/readable-streams/floating-point-total-queue-size.dedicatedworker.html": [ [ "/streams/readable-streams/floating-point-total-queue-size.dedicatedworker.html", @@ -120331,30 +121386,6 @@ {} ] ], - "streams/readable-streams/readable-stream-reader.dedicatedworker.html": [ - [ - "/streams/readable-streams/readable-stream-reader.dedicatedworker.html", - {} - ] - ], - "streams/readable-streams/readable-stream-reader.html": [ - [ - "/streams/readable-streams/readable-stream-reader.html", - {} - ] - ], - "streams/readable-streams/readable-stream-reader.serviceworker.https.html": [ - [ - "/streams/readable-streams/readable-stream-reader.serviceworker.https.html", - {} - ] - ], - "streams/readable-streams/readable-stream-reader.sharedworker.html": [ - [ - "/streams/readable-streams/readable-stream-reader.sharedworker.html", - {} - ] - ], "streams/readable-streams/tee.dedicatedworker.html": [ [ "/streams/readable-streams/tee.dedicatedworker.html", @@ -120643,6 +121674,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", @@ -120907,6 +121962,12 @@ {} ] ], + "url/failure.html": [ + [ + "/url/failure.html", + {} + ] + ], "url/historical.html": [ [ "/url/historical.html", @@ -121453,6 +122514,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", @@ -126361,6 +127428,12 @@ {} ] ], + "webrtc/rtcpeerconnection/setRemoteDescription.html": [ + [ + "/webrtc/rtcpeerconnection/setRemoteDescription.html", + {} + ] + ], "webrtc/simplecall.html": [ [ "/webrtc/simplecall.html", @@ -128167,6 +129240,12 @@ {} ] ], + "webstorage/event_no_duplicates.html": [ + [ + "/webstorage/event_no_duplicates.html", + {} + ] + ], "webstorage/event_session_key.html": [ [ "/webstorage/event_session_key.html", @@ -128353,75 +129432,387 @@ {} ] ], + "webvtt/api/VTTCue/align.html": [ + [ + "/webvtt/api/VTTCue/align.html", + {} + ] + ], + "webvtt/api/VTTCue/constructor.html": [ + [ + "/webvtt/api/VTTCue/constructor.html", + {} + ] + ], + "webvtt/api/VTTCue/getCueAsHTML.html": [ + [ + "/webvtt/api/VTTCue/getCueAsHTML.html", + {} + ] + ], + "webvtt/api/VTTCue/line.html": [ + [ + "/webvtt/api/VTTCue/line.html", + {} + ] + ], + "webvtt/api/VTTCue/lineAlign.html": [ + [ + "/webvtt/api/VTTCue/lineAlign.html", + {} + ] + ], + "webvtt/api/VTTCue/position.html": [ + [ + "/webvtt/api/VTTCue/position.html", + {} + ] + ], + "webvtt/api/VTTCue/positionAlign.html": [ + [ + "/webvtt/api/VTTCue/positionAlign.html", + {} + ] + ], + "webvtt/api/VTTCue/region.html": [ + [ + "/webvtt/api/VTTCue/region.html", + {} + ] + ], + "webvtt/api/VTTCue/size.html": [ + [ + "/webvtt/api/VTTCue/size.html", + {} + ] + ], + "webvtt/api/VTTCue/snapToLines.html": [ + [ + "/webvtt/api/VTTCue/snapToLines.html", + {} + ] + ], + "webvtt/api/VTTCue/text.html": [ + [ + "/webvtt/api/VTTCue/text.html", + {} + ] + ], + "webvtt/api/VTTCue/vertical.html": [ + [ + "/webvtt/api/VTTCue/vertical.html", + {} + ] + ], + "webvtt/api/VTTRegion/constructor.html": [ + [ + "/webvtt/api/VTTRegion/constructor.html", + {} + ] + ], + "webvtt/api/VTTRegion/lines.html": [ + [ + "/webvtt/api/VTTRegion/lines.html", + {} + ] + ], + "webvtt/api/VTTRegion/regionAnchorX.html": [ + [ + "/webvtt/api/VTTRegion/regionAnchorX.html", + {} + ] + ], + "webvtt/api/VTTRegion/regionAnchorY.html": [ + [ + "/webvtt/api/VTTRegion/regionAnchorY.html", + {} + ] + ], + "webvtt/api/VTTRegion/scroll.html": [ + [ + "/webvtt/api/VTTRegion/scroll.html", + {} + ] + ], + "webvtt/api/VTTRegion/viewportAnchorX.html": [ + [ + "/webvtt/api/VTTRegion/viewportAnchorX.html", + {} + ] + ], + "webvtt/api/VTTRegion/viewportAnchorY.html": [ + [ + "/webvtt/api/VTTRegion/viewportAnchorY.html", + {} + ] + ], + "webvtt/api/VTTRegion/width.html": [ + [ + "/webvtt/api/VTTRegion/width.html", + {} + ] + ], "webvtt/interfaces.html": [ [ "/webvtt/interfaces.html", {} ] ], - "webvtt/webvtt-api-for-browsers/vttcue-interface/align.html": [ + "webvtt/parsing/cue-text-parsing/tests/entities.html": [ [ - "/webvtt/webvtt-api-for-browsers/vttcue-interface/align.html", + "/webvtt/parsing/cue-text-parsing/tests/entities.html", {} ] ], - "webvtt/webvtt-api-for-browsers/vttcue-interface/getCueAsHTML.html": [ + "webvtt/parsing/cue-text-parsing/tests/tags.html": [ [ - "/webvtt/webvtt-api-for-browsers/vttcue-interface/getCueAsHTML.html", + "/webvtt/parsing/cue-text-parsing/tests/tags.html", {} ] ], - "webvtt/webvtt-api-for-browsers/vttcue-interface/line.html": [ + "webvtt/parsing/cue-text-parsing/tests/timestamps.html": [ [ - "/webvtt/webvtt-api-for-browsers/vttcue-interface/line.html", + "/webvtt/parsing/cue-text-parsing/tests/timestamps.html", {} ] ], - "webvtt/webvtt-api-for-browsers/vttcue-interface/snapToLines.html": [ + "webvtt/parsing/cue-text-parsing/tests/tree-building.html": [ [ - "/webvtt/webvtt-api-for-browsers/vttcue-interface/snapToLines.html", + "/webvtt/parsing/cue-text-parsing/tests/tree-building.html", {} ] ], - "webvtt/webvtt-api-for-browsers/vttcue-interface/text.html": [ + "webvtt/parsing/file-parsing/signature-invalid.html": [ [ - "/webvtt/webvtt-api-for-browsers/vttcue-interface/text.html", + "/webvtt/parsing/file-parsing/signature-invalid.html", {} ] ], - "webvtt/webvtt-api-for-browsers/vttcue-interface/vertical.html": [ + "webvtt/parsing/file-parsing/tests/arrows.html": [ [ - "/webvtt/webvtt-api-for-browsers/vttcue-interface/vertical.html", + "/webvtt/parsing/file-parsing/tests/arrows.html", {} ] ], - "webvtt/webvtt-file-format-parsing/webvtt-cue-text-parsing-rules/tests/entities.html": [ + "webvtt/parsing/file-parsing/tests/header-garbage.html": [ [ - "/webvtt/webvtt-file-format-parsing/webvtt-cue-text-parsing-rules/tests/entities.html", + "/webvtt/parsing/file-parsing/tests/header-garbage.html", {} ] ], - "webvtt/webvtt-file-format-parsing/webvtt-cue-text-parsing-rules/tests/tags.html": [ + "webvtt/parsing/file-parsing/tests/header-space.html": [ [ - "/webvtt/webvtt-file-format-parsing/webvtt-cue-text-parsing-rules/tests/tags.html", + "/webvtt/parsing/file-parsing/tests/header-space.html", {} ] ], - "webvtt/webvtt-file-format-parsing/webvtt-cue-text-parsing-rules/tests/timestamps.html": [ + "webvtt/parsing/file-parsing/tests/header-tab.html": [ [ - "/webvtt/webvtt-file-format-parsing/webvtt-cue-text-parsing-rules/tests/timestamps.html", + "/webvtt/parsing/file-parsing/tests/header-tab.html", {} ] ], - "webvtt/webvtt-file-format-parsing/webvtt-cue-text-parsing-rules/tests/tree-building.html": [ + "webvtt/parsing/file-parsing/tests/header-timings.html": [ [ - "/webvtt/webvtt-file-format-parsing/webvtt-cue-text-parsing-rules/tests/tree-building.html", + "/webvtt/parsing/file-parsing/tests/header-timings.html", {} ] ], - "webvtt/webvtt-file-format-parsing/webvtt-file-parsing/001.html": [ + "webvtt/parsing/file-parsing/tests/ids.html": [ [ - "/webvtt/webvtt-file-format-parsing/webvtt-file-parsing/001.html", + "/webvtt/parsing/file-parsing/tests/ids.html", + {} + ] + ], + "webvtt/parsing/file-parsing/tests/newlines.html": [ + [ + "/webvtt/parsing/file-parsing/tests/newlines.html", + {} + ] + ], + "webvtt/parsing/file-parsing/tests/nulls.html": [ + [ + "/webvtt/parsing/file-parsing/tests/nulls.html", + {} + ] + ], + "webvtt/parsing/file-parsing/tests/regions-id.html": [ + [ + "/webvtt/parsing/file-parsing/tests/regions-id.html", + {} + ] + ], + "webvtt/parsing/file-parsing/tests/regions-lines.html": [ + [ + "/webvtt/parsing/file-parsing/tests/regions-lines.html", + {} + ] + ], + "webvtt/parsing/file-parsing/tests/regions-old.html": [ + [ + "/webvtt/parsing/file-parsing/tests/regions-old.html", + {} + ] + ], + "webvtt/parsing/file-parsing/tests/regions-regionanchor.html": [ + [ + "/webvtt/parsing/file-parsing/tests/regions-regionanchor.html", + {} + ] + ], + "webvtt/parsing/file-parsing/tests/regions-scroll.html": [ + [ + "/webvtt/parsing/file-parsing/tests/regions-scroll.html", + {} + ] + ], + "webvtt/parsing/file-parsing/tests/regions-viewportanchor.html": [ + [ + "/webvtt/parsing/file-parsing/tests/regions-viewportanchor.html", + {} + ] + ], + "webvtt/parsing/file-parsing/tests/settings-align.html": [ + [ + "/webvtt/parsing/file-parsing/tests/settings-align.html", + {} + ] + ], + "webvtt/parsing/file-parsing/tests/settings-line.html": [ + [ + "/webvtt/parsing/file-parsing/tests/settings-line.html", + {} + ] + ], + "webvtt/parsing/file-parsing/tests/settings-multiple.html": [ + [ + "/webvtt/parsing/file-parsing/tests/settings-multiple.html", + {} + ] + ], + "webvtt/parsing/file-parsing/tests/settings-position.html": [ + [ + "/webvtt/parsing/file-parsing/tests/settings-position.html", + {} + ] + ], + "webvtt/parsing/file-parsing/tests/settings-region.html": [ + [ + "/webvtt/parsing/file-parsing/tests/settings-region.html", + {} + ] + ], + "webvtt/parsing/file-parsing/tests/settings-size.html": [ + [ + "/webvtt/parsing/file-parsing/tests/settings-size.html", + {} + ] + ], + "webvtt/parsing/file-parsing/tests/settings-vertical.html": [ + [ + "/webvtt/parsing/file-parsing/tests/settings-vertical.html", + {} + ] + ], + "webvtt/parsing/file-parsing/tests/signature-bom.html": [ + [ + "/webvtt/parsing/file-parsing/tests/signature-bom.html", + {} + ] + ], + "webvtt/parsing/file-parsing/tests/signature-no-newline.html": [ + [ + "/webvtt/parsing/file-parsing/tests/signature-no-newline.html", + {} + ] + ], + "webvtt/parsing/file-parsing/tests/signature-space-no-newline.html": [ + [ + "/webvtt/parsing/file-parsing/tests/signature-space-no-newline.html", + {} + ] + ], + "webvtt/parsing/file-parsing/tests/signature-space.html": [ + [ + "/webvtt/parsing/file-parsing/tests/signature-space.html", + {} + ] + ], + "webvtt/parsing/file-parsing/tests/signature-tab-no-newline.html": [ + [ + "/webvtt/parsing/file-parsing/tests/signature-tab-no-newline.html", + {} + ] + ], + "webvtt/parsing/file-parsing/tests/signature-tab.html": [ + [ + "/webvtt/parsing/file-parsing/tests/signature-tab.html", + {} + ] + ], + "webvtt/parsing/file-parsing/tests/signature-timings.html": [ + [ + "/webvtt/parsing/file-parsing/tests/signature-timings.html", + {} + ] + ], + "webvtt/parsing/file-parsing/tests/stylesheets.html": [ + [ + "/webvtt/parsing/file-parsing/tests/stylesheets.html", + {} + ] + ], + "webvtt/parsing/file-parsing/tests/timings-60.html": [ + [ + "/webvtt/parsing/file-parsing/tests/timings-60.html", + {} + ] + ], + "webvtt/parsing/file-parsing/tests/timings-eof.html": [ + [ + "/webvtt/parsing/file-parsing/tests/timings-eof.html", + {} + ] + ], + "webvtt/parsing/file-parsing/tests/timings-garbage.html": [ + [ + "/webvtt/parsing/file-parsing/tests/timings-garbage.html", + {} + ] + ], + "webvtt/parsing/file-parsing/tests/timings-negative.html": [ + [ + "/webvtt/parsing/file-parsing/tests/timings-negative.html", + {} + ] + ], + "webvtt/parsing/file-parsing/tests/timings-omitted-hours.html": [ + [ + "/webvtt/parsing/file-parsing/tests/timings-omitted-hours.html", + {} + ] + ], + "webvtt/parsing/file-parsing/tests/timings-too-long.html": [ + [ + "/webvtt/parsing/file-parsing/tests/timings-too-long.html", + {} + ] + ], + "webvtt/parsing/file-parsing/tests/timings-too-short.html": [ + [ + "/webvtt/parsing/file-parsing/tests/timings-too-short.html", + {} + ] + ], + "webvtt/parsing/file-parsing/tests/whitespace-chars.html": [ + [ + "/webvtt/parsing/file-parsing/tests/whitespace-chars.html", + {} + ] + ], + "workers/SharedWorker_blobUrl.html": [ + [ + "/workers/SharedWorker_blobUrl.html", {} ] ], @@ -129486,7 +130877,9 @@ "webdriver/actions/key.py": [ [ "/webdriver/actions/key.py", - {} + { + "timeout": "long" + } ] ], "webdriver/actions/mouse.py": [ @@ -129563,7 +130956,7 @@ "support" ], "./check_stability.py": [ - "0a0ea60b590564b4099d05d82131da247ee63c33", + "929a459294fca2be3f2728043390cd5076db669a", "support" ], "./ci_built_diff.sh": [ @@ -129591,7 +130984,7 @@ "support" ], "./lint.whitelist": [ - "b5adce161e0046da73010c1b3a832479922deb56", + "2bf4ed33e508857e92d2fcf5efac381a60e91bc6", "support" ], "./manifest": [ @@ -130347,11 +131740,11 @@ "testharness" ], "2dcontext/drawing-images-to-the-canvas/2d.drawImage.animated.apng.html": [ - "e4b47f6a8f729ce1c9ff773dee7d55466a624dac", + "8b041edab704c8aaff74adf633290b4ee0dfb9f8", "testharness" ], "2dcontext/drawing-images-to-the-canvas/2d.drawImage.animated.gif.html": [ - "12eef598f66191d48f92c45a51d9571374974ccb", + "1fea0d7e3cd21eb7bff574c65f457481a0ed7ae2", "testharness" ], "2dcontext/drawing-images-to-the-canvas/2d.drawImage.animated.poster.html": [ @@ -130839,35 +132232,35 @@ "support" ], "2dcontext/drawing-text-to-the-canvas/2d.text.draw.align.center.html": [ - "2b2ff7fec81e1ba0d4776ec578c1b240d0ed6f63", + "5f9fbb439700bfce1e1a3705f804e996e6dc76ec", "testharness" ], "2dcontext/drawing-text-to-the-canvas/2d.text.draw.align.end.ltr.html": [ - "521cd7d1d613d544de2adf9a606aeba6d384ce41", + "d85c722e091bba7ba5c4753a5e7b8e2c8cfc3faf", "testharness" ], "2dcontext/drawing-text-to-the-canvas/2d.text.draw.align.end.rtl.html": [ - "687a928d6190a95631287cc7cd8a558fdbcdceae", + "0aedbf9c3a7dac3259b033c72f60df39e0a449b7", "testharness" ], "2dcontext/drawing-text-to-the-canvas/2d.text.draw.align.left.html": [ - "aaa48ab9c2ce5cf1d82e15af74527ee218482f66", + "e5090141ba101490ae393dd9e8be2146c8ac7746", "testharness" ], "2dcontext/drawing-text-to-the-canvas/2d.text.draw.align.right.html": [ - "4fa7d3b556a44cc85fa78e77327377938bdbff9a", + "5034dfb74c07d3fe4ca9c4818e7d83d2294b15da", "testharness" ], "2dcontext/drawing-text-to-the-canvas/2d.text.draw.align.start.ltr.html": [ - "51059ab0b8d8e99012db57bc8ebbab16f69b03a8", + "a793c0d623706bac7747c810473c4555c5885e24", "testharness" ], "2dcontext/drawing-text-to-the-canvas/2d.text.draw.align.start.rtl.html": [ - "9f0e22b0d9f5cc9f39a21768b53a344bb2de7f6e", + "fd137f75b2a7c19f9e53ba50d9849cfaf79cc677", "testharness" ], "2dcontext/drawing-text-to-the-canvas/2d.text.draw.baseline.alphabetic.html": [ - "9d5e23f4846574a412e6de9606eac09ee3c7f2e6", + "48fd2e5119decf45fd4daf6b0b925c3c66f63493", "testharness" ], "2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.basic-manual.html": [ @@ -130883,11 +132276,11 @@ "testharness" ], "2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.bound.html": [ - "3464362d6b0896d7d81fc2cb91bd469588daf54d", + "52a20576ed8dce9f585fd3a3813b2e9fb4c38479", "testharness" ], "2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.fontface.html": [ - "fd68d89a591ab316b549f663737b1088899d0026", + "f1abaf5a389298002d030dc349db45b3461aa070", "testharness" ], "2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.large-manual.html": [ @@ -130923,15 +132316,15 @@ "testharness" ], "2dcontext/drawing-text-to-the-canvas/2d.text.draw.fontface.html": [ - "a537e6800184cb00c7deedf232f7412ed4f561ac", + "d126b22cb2a80f106e20fa40e1c3faac008b707c", "testharness" ], "2dcontext/drawing-text-to-the-canvas/2d.text.draw.fontface.notinpage.html": [ - "33d8b49b8db233fa4202f37f62d8486b30dbb3fd", + "d286db2b6ce218eff6df2387768cf0d2c8e04874", "testharness" ], "2dcontext/drawing-text-to-the-canvas/2d.text.draw.fontface.repeat.html": [ - "46909efbeb3b073233794d749aaae26f1ae2b0a9", + "8ad0e24f6bea731ce1a167df40fdc731fb49fec8", "testharness" ], "2dcontext/drawing-text-to-the-canvas/2d.text.draw.kern.consistent-manual.html": [ @@ -130939,11 +132332,11 @@ "manual" ], "2dcontext/drawing-text-to-the-canvas/2d.text.draw.space.basic.html": [ - "e27d68dd81599c891d3bbd6ad7525f7a820dd3b6", + "bf935a744079f6aac9b36ce24f5b1dcb6bfeb459", "testharness" ], "2dcontext/drawing-text-to-the-canvas/2d.text.draw.space.collapse.nonspace.html": [ - "79ef1ef3208006d95ac96c2a06a3a7ac50d4911b", + "7b3db1d334865d80690020a7596005581aa0da7e", "testharness" ], "2dcontext/drawing-text-to-the-canvas/2d.text.draw.stroke.basic-manual.html": [ @@ -130959,11 +132352,11 @@ "testharness" ], "2dcontext/drawing-text-to-the-canvas/2d.text.measure.width.basic.html": [ - "8f60b3c7832bcfeb26bf30c023c5784b9ccb24fd", + "3ee9ad25ea5f5683e01fc89172c4406f2efee403", "testharness" ], "2dcontext/drawing-text-to-the-canvas/2d.text.measure.width.empty.html": [ - "30eb223a7ae279d939df8f30a1367e9aa9c1a6e0", + "0a5658c6bc67b04635de7a37a0aa84b3bacbf459", "testharness" ], "2dcontext/drawingstyle-objects/.gitkeep": [ @@ -132043,7 +133436,7 @@ "testharness" ], "2dcontext/fill-and-stroke-styles/2d.pattern.animated.gif.html": [ - "74b2e1167fe03f7800ac6eab7d3e562ac6cd6390", + "965d6b19ddcef7320c8d7d9cbdfe896f3a642f13", "testharness" ], "2dcontext/fill-and-stroke-styles/2d.pattern.basic.canvas.html": [ @@ -133499,39 +134892,39 @@ "testharness" ], "2dcontext/text-styles/2d.text.draw.baseline.bottom.html": [ - "adcbbd84edd60f46bc3a3582ac73715ac50a0fe7", + "985b46ebe142694dc575609e5dbbecc4ff7179f6", "testharness" ], "2dcontext/text-styles/2d.text.draw.baseline.hanging.html": [ - "510fef291d9f5cd699cd4aa2bae28faaf6534261", + "3abcdaeb57b514dd4ce39dfe439cbba0d9035807", "testharness" ], "2dcontext/text-styles/2d.text.draw.baseline.ideographic.html": [ - "7b9512ffb614ddcb0e0b3bd8a0e16c2ee5dae28c", + "0f8f228a2c0c0ede120fb6b1cce085f795316443", "testharness" ], "2dcontext/text-styles/2d.text.draw.baseline.middle.html": [ - "42b6290678789ea646ba2758589cb1a9d7c6ed2c", + "d25a33be94366bd16392904cf12a230a36e0f483", "testharness" ], "2dcontext/text-styles/2d.text.draw.baseline.top.html": [ - "ddaa4488dd31d019ffcf891ae62ac27704762fcf", + "d8422607d490e31fc5dd14ba23af40d309e0827e", "testharness" ], "2dcontext/text-styles/2d.text.draw.space.collapse.end.html": [ - "dae2bd83cc2e9379da5fff29e4fe472ee4c0bcee", + "a9e5473bce6bd2c5c3915792015ee64163b32441", "testharness" ], "2dcontext/text-styles/2d.text.draw.space.collapse.other.html": [ - "91962bbb18bdf4f4c7f905bcb35f14acd0d912e9", + "e1349a1ed966e4f629774e2c33f82754fd60a86b", "testharness" ], "2dcontext/text-styles/2d.text.draw.space.collapse.space.html": [ - "6fe08f68f9b6ea0a5453d2735a055eb46e5c62bb", + "be363c8ebcf414602c464fbb7b6a7f690ecf1c29", "testharness" ], "2dcontext/text-styles/2d.text.draw.space.collapse.start.html": [ - "da2e4f49a0da99fd9d38131181500d545c64c387", + "88d529d76a74659e3f7a672c09b5444955226f4f", "testharness" ], "2dcontext/text-styles/2d.text.font.default.html": [ @@ -133563,7 +134956,7 @@ "testharness" ], "2dcontext/text-styles/2d.text.measure.width.space.html": [ - "3431b4da404842f2af69ff8d1aaefae6e9bd803e", + "95d92a11068904059e0bbd21a774e9166f6079a7", "testharness" ], "2dcontext/text-styles/canvas_text_font_001-ref.htm": [ @@ -133723,11 +135116,11 @@ "support" ], "2dcontext/tools/tests2d.yaml": [ - "27ced01c0dedc4d96f0ba378314baed5efada42d", + "ff6b24c1ca198604989c04a96ee7e247355746ec", "support" ], "2dcontext/tools/tests2dtext.yaml": [ - "150647743aed4aefe5c74fb7c4b6cb17150b83c4", + "67b14fc993eb652d87c7a282dd6582d459e7f800", "support" ], "2dcontext/transformations/.gitkeep": [ @@ -133891,11 +135284,11 @@ "testharness" ], "FileAPI/OWNERS": [ - "c5a5b1077046205e35f17c55fbd1a321afc33c1d", + "5e749f9ec12704ea48e99cf4c31e703e5325d419", "support" ], "FileAPI/blob/Blob-XHR-revoke.html": [ - "3db9200582a45806ecfae1d0f10bbd6f934de448", + "5858a79442dcad6325b3ab4bb6a20fc302fcf64c", "testharness" ], "FileAPI/blob/Blob-constructor.html": [ @@ -134087,7 +135480,7 @@ "support" ], "IndexedDB/abort-in-initial-upgradeneeded.html": [ - "efc9c2476e812f1bb378665f397f71c590439006", + "4cd712bd5fed3581ed770c4dbc4200f3a50c5299", "testharness" ], "IndexedDB/bindings-inject-key.html": [ @@ -134099,7 +135492,7 @@ "testharness" ], "IndexedDB/close-in-upgradeneeded.html": [ - "949f5e8a429a7524c9a68ef0d19baf04dadbd84a", + "835c1e1a408e9a6a2c5347eb3a98ba4b40571bb1", "testharness" ], "IndexedDB/cursor-overloads.htm": [ @@ -134114,6 +135507,22 @@ "3e69684b6dc5e23508ced8c7a033a389f6e135b6", "testharness" ], + "IndexedDB/event-dispatch-active-flag.html": [ + "7a1be612f5b1bcd951425afc24b41308cd2a12e1", + "testharness" + ], + "IndexedDB/fire-error-event-exception.html": [ + "062ef43542e434d6eb7c6ea2c7aefbf8ff4ac198", + "testharness" + ], + "IndexedDB/fire-success-event-exception.html": [ + "4b694f3df532e87edfcc12a46cd07224c363355b", + "testharness" + ], + "IndexedDB/fire-upgradeneeded-event-exception.html": [ + "80333b08cae052d1fb58875404c87462206204b3", + "testharness" + ], "IndexedDB/historical.html": [ "0c4584e1b021a286445a2a9d3388ff011a1b933e", "testharness" @@ -134303,7 +135712,7 @@ "testharness" ], "IndexedDB/idbcursor_continue_objectstore.htm": [ - "10ae006680c7963f0b09dcfcf26eaf5d62aed3cc", + "d494e8553d1ff8c72cd3b39cbf32b55d4d299710", "testharness" ], "IndexedDB/idbcursor_continue_objectstore2.htm": [ @@ -134562,6 +135971,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" @@ -134591,7 +136008,7 @@ "testharness" ], "IndexedDB/idbfactory_deleteDatabase4.htm": [ - "bdd320c4530d4ec4c9aa92d7283e5458ea92ec25", + "a42c82f245079b0be06f6249a6b37f076c754345", "testharness" ], "IndexedDB/idbfactory_open.htm": [ @@ -134695,7 +136112,7 @@ "testharness" ], "IndexedDB/idbindex_get.htm": [ - "32d6d204c0d52f2e4ebf4649ddb1482d2ca2bbf7", + "fe9ff4b4c3d8ea03ace7ff6dd9cec91ed9b6e118", "testharness" ], "IndexedDB/idbindex_get2.htm": [ @@ -134707,7 +136124,7 @@ "testharness" ], "IndexedDB/idbindex_get4.htm": [ - "d8b39b7cc23e6b89b47b657ff53eeece44970f02", + "82be62b113f1ed362feb4f88c94cb65109b21735", "testharness" ], "IndexedDB/idbindex_get5.htm": [ @@ -134747,7 +136164,7 @@ "testharness" ], "IndexedDB/idbindex_getKey4.htm": [ - "d5d1449086078aa744d156e062a23ca3ffb264a8", + "d9b30635c943e401ba275d3611d17520cbf3334a", "testharness" ], "IndexedDB/idbindex_getKey5.htm": [ @@ -134963,7 +136380,7 @@ "testharness" ], "IndexedDB/idbobjectstore_createIndex13.htm": [ - "180c2699b841636a3bec5a857ad1690af2e7d729", + "04af5554d0a8f1c8d4ffce81662ba8b69501b011", "testharness" ], "IndexedDB/idbobjectstore_createIndex14-exception_order.htm": [ @@ -135051,7 +136468,7 @@ "testharness" ], "IndexedDB/idbobjectstore_get4.htm": [ - "828be6d2ebacc7c2ff80ed479124db16a5e3524a", + "7b8ffbe373654f98869af07960ae352df024bcab", "testharness" ], "IndexedDB/idbobjectstore_get5.htm": [ @@ -135230,6 +136647,14 @@ "3bd30e912c27c5e93e28c6847ff726c8e6ffae90", "testharness" ], + "IndexedDB/keygenerator-explicit.html": [ + "6415cf0734ab1ab94d6fac420a70f85046036bb1", + "testharness" + ], + "IndexedDB/keygenerator-inject.html": [ + "1e8439807fd9be6cfdb01b3579017dd3a220478d", + "testharness" + ], "IndexedDB/keygenerator-overflow.htm": [ "98147dd37c3d06db96a88f3c7c5751ac02908751", "testharness" @@ -135255,7 +136680,7 @@ "testharness" ], "IndexedDB/keypath_invalid.htm": [ - "d5ac98199a0ab7a4e05c88d9480613d9d34f4181", + "7d6bf2f7cf77bdafd5b3b5e3f82299f844bd7225", "testharness" ], "IndexedDB/keypath_maxsize.htm": [ @@ -135291,7 +136716,7 @@ "support" ], "IndexedDB/support.js": [ - "a236eaf6599ad94f26166144a7afe21fafcc5770", + "6544b743611f07c4f6ef2533e9bd0213a23fba07", "support" ], "IndexedDB/transaction-abort-generator-revert.html": [ @@ -135314,8 +136739,12 @@ "a0237aa82de84dd351a4854a55075fbfbaba3c2e", "testharness" ], + "IndexedDB/transaction-deactivation-timing.html": [ + "fba494c08ff581cfea0ddc6d1959313c3ea34bd6", + "testharness" + ], "IndexedDB/transaction-lifetime-blocked.htm": [ - "2b97fa14d13e5ea212dc51b728bcc469557248f2", + "e05a90c62a9f304bb5e7b0c7d8f4360ea860c907", "testharness" ], "IndexedDB/transaction-lifetime-empty.html": [ @@ -135323,7 +136752,7 @@ "testharness" ], "IndexedDB/transaction-lifetime.htm": [ - "226a7242cf0f8eb9f6f39c4d467a044c8da8d00f", + "19325bbfa1865ae5cbc3d38d7a7da2ed298da0dc", "testharness" ], "IndexedDB/transaction-requestqueue.htm": [ @@ -135334,6 +136763,10 @@ "4a75702a58021e337f884590508c1a0b84063edc", "testharness" ], + "IndexedDB/upgrade-transaction-deactivation-timing.html": [ + "92fd15b524b75f878c5719e906e2cf027382a69b", + "testharness" + ], "IndexedDB/upgrade-transaction-lifecycle-backend-aborted.html": [ "c816400517298785753b39639b3cec925d57029e", "testharness" @@ -135355,11 +136788,11 @@ "testharness" ], "IndexedDB/writer-starvation.htm": [ - "d49f3f1bffc93174522c6d8c815e7f7ae0cd18a9", + "76b34c6324cb5191aee56de0fd94e6132e65f15a", "testharness" ], "WebCryptoAPI/OWNERS": [ - "67e0dbc64887e65248a56219d39ad72ca3aa0b20", + "18b1175441770103cc71ff54d135648641dcbf6c", "support" ], "WebCryptoAPI/README.md": [ @@ -136295,7 +137728,11 @@ "testharness" ], "XMLHttpRequest/OWNERS": [ - "2bdbaccc77104e39cd74cf13ecc4bc540a888d12", + "05b61bd06cb91209e16101f2c53c249138c3e74b", + "support" + ], + "XMLHttpRequest/README.md": [ + "bedec5c5902a98182c0d9456f81a9d0859f35095", "support" ], "XMLHttpRequest/XMLHttpRequest-withCredentials.any.js": [ @@ -136303,7 +137740,7 @@ "testharness" ], "XMLHttpRequest/abort-after-receive.htm": [ - "9002258127bb0b4222ea55efcbac46a52c26ece0", + "b3b42e616f1af845a5280e56862d81fcb1491e57", "testharness" ], "XMLHttpRequest/abort-after-send.htm": [ @@ -136311,11 +137748,11 @@ "testharness" ], "XMLHttpRequest/abort-after-stop.htm": [ - "8953ddec68595a9c35bdfea142f08821fcee37cc", + "3feb39f2451afa624771437337c669865fac29b5", "testharness" ], "XMLHttpRequest/abort-after-timeout.htm": [ - "94f5d2977bf839d65aaad3b9fb85002904d4b468", + "26252843e67111ee53079bb67619fccde700000d", "testharness" ], "XMLHttpRequest/abort-during-done.htm": [ @@ -136367,15 +137804,15 @@ "testharness" ], "XMLHttpRequest/anonymous-mode-unsupported.htm": [ - "d6be578c77eca03ec394d12be29b12b0b42dafd3", + "54a03fefabfad02e09baa4e9d37e19b6403dad9b", "testharness" ], "XMLHttpRequest/data-uri.htm": [ - "17384825f11d929b85867a09818d42e21cf66398", + "46ebfd602e8d6821cb2e22181625609242d8459e", "testharness" ], "XMLHttpRequest/event-abort.htm": [ - "ab57073e5a2e883d5d11a7ea03a5e572c361d7c7", + "5080ba821c78807b806734812a7b501cc56e48be", "testharness" ], "XMLHttpRequest/event-error-order.sub.html": [ @@ -136387,19 +137824,23 @@ "testharness" ], "XMLHttpRequest/event-load.htm": [ - "d3fa6665f78185cf55dee8c7950c43f7846d180b", + "4dd7532bd503931d0d90d95d8ac26b6de8557f44", "testharness" ], "XMLHttpRequest/event-loadend.htm": [ - "9fd2e783e7cf029d63a040605644d2243517f3ea", + "155c6adf45aed33817a8378f49d864606a4e8b9e", + "testharness" + ], + "XMLHttpRequest/event-loadstart-upload.htm": [ + "8e396ccd7269e2b523c466c57c9adee1222427d5", "testharness" ], "XMLHttpRequest/event-loadstart.htm": [ - "25de59905311457fd9816dc0a9ab97119e5a32eb", + "bd7e25519f5389e01b769dc0f338f1567ae3a975", "testharness" ], "XMLHttpRequest/event-progress.htm": [ - "ad6f024344d42e3d80abbb0bc7442fc996a452c3", + "1fc7ae17692af59ec627f9005a8da25819a84e96", "testharness" ], "XMLHttpRequest/event-readystate-sync-open.htm": [ @@ -136407,23 +137848,23 @@ "testharness" ], "XMLHttpRequest/event-readystatechange-loaded.htm": [ - "42374b3f4f54c38866bd294c46e0ef8efde3baf1", + "b226dc43100ce0cf09a2756a9e4bbf5896335ed8", "testharness" ], "XMLHttpRequest/event-timeout-order.htm": [ - "48415969d5bf6fe4b1d7ae2bba91bbee7840f0b0", + "a8192dcd62d73279885fb062926e4fac3b02999d", "testharness" ], "XMLHttpRequest/event-timeout.htm": [ - "fed0881a6ba90760032c55495d28464c7c59de03", + "5035e847bc8fcf16164cefeee293d149fe5f5fce", "testharness" ], "XMLHttpRequest/event-upload-progress-crossorigin.htm": [ - "51db6e1034a6fc6ac0c42c51be6907f17dd19400", + "329b648fb3dc0169c5bf185ad9bb88245e7f889d", "testharness" ], "XMLHttpRequest/event-upload-progress.htm": [ - "91f5ea4a6e5d77baca1331c1beea058c2897fa2e", + "4970811cfd2c1bdd1a08af6dd16eda8ffbff8ffd", "testharness" ], "XMLHttpRequest/folder.txt": [ @@ -136458,6 +137899,10 @@ "ac39c4b1e3b5bf515be99cff25c3f24b56548a77", "testharness" ], + "XMLHttpRequest/getallresponseheaders-cl.htm": [ + "e19849b931db19b45117ef784818d705d527e9c1", + "testharness" + ], "XMLHttpRequest/getallresponseheaders-cookies.htm": [ "cb8eb74de6c416c8b7658e27b440b60096da0f6b", "testharness" @@ -136466,8 +137911,12 @@ "88912890762a62db8a836d91ec3bd76af63e6152", "testharness" ], + "XMLHttpRequest/getallresponseheaders.htm": [ + "ac58e6914e3f10f487b543b80209931b19ea0401", + "testharness" + ], "XMLHttpRequest/getresponseheader-case-insensitive.htm": [ - "41ae61a8c067868b21609ee8d190a72d70478a16", + "96f7f70d595b46fcaea81a0c155b994f4561ce08", "testharness" ], "XMLHttpRequest/getresponseheader-chunked-trailer.htm": [ @@ -136506,12 +137955,16 @@ "b65e817345a4410c2062242bef57031d4ff448b7", "testharness" ], + "XMLHttpRequest/loadstart-and-state.html": [ + "6804845b3ba0e52ee407fc7e8036ce905283751c", + "testharness" + ], "XMLHttpRequest/open-after-abort.htm": [ "082fa646606cf8f278d61960f02fafa264e57e9f", "testharness" ], "XMLHttpRequest/open-after-setrequestheader.htm": [ - "94fee3d183f37de8306704768d1b9b63ae86b0b0", + "63991d7ee44c2c54f3303393ea8843420ab2d2b4", "testharness" ], "XMLHttpRequest/open-during-abort.htm": [ @@ -136547,7 +138000,11 @@ "testharness" ], "XMLHttpRequest/open-referer.htm": [ - "3bc1ea754be117ff26ec179139245ab99b4d51d1", + "7343a7af06cda485e60af3bb5d86e1376a89fd68", + "testharness" + ], + "XMLHttpRequest/open-send-during-abort.htm": [ + "cf5f04566a96f1e86ddbaa6cdc5290fba12745ca", "testharness" ], "XMLHttpRequest/open-send-open.htm": [ @@ -136574,10 +138031,6 @@ "d2c5d8d1696112b771a332011c4f33065817ed9a", "testharness" ], - "XMLHttpRequest/open-url-bogus.htm": [ - "b5af04e86c8b348c66f69c6abeb66cc086caadc2", - "testharness" - ], "XMLHttpRequest/open-url-encoding.htm": [ "ead2b1f6235cdf8e912214ce24f6d23262d2c826", "testharness" @@ -136634,6 +138087,10 @@ "9e28bf35af12bb962fdfd2213d7e20e031a29703", "testharness" ], + "XMLHttpRequest/overridemimetype-blob.html": [ + "e1b9cd224a563b32715a7d738e0070adca360be4", + "testharness" + ], "XMLHttpRequest/overridemimetype-done-state.htm": [ "167f34f8dfc1312a9124c12ee4f8de808fa41680", "testharness" @@ -136643,7 +138100,7 @@ "testharness" ], "XMLHttpRequest/overridemimetype-invalid-mime-type.htm": [ - "98d99841834e585f58a54cd8bded2f68ef013eab", + "1deea1bfa844816a404b90cf5650382383df5d57", "testharness" ], "XMLHttpRequest/overridemimetype-loading-state.htm": [ @@ -136663,17 +138120,13 @@ "testharness" ], "XMLHttpRequest/preserve-ua-header-on-redirect.htm": [ - "8e390fbc3470f0c23f27392d02d62fac2dee2bd0", + "1754e07e0c0650a326e0c8be21f6cb28437d1746", "testharness" ], "XMLHttpRequest/progress-events-response-data-gzip.htm": [ "628ce3c9ee69aa9d4bb1b044f8d7a86095c7b0bc", "testharness" ], - "XMLHttpRequest/readme.txt": [ - "028c7e5f73dd5184803e1ec6b50c97ef159266b6", - "support" - ], "XMLHttpRequest/resources/accept-language.py": [ "c8e945b53770efb8e4312f457a5a7261bc88a36c", "support" @@ -136746,6 +138199,10 @@ "7db6af7f44fbc994cca18b51dfac7ba565b1ad7b", "support" ], + "XMLHttpRequest/resources/echo-headers.py": [ + "cba52dcfcc4c73315ca1073ecea13a6d0e30a9ec", + "support" + ], "XMLHttpRequest/resources/echo-method.py": [ "146226b51535bcaa270c3a56a31a83828000ba74", "support" @@ -136766,6 +138223,18 @@ "a259f50e91a706acf4d9d0be8a01bd046544ea55", "support" ], + "XMLHttpRequest/resources/header-content-length.asis": [ + "a191134704e09ff9bb6591dc8c6aa78307edf6c9", + "support" + ], + "XMLHttpRequest/resources/headers-basic.asis": [ + "718e90fc73ec596127d26fba5433c5355e93fa3f", + "support" + ], + "XMLHttpRequest/resources/headers.asis": [ + "4f704b9f6f89a0152443a08eb7adf84415009ad1", + "support" + ], "XMLHttpRequest/resources/headers.py": [ "9728a796eb49af8303249f0a806ffaada599fc66", "support" @@ -136791,7 +138260,7 @@ "support" ], "XMLHttpRequest/resources/inspect-headers.py": [ - "7c1eb113be782af260f5b87f4c31446e3271c999", + "c1bad8ca957dca4cc0a95909ba072f23d03eabd2", "support" ], "XMLHttpRequest/resources/invalid-utf8-html.py": [ @@ -136951,7 +138420,7 @@ "testharness" ], "XMLHttpRequest/responsetext-decoding.htm": [ - "0704312da9fd81cbb3dfa89e416c3201d21b8029", + "fe5a326a1c2a18f1c16ae08c5edcf6c2be585468", "testharness" ], "XMLHttpRequest/responsetype.html": [ @@ -136991,7 +138460,7 @@ "testharness" ], "XMLHttpRequest/send-accept-language.htm": [ - "44288c7480f188c175459fb2c1190480fd9925bb", + "19fc5a0afafff1541f2fa5fca812f1f0fc0decd8", "testharness" ], "XMLHttpRequest/send-accept.htm": [ @@ -137083,7 +138552,7 @@ "testharness" ], "XMLHttpRequest/send-data-formdata.htm": [ - "8b10f38f80bc7d732e064627160fbb25139532e9", + "e7dd3b36ef8e4986edf49aebbd9ff439e101f3ae", "testharness" ], "XMLHttpRequest/send-data-unexpected-tostring.htm": [ @@ -137091,7 +138560,7 @@ "testharness" ], "XMLHttpRequest/send-entity-body-basic.htm": [ - "7350e7447f44d35f938c84847d1054cd7e66ce03", + "6d96982857fd0501152257d25497f704e222ed12", "testharness" ], "XMLHttpRequest/send-entity-body-document-bogus.htm": [ @@ -137119,11 +138588,11 @@ "testharness" ], "XMLHttpRequest/send-network-error-async-events.sub.htm": [ - "e50d4a07b74538f563eeffa3048589feba8b5509", + "85d0484051e19077c1dd0fde8845761fdca45b5a", "testharness" ], "XMLHttpRequest/send-network-error-sync-events.sub.htm": [ - "076f3fd1577994283cc933f837854aeeffe2531b", + "c455c57e952ca5d44843b42840becd2c56f11213", "testharness" ], "XMLHttpRequest/send-no-response-event-loadend.htm": [ @@ -137211,7 +138680,7 @@ "testharness" ], "XMLHttpRequest/send-sync-blocks-async.htm": [ - "17be71e6ee549d75607ad177493ea953ff8b62f9", + "4a4a8450f1627eafb3b668cef8d51e5bb5ea8995", "testharness" ], "XMLHttpRequest/send-sync-no-response-event-load.htm": [ @@ -137231,7 +138700,7 @@ "testharness" ], "XMLHttpRequest/send-sync-timeout.htm": [ - "c24ea0973a89d0b0b18b41eca90faad6d2cc06cc", + "943b2ff7b11f121e95d80a94086ea124703c16ad", "testharness" ], "XMLHttpRequest/send-timeout-events.htm": [ @@ -137255,11 +138724,11 @@ "testharness" ], "XMLHttpRequest/setrequestheader-allow-empty-value.htm": [ - "30604eb022b0d3493b2739ea0d8eec0d43a97295", + "42613edfadddfd6457c293de765202d1c93b2e56", "testharness" ], "XMLHttpRequest/setrequestheader-allow-whitespace-in-value.htm": [ - "d60688e7119cfb0e9ae0bbb7bb5ccfeb503bf724", + "3a276cd07a44139a41f8237a514a9be0ac0bbeff", "testharness" ], "XMLHttpRequest/setrequestheader-before-open.htm": [ @@ -137275,23 +138744,23 @@ "testharness" ], "XMLHttpRequest/setrequestheader-case-insensitive.htm": [ - "801b89d6115090d9b9a7aefc6831c83793625b8e", + "6a78415ee9a08f67aa2483f3ac1a4aa1c93d7944", "testharness" ], "XMLHttpRequest/setrequestheader-content-type.htm": [ - "c70186e3b8c82571c293e5f326125d4c945686d9", + "1b9023583c5d404cd036da58a076391568b42e71", "testharness" ], "XMLHttpRequest/setrequestheader-header-allowed.htm": [ - "52d6c14bec65a78f0284a35ef17acc28b3454503", + "19108e657472c4967e6a86e7c60ce0ad00ae7d6f", "testharness" ], "XMLHttpRequest/setrequestheader-header-forbidden.htm": [ - "c8eda86cad2dff8b0a9b99cae91b83a2b5a18196", + "5908e84fd8772dbe91ce204c57ce0b56f006ecdb", "testharness" ], "XMLHttpRequest/setrequestheader-open-setrequestheader.htm": [ - "47d178cc96179714237c5d56b8a2db24accb8eea", + "60d898c702b1486fdd017be516786729204a0f6d", "testharness" ], "XMLHttpRequest/status-async.htm": [ @@ -137303,7 +138772,11 @@ "testharness" ], "XMLHttpRequest/status-error.htm": [ - "b5eff3fac81dcc4d922e4be85f3220408611ab7a", + "42182437d8c1015339825c035127877f4970decb", + "testharness" + ], + "XMLHttpRequest/template-element.html": [ + "3b3c3471baa67d029ce53672832832290e780e0e", "testharness" ], "XMLHttpRequest/timeout-cors-async.htm": [ @@ -139631,7 +141104,7 @@ "testharness" ], "beacon/headers/header-referrer-strict-origin-when-cross-origin.https.html": [ - "79b4a278f0e35646cfdffeebf8f0523e2772bc9b", + "295ef746c475fca0ae8b492375a48948b4ea19c3", "testharness" ], "beacon/headers/header-referrer-strict-origin.https.html": [ @@ -157411,13 +158884,21 @@ "support" ], "console/OWNERS": [ - "9a7bc7ed19058f80340402b8fbf40c8c7876eab4", + "6a6d341b506ea97be1082bc36f59b0eebf3df104", "support" ], + "console/console-count-label-conversion.any.js": [ + "913cb6bf539803de5e4fc7f06f4af197579919c3", + "testharness" + ], "console/console-is-a-namespace.any.js": [ "9ad845184a6dd40b1ab64992ca514dbf4736c930", "testharness" ], + "console/console-time-label-conversion.any.js": [ + "5e2ca9e9dca88c6de32408b461f3f4c54c586031", + "testharness" + ], "content-security-policy/OWNERS": [ "f478084fb2b04fe93435b3c33e9791bf613ba7f8", "support" @@ -158607,7 +160088,7 @@ "support" ], "content-security-policy/child-src/child-src-about-blank-allowed-by-default.sub.html": [ - "5cac17e73bbf919ababbd3823d56762a96a231d5", + "3cfb06c55ac7dc026170b1ae886beba63cebac57", "testharness" ], "content-security-policy/child-src/child-src-about-blank-allowed-by-default.sub.html.sub.headers": [ @@ -159298,8 +160779,60 @@ "5f2ff4a87aa476168cf3d13b10a8d81a387b8e42", "testharness" ], + "content-security-policy/securitypolicyviolation/inside-dedicated-worker.html": [ + "46d18c97d554716b714856c00bdc49388d211868", + "testharness" + ], + "content-security-policy/securitypolicyviolation/inside-service-worker.https.html": [ + "71fc4b304975aa643a925e36fd2eb232cb239d9e", + "testharness" + ], + "content-security-policy/securitypolicyviolation/inside-shared-worker.html": [ + "fb7fc789e44d9f17ff508cc9a080c23aec5e1597", + "testharness" + ], + "content-security-policy/securitypolicyviolation/script-sample-no-opt-in.html": [ + "44cad18dc963c49062c0f3b7ea7a8951157cbcb7", + "testharness" + ], + "content-security-policy/securitypolicyviolation/script-sample.html": [ + "009e5de237b0aa1d3b7e2c100cb8fdf9bb1080a5", + "testharness" + ], + "content-security-policy/securitypolicyviolation/securitypolicyviolation-block-cross-origin-image-from-script.sub.html": [ + "156d207242f9cfaf200f442a6c7756ad4504f026", + "testharness" + ], + "content-security-policy/securitypolicyviolation/securitypolicyviolation-block-cross-origin-image.sub.html": [ + "7650a2e83361dde2493c03faeee300ef477acf98", + "testharness" + ], + "content-security-policy/securitypolicyviolation/securitypolicyviolation-block-image-from-script.sub.html": [ + "bc7df6c0d1aaef2bfcaf8d00a9c5056b0205c815", + "testharness" + ], + "content-security-policy/securitypolicyviolation/securitypolicyviolation-block-image.sub.html": [ + "38b10d421ec3e2e156180db3cfab54291f22074d", + "testharness" + ], + "content-security-policy/securitypolicyviolation/style-sample-no-opt-in.html": [ + "b2d6d11fc189d78f5ea623c52e1d1f64fe53a772", + "testharness" + ], + "content-security-policy/securitypolicyviolation/style-sample.html": [ + "e570217f560f6e7a8917e79266ac9d2e8ea078f6", + "testharness" + ], + "content-security-policy/securitypolicyviolation/support/inside-worker.sub.js": [ + "f425a7ae6c167bfe9857f08f460897e16bf6ca95", + "support" + ], + "content-security-policy/securitypolicyviolation/support/inside-worker.sub.js.headers": [ + "ac19897e2693ba3228640d03c770cd5a33c51381", + "support" + ], "content-security-policy/securitypolicyviolation/targeting.html": [ - "338ac400216d671bed9c45baaec86a5849f2e0fb", + "36ec8dd9ef0bd1be3615913015d857aa1a7c9e97", "testharness" ], "content-security-policy/style-src/3_3.css": [ @@ -159378,6 +160911,10 @@ "d3fb6499c3910cd966efb85888f4a116bf6738c7", "support" ], + "content-security-policy/support/inject-image.sub.js": [ + "52ac4b96df971b3b284b128c06e2c97a30f69750", + "support" + ], "content-security-policy/support/logTest.sub.js": [ "b10c13ac32450d15761f99a5096e1a3deda0e9bc", "support" @@ -159398,12 +160935,16 @@ "8cd779a8017cba678a565475271b892e8ed53e58", "support" ], + "content-security-policy/support/resource.py": [ + "e6e5eb285a3988173c49a116b1ae8a76f9f7ab1a", + "support" + ], "content-security-policy/support/siblingPath.js": [ "1743309038e2aef21670a82973c1cea2fbc01253", "support" ], "content-security-policy/support/testharness-helper.js": [ - "7146102c93b75c1acf9b23891e1ea3c55581cec2", + "9ff54032181b9f2fada44e71167efa74af90b7b4", "support" ], "content-security-policy/svg/including.sub.svg": [ @@ -159546,8 +161087,16 @@ "31461ac108fe717b074a41e14c12d9b83c064f85", "testharness" ], + "cors/304.htm": [ + "644c902be2861bed6dfa48ed12a12b08c6d9a2f5", + "testharness" + ], "cors/OWNERS": [ - "2382fc6be978e09377d8abdb79b3ec7e56689612", + "aee63d52a4bdc2af1cd26941a6f01a794b5be9fc", + "support" + ], + "cors/README.md": [ + "acf95ba2292a36d28bbe9aa857428b2d1741ad33", "support" ], "cors/allow-headers.htm": [ @@ -159555,7 +161104,7 @@ "testharness" ], "cors/basic.htm": [ - "dcbed5341e5cad48abb660e354129a0fade1199a", + "a3589dffef076a17cc33610ad49fae71485886c4", "testharness" ], "cors/credentials-flag.htm": [ @@ -159563,15 +161112,15 @@ "testharness" ], "cors/late-upload-events.htm": [ - "e9afb1bde63566d103d73348605e8ddc0548a452", + "fd228ae2b8c82e4ec4a13659c95f9e42f8030b50", "testharness" ], "cors/origin.htm": [ - "7a9cdd944791daa772bfc77300c9e7aa01a13a82", + "56eb70e8dcb45b72fd16150810c59e43b6abc2de", "testharness" ], "cors/preflight-cache.htm": [ - "21389f176401e407a16d89b3c27a8582e5817b6d", + "9bbc0c447ed2837d6fe7743e8f4af0f022c59394", "testharness" ], "cors/redirect-origin.htm": [ @@ -159602,6 +161151,10 @@ "cd808bdba86046b88e876b9fa9e1549b27a110db", "support" ], + "cors/resources/304.py": [ + "b3270117326add2e3709b1bf790747cf3a83a218", + "support" + ], "cors/resources/checkandremove.py": [ "d891a6e489124e4ef7f82faa51a5e2a7221925f9", "support" @@ -159643,11 +161196,11 @@ "testharness" ], "cors/status-preflight.htm": [ - "b36f8fc09cc7b7473dc0d26377c4b3c202037c74", + "dbb3d1c71c732c0f575a50d4f20e4f27ee815f16", "testharness" ], "cors/status.htm": [ - "faf2a74b1e23e42656233beaa739ff778cf85067", + "1dd55535f1759d4ec23b9bb3652e7b56f0f82234", "testharness" ], "cors/support.js": [ @@ -159678,6 +161231,18 @@ "a39c8c7fdd3b58d03d5a544ebe51f82e65ac5645", "support" ], + "css-typed-om/CSSMatrixComponent-DOMMatrix-mutable.html": [ + "f6056e2480829c7aa9885673d332496faf7777b5", + "testharness" + ], + "css-typed-om/declared-styleMap-accepts-inherit.html": [ + "2d6e5a3bc89559c671ed9a2dbad8e5f456b947a9", + "testharness" + ], + "css-typed-om/styleMap-update-function.html": [ + "ba9d58c998b7c7ab586fd54e80a0466133c91ebc", + "testharness" + ], "css-values/unset-value-storage.html": [ "d2e5101f623e29cc993fe2460f6c85f6ec31b471", "testharness" @@ -160011,7 +161576,7 @@ "support" ], "docs/OWNERS": [ - "78ba9cafd318b9c08381bde3275eac6899987888", + "f44b20b9ca4ae973a8a1da3a8d37e4c9dbb0dfdb", "support" ], "docs/_appendix/github-intro.md": [ @@ -160171,7 +161736,7 @@ "support" ], "docs/assets/main.scss": [ - "76e880eca5a3480076a4863d10caceb77eba376e", + "427cae125889f51bef386097f0127e948f02652e", "support" ], "docs/assets/menu.js": [ @@ -160207,7 +161772,7 @@ "support" ], "docs/index.html": [ - "72abc390909e003dfcd08d1b1148928406936f15", + "12c7175a4d6c486ca9ebea4c6a43d2aec9845d8b", "support" ], "docs/introduction.md": [ @@ -160215,7 +161780,7 @@ "support" ], "dom/OWNERS": [ - "ad654a78484621e32a76a4f3af5d225e802d6036", + "9b55eeb7739453218526eab2d6d00aedc475303a", "support" ], "dom/collections/HTMLCollection-as-proto-length-get-throws.html": [ @@ -160259,7 +161824,7 @@ "testharness" ], "dom/events/CustomEvent.html": [ - "ffd8a316822ad17adeefc1bd0da4b3a429b458b7", + "1ceee10cbe86c94d2c3a68672a78b1c6224c8616", "testharness" ], "dom/events/Event-cancelBubble.html": [ @@ -160355,7 +161920,7 @@ "testharness" ], "dom/events/Event-initEvent.html": [ - "b15976446b454c1554360c2cc39e2ae52e10e825", + "a01aa825e0905a0efc3afe9bc3015d448e9618f1", "testharness" ], "dom/events/Event-propagation.html": [ @@ -160431,7 +161996,7 @@ "testharness" ], "dom/interfaces.html": [ - "3d3bd9a930603fc209fbb5879a36c9c7a62b0c19", + "0cbf5532f442fdb9ba773fd053f8831b7b522767", "testharness" ], "dom/lists/DOMTokenList-Iterable.html": [ @@ -160439,7 +162004,7 @@ "testharness" ], "dom/lists/DOMTokenList-coverage-for-attributes.html": [ - "6c23a5f1c45aaa6e0e0c821986094ae491fdae43", + "ef209cd9285ddaaaa1c09d3448607070332bedf7", "testharness" ], "dom/lists/DOMTokenList-iteration.html": [ @@ -161071,11 +162636,11 @@ "testharness" ], "dom/nodes/Element-matches.html": [ - "cd92efe8ce474ce030e3e9ad5997c5ee247e481a", + "1c3babeb4f7c2a9f2a35d96aa6eb456f88966cbd", "testharness" ], "dom/nodes/Element-matches.js": [ - "f3923e42c55eac3f4dc9d2f8fb128e4e9b1b3afb", + "9ce802ae7a010a1a8458f49f1fdc1db81dafb8c7", "support" ], "dom/nodes/Element-nextElementSibling-svg.svg": [ @@ -161126,6 +162691,10 @@ "d6bb6d9f107f2d3ffd3c86793185eeb4336df834", "testharness" ], + "dom/nodes/Element-webkitMatchesSelector.html": [ + "31934621453740439f9b318c0bb8b180ac3071c3", + "testharness" + ], "dom/nodes/MutationObserver-attributes.html": [ "0a224c3dc64de0c4cf1fdc895a2c52667be2134f", "testharness" @@ -161919,7 +163488,7 @@ "support" ], "editing/data/inserthorizontalrule.js": [ - "1db27b1d9ace51dc47cb1b5f51e2827357a73dd5", + "a65609ebe407670a94a2ff59ed62ea4c2a3e1080", "support" ], "editing/data/inserthtml.js": [ @@ -161951,7 +163520,7 @@ "support" ], "editing/data/italic.js": [ - "6677c18d063d0444cba053e082edce38ad60822b", + "5459c6140ac7aadc49b716b82feba092eb8f67af", "support" ], "editing/data/justifycenter.js": [ @@ -161975,7 +163544,7 @@ "support" ], "editing/data/multitest.js": [ - "a7a7c79afbc60598311ec40ee630d119653684c8", + "aaecbcfb0c1077e4940181f74c6ddbd91d23fcbd", "support" ], "editing/data/outdent.js": [ @@ -161983,23 +163552,23 @@ "support" ], "editing/data/removeformat.js": [ - "a7dce438b92b252bccabaf86488428008df2d721", + "b7a24b8162be7c11b0cf2a6443fe0d3973e3bc75", "support" ], "editing/data/strikethrough.js": [ - "e6d44fd95d818454b9c84ab76449be23ed7e1c94", + "6016f3210874b49ae49093d0c3ab63ac8cd5abf8", "support" ], "editing/data/subscript.js": [ - "adfce261588df0b26fd2cdd881453a49caa7075d", + "0bf0515ad3643a09ab8af047fa01e14f62d13208", "support" ], "editing/data/superscript.js": [ - "0640a4319d8a788e90adfcd8662ec7191080bcce", + "f8b0e882d6911894e0b3b9ba74faad382d3db478", "support" ], "editing/data/underline.js": [ - "15c33ca88e2d4a797327cd72b6aba8c2d8aa838a", + "cb53bbac4065882c9bb1ef95975794cfd6b8616a", "support" ], "editing/data/unlink.js": [ @@ -162027,7 +163596,7 @@ "support" ], "editing/include/tests.js": [ - "30ccc3c37af706c78276459eb5b539262eddb3a8", + "b14610e875467c62eedb10fd8b3feefe5a3a25b6", "support" ], "editing/manual/delete.manual.html": [ @@ -163479,7 +165048,11 @@ "support" ], "fetch/OWNERS": [ - "63128c1d76e9d7784193157d13893776a7813916", + "f9806f6327e4a807709133c4adee7c3d8f1da72f", + "support" + ], + "fetch/README.md": [ + "cc3f679ff78bf2e3b39cf967102c257b84fd7680", "support" ], "fetch/api/basic/accept-header-worker.html": [ @@ -163615,7 +165188,7 @@ "testharness" ], "fetch/api/basic/request-upload.js": [ - "459c38158cb1a724e3ce5445f9d88249bf69ff2f", + "d5290f1afd2e01ae056c9b5152ce7767349c56d9", "support" ], "fetch/api/basic/response-url-worker.html": [ @@ -163718,6 +165291,18 @@ "4910174ab35d9da4bdc11cf984f54dae9fece2a2", "support" ], + "fetch/api/cors/cors-expose-star-worker.html": [ + "fff53964064bd5f0a7f216b940dda7b01854105c", + "testharness" + ], + "fetch/api/cors/cors-expose-star.html": [ + "5a9f1e1fc61dc64598a943a8fafc34bb5a2f48d6", + "testharness" + ], + "fetch/api/cors/cors-expose-star.js": [ + "393131f216961ca07a225d61a5b51726d8b02c51", + "support" + ], "fetch/api/cors/cors-filtering-worker.html": [ "636a08cb1943b3f1cb6a06944bdc7675d18233f0", "testharness" @@ -163790,6 +165375,18 @@ "4037390bbffca2c3e10508da1600efff50c9942e", "support" ], + "fetch/api/cors/cors-preflight-star-worker.html": [ + "68d72964cf5dfa1f7661b4d2e33ae2b22c7422f9", + "testharness" + ], + "fetch/api/cors/cors-preflight-star.html": [ + "c935382919fe73e156486bed7258528b3c6d0bf5", + "testharness" + ], + "fetch/api/cors/cors-preflight-star.js": [ + "ce7ea1d900d0248a5bf89ad2eb2fb4a88ed5692f", + "support" + ], "fetch/api/cors/cors-preflight-status-worker.html": [ "418e367444449f9efabeb4c8563061dbae0a64b0", "testharness" @@ -163823,7 +165420,7 @@ "testharness" ], "fetch/api/cors/cors-redirect-credentials.js": [ - "3f9dd0503a67202057cbc2a202c740d8963ed9e4", + "c86b7720c990f7cd792eeaff72cbb69bb312e491", "support" ], "fetch/api/cors/cors-redirect-preflight-worker.html": [ @@ -164007,7 +165604,7 @@ "support" ], "fetch/api/policies/referrer-origin.js": [ - "e863bed9479b1b89cb0d8fae680e471ca66c757f", + "8ed1e2f442abec54ae856d5a40aef07ccc7e61bf", "support" ], "fetch/api/policies/referrer-origin.js.headers": [ @@ -164171,7 +165768,7 @@ "testharness" ], "fetch/api/request/request-cache.js": [ - "8f02462aac40b3866e61050a9022b6c6c84b0f8d", + "97463bf3078c8579b074ab2a178710daf8502a41", "support" ], "fetch/api/request/request-clone.sub.html": [ @@ -164214,6 +165811,10 @@ "059edc7e857af7231abc1434f3dcebb35229f459", "testharness" ], + "fetch/api/request/request-keepalive-quota.html": [ + "d839fec1d761688db807be2dfddf6b8b6932c46b", + "testharness" + ], "fetch/api/request/request-structure.html": [ "f1e332f5d3a7ee414fa01411b2534884d10462e9", "testharness" @@ -164255,7 +165856,7 @@ "support" ], "fetch/api/resources/preflight.py": [ - "59ac7dc62248865966c865afa0d3157189393a0b", + "80ac2baa426c8760e4f6eb3cda3121e044988113", "support" ], "fetch/api/resources/redirect.py": [ @@ -164319,7 +165920,7 @@ "testharness" ], "fetch/api/response/response-idl.html": [ - "8bfb4518430e79ae80c219c229c0c695cc2f0421", + "e0e32634b7e0271ff3566cb66b358e46c9fb8d21", "testharness" ], "fetch/api/response/response-init-001.html": [ @@ -164358,6 +165959,10 @@ "8177830f646faeb4678a7c5706e2e9c60e1f1078", "testharness" ], + "fetch/api/response/response-trailer.html": [ + "9597194813fc6ce3e63a7622eb61f791b8746ec7", + "testharness" + ], "fetch/nosniff/image.html": [ "da847d5aa65fc5f52313b4434a84f1938061c7f6", "testharness" @@ -164718,6 +166323,14 @@ "673d72414fab3dbb677d21a05008d9014daf71bf", "manual" ], + "fullscreen/api/document-exit-fullscreen-nested-in-iframe-manual.html": [ + "521f776f725c48e6f38bd8af3e6bff498c8ea604", + "manual" + ], + "fullscreen/api/document-exit-fullscreen-nested-manual.html": [ + "5ddaf5fd8c2aef02fc4cefffa80a569e513a5491", + "manual" + ], "fullscreen/api/document-exit-fullscreen-timing-manual.html": [ "fcac6966d40246ce9b62dd80233b9967c7d9c146", "manual" @@ -165227,7 +166840,7 @@ "support" ], "html/OWNERS": [ - "debb42d43e47bd190e4bc9d6eb368cff803c67de", + "e41b8e75432b4d9be1a3e3d445de45cb3693b6eb", "support" ], "html/browsers/.gitkeep": [ @@ -165739,7 +167352,7 @@ "support" ], "html/browsers/browsing-the-web/unloading-documents/beforeunload-canceling.html": [ - "c98f22b2c05a3c6e3df1d90e88f5d59dd5f4cd86", + "3164df75ba277feef3b5c9a1ff6021f3e51d48de", "testharness" ], "html/browsers/browsing-the-web/unloading-documents/beforeunload-on-history-back-1.html": [ @@ -166419,7 +168032,7 @@ "testharness" ], "html/browsers/history/the-location-interface/location-protocol-setter-with-colon.sub.html": [ - "fe8356bed0dc28851cf8cfb606d72cb71c018190", + "15a3314e7ac584203559cd5df8c172d16ccb3f99", "testharness" ], "html/browsers/history/the-location-interface/location-protocol-setter.html": [ @@ -166683,11 +168296,11 @@ "testharness" ], "html/browsers/offline/application-cache-api/api_update.html": [ - "d749e9f18bb01cf2e9fb114b86210b18a93b28b4", + "99e4b5d9ebec73a932fe522aceece7fb3b94ef26", "testharness" ], "html/browsers/offline/application-cache-api/api_update_error.html": [ - "51873cf265052ac2c96f155c564e1900e29a4063", + "a08540b1a71a7512a8b9cc2b0af28fd5c64bfe25", "testharness" ], "html/browsers/offline/browser-state/.gitkeep": [ @@ -166794,6 +168407,14 @@ "f844a4d122bf6a46e2ccd4725483a72f8ebb9f42", "support" ], + "html/browsers/offline/no-appcache-in-shared-workers-historical.html": [ + "2c48e76225b084b3a13b7d9f52c95a98463e4bee", + "testharness" + ], + "html/browsers/offline/no-appcache-in-shared-workers-historical.js": [ + "097443ac350588c2dcfb6909269cf9be8ad9b84c", + "support" + ], "html/browsers/offline/resources/css/clock.css": [ "1b321e25fbb05134eed4d8816f263e77a50e452a", "support" @@ -167127,7 +168748,7 @@ "testharness" ], "html/browsers/the-window-object/support/noopener-target.html": [ - "a2872e4bb40c8b186774d82eea5db6d9875a8b50", + "8b54eda2f83525a82588c889a0a24e2356cac670", "support" ], "html/browsers/the-window-object/the-windowproxy-object/.gitkeep": [ @@ -167175,7 +168796,7 @@ "testharness" ], "html/browsers/the-window-object/window-open-noopener.html": [ - "d362bf2698f0d6f752bba6b9b094e6c41026ccd9", + "2e20bfcd1dfe9bee00a9747b87cdaf42004d6415", "testharness" ], "html/browsers/the-window-object/window-properties.html": [ @@ -167198,10 +168819,6 @@ "aecd2f28b5bd6301c51d535a4b1068a10b497899", "support" ], - "html/browsers/windows/browsing-context-first-created.xhtml": [ - "1393800854d0b2daa509eeec75e43fadc2be3a5c", - "testharness" - ], "html/browsers/windows/browsing-context-names/.gitkeep": [ "da39a3ee5e6b4b0d3255bfef95601890afd80709", "support" @@ -167266,6 +168883,14 @@ "174e949fcfb26b9c93463a4eeecb338115ed56b2", "support" ], + "html/browsers/windows/browsing-context-window.html": [ + "8400240acf63f30ec67ecd003030e81201783d2b", + "testharness" + ], + "html/browsers/windows/browsing-context.html": [ + "ad718fb943e000ad5d2f376ea5ac8a011661ab37", + "testharness" + ], "html/browsers/windows/groupings-of-browsing-contexts/.gitkeep": [ "da39a3ee5e6b4b0d3255bfef95601890afd80709", "support" @@ -167295,24 +168920,56 @@ "testharness" ], "html/browsers/windows/noreferrer-cross-origin-close-manual.sub.html": [ - "71b32ec0abe0159028fd7a1648cfaaf37f92fd7e", + "7b433ceb6ee8b0800dc9151e698c8e1810032a95", "manual" ], "html/browsers/windows/noreferrer-cross-origin-manual.html": [ "0c0fde6d9d61505361f1af546bc8f92846f02267", "manual" ], - "html/browsers/windows/noreferrer-cross-origin-window-name.sub.html": [ - "e7f97f2c9c76773719a53e0a16cad28942583efa", - "support" + "html/browsers/windows/noreferrer-cross-origin-window-name-manual.sub.html": [ + "994b2b10b7d302ec7903c689c58b422fbd478d87", + "manual" + ], + "html/browsers/windows/noreferrer-null-opener.html": [ + "cfced8fc2302ae4111c9c44976f36fe211ae379c", + "testharness" ], "html/browsers/windows/noreferrer-window-name.html": [ - "50afeed23c4279ed044802c6b33c5b5ac9ad4d7a", + "163e478a1fb6bb341d10f2ac94f868207b71bbf1", "testharness" ], - "html/browsers/windows/noreferrer.html": [ - "c59de38af4cf52877cf722bda7997b0dae8026d8", - "testharness" + "html/browsers/windows/resources/browsing-context-window.html": [ + "391d8d5a5d0d8d8cfb98e4938a5bc4a5946eb13e", + "support" + ], + "html/browsers/windows/resources/echo-window-name.html": [ + "8921da98fd0c74e8fa3a500310d434419119714c", + "support" + ], + "html/browsers/windows/resources/nested-post-to-opener.html": [ + "605d0c4f4e80cccd58226d7ecf3bdab8788aa4c8", + "support" + ], + "html/browsers/windows/resources/noreferrer-window-name.html": [ + "0713aa5c65f801ba146994d504cb1ee4b3bb2599", + "support" + ], + "html/browsers/windows/resources/post-to-opener.html": [ + "fb65db2b3dd74a04f29bdbd938d5a3b0fe189abb", + "support" + ], + "html/browsers/windows/resources/target-cross-origin.sub.html": [ + "a2d5c6b8771f5394dd1c5aee41a0b0f63276bfaa", + "support" + ], + "html/browsers/windows/resources/window-close-button.html": [ + "83bc4461894fdfc0b708c5740a8f5361178cf870", + "support" + ], + "html/browsers/windows/resources/window-opener.html": [ + "3b7934e44c2b2cfbcc68a6f965a824ebef132baf", + "support" ], "html/browsers/windows/secondary-browsing-contexts/.gitkeep": [ "da39a3ee5e6b4b0d3255bfef95601890afd80709", @@ -167322,40 +168979,12 @@ "da39a3ee5e6b4b0d3255bfef95601890afd80709", "support" ], - "html/browsers/windows/support-close.html": [ - "83bc4461894fdfc0b708c5740a8f5361178cf870", - "support" - ], - "html/browsers/windows/support-named-null-opener.html": [ - "0713aa5c65f801ba146994d504cb1ee4b3bb2599", - "support" - ], - "html/browsers/windows/support-nested-browsing-contexts.html": [ - "605d0c4f4e80cccd58226d7ecf3bdab8788aa4c8", - "support" - ], - "html/browsers/windows/support-open-cross-origin.sub.html": [ - "9c78af14dcc8056383dd428c45439a514fe2580c", - "support" - ], - "html/browsers/windows/support-opener-null.html": [ - "3b7934e44c2b2cfbcc68a6f965a824ebef132baf", - "support" - ], - "html/browsers/windows/support-post-to-opener.html": [ - "fb65db2b3dd74a04f29bdbd938d5a3b0fe189abb", - "support" - ], - "html/browsers/windows/support-window-name-echo.html": [ - "8921da98fd0c74e8fa3a500310d434419119714c", - "support" - ], "html/browsers/windows/targeting-cross-origin-nested-browsing-contexts.html": [ - "f7873dc96cadadccf6097d387c94f8db60a54e69", + "81b59630c8973be637f2ef2f379e126ea6dca69d", "testharness" ], "html/browsers/windows/targeting-multiple-cross-origin-manual.sub.html": [ - "c75e29d1c3bd0d03645381cdfa7d1a45f25e2ff1", + "bd24d62276b1426627f138f4a1bee27cd4c4517c", "manual" ], "html/dom/.gitkeep": [ @@ -168179,7 +169808,7 @@ "support" ], "html/dom/elements/elements-in-the-dom/historical.html": [ - "ccef85d12bf11835f3dfe2012532b46b762278fb", + "c7866c9d75f6e11aaa16f6e6ee340ec3d7431441", "testharness" ], "html/dom/elements/elements-in-the-dom/unknown-element.html": [ @@ -169007,11 +170636,11 @@ "testharness" ], "html/dom/reflection.js": [ - "7675f0b4e2b364d84cc878edf0608cf563267e6c", + "d952a2936d184f18f3de4c00c5a871ce303b3963", "support" ], "html/dom/resources/interfaces.idl": [ - "4319380dff6b1b48a5a8b75efdf6819fc34542fb", + "c712b0532395b08c2e6b3c68b8580f560b47a594", "support" ], "html/dom/resources/self-origin-subframe.html": [ @@ -174119,11 +175748,11 @@ "reftest" ], "html/rendering/replaced-elements/resources/svg-sizing.js": [ - "f5ce42553e067f5357d31d9cc5a1deb41410df4b", + "bbf4061fac8f777b444c23e6df31cd4fa8cc3955", "support" ], "html/rendering/replaced-elements/svg-embedded-sizing/svg-embedded-sizing.js": [ - "91661663d6c6ea13e455e0296c9350ccc19d0089", + "8a81ef6d6d92a20cb4c86ef8e4f8a3e18f09a7a0", "support" ], "html/rendering/replaced-elements/svg-embedded-sizing/svg-in-iframe-auto.html": [ @@ -174235,7 +175864,7 @@ "support" ], "html/semantics/document-metadata/styling/LinkStyle.html": [ - "d1d35da0a14099a63d595edfc42b1570342d36eb", + "9204127131c4ff7c7fc7753733c54f4a13242131", "testharness" ], "html/semantics/document-metadata/styling/support/alternate.css": [ @@ -175098,6 +176727,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" @@ -176206,6 +177839,14 @@ "130faa6ea1a376ce786f69b672486d7056c32b05", "testharness" ], + "html/semantics/embedded-content/the-iframe-element/iframe_sandbox_allow_top_navigation_by_user_activation-manual.html": [ + "7f8cc0226de24738bc75517e95d2942396b222a8", + "manual" + ], + "html/semantics/embedded-content/the-iframe-element/iframe_sandbox_allow_top_navigation_by_user_activation_without_user_gesture.html": [ + "fcbb80f82ca87610d00a6307da426b63f81e5a37", + "testharness" + ], "html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-1.html": [ "5dcb098cdef98557922b9dd71d7b39d3de7a595b", "testharness" @@ -176278,6 +177919,18 @@ "941efb7368e46b27b937d34b07fc4d41da01b002", "support" ], + "html/semantics/embedded-content/the-iframe-element/support/iframe-that-performs-top-navigation-without-user-gesture-failed.html": [ + "98cfb7f03cd2abb52634ab15a03f4f805bb2ee27", + "support" + ], + "html/semantics/embedded-content/the-iframe-element/support/iframe-that-performs-top-navigation.html": [ + "a4a67179771917899f41114467b46be39d857eb5", + "support" + ], + "html/semantics/embedded-content/the-iframe-element/support/navigation-changed-iframe.html": [ + "9dd191a0b5d9c15972363e260228956f7f487c7d", + "support" + ], "html/semantics/embedded-content/the-iframe-element/support/sandbox_allow_script.html": [ "2319116d010e6b67be6d8aeb801a9b24171b3b0d", "support" @@ -176763,7 +178416,7 @@ "support" ], "html/semantics/forms/textfieldselection/select-event.html": [ - "b2fa892891df602217e65baf22d6e4610b18bbd6", + "90528b5c92d94342b3fe2ef248d90d6a4d397377", "testharness" ], "html/semantics/forms/textfieldselection/selection-after-content-change.html": [ @@ -176775,7 +178428,7 @@ "testharness" ], "html/semantics/forms/textfieldselection/selection-not-application.html": [ - "39ecb031aca3655a06152f94a514981fe59ebbaf", + "3763f117f8973ca9a994354ccbf22cb7114ece7a", "testharness" ], "html/semantics/forms/textfieldselection/selection-start-end.html": [ @@ -176787,11 +178440,11 @@ "testharness" ], "html/semantics/forms/textfieldselection/textfieldselection-setRangeText.html": [ - "3bbd350321f5ec9e0a8f3d47da4e11aaa3ad4d68", + "f824af3b23cc1d0412783dbcbcbdee818a501d56", "testharness" ], "html/semantics/forms/textfieldselection/textfieldselection-setSelectionRange.html": [ - "ffcef015b49fd156cc529117509f0ae0a38234bd", + "a3f85905acb42372806d07259e09d75e2fd8db1f", "testharness" ], "html/semantics/forms/the-button-element/.gitkeep": [ @@ -177195,7 +178848,7 @@ "testharness" ], "html/semantics/forms/the-select-element/selected-index.html": [ - "3ab30abb683f3fb42b6fdc84555126379d472a3d", + "0753a7487a10bde3b879d4c2ed10ba3d0260a48a", "testharness" ], "html/semantics/forms/the-textarea-element/.gitkeep": [ @@ -177790,6 +179443,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" @@ -178822,14 +180639,6 @@ "41e260e7df49e0e4ddb1fc5df11913dbda15edd7", "support" ], - "html/syntax/parsing-html-fragments/the-input-byte-stream-015.html": [ - "6564a6f963fdccf6156287f0acd6c20eaacbd48a", - "testharness" - ], - "html/syntax/parsing-html-fragments/the-input-byte-stream-015.html.headers": [ - "41e260e7df49e0e4ddb1fc5df11913dbda15edd7", - "support" - ], "html/syntax/parsing-html-fragments/the-input-byte-stream-016.html": [ "60de0ad291a918bacc47556736867f671bdd1bb8", "testharness" @@ -179287,7 +181096,7 @@ "testharness" ], "html/syntax/parsing/test.js": [ - "601fc3cf58080c100c5f0a16f097d5d518d91efe", + "2ac20d68953dd8e0374d8bb35616277a6f1d1eeb", "support" ], "html/syntax/parsing/the-end.html": [ @@ -179431,11 +181240,11 @@ "testharness" ], "html/webappapis/dynamic-markup-insertion/opening-the-input-stream/origin-check-in-document-open-basic.html": [ - "8544d006dcbad6142d31c81adcba3528435a8b3b", + "5aea157f38d3bc075959be3d1f277ea25c731a66", "testharness" ], "html/webappapis/dynamic-markup-insertion/opening-the-input-stream/origin-check-in-document-open-same-origin-domain.sub.html": [ - "4549cb718f2e4a1e22a561ef0eb0718c1ed6b05c", + "b4cdd98c6eb9a3946b49a6876c62c7e35501f413", "testharness" ], "html/webappapis/dynamic-markup-insertion/opening-the-input-stream/resources/set-document-domain.html": [ @@ -179538,6 +181347,10 @@ "c8e48064f18b1d1eb13e151b69ee60b8d68f4dab", "testharness" ], + "html/webappapis/scripting/events/compile-event-handler-settings-objects.html": [ + "43a17069cb0d3c819d1b55eaa4616af0b0a338b7", + "testharness" + ], "html/webappapis/scripting/events/contains.json": [ "2b05164b274d7719e27e3b9def3f25eaa156b839", "support" @@ -179583,7 +181396,7 @@ "testharness" ], "html/webappapis/scripting/events/messageevent-constructor.https.html": [ - "88f17d8b54f93b187e72dd3424951a3a4f07e62f", + "78d9fe8ca88a24621890aee14d33694aa76c6a27", "testharness" ], "html/webappapis/scripting/events/onerroreventhandler-frame.html": [ @@ -179594,6 +181407,14 @@ "8ade4c9c6b63935d437cc4c045b22512207e3ee0", "testharness" ], + "html/webappapis/scripting/events/resources/compiled-event-handler-settings-objects-support.html": [ + "bec82bc1771743c4262af46e36eaf68a3e2cf9be", + "support" + ], + "html/webappapis/scripting/events/resources/open-window.html": [ + "f8ea32a9c2fe17f1ed0459f222e5f3151c286caa", + "support" + ], "html/webappapis/scripting/events/uncompiled_event_handler_with_scripting_disabled.html": [ "875ab8aa7b99cec015d82bcfe9ef4133b7adf97f", "testharness" @@ -179631,7 +181452,7 @@ "testharness" ], "html/webappapis/scripting/processing-model-2/compile-error-cross-origin-setTimeout.html": [ - "0a588a749377d21e08f33da857500f921a07be99", + "6f49f9b984646f1738988f16d57c18278754c31e", "testharness" ], "html/webappapis/scripting/processing-model-2/compile-error-cross-origin.html": [ @@ -179651,11 +181472,11 @@ "testharness" ], "html/webappapis/scripting/processing-model-2/compile-error-in-setInterval.html": [ - "ad60cdcd56908e83491aa08adf3c65c9fb0dc839", + "ef844547e22243e00605fe61dae98fc4799849b1", "testharness" ], "html/webappapis/scripting/processing-model-2/compile-error-in-setTimeout.html": [ - "f7e2f3cb84041a8fd81eef525697348460f02d34", + "a76b8a140592153305d33c6cebe987754d6d42d3", "testharness" ], "html/webappapis/scripting/processing-model-2/compile-error-same-origin-with-hash.html": [ @@ -179679,7 +181500,7 @@ "testharness" ], "html/webappapis/scripting/processing-model-2/runtime-error-cross-origin-setTimeout.html": [ - "8eb05dee678b74a75a37ca556c8db3c6ce90cd49", + "b97829dfacc9ff0e1ef650cdd3cf4ccb9138f7fc", "testharness" ], "html/webappapis/scripting/processing-model-2/runtime-error-cross-origin.html": [ @@ -179699,11 +181520,11 @@ "testharness" ], "html/webappapis/scripting/processing-model-2/runtime-error-in-setInterval.html": [ - "7130ee175c71eac941e471f8d387d6fc96a699a4", + "7e8952fe584c9f7e8e04777d2d4946d54eb6f288", "testharness" ], "html/webappapis/scripting/processing-model-2/runtime-error-in-setTimeout.html": [ - "18eee3a24d9569ff4bf8d48e5480da0adc42b724", + "51840a7f6f72e730c7d7410bdbe80e9c9d9eb6fe", "testharness" ], "html/webappapis/scripting/processing-model-2/runtime-error-in-window-onerror.html": [ @@ -179723,7 +181544,7 @@ "testharness" ], "html/webappapis/scripting/processing-model-2/support/syntax-error-in-setInterval.js": [ - "125f465530468196b263492b0d7ff48b2f5aa27e", + "35395df72ad9dd2ba9138588ad29a348f9b7ac44", "support" ], "html/webappapis/scripting/processing-model-2/support/syntax-error-in-setTimeout.js": [ @@ -179735,7 +181556,7 @@ "support" ], "html/webappapis/scripting/processing-model-2/support/undefined-variable-in-setInterval.js": [ - "5a5ed170634b7d057b962ef3fa6c849f97e0ac9d", + "17951f5292839ac7fd3d761946e8fefdcfe815f5", "support" ], "html/webappapis/scripting/processing-model-2/support/undefined-variable-in-setTimeout.js": [ @@ -179914,6 +181735,18 @@ "8efe37cac0d5dd0004bf0743c702eba27690058f", "testharness" ], + "html/webappapis/the-windoworworkerglobalscope-mixin/Worker_Self_Origin.html": [ + "9b895ac9dba41e20e341114eac7ab383cd8b08fb", + "testharness" + ], + "html/webappapis/the-windoworworkerglobalscope-mixin/support/WorkerSelfOriginSharedWorker.js": [ + "42077e6038d7dca23ea9dbd6f95f0f53a9e762fa", + "support" + ], + "html/webappapis/the-windoworworkerglobalscope-mixin/support/WorkerSelfOriginWorker.js": [ + "00ef4a167d7b93567416ee0de031feb76eaec937", + "support" + ], "html/webappapis/timers/.gitkeep": [ "da39a3ee5e6b4b0d3255bfef95601890afd80709", "support" @@ -180134,6 +181967,14 @@ "c832afb4826fd43d2fcc4f5e3fd6a773a6ee35f0", "testharness" ], + "infrastructure/reftest-wait-ref.html": [ + "62552ac6981fc0c7aca84983569717eb2990a31e", + "support" + ], + "infrastructure/reftest-wait.html": [ + "2ce5c2dc6d3f9f96cbd8dd527802cc9835df56cf", + "reftest" + ], "innerText/getter-tests.js": [ "3b33df08dce92cf6720bbbfa3881ccd04c9ab658", "support" @@ -180691,11 +182532,11 @@ "support" ], "media-capabilities/idlharness.html": [ - "4ee7d3eb90c352a0888468578e49bbd49f91b789", + "d9a80463af2e0fc7bda0a4370a3ba0bbbb791897", "testharness" ], "media-capabilities/query.html": [ - "11afd4ba4eb40a5ff89c06ecf375eb16df65faaa", + "a83f2c7a7d9c38c707c4f96c3cd74f77185b7e43", "testharness" ], "media-source/OWNERS": [ @@ -181138,6 +182979,10 @@ "cb9a48e1d53911d5be214320adfbf7596632a316", "support" ], + "media/CanvasTest.ttf": [ + "10a7017b4caead6817aa08b25f14950e6402dd95", + "support" + ], "media/OWNERS": [ "f478084fb2b04fe93435b3c33e9791bf613ba7f8", "support" @@ -181239,7 +183084,7 @@ "testharness" ], "mediacapture-streams/MediaStream-MediaElement-preload-none.https.html": [ - "f80c766d154b39a83b9a09b5a1c099ddb7336351", + "0f2bbd7581f2f51376b7fada199b4d436f411dba", "testharness" ], "mediacapture-streams/MediaStream-MediaElement-srcObject.https.html": [ @@ -181286,9 +183131,9 @@ "ff30dfac08aae859ad469c15fd7e5469b830d3a9", "testharness" ], - "mediacapture-streams/MediaStreamTrack-end.https.html": [ + "mediacapture-streams/MediaStreamTrack-end-manual.https.html": [ "e5550adb1a9ce03ba672271aa1cdcec7ffde27d6", - "testharness" + "manual" ], "mediacapture-streams/MediaStreamTrack-id.https.html": [ "ea67395aec0f0c619ba7b94eb4bd26b317a945d3", @@ -183282,7 +185127,7 @@ "e9e77b2e03c6f9ff4856836143800a8baa26d451", "support" ], - "notifications/shownotification-resolve-manual.html": [ + "notifications/shownotification-resolve-manual.https.html": [ "e80633359e22cb1236fc78671b29899079f2f868", "manual" ], @@ -191147,7 +192992,7 @@ "testharness" ], "payment-request/OWNERS": [ - "16577d2283b826f0541dbc795177c7aac7e1b228", + "b494320c405eae71a1bd2d8dec144d61ee450eb5", "support" ], "payment-request/allowpaymentrequest/active-document-cross-origin.https.sub.html": [ @@ -191262,6 +193107,14 @@ "cba44e2dd2a3c54106bfecc6cdd407643e2ba995", "manual" ], + "pointerevents/extension/idlharness.html": [ + "64ed6d6c201773f0b5ab4b81369a2d601fe3363a", + "testharness" + ], + "pointerevents/extension/pointerevent_constructor.html": [ + "2af9a0d673339553ddfd30433c569f42b4803c22", + "testharness" + ], "pointerevents/idlharness.html": [ "6ca74eb661910c27ed6cb8bbbb819b749007a75f", "testharness" @@ -191290,10 +193143,18 @@ "c1bc66cc70a1d58ab31d00717a688c66e39533c2", "manual" ], + "pointerevents/pointerevent_click_during_capture-manual.html": [ + "19fedd25b597078b6a828e6fa0cd997e68cdf661", + "manual" + ], "pointerevents/pointerevent_constructor.html": [ "0b247d3b7dfd047c217a78c59652a3c32df0fcfa", "testharness" ], + "pointerevents/pointerevent_disabled_form_control-manual.html": [ + "dff74a4548994fcef47d4f0361f6c48607d08b18", + "manual" + ], "pointerevents/pointerevent_element_haspointercapture-manual.html": [ "fd7ceeb1f55491c3082a0171951a9bc1489500cc", "manual" @@ -191611,7 +193472,7 @@ "testharness" ], "preload/download-resources.html": [ - "fea098d865e90bd3f8f2f5405f822aadcfad5b07", + "b59eac5b7ef9911f8f8f9c3583dc701fbd3966c7", "testharness" ], "preload/dynamic-adding-preload.html": [ @@ -191643,7 +193504,7 @@ "testharness" ], "preload/onload-event.html": [ - "e7e49848d7d8a77323801b1a8ef750585a11b3f6", + "10727401482c9947a29d5073e50407f592538e98", "testharness" ], "preload/preload-csp.sub.html": [ @@ -191655,7 +193516,7 @@ "testharness" ], "preload/preload-with-type.html": [ - "e1635e40dd3b920c3c4738771a06ddc8761970d2", + "e49e294f08b309b542fe97d40b246683f71714b5", "testharness" ], "preload/resources/dummy.css": [ @@ -191691,7 +193552,7 @@ "testharness" ], "preload/single-download-preload.html": [ - "7f968cf3a8538ca99e353a3e47e120fb7833c8e7", + "8d638e60e598d83aaf089a2e17e128cd6d0b3dee", "testharness" ], "presentation-api/OWNERS": [ @@ -191714,10 +193575,18 @@ "dec89eb25f5967724cd5e5f21069e6feede088a6", "manual" ], + "presentation-api/controlling-ua/PresentationConnection_onmessage-manual.html": [ + "724bf7c2c00fab23a86f9a925b430cf4d4a0fe19", + "manual" + ], "presentation-api/controlling-ua/PresentationConnection_onterminated-manual.html": [ "856d3f3ad3af5f9c68d5b0d325a3b289cf1c6668", "manual" ], + "presentation-api/controlling-ua/PresentationConnection_send-manual.html": [ + "a2c002edf9dcc302390c8695afe1fc04025c32ee", + "manual" + ], "presentation-api/controlling-ua/PresentationRequest_error.html": [ "8d8a2a77b5735cfe4dc6d0eeb3c5bdf7f13c4148", "testharness" @@ -191747,7 +193616,7 @@ "testharness" ], "presentation-api/controlling-ua/common.js": [ - "6b66ea59a0aea5de9ff22dec36c986eb2558ea55", + "6b788aa76cb93a0454839209bb84aa25cd38011f", "support" ], "presentation-api/controlling-ua/defaultRequest_success-manual.html": [ @@ -191807,12 +193676,36 @@ "support" ], "presentation-api/controlling-ua/support/presentation.html": [ - "79ae33eb778882cca9ee96499194cc6519142ba3", + "0cad4d8b7725b287cd30284caab639cf21f6c1de", "support" ], - "presentation-api/receiving-ua/idlharness.html": [ - "18fdf16efb68da8b6b7d73636e560184caaa7196", - "testharness" + "presentation-api/controlling-ua/support/stash.js": [ + "abaa736a325dd7e7ce12b092e8ee0162122f584d", + "support" + ], + "presentation-api/controlling-ua/support/stash.py": [ + "f64f2ab5d0afa93e5adfa327e478936c0e295823", + "support" + ], + "presentation-api/receiving-ua/common.js": [ + "9fbb15886c9198a88ddb456c812055a0726dc978", + "support" + ], + "presentation-api/receiving-ua/idlharness-manual.html": [ + "8670eb19b871b3e0f9c04b6f77bf6b313210d0bc", + "manual" + ], + "presentation-api/receiving-ua/support/idlharness_receiving-ua.html": [ + "adffe1f696cf03f0041383992ab59e47db0ab8c0", + "support" + ], + "presentation-api/receiving-ua/support/stash.js": [ + "abaa736a325dd7e7ce12b092e8ee0162122f584d", + "support" + ], + "presentation-api/receiving-ua/support/stash.py": [ + "f64f2ab5d0afa93e5adfa327e478936c0e295823", + "support" ], "progress-events/Status.html": [ "2f34189d3c5515acab1431c80e4e97392a8afcc1", @@ -191915,7 +193808,7 @@ "support" ], "referrer-policy/README.md": [ - "74a9b42995a0bf224f538b6ae7b82fc14cc851ee", + "a908472f8b8c083f37da8feb38a198363f75376c", "support" ], "referrer-policy/generic/common.js": [ @@ -199423,7 +201316,7 @@ "support" ], "screen-orientation/OWNERS": [ - "527897601fb46cfed89657ec91f260115cf19601", + "516c041687b10ee09daae6695437013dd622c1a6", "support" ], "screen-orientation/lock-bad-argument.html": [ @@ -199611,7 +201504,7 @@ "testharness" ], "selection/addRange.js": [ - "df6dcd50618466c323d4343a8a2a55b2443e4498", + "36982e3d91452822913d41c41c36d28339cab8a2", "support" ], "selection/collapse-00.html": [ @@ -199623,15 +201516,15 @@ "testharness" ], "selection/collapse.js": [ - "41ae670c54b9141b065659a751f8495ded80ac1b", + "4cd755764b43e348b2dcf23d1c800953ee28f059", "support" ], "selection/collapseToStartEnd.html": [ - "630885adfd3996c7dc7da4088fc8c8449a8da452", + "2067830e0fa02de58d8459da435b13c277341196", "testharness" ], "selection/common.js": [ - "ffb4fe96df8ae290cb35574f751bafcc00805b4d", + "faf1740b23010409c1a26f7e847b75268b947d16", "support" ], "selection/deleteFromDocument.html": [ @@ -199655,7 +201548,7 @@ "testharness" ], "selection/extend.js": [ - "e5982a39ff7d36cd893bbe0bba19a7078a4096dd", + "21daf8d7634f3c325bf9e5564d21701264497a38", "support" ], "selection/getRangeAt.html": [ @@ -199667,17 +201560,21 @@ "testharness" ], "selection/interfaces.html": [ - "9ec3001efd5e443a533d261a51c94c3f60e273ed", + "dc08fae99f9b481a63ed5f78aa8b32eeaba28b35", "testharness" ], "selection/isCollapsed.html": [ - "9304191778ec0fb6b5d613efde19d1574b867dac", + "d1984a9359d880dfb81197e7ec31b2456833809d", "testharness" ], "selection/removeAllRanges.html": [ "23385a72a586db288b282eb251f9384048532666", "testharness" ], + "selection/removeRange.html": [ + "c67aebaddeb575fe92b7339f0c2e67209faf468a", + "testharness" + ], "selection/selectAllChildren.html": [ "1951e6d34c7959c038146efde2d49a7898eaee29", "testharness" @@ -200019,7 +201916,7 @@ "testharness" ], "service-workers/service-worker/controller-on-reload.https.html": [ - "54a7f90d5d19ca0ecef1c6c4bba8d648268759a5", + "8402c159967bb6e91903adc52e7d68c8d2443a72", "testharness" ], "service-workers/service-worker/extendable-event-async-waituntil.https.html": [ @@ -200066,11 +201963,11 @@ "2feaa5022ee31fb980f97075d932b0d87d6efe75", "testharness" ], - "service-workers/service-worker/fetch-event-within-sw-manual.html": [ + "service-workers/service-worker/fetch-event-within-sw-manual.https.html": [ "6bdea01ca619a894d07364a0485f717b46afe585", "manual" ], - "service-workers/service-worker/fetch-event-within-sw.html": [ + "service-workers/service-worker/fetch-event-within-sw.https.html": [ "0dfff8289762988423eb8fda40ef47884c243427", "testharness" ], @@ -200211,7 +202108,7 @@ "testharness" ], "service-workers/service-worker/multiple-register.https.html": [ - "fe3fe5f2c11f721c8686553587534c2679f670ed", + "3c4ec4fc7c72408211ff954b5a54ede3e5b0c656", "testharness" ], "service-workers/service-worker/multiple-update.https.html": [ @@ -200219,7 +202116,7 @@ "testharness" ], "service-workers/service-worker/navigate-window.https.html": [ - "669507683c98d99aa5dcfbddd71c23f8464b7c21", + "0499d4489276c2a933b79e47f1de591f467f42aa", "testharness" ], "service-workers/service-worker/navigation-redirect.https.html": [ @@ -200238,6 +202135,10 @@ "23d9e3dc830b83370875387cd5d6e1d5e913452f", "testharness" ], + "service-workers/service-worker/postmessage-blob-url.https.html": [ + "4ffd522eacbd5ecee11b921d4acc3442ef296514", + "testharness" + ], "service-workers/service-worker/postmessage-from-waiting-serviceworker.https.html": [ "99519ec3ef70e08fe42fce50bb6e9d643a2daa9f", "testharness" @@ -200295,7 +202196,7 @@ "testharness" ], "service-workers/service-worker/registration-iframe.https.html": [ - "5e438b64917501911ec5168c5fa3310a966d87d8", + "6d11b9ecf339e6e476fe594d5cb4e0873b0845d1", "testharness" ], "service-workers/service-worker/registration-service-worker-attributes.https.html": [ @@ -200315,7 +202216,7 @@ "testharness" ], "service-workers/service-worker/request-end-to-end.https.html": [ - "751848110fcccb77528114424511fd53857e38ff", + "1e2b1ee0455beeb2a609e927d2bf2655a9a801f6", "testharness" ], "service-workers/service-worker/resource-timing.https.html": [ @@ -200766,6 +202667,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" @@ -200807,7 +202712,7 @@ "support" ], "service-workers/service-worker/resources/request-end-to-end-worker.js": [ - "90e12e47594d86ca558d755880c80c1fba257a87", + "cafcb5f15ae073a68fbd10629374d8ad8f2b3b3c", "support" ], "service-workers/service-worker/resources/request-headers.py": [ @@ -201487,7 +203392,7 @@ "testharness" ], "shadow-dom/untriaged/html-elements-in-shadow-trees/inert-html-elements/test-001.html": [ - "a849b5ce7ab54771eed9315851665f54f8169ee2", + "aa57cc92b2ce5ba36a9ef1b5d307ffb9d35ccc01", "testharness" ], "shadow-dom/untriaged/html-elements-in-shadow-trees/inert-html-elements/test-002.html": [ @@ -201642,6 +203547,30 @@ "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" + ], + "storage/opaque-origin.https.html": [ + "6ce5a9b14d80030f0adfa1808857294e8c923cb2", + "testharness" + ], "streams/OWNERS": [ "5ed27d1c21178be00e972816933945e094a0e170", "support" @@ -201943,7 +203872,7 @@ "testharness" ], "streams/readable-streams/brand-checks.js": [ - "b3d64fa1a34d38a56451722efdc1d66b2227503d", + "c8ffdcf56bfddf5792af6eed627db55d7df3b444", "support" ], "streams/readable-streams/brand-checks.serviceworker.https.html": [ @@ -201994,6 +203923,26 @@ "42cf0e2dd45eae0311c210cced7d9c9c83620501", "testharness" ], + "streams/readable-streams/default-reader.dedicatedworker.html": [ + "42750f1d324f57507feb0260704a55c4cc0f8382", + "testharness" + ], + "streams/readable-streams/default-reader.html": [ + "4dca4e9785abb22b398029417dde50621c5c92aa", + "testharness" + ], + "streams/readable-streams/default-reader.js": [ + "bf6b1859b76b4891b558da229e7a2e4d40eb3a1d", + "support" + ], + "streams/readable-streams/default-reader.serviceworker.https.html": [ + "7a3f17c90551967ccc24bbc835eef2b521bf08b9", + "testharness" + ], + "streams/readable-streams/default-reader.sharedworker.html": [ + "399221af8cca8157bcaa05582dc66e94e56bc856", + "testharness" + ], "streams/readable-streams/floating-point-total-queue-size.dedicatedworker.html": [ "e07b6c46f7975b76a309ac9b728e4215d5e7fe9d", "testharness" @@ -202023,7 +203972,7 @@ "testharness" ], "streams/readable-streams/garbage-collection.js": [ - "1f6fdea9689eb6a21d3fd6a0be362aaed642fda9", + "aea6c64d62b25ee9bf9ccf29214ec9bef7eab993", "support" ], "streams/readable-streams/garbage-collection.serviceworker.https.html": [ @@ -202074,26 +204023,6 @@ "8ecb019e754fd4239cb35c27787897efc2dacccb", "testharness" ], - "streams/readable-streams/readable-stream-reader.dedicatedworker.html": [ - "1e6d8e7a09378353b62385ca3bb88961ac4b329c", - "testharness" - ], - "streams/readable-streams/readable-stream-reader.html": [ - "952983c614a48e3e3cb80e9c498a1dbff4b666ad", - "testharness" - ], - "streams/readable-streams/readable-stream-reader.js": [ - "76fbfc44284d6197edbcb3b54d1dba93fa142858", - "support" - ], - "streams/readable-streams/readable-stream-reader.serviceworker.https.html": [ - "e320ca7c96cfd77589d783f4e6a088935b277b82", - "testharness" - ], - "streams/readable-streams/readable-stream-reader.sharedworker.html": [ - "dd2388b7f28a215f5032fc27231528e3b58abec2", - "testharness" - ], "streams/readable-streams/tee.dedicatedworker.html": [ "028f2d402a74140b40a9a3eace6aad1cc862bb64", "testharness" @@ -202179,7 +204108,7 @@ "testharness" ], "streams/writable-streams/bad-strategies.js": [ - "58cf46e9e07c61e2a7d170cb93837b9e16aa66e3", + "a7a30fd91bba81c332a3447c99a5a0354dda04b4", "support" ], "streams/writable-streams/bad-strategies.serviceworker.https.html": [ @@ -202350,6 +204279,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" @@ -202471,7 +204420,7 @@ "support" ], "svg/OWNERS": [ - "6401bf704beeab5acf0805702f3e7965f5504189", + "fd41b1f5db84abb71fcaff4d84eb9106f464f1da", "support" ], "svg/README.md": [ @@ -204867,7 +206816,7 @@ "testharness" ], "typedarrays/OWNERS": [ - "23265c3e5aab230a1721acdee7e2fe8c83086db2", + "012f20941a3cfc474f98d679a7d6e53a12dad249", "support" ], "typedarrays/Uint8ClampedArray_constructor.html": [ @@ -204891,7 +206840,7 @@ "testharness" ], "uievents/OWNERS": [ - "ef86a7cc93417c5638ccea60e471c7f8d560edf6", + "0826698a2b0359d4b9201d5e7b2c9ceadfcf8ca5", "support" ], "uievents/README.md": [ @@ -204903,7 +206852,7 @@ "support" ], "uievents/constructors/inputevent-constructor.html": [ - "5af5377e8f5435b7c7bfafa2808e0a8dcf848ce4", + "757b9777e0cd956a27f036a1524c378bd922852b", "testharness" ], "uievents/hierarchy/README.md": [ @@ -205303,7 +207252,7 @@ "testharness" ], "url/OWNERS": [ - "11ddac39658b2348cefadeee3b5118b13470ef30", + "8dc7a69569b93a0e4cd0a0097fe6b9091177e30f", "support" ], "url/README.md": [ @@ -205334,6 +207283,10 @@ "cf3fd382286fe89570e68e0d90131db35e03e6ef", "support" ], + "url/failure.html": [ + "900755b25db687f1e793fe4cf18cfc456c35060a", + "testharness" + ], "url/historical.html": [ "94451e509174184811374cb8f0a346e76510eb54", "testharness" @@ -205347,7 +207300,7 @@ "testharness" ], "url/setters_tests.json": [ - "fe2f5c2d7fc20877c78d3fbe1d9ed24ddc520a21", + "9247003ff184569e0257445443abce24494550e0", "support" ], "url/url-constructor.html": [ @@ -205411,7 +207364,7 @@ "testharness" ], "url/urltestdata.json": [ - "b4bf45ecc49bf5ba2a6081b398484ce4c0ddce85", + "0574c667c385fac89679a5aad85f02c309b484d0", "support" ], "user-timing/OWNERS": [ @@ -205683,27 +207636,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", + "54858f64784c74a3d112e559fb765a1dbb9ba279", "testharness" ], "web-animations/interfaces/AnimationEffectTiming/easing.html": [ - "5d21bb3ae43da1226f9510595b47b452b3b8f223", + "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": [ @@ -205715,11 +207668,11 @@ "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": [ @@ -205787,7 +207740,7 @@ "support" ], "web-animations/resources/keyframe-utils.js": [ - "7a0f21838f4bbda51fe7e0b5d8e55952c6cdcbd4", + "ff5700466b5af6ffaad824437d6566003a22e25b", "support" ], "web-animations/testcommon.js": [ @@ -205802,6 +207755,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" @@ -206099,11 +208056,11 @@ "support" ], "webdriver/actions/conftest.py": [ - "ba57459c1eb7d792e14e756078eb725f4c07aa6e", + "78b6434a88021b7f56e5a7bf3e858fc9558a7c19", "wdspec" ], "webdriver/actions/key.py": [ - "808f1311409fb70a40bbb995ff7da768d58e43cb", + "bbb767c5b75b961d7eeed8960200276fb10fbd03", "wdspec" ], "webdriver/actions/mouse.py": [ @@ -206131,11 +208088,11 @@ "support" ], "webdriver/conftest.py": [ - "9a5d2c122d912af2d53478a3f83ac9da676ba531", + "0096317addcf73326f6df05847659d637ae6910e", "wdspec" ], "webdriver/contexts.py": [ - "cef7ae3987fa61d0b17c616e35c6066ce1e4af83", + "302a1a0cb246aef74f2c1d961a210d9de7e366c5", "wdspec" ], "webdriver/interface.html": [ @@ -206143,7 +208100,7 @@ "testharness" ], "webdriver/navigation.py": [ - "2216ea3b518ec6b1beef54ce2580b5e62c2841a0", + "8a0dd2bc5cf9c734ceebcd1a11431482c944a668", "wdspec" ], "webdriver/util/__init__.py": [ @@ -206151,7 +208108,7 @@ "support" ], "webdriver/util/cleanup.py": [ - "b7e2e0707925c0d331fe943612764d677f87ce90", + "1622ba96398dec13b5fa4214fe8a7f930a943c5f", "wdspec" ], "webdriver/util/http_request.py": [ @@ -206159,7 +208116,7 @@ "wdspec" ], "webgl/OWNERS": [ - "34855ff53b22857e0085833768f19f7304e6a75e", + "f8e0703fe2cc88edd21ef2c94fcb2e1a8889f5ae", "support" ], "webgl/bufferSubData.html": [ @@ -215587,7 +217544,7 @@ "testharness" ], "webmessaging/OWNERS": [ - "a1ebe6ec3a74535075a63e4623355db9044341eb", + "fe1a0075fb60f3a68d502bf9b8529f536b250ce1", "support" ], "webmessaging/README.md": [ @@ -215994,6 +217951,10 @@ "e322b3ab7f8e0bc7ff802f00234a9a6e80b8285a", "testharness" ], + "webrtc/rtcpeerconnection/setRemoteDescription.html": [ + "b11f7f3cc9a11b6aac9d70324a15e878c0345945", + "testharness" + ], "webrtc/simplecall.html": [ "0ccdc365173e0c805f708edc49dbb8c8a88d786a", "testharness" @@ -216107,7 +218068,7 @@ "testharness" ], "websockets/OWNERS": [ - "80da1a3dca00cad927e3231140cc929b5b291480", + "891fabbcf4359695999272da171ad3177d5f3e7e", "support" ], "websockets/README.md": [ @@ -216927,7 +218888,7 @@ "support" ], "webstorage/OWNERS": [ - "d27b8caf3522e2ca14e8000bf5bc92cbe005099d", + "66a7e2bea576713b472fc03f9c53b65cfc48f484", "support" ], "webstorage/README.md": [ @@ -217002,6 +218963,10 @@ "7a504bc478d03cbd77498284037af1d2a54d27d8", "testharness" ], + "webstorage/event_no_duplicates.html": [ + "494b19e190ed7d6af964aceffad9f261a02e4125", + "testharness" + ], "webstorage/event_session_key.html": [ "13dcb4e82c39d0662487b051bae087a805e0437a", "testharness" @@ -217187,227 +219152,859 @@ "testharness" ], "webvtt/OWNERS": [ - "ab29f0d0ba3abf5805a5578d9b22ae9291a3c303", + "eafa71f0bf87156ce909a8620b4991a980b8ab34", "support" ], + "webvtt/api/VTTCue/align.html": [ + "e150765ae1e87996eff7dc8b888284e9c279d7f8", + "testharness" + ], + "webvtt/api/VTTCue/constructor.html": [ + "c844f513868cbf4053c70f37bbb630b53a763a2a", + "testharness" + ], + "webvtt/api/VTTCue/getCueAsHTML.html": [ + "88e868bd5a243bfb24151028b6012914341e3742", + "testharness" + ], + "webvtt/api/VTTCue/line.html": [ + "07115104642dbfea2347f6926ca2cffff5839f25", + "testharness" + ], + "webvtt/api/VTTCue/lineAlign.html": [ + "886331a73977fe6025ad406a5124d150c01d174f", + "testharness" + ], + "webvtt/api/VTTCue/position.html": [ + "a6fcf0cef9f76dff923d8da848e6609ffd2a5976", + "testharness" + ], + "webvtt/api/VTTCue/positionAlign.html": [ + "16ae7ffaf8fd9a37b0b207d19351ca0a24b7134e", + "testharness" + ], + "webvtt/api/VTTCue/region.html": [ + "5ba23caf20dec7bcc4477c0e02892be3d2239c80", + "testharness" + ], + "webvtt/api/VTTCue/size.html": [ + "93251b45cab95fb885a8d4a3168fc492a3b37461", + "testharness" + ], + "webvtt/api/VTTCue/snapToLines.html": [ + "0e4ad4e1e42545ad720b134f69fcd63de22ade70", + "testharness" + ], + "webvtt/api/VTTCue/text.html": [ + "df27153660ab3df840d922803809a5b803027155", + "testharness" + ], + "webvtt/api/VTTCue/vertical.html": [ + "ca0be2954bfe511dd0f7f60ebcab4731cfeaac28", + "testharness" + ], + "webvtt/api/VTTRegion/constructor.html": [ + "0ee58bc32daf656ddc1c8ea6eec84f487b2bf010", + "testharness" + ], + "webvtt/api/VTTRegion/lines.html": [ + "590cec0b814df0bca2760cde94b2f74b4c9defca", + "testharness" + ], + "webvtt/api/VTTRegion/regionAnchorX.html": [ + "671153d52e901146f3243e974ad9d26d61031e47", + "testharness" + ], + "webvtt/api/VTTRegion/regionAnchorY.html": [ + "50845b667e54edb1b994908e506f25a4db1908cf", + "testharness" + ], + "webvtt/api/VTTRegion/scroll.html": [ + "7f09aeebcb1d2db13e76c031e1b954a3507da2fc", + "testharness" + ], + "webvtt/api/VTTRegion/viewportAnchorX.html": [ + "a166fdc6f6c9d1d1b2b0f1150830b8e98ba62463", + "testharness" + ], + "webvtt/api/VTTRegion/viewportAnchorY.html": [ + "d124cb5024bed842350139b42f1d2f0aa4fd87fc", + "testharness" + ], + "webvtt/api/VTTRegion/width.html": [ + "103a481c365bea3c1d6494f9fc3f3b6bf70ed580", + "testharness" + ], "webvtt/interfaces.html": [ "612566f403696557e64a686a1ab68956431666ef", "testharness" ], + "webvtt/parsing/README.md": [ + "0c79a65dd7cbc9f22cdf7de7b98f71a7fff788fa", + "support" + ], + "webvtt/parsing/cue-text-parsing/buildtests.py": [ + "5fe90ed238ef80fd3f69f72ca5df90984451d044", + "support" + ], + "webvtt/parsing/cue-text-parsing/common.js": [ + "d248c8ae97cc9205a5d6094b1800255e60551bf6", + "support" + ], + "webvtt/parsing/cue-text-parsing/dat/entities.dat": [ + "183dd9377fccb89e151dc298ec8b819d1209fee3", + "support" + ], + "webvtt/parsing/cue-text-parsing/dat/tags.dat": [ + "461d05cbc43780eacc6cbd667bb5ccc6215d9c5b", + "support" + ], + "webvtt/parsing/cue-text-parsing/dat/timestamps.dat": [ + "7946c639cd942ecb62eadf81aec77e3ecd09a788", + "support" + ], + "webvtt/parsing/cue-text-parsing/dat/tree-building.dat": [ + "4b8777b30361d5193137991be3b3268013a03fe9", + "support" + ], + "webvtt/parsing/cue-text-parsing/tests/entities.html": [ + "43183d8d79641b451636efc22aa70431ec0ab1f7", + "testharness" + ], + "webvtt/parsing/cue-text-parsing/tests/tags.html": [ + "5c1bb0dace4c7c18b0265c568f81a5594424ed6b", + "testharness" + ], + "webvtt/parsing/cue-text-parsing/tests/timestamps.html": [ + "9096541716f4318972db549f8a1fce33ca810b2a", + "testharness" + ], + "webvtt/parsing/cue-text-parsing/tests/tree-building.html": [ + "a812b24c8c9a8adbf05ea51a20e8b102a697cc88", + "testharness" + ], + "webvtt/parsing/file-parsing/README.md": [ + "2e167846b26497b3f44b6f6fed4b29be14b0a300", + "support" + ], + "webvtt/parsing/file-parsing/signature-invalid.html": [ + "a01ea6851e5ad1a1ef79d561fcfeafd09b6c1555", + "testharness" + ], + "webvtt/parsing/file-parsing/support/arrows.test": [ + "8aac7af73707eff9d8a9203d305e4e66cb6bf4bd", + "support" + ], + "webvtt/parsing/file-parsing/support/empty.vtt": [ + "da39a3ee5e6b4b0d3255bfef95601890afd80709", + "support" + ], + "webvtt/parsing/file-parsing/support/header-garbage.test": [ + "6f6f91d166866158e8ece4fbdf17ea8fec802f57", + "support" + ], + "webvtt/parsing/file-parsing/support/header-space.test": [ + "e83d197df896596e42db0fa6c567d4b44e77cda5", + "support" + ], + "webvtt/parsing/file-parsing/support/header-tab.test": [ + "6c6684f8768d8036df4081b12b0a8518776882e5", + "support" + ], + "webvtt/parsing/file-parsing/support/header-timings.test": [ + "77dd3f6c4564d0bf7d1cd2d063c23debeb33e44a", + "support" + ], + "webvtt/parsing/file-parsing/support/ids.test": [ + "bc6095daa57d8dc52bb48cc35a2a12e4dc2a9345", + "support" + ], + "webvtt/parsing/file-parsing/support/newlines.test": [ + "b9b302e9657582ba05319b270e75e6f0dbe75347", + "support" + ], + "webvtt/parsing/file-parsing/support/nulls.test": [ + "9ee5ce9b2404da7c41466ea12d28bc0cb78fbe58", + "support" + ], + "webvtt/parsing/file-parsing/support/regions-id.test": [ + "0b66b0dae12bbcc1764ac4d642b4fc6fda61b86b", + "support" + ], + "webvtt/parsing/file-parsing/support/regions-lines.test": [ + "c4a07575919bc3b618b832bd6073d26de11b1301", + "support" + ], + "webvtt/parsing/file-parsing/support/regions-old.test": [ + "c0a14bb1194268d84e4814722ecaf4cdcde48b19", + "support" + ], + "webvtt/parsing/file-parsing/support/regions-regionanchor.test": [ + "afb65a259e93e1f84d5dc39d904c5fb6bdbcd49f", + "support" + ], + "webvtt/parsing/file-parsing/support/regions-scroll.test": [ + "35efa2c27753087ff2b239f0ce588975a240a1df", + "support" + ], + "webvtt/parsing/file-parsing/support/regions-viewportanchor.test": [ + "57ff9f86e0cec8ef7b6e2a53691dab6f683d5414", + "support" + ], + "webvtt/parsing/file-parsing/support/settings-align.test": [ + "e4fb3b9bf4f5fa614093ce9c8fed92c6c8d04475", + "support" + ], + "webvtt/parsing/file-parsing/support/settings-line.test": [ + "c199f5bf8d95a1b932d72991f59ec0501679c01e", + "support" + ], + "webvtt/parsing/file-parsing/support/settings-multiple.test": [ + "e29a577e982ba849111dcaa23721d23fb9797983", + "support" + ], + "webvtt/parsing/file-parsing/support/settings-position.test": [ + "55fe6a35c1a92033887099f7b0cd529606e4c4f7", + "support" + ], + "webvtt/parsing/file-parsing/support/settings-region.test": [ + "e59eac735cdfa270ab9f5e57bb617e2125f3a66c", + "support" + ], + "webvtt/parsing/file-parsing/support/settings-size.test": [ + "3f9625f386550a6948661b92fb2763e7b9f44712", + "support" + ], + "webvtt/parsing/file-parsing/support/settings-vertical.test": [ + "e1f29bf7d2649a862f3306d0587bb0211de0a79e", + "support" + ], + "webvtt/parsing/file-parsing/support/signature-bom.test": [ + "1551a7105f127a66b06e530d63567e220b08e548", + "support" + ], + "webvtt/parsing/file-parsing/support/signature-formfeed.vtt": [ + "0759317ef9dd8906b7204c6054d0243a1da5960c", + "support" + ], + "webvtt/parsing/file-parsing/support/signature-invalid-whitespace.vtt": [ + "79eb5a96f2d379be23b8d3fb08cc1e886c8ca9e5", + "support" + ], + "webvtt/parsing/file-parsing/support/signature-invalid.vtt": [ + "7e513b5269bd5c7c33bfa7f15cd729856c90aa8b", + "support" + ], + "webvtt/parsing/file-parsing/support/signature-lowercase.vtt": [ + "542aff552ac0196d1f954e99b6b5b2a314da60aa", + "support" + ], + "webvtt/parsing/file-parsing/support/signature-missing-whitespace.vtt": [ + "6679174e655587ac715d9be0046d74515ac4316a", + "support" + ], + "webvtt/parsing/file-parsing/support/signature-missing.vtt": [ + "9c09e8e3c52d1e001eb6c797bfce4928d3c861af", + "support" + ], + "webvtt/parsing/file-parsing/support/signature-no-newline.test": [ + "23f2f6117609483ce3bb62bd179acb3984d7d88d", + "support" + ], + "webvtt/parsing/file-parsing/support/signature-null.vtt": [ + "797545cea933c4a4f6611c818a85f9ccaf6d8d74", + "support" + ], + "webvtt/parsing/file-parsing/support/signature-partial.vtt": [ + "439adea746f6730c811e2f02edade910bb14a3a9", + "support" + ], + "webvtt/parsing/file-parsing/support/signature-space-no-newline.test": [ + "94f7559695fc9e414b5902c70b7a582ec4522b11", + "support" + ], + "webvtt/parsing/file-parsing/support/signature-space.test": [ + "bfa7d793c3f623a4ae04d886b6956226e446d257", + "support" + ], + "webvtt/parsing/file-parsing/support/signature-tab-no-newline.test": [ + "a74eb767e027eee1015f682e256be26d56cb9174", + "support" + ], + "webvtt/parsing/file-parsing/support/signature-tab.test": [ + "091854cc34e75b7454464f93cb78d24da1bf969c", + "support" + ], + "webvtt/parsing/file-parsing/support/signature-timings.test": [ + "53744e203eaea9bd4373d85659f6d559db88d877", + "support" + ], + "webvtt/parsing/file-parsing/support/signature-two-boms.vtt": [ + "fe57945f965a5dd7e58a0aa1af01fe26be75b388", + "support" + ], + "webvtt/parsing/file-parsing/support/signature-websrt.vtt": [ + "5d1456cf5066adcee6d6bdffb72a9f2d97d9ede8", + "support" + ], + "webvtt/parsing/file-parsing/support/stylesheets.test": [ + "519cfe119b0073afb8173ca1c30a1d07ae502473", + "support" + ], + "webvtt/parsing/file-parsing/support/timings-60.test": [ + "c2efb962e301e246162d068cb4c0a83c8d2d4f48", + "support" + ], + "webvtt/parsing/file-parsing/support/timings-eof.test": [ + "4bc40274164821026d7d0bc32d677630b3ee7760", + "support" + ], + "webvtt/parsing/file-parsing/support/timings-garbage.test": [ + "85e032a425097b958f2f95751bb7b18756556957", + "support" + ], + "webvtt/parsing/file-parsing/support/timings-negative.test": [ + "ec1728c7ca2b1d5fa6c7ffdda689a30c00a6d37d", + "support" + ], + "webvtt/parsing/file-parsing/support/timings-omitted-hours.test": [ + "2f992824a05376f9536e6622449b17ed05e685d9", + "support" + ], + "webvtt/parsing/file-parsing/support/timings-too-long.test": [ + "0ac22aa01a930620560a99219d1d0073e21cba37", + "support" + ], + "webvtt/parsing/file-parsing/support/timings-too-short.test": [ + "6e92741a7e6c97f74570fb23d8d2bb0b0aa83fe1", + "support" + ], + "webvtt/parsing/file-parsing/support/whitespace-chars.test": [ + "802c159ffc652bc8d36e8d4d8502b0bc167cbe2b", + "support" + ], + "webvtt/parsing/file-parsing/tests/arrows.html": [ + "55d90be35579cf64a966eb12c593ed3792b4b1c1", + "testharness" + ], + "webvtt/parsing/file-parsing/tests/header-garbage.html": [ + "f0478b342977b4b1986b6ea02474f28fe654cc87", + "testharness" + ], + "webvtt/parsing/file-parsing/tests/header-space.html": [ + "693f0bbebe9e6d92e73edb41d94d4f7c9023d33a", + "testharness" + ], + "webvtt/parsing/file-parsing/tests/header-tab.html": [ + "5183feaeab6476b98a26ed7d897d46a095177d09", + "testharness" + ], + "webvtt/parsing/file-parsing/tests/header-timings.html": [ + "b4aac06a6fef4ac548091db5d3ad6609a8fc935e", + "testharness" + ], + "webvtt/parsing/file-parsing/tests/ids.html": [ + "c61a87e0623a77150e25b647690fc0b30555cbb3", + "testharness" + ], + "webvtt/parsing/file-parsing/tests/newlines.html": [ + "0f58395ed99a61da5f6ec2490402e93bd3f892f2", + "testharness" + ], + "webvtt/parsing/file-parsing/tests/nulls.html": [ + "9da3e5bf2d7cfa65109c196d88c44c37887296d0", + "testharness" + ], + "webvtt/parsing/file-parsing/tests/regions-id.html": [ + "a460719d2dbcd8a83ecb0b66e242c7690085b5b2", + "testharness" + ], + "webvtt/parsing/file-parsing/tests/regions-lines.html": [ + "f3dbc54ce3b9ff4a8483a26d8772b4e0c9147135", + "testharness" + ], + "webvtt/parsing/file-parsing/tests/regions-old.html": [ + "4ab58e6adde68b318d1efea94bdbc68b5d0d7f80", + "testharness" + ], + "webvtt/parsing/file-parsing/tests/regions-regionanchor.html": [ + "4b2a99d7e1ead80e60eb0b51176da10a2af9608e", + "testharness" + ], + "webvtt/parsing/file-parsing/tests/regions-scroll.html": [ + "15dd9378d09fbebfba8a7dbcaa4b3ffb63d41ee6", + "testharness" + ], + "webvtt/parsing/file-parsing/tests/regions-viewportanchor.html": [ + "3409a66aea03f9ba1a7f5d0b18b8ee6fe191763a", + "testharness" + ], + "webvtt/parsing/file-parsing/tests/settings-align.html": [ + "df4874a3bbf689758ad2074b3d2e39c71866470f", + "testharness" + ], + "webvtt/parsing/file-parsing/tests/settings-line.html": [ + "e4ec4556da5f46b5c683e73dd136114572bbbbe0", + "testharness" + ], + "webvtt/parsing/file-parsing/tests/settings-multiple.html": [ + "84fd3e8d7e038d6a4eed22b09a27278814da309a", + "testharness" + ], + "webvtt/parsing/file-parsing/tests/settings-position.html": [ + "6e2ecca129e46a6e32db1c325bfee986f02f7be1", + "testharness" + ], + "webvtt/parsing/file-parsing/tests/settings-region.html": [ + "1584b357a5c3177bdaea1a2393af7d816161ea2a", + "testharness" + ], + "webvtt/parsing/file-parsing/tests/settings-size.html": [ + "78fac093a4186eedfd90177a4e7335861fea917c", + "testharness" + ], + "webvtt/parsing/file-parsing/tests/settings-vertical.html": [ + "17c413b330c8a65d772f6fd748e40d1040d4ef0a", + "testharness" + ], + "webvtt/parsing/file-parsing/tests/signature-bom.html": [ + "d76f904ba7a64fff02cc733f66c62238d84758f5", + "testharness" + ], + "webvtt/parsing/file-parsing/tests/signature-no-newline.html": [ + "5c5b716d1ea6acf700aadff6ee54fc33c14b02d5", + "testharness" + ], + "webvtt/parsing/file-parsing/tests/signature-space-no-newline.html": [ + "985f4fb440b5dea3b0b153b16868e7276ba5017f", + "testharness" + ], + "webvtt/parsing/file-parsing/tests/signature-space.html": [ + "8ea054d2c663e1b16a040585b6240d39fd5438c6", + "testharness" + ], + "webvtt/parsing/file-parsing/tests/signature-tab-no-newline.html": [ + "c2b0a3c180eea3d833a7ac392ff74ad1eb6d8f2c", + "testharness" + ], + "webvtt/parsing/file-parsing/tests/signature-tab.html": [ + "6835dfa0e62f3bf04244faaf7be5e92cc56d3e5c", + "testharness" + ], + "webvtt/parsing/file-parsing/tests/signature-timings.html": [ + "3e1818c2597d16ad68dd1c46bf5bdeb7d7d9ce77", + "testharness" + ], + "webvtt/parsing/file-parsing/tests/stylesheets.html": [ + "4065f4d9ce0844d9b83ebce09a0f990d769dae32", + "testharness" + ], + "webvtt/parsing/file-parsing/tests/support/arrows.vtt": [ + "fc867cbc6d4b9bd8c0c357d4475927cd6072393c", + "support" + ], + "webvtt/parsing/file-parsing/tests/support/header-garbage.vtt": [ + "d8266e6a426a7acb319a630ad98bcece2cbaf5aa", + "support" + ], + "webvtt/parsing/file-parsing/tests/support/header-space.vtt": [ + "66e466ff574181ace6fc5823f630fe6ebe2a2368", + "support" + ], + "webvtt/parsing/file-parsing/tests/support/header-tab.vtt": [ + "9a2e5d321d412c5d9a20dc4c2e69f7b260f26087", + "support" + ], + "webvtt/parsing/file-parsing/tests/support/header-timings.vtt": [ + "6062c66287ad0b26e3490d62396d2943127a6038", + "support" + ], + "webvtt/parsing/file-parsing/tests/support/ids.vtt": [ + "20fc184c2c454331ab4070bb4c0adaae4bc511de", + "support" + ], + "webvtt/parsing/file-parsing/tests/support/newlines.vtt": [ + "678142d42d4368affe9f7fd261bea3bed85e46be", + "support" + ], + "webvtt/parsing/file-parsing/tests/support/nulls.vtt": [ + "f25f0892d6da6d7268a7bbc271c6f1a74924d076", + "support" + ], + "webvtt/parsing/file-parsing/tests/support/regions-id.vtt": [ + "8cf754c33225fe4cf905bf5b2198a9e30fa8ec67", + "support" + ], + "webvtt/parsing/file-parsing/tests/support/regions-lines.vtt": [ + "e889e0b38d5009af179953f8436f0ff884027560", + "support" + ], + "webvtt/parsing/file-parsing/tests/support/regions-old.vtt": [ + "3c913d0944cfc758c92fc2293eb930382b55fa37", + "support" + ], + "webvtt/parsing/file-parsing/tests/support/regions-regionanchor.vtt": [ + "827eb224e5e9461ffcfa2a4d477f09bad79b0a51", + "support" + ], + "webvtt/parsing/file-parsing/tests/support/regions-scroll.vtt": [ + "45c91245c78d0cf3cc032393fba58bc843f65a81", + "support" + ], + "webvtt/parsing/file-parsing/tests/support/regions-viewportanchor.vtt": [ + "62b84c93f8e0340fca5d59102c22c84ea77bb903", + "support" + ], + "webvtt/parsing/file-parsing/tests/support/settings-align.vtt": [ + "def41177d82a284334ee0eb3c552d520a395c704", + "support" + ], + "webvtt/parsing/file-parsing/tests/support/settings-line.vtt": [ + "fd81aff88127d2ea398523197dc8255ac21eda95", + "support" + ], + "webvtt/parsing/file-parsing/tests/support/settings-multiple.vtt": [ + "febc58c6875d3945ad1ee2795571a7f817a3079f", + "support" + ], + "webvtt/parsing/file-parsing/tests/support/settings-position.vtt": [ + "688aeaff5361e68eb50dcc3d02f14f9e68227e49", + "support" + ], + "webvtt/parsing/file-parsing/tests/support/settings-region.vtt": [ + "e50314b9f8a885503cd2d810f9ae17fa3f8eb381", + "support" + ], + "webvtt/parsing/file-parsing/tests/support/settings-size.vtt": [ + "81d5bdb7e5da2abb1bf0879abd963af1ec3e566e", + "support" + ], + "webvtt/parsing/file-parsing/tests/support/settings-vertical.vtt": [ + "0a6acd0126493ab8875778e6280b73dc2df0d45b", + "support" + ], + "webvtt/parsing/file-parsing/tests/support/signature-bom.vtt": [ + "c4000ae4295ed01151f29357f17a29fe172e12ce", + "support" + ], + "webvtt/parsing/file-parsing/tests/support/signature-no-newline.vtt": [ + "6d0c9332ce0c76646b069ec15e9be7f040039ec8", + "support" + ], + "webvtt/parsing/file-parsing/tests/support/signature-space-no-newline.vtt": [ + "a3307c9454994c5910fbe3318cd2649c61cbf511", + "support" + ], + "webvtt/parsing/file-parsing/tests/support/signature-space.vtt": [ + "f788033b8c61059c0afd348d96c7e57ef8a83434", + "support" + ], + "webvtt/parsing/file-parsing/tests/support/signature-tab-no-newline.vtt": [ + "1bdfc1bab5ca24d95691e31f04d8dadd5658e9f1", + "support" + ], + "webvtt/parsing/file-parsing/tests/support/signature-tab.vtt": [ + "37ebc275579ffbc879d443292c76b90a8918cef7", + "support" + ], + "webvtt/parsing/file-parsing/tests/support/signature-timings.vtt": [ + "19b18b3406b63cab1fa089642be0aaee87fa0921", + "support" + ], + "webvtt/parsing/file-parsing/tests/support/stylesheets.vtt": [ + "01c9d577d3343fe19b196ebb1e3bd3d06ae53e52", + "support" + ], + "webvtt/parsing/file-parsing/tests/support/timings-60.vtt": [ + "5da11ff2187722b091740bbb4a70d44aa6872334", + "support" + ], + "webvtt/parsing/file-parsing/tests/support/timings-eof.vtt": [ + "198724a1368a89308858470228f1ebf71f483de6", + "support" + ], + "webvtt/parsing/file-parsing/tests/support/timings-garbage.vtt": [ + "c34a98fce5f86093925798fa400aee00d0ab65a6", + "support" + ], + "webvtt/parsing/file-parsing/tests/support/timings-negative.vtt": [ + "a26b2025d5e234a55f088bf9c12bdd16396edd3f", + "support" + ], + "webvtt/parsing/file-parsing/tests/support/timings-omitted-hours.vtt": [ + "b7a205534b5b861011ccac6c6ea923762a83d215", + "support" + ], + "webvtt/parsing/file-parsing/tests/support/timings-too-long.vtt": [ + "b852ee39d867b6471291b85eda64ace6de900a8e", + "support" + ], + "webvtt/parsing/file-parsing/tests/support/timings-too-short.vtt": [ + "fc8d39140e708fb6815777da3df617b674a5be3e", + "support" + ], + "webvtt/parsing/file-parsing/tests/support/whitespace-chars.vtt": [ + "faadb512bad455fd20c0b3bb9d9b3be20de89931", + "support" + ], + "webvtt/parsing/file-parsing/tests/timings-60.html": [ + "19356a2f5e1db8174ecf83d0174b3f9384c2e987", + "testharness" + ], + "webvtt/parsing/file-parsing/tests/timings-eof.html": [ + "7990f06dd0f370dd5f96a106104a302da2c6e019", + "testharness" + ], + "webvtt/parsing/file-parsing/tests/timings-garbage.html": [ + "7e07298edb4302b733e2574df252895ecae0e604", + "testharness" + ], + "webvtt/parsing/file-parsing/tests/timings-negative.html": [ + "e5a061ba0a1778b25ad4e6d46d20004a106adb30", + "testharness" + ], + "webvtt/parsing/file-parsing/tests/timings-omitted-hours.html": [ + "091b8695747d264d59a6b58a23e0154fdf87ee6e", + "testharness" + ], + "webvtt/parsing/file-parsing/tests/timings-too-long.html": [ + "63368b894412e15c7f40846cfb900a933cfa2412", + "testharness" + ], + "webvtt/parsing/file-parsing/tests/timings-too-short.html": [ + "3ee4574905ed255ea35318aa3b08dca1f47feb10", + "testharness" + ], + "webvtt/parsing/file-parsing/tests/whitespace-chars.html": [ + "6c519d036e82076a2039eaf63b644e0cab5d19fe", + "testharness" + ], + "webvtt/parsing/file-parsing/tools/build.py": [ + "efbaf0ae0910bf779f4bd9975f2638573a84b26b", + "support" + ], + "webvtt/parsing/file-parsing/tools/parser.py": [ + "4288e5aef49fbeb04da4575304fda1a7a4fadcf5", + "support" + ], + "webvtt/parsing/file-parsing/tools/spec_report.py": [ + "9fcc13d8265190aaf968324bddb8fa5aa255d2eb", + "support" + ], "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": [ @@ -217415,119 +220012,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": [ @@ -217555,67 +220152,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": [ @@ -217623,27 +220220,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": [ @@ -217651,19 +220248,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": [ @@ -217671,1315 +220268,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": [ @@ -219263,241 +221860,33 @@ "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": [ - "49a9bf76b1a8d907e48ca95d3e8d3b0afc306566", - "testharness" - ], - "webvtt/webvtt-api-for-browsers/vttcue-interface/getCueAsHTML.html": [ - "5187200a7d7e2ea96627aaea69189098d3bf5013", - "testharness" - ], - "webvtt/webvtt-api-for-browsers/vttcue-interface/line.html": [ - "f76ca4b827ed42faa1c46e6a8a6a4dc66938f6e3", - "testharness" - ], - "webvtt/webvtt-api-for-browsers/vttcue-interface/snapToLines.html": [ - "365542b9a68ddb679408e5b9df16ff77027e125a", - "testharness" - ], - "webvtt/webvtt-api-for-browsers/vttcue-interface/text.html": [ - "a02594bd42c9564554bb876b1d931a28877b8315", - "testharness" - ], - "webvtt/webvtt-api-for-browsers/vttcue-interface/vertical.html": [ - "a0754c219568a19cbd244b7adabaffb0afc6eedc", - "testharness" - ], - "webvtt/webvtt-file-format-parsing/webvtt-cue-text-parsing-rules/buildtests.py": [ - "5fe90ed238ef80fd3f69f72ca5df90984451d044", - "support" - ], - "webvtt/webvtt-file-format-parsing/webvtt-cue-text-parsing-rules/common.js": [ - "d248c8ae97cc9205a5d6094b1800255e60551bf6", - "support" - ], - "webvtt/webvtt-file-format-parsing/webvtt-cue-text-parsing-rules/dat/entities.dat": [ - "183dd9377fccb89e151dc298ec8b819d1209fee3", - "support" - ], - "webvtt/webvtt-file-format-parsing/webvtt-cue-text-parsing-rules/dat/tags.dat": [ - "461d05cbc43780eacc6cbd667bb5ccc6215d9c5b", - "support" - ], - "webvtt/webvtt-file-format-parsing/webvtt-cue-text-parsing-rules/dat/timestamps.dat": [ - "7946c639cd942ecb62eadf81aec77e3ecd09a788", - "support" - ], - "webvtt/webvtt-file-format-parsing/webvtt-cue-text-parsing-rules/dat/tree-building.dat": [ - "4b8777b30361d5193137991be3b3268013a03fe9", - "support" - ], - "webvtt/webvtt-file-format-parsing/webvtt-cue-text-parsing-rules/tests/entities.html": [ - "43183d8d79641b451636efc22aa70431ec0ab1f7", - "testharness" - ], - "webvtt/webvtt-file-format-parsing/webvtt-cue-text-parsing-rules/tests/tags.html": [ - "5c1bb0dace4c7c18b0265c568f81a5594424ed6b", - "testharness" - ], - "webvtt/webvtt-file-format-parsing/webvtt-cue-text-parsing-rules/tests/timestamps.html": [ - "9096541716f4318972db549f8a1fce33ca810b2a", - "testharness" - ], - "webvtt/webvtt-file-format-parsing/webvtt-cue-text-parsing-rules/tests/tree-building.html": [ - "a812b24c8c9a8adbf05ea51a20e8b102a697cc88", - "testharness" - ], - "webvtt/webvtt-file-format-parsing/webvtt-file-parsing/001.html": [ - "85c94043944dc31ba06a2ec3212d1e9f0426b449", - "testharness" - ], - "webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/arrows.vtt": [ - "a254267a702a4efc053f7491bbc6c0c156ac027d", - "support" - ], - "webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/cue-counts.json": [ - "de7f8a40ef2564c3ac82b6c62577e58de09c7aaa", - "support" - ], - "webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/header-garbage.vtt": [ - "d6ca0247d5ed76eb52e7df1012541b0ac3c3a5d4", - "support" - ], - "webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/header-space.vtt": [ - "9dbf2fbc0a249397ce602ddf282b99b7f9603a25", - "support" - ], - "webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/header-tab.vtt": [ - "48ee8ba8c0353519d3928cc1b317340cfc720c9d", - "support" - ], - "webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/header-timings.vtt": [ - "cfaa1c59bdfefe7682fd73152e2d4a706a415aaa", - "support" - ], - "webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/ids.vtt": [ - "e94efc2cea87f5ebaba3d7a46bdfe1f74cd556ef", - "support" - ], - "webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/newlines.vtt": [ - "a5bfb88a0066da230fbf05f0cf9d200f73c0bb12", - "support" - ], - "webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/no-signature.vtt": [ - "71ffec71e6a8923027309dd41c591302ac880550", - "support" - ], - "webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/nulls.vtt": [ - "140e16000f93f8565c28c2fd12a638afcc6bbf05", - "support" - ], - "webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/omitted-hours.vtt": [ - "a8f06a3ba562175bf612c9373627cb95704f6d80", - "support" - ], - "webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/settings-align.vtt": [ - "197819834074df12486935a8a688951438a58fdb", - "support" - ], - "webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/settings-line.vtt": [ - "c2519c7b9382a013b477abe93abb137ea9e595d9", - "support" - ], - "webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/settings-multiple.vtt": [ - "60f33f6be0be507080ef82cd594a38913b4dfc84", - "support" - ], - "webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/settings-position.vtt": [ - "90b7d032cc85503fa335c1e1ec1218118f9adfdd", - "support" - ], - "webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/settings-size.vtt": [ - "2bb3470abe30284bcb48b21252ec779de096756b", - "support" - ], - "webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/settings-vertical.vtt": [ - "8415dff591596f613ddca4d1f79a4994cce404e8", - "support" - ], - "webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/signature-bom.vtt": [ - "c4000ae4295ed01151f29357f17a29fe172e12ce", - "support" - ], - "webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/signature-formfeed.vtt": [ - "0759317ef9dd8906b7204c6054d0243a1da5960c", - "support" - ], - "webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/signature-lowercase.vtt": [ - "542aff552ac0196d1f954e99b6b5b2a314da60aa", - "support" - ], - "webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/signature-no-newline.vtt": [ - "6d0c9332ce0c76646b069ec15e9be7f040039ec8", - "support" - ], - "webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/signature-null.vtt": [ - "797545cea933c4a4f6611c818a85f9ccaf6d8d74", - "support" - ], - "webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/signature-space-no-newline.vtt": [ - "a3307c9454994c5910fbe3318cd2649c61cbf511", - "support" - ], - "webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/signature-space.vtt": [ - "f788033b8c61059c0afd348d96c7e57ef8a83434", - "support" - ], - "webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/signature-tab-no-newline.vtt": [ - "1bdfc1bab5ca24d95691e31f04d8dadd5658e9f1", - "support" - ], - "webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/signature-tab.vtt": [ - "37ebc275579ffbc879d443292c76b90a8918cef7", - "support" - ], - "webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/signature-timings.vtt": [ - "f064b2ebf8a3d41beb11cecd865bd4ede95d70e6", - "support" - ], - "webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/signature-too-short.vtt": [ - "439adea746f6730c811e2f02edade910bb14a3a9", - "support" - ], - "webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/signature-two-boms.vtt": [ - "fe57945f965a5dd7e58a0aa1af01fe26be75b388", - "support" - ], - "webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/signature-websrt.vtt": [ - "5d1456cf5066adcee6d6bdffb72a9f2d97d9ede8", - "support" - ], - "webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/space-chars.vtt": [ - "8d0273d6380928e0eb76793fa9515908d3f4f3c8", - "support" - ], - "webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/timings-60.vtt": [ - "13eb370139555ca32da227875795bb4e17770789", - "support" - ], - "webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/timings-garbage.vtt": [ - "2430b4898945369e812fb084cd52ad369bcada9b", - "support" - ], - "webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/timings-negative.vtt": [ - "0b70f922eb8668ff3891725cbbabe72e0a19a992", - "support" - ], - "webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/timings-too-long.vtt": [ - "2cea4b0a6451457819a0c22f8d3f63a7694892aa", - "support" - ], - "webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/timings-too-short.vtt": [ - "95b219d4850f9670ab1ec75f81551d49acfc4f35", - "support" - ], "workers/OWNERS": [ - "68a3939371427e0cc0a3a1d6055870c5e561b963", + "038ddf01994badca3d9c05fe89765f7516fe1c9c", "support" ], "workers/README.md": [ "2660d9dbe4f7a2947ec78b14e6418554c8204d6b", "support" ], + "workers/SharedWorker_blobUrl.html": [ + "d74620a63e7d911ef60b995cabf6b360c2c46a4f", + "testharness" + ], "workers/WorkerGlobalScope_ErrorEvent_colno.htm": [ "8ceb41543f928c918010000d638099faeb674980", "testharness" @@ -219767,7 +222156,7 @@ "testharness" ], "workers/constructors/SharedWorker/global-members.html": [ - "d432270dba50e06e0640623bd64b500894497a57", + "a5a1d5bfb927545460fcec7f84fa934bce132c4c", "testharness" ], "workers/constructors/SharedWorker/interface-objects.html": [ @@ -219907,11 +222296,11 @@ "testharness" ], "workers/data-url-shared.html": [ - "008332fd682f1c74f901a49c826ed2d96374c49d", + "0fee4678c53e3f30e0f6090b5b9fc51b7bb74806", "testharness" ], "workers/data-url.html": [ - "34eb5cd50c0b9d2e2bec65c3de51f8405da0d745", + "50abaf936cfb58ba14e6870c9b7f239f5d54f59c", "testharness" ], "workers/interfaces.idl": [ @@ -220470,6 +222859,10 @@ "96307fbfbf50db2efa97f46449cb04789ce47cd1", "support" ], + "workers/support/WorkerFetchURL.js": [ + "ac8c81ce2d0e4833bf1d61a18a05b2ce531b576a", + "support" + ], "workers/support/WorkerLocation.js": [ "6d835557e345feb354e640020e74476258a075f6", "support" diff --git a/testing/web-platform/meta/mozilla-sync b/testing/web-platform/meta/mozilla-sync index f5c7cca3f931..17557cdbed60 100644 --- a/testing/web-platform/meta/mozilla-sync +++ b/testing/web-platform/meta/mozilla-sync @@ -1,2 +1,2 @@ -local: ec3ef9f77a52693e9732ca480df16017af0d9504 -upstream: fc4da5233160c1ed5675ae4a7859552cb7e0349f +local: 5dc5249408ecc0003f0c68d32a8e782dec23fd36 +upstream: aef9b4f327326fd32420281f9bc1ca9b60d553b3 diff --git a/testing/web-platform/tests/2dcontext/drawing-images-to-the-canvas/2d.drawImage.animated.apng.html b/testing/web-platform/tests/2dcontext/drawing-images-to-the-canvas/2d.drawImage.animated.apng.html index bdc64462c929..28281cacf30d 100644 --- a/testing/web-platform/tests/2dcontext/drawing-images-to-the-canvas/2d.drawImage.animated.apng.html +++ b/testing/web-platform/tests/2dcontext/drawing-images-to-the-canvas/2d.drawImage.animated.apng.html @@ -20,7 +20,7 @@ var t = async_test("drawImage() of an APNG with no poster frame draws the first _addTest(function(canvas, ctx) { deferTest(); -setTimeout(t.step_func_done(function () { +step_timeout(t.step_func_done(function () { ctx.drawImage(document.getElementById('anim-gr.png'), 0, 0); _assertPixelApprox(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255", 2); }), 500); diff --git a/testing/web-platform/tests/2dcontext/drawing-images-to-the-canvas/2d.drawImage.animated.gif.html b/testing/web-platform/tests/2dcontext/drawing-images-to-the-canvas/2d.drawImage.animated.gif.html index 3cf5e0fb8618..041db0e62a5b 100644 --- a/testing/web-platform/tests/2dcontext/drawing-images-to-the-canvas/2d.drawImage.animated.gif.html +++ b/testing/web-platform/tests/2dcontext/drawing-images-to-the-canvas/2d.drawImage.animated.gif.html @@ -20,7 +20,7 @@ var t = async_test("drawImage() of an animated GIF draws the first frame"); _addTest(function(canvas, ctx) { deferTest(); -setTimeout(t.step_func_done(function () { +step_timeout(t.step_func_done(function () { ctx.drawImage(document.getElementById('anim-gr.gif'), 0, 0); _assertPixelApprox(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255", 2); }), 500); diff --git a/testing/web-platform/tests/2dcontext/drawing-text-to-the-canvas/2d.text.draw.align.center.html b/testing/web-platform/tests/2dcontext/drawing-text-to-the-canvas/2d.text.draw.align.center.html index bcbdbd665949..85e69b06e64a 100644 --- a/testing/web-platform/tests/2dcontext/drawing-text-to-the-canvas/2d.text.draw.align.center.html +++ b/testing/web-platform/tests/2dcontext/drawing-text-to-the-canvas/2d.text.draw.align.center.html @@ -28,7 +28,7 @@ _addTest(function(canvas, ctx) { ctx.font = '50px CanvasTest'; deferTest(); -setTimeout(t.step_func_done(function () { +step_timeout(t.step_func_done(function () { ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); ctx.fillStyle = '#0f0'; diff --git a/testing/web-platform/tests/2dcontext/drawing-text-to-the-canvas/2d.text.draw.align.end.ltr.html b/testing/web-platform/tests/2dcontext/drawing-text-to-the-canvas/2d.text.draw.align.end.ltr.html index 681085859c61..601b45020eeb 100644 --- a/testing/web-platform/tests/2dcontext/drawing-text-to-the-canvas/2d.text.draw.align.end.ltr.html +++ b/testing/web-platform/tests/2dcontext/drawing-text-to-the-canvas/2d.text.draw.align.end.ltr.html @@ -28,7 +28,7 @@ _addTest(function(canvas, ctx) { ctx.font = '50px CanvasTest'; deferTest(); -setTimeout(t.step_func_done(function () { +step_timeout(t.step_func_done(function () { ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); ctx.fillStyle = '#0f0'; diff --git a/testing/web-platform/tests/2dcontext/drawing-text-to-the-canvas/2d.text.draw.align.end.rtl.html b/testing/web-platform/tests/2dcontext/drawing-text-to-the-canvas/2d.text.draw.align.end.rtl.html index 1ccd2bccb854..f0a589a8a28b 100644 --- a/testing/web-platform/tests/2dcontext/drawing-text-to-the-canvas/2d.text.draw.align.end.rtl.html +++ b/testing/web-platform/tests/2dcontext/drawing-text-to-the-canvas/2d.text.draw.align.end.rtl.html @@ -28,7 +28,7 @@ _addTest(function(canvas, ctx) { ctx.font = '50px CanvasTest'; deferTest(); -setTimeout(t.step_func_done(function () { +step_timeout(t.step_func_done(function () { ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); ctx.fillStyle = '#0f0'; diff --git a/testing/web-platform/tests/2dcontext/drawing-text-to-the-canvas/2d.text.draw.align.left.html b/testing/web-platform/tests/2dcontext/drawing-text-to-the-canvas/2d.text.draw.align.left.html index 5e7418e36bec..219bd89cbf25 100644 --- a/testing/web-platform/tests/2dcontext/drawing-text-to-the-canvas/2d.text.draw.align.left.html +++ b/testing/web-platform/tests/2dcontext/drawing-text-to-the-canvas/2d.text.draw.align.left.html @@ -28,7 +28,7 @@ _addTest(function(canvas, ctx) { ctx.font = '50px CanvasTest'; deferTest(); -setTimeout(t.step_func_done(function () { +step_timeout(t.step_func_done(function () { ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); ctx.fillStyle = '#0f0'; diff --git a/testing/web-platform/tests/2dcontext/drawing-text-to-the-canvas/2d.text.draw.align.right.html b/testing/web-platform/tests/2dcontext/drawing-text-to-the-canvas/2d.text.draw.align.right.html index 81e3acf36ec6..bbb8d44eaca3 100644 --- a/testing/web-platform/tests/2dcontext/drawing-text-to-the-canvas/2d.text.draw.align.right.html +++ b/testing/web-platform/tests/2dcontext/drawing-text-to-the-canvas/2d.text.draw.align.right.html @@ -28,7 +28,7 @@ _addTest(function(canvas, ctx) { ctx.font = '50px CanvasTest'; deferTest(); -setTimeout(t.step_func_done(function () { +step_timeout(t.step_func_done(function () { ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); ctx.fillStyle = '#0f0'; diff --git a/testing/web-platform/tests/2dcontext/drawing-text-to-the-canvas/2d.text.draw.align.start.ltr.html b/testing/web-platform/tests/2dcontext/drawing-text-to-the-canvas/2d.text.draw.align.start.ltr.html index f47ef78a7ccf..c986dfbba744 100644 --- a/testing/web-platform/tests/2dcontext/drawing-text-to-the-canvas/2d.text.draw.align.start.ltr.html +++ b/testing/web-platform/tests/2dcontext/drawing-text-to-the-canvas/2d.text.draw.align.start.ltr.html @@ -28,7 +28,7 @@ _addTest(function(canvas, ctx) { ctx.font = '50px CanvasTest'; deferTest(); -setTimeout(t.step_func_done(function () { +step_timeout(t.step_func_done(function () { ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); ctx.fillStyle = '#0f0'; diff --git a/testing/web-platform/tests/2dcontext/drawing-text-to-the-canvas/2d.text.draw.align.start.rtl.html b/testing/web-platform/tests/2dcontext/drawing-text-to-the-canvas/2d.text.draw.align.start.rtl.html index cc09b9e4d1a9..b087a2f9b71f 100644 --- a/testing/web-platform/tests/2dcontext/drawing-text-to-the-canvas/2d.text.draw.align.start.rtl.html +++ b/testing/web-platform/tests/2dcontext/drawing-text-to-the-canvas/2d.text.draw.align.start.rtl.html @@ -28,7 +28,7 @@ _addTest(function(canvas, ctx) { ctx.font = '50px CanvasTest'; deferTest(); -setTimeout(t.step_func_done(function () { +step_timeout(t.step_func_done(function () { ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); ctx.fillStyle = '#0f0'; diff --git a/testing/web-platform/tests/2dcontext/drawing-text-to-the-canvas/2d.text.draw.baseline.alphabetic.html b/testing/web-platform/tests/2dcontext/drawing-text-to-the-canvas/2d.text.draw.baseline.alphabetic.html index bdb65ab90630..f070d0d5b7f3 100644 --- a/testing/web-platform/tests/2dcontext/drawing-text-to-the-canvas/2d.text.draw.baseline.alphabetic.html +++ b/testing/web-platform/tests/2dcontext/drawing-text-to-the-canvas/2d.text.draw.baseline.alphabetic.html @@ -28,7 +28,7 @@ _addTest(function(canvas, ctx) { ctx.font = '50px CanvasTest'; deferTest(); -setTimeout(t.step_func_done(function () { +step_timeout(t.step_func_done(function () { ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); ctx.fillStyle = '#0f0'; diff --git a/testing/web-platform/tests/2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.bound.html b/testing/web-platform/tests/2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.bound.html index 3282f273e068..c538618c68ba 100644 --- a/testing/web-platform/tests/2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.bound.html +++ b/testing/web-platform/tests/2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.bound.html @@ -28,7 +28,7 @@ _addTest(function(canvas, ctx) { ctx.font = '50px CanvasTest'; deferTest(); -setTimeout(t.step_func_done(function () { +step_timeout(t.step_func_done(function () { ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); ctx.fillStyle = '#0f0'; diff --git a/testing/web-platform/tests/2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.fontface.html b/testing/web-platform/tests/2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.fontface.html index d138047f6c45..f1212ff9fb0c 100644 --- a/testing/web-platform/tests/2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.fontface.html +++ b/testing/web-platform/tests/2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.fontface.html @@ -28,7 +28,7 @@ _addTest(function(canvas, ctx) { ctx.font = '50px CanvasTest'; deferTest(); -setTimeout(t.step_func_done(function () { +step_timeout(t.step_func_done(function () { ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); ctx.fillStyle = '#f00'; diff --git a/testing/web-platform/tests/2dcontext/drawing-text-to-the-canvas/2d.text.draw.fontface.html b/testing/web-platform/tests/2dcontext/drawing-text-to-the-canvas/2d.text.draw.fontface.html index 7bfbb7feb611..d3ac5378f124 100644 --- a/testing/web-platform/tests/2dcontext/drawing-text-to-the-canvas/2d.text.draw.fontface.html +++ b/testing/web-platform/tests/2dcontext/drawing-text-to-the-canvas/2d.text.draw.fontface.html @@ -28,7 +28,7 @@ _addTest(function(canvas, ctx) { ctx.font = '67px CanvasTest'; deferTest(); -setTimeout(t.step_func_done(function () { +step_timeout(t.step_func_done(function () { ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); ctx.fillStyle = '#0f0'; diff --git a/testing/web-platform/tests/2dcontext/drawing-text-to-the-canvas/2d.text.draw.fontface.notinpage.html b/testing/web-platform/tests/2dcontext/drawing-text-to-the-canvas/2d.text.draw.fontface.notinpage.html index 6c4eb49190bb..ae417226102a 100644 --- a/testing/web-platform/tests/2dcontext/drawing-text-to-the-canvas/2d.text.draw.fontface.notinpage.html +++ b/testing/web-platform/tests/2dcontext/drawing-text-to-the-canvas/2d.text.draw.fontface.notinpage.html @@ -27,7 +27,7 @@ _addTest(function(canvas, ctx) { ctx.font = '67px CanvasTest'; deferTest(); -setTimeout(t.step_func_done(function () { +step_timeout(t.step_func_done(function () { ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); ctx.fillStyle = '#0f0'; diff --git a/testing/web-platform/tests/2dcontext/drawing-text-to-the-canvas/2d.text.draw.fontface.repeat.html b/testing/web-platform/tests/2dcontext/drawing-text-to-the-canvas/2d.text.draw.fontface.repeat.html index 30cfb4c7f0b5..987e1e82c4eb 100644 --- a/testing/web-platform/tests/2dcontext/drawing-text-to-the-canvas/2d.text.draw.fontface.repeat.html +++ b/testing/web-platform/tests/2dcontext/drawing-text-to-the-canvas/2d.text.draw.fontface.repeat.html @@ -31,7 +31,7 @@ ctx.font = '67px CanvasTest'; ctx.fillStyle = '#0f0'; ctx.fillText('AA', 0, 50); deferTest(); -setTimeout(t.step_func_done(function () { +step_timeout(t.step_func_done(function () { ctx.fillText('AA', 0, 50); _assertPixelApprox(canvas, 5,5, 0,255,0,255, "5,5", "0,255,0,255", 2); _assertPixelApprox(canvas, 95,5, 0,255,0,255, "95,5", "0,255,0,255", 2); diff --git a/testing/web-platform/tests/2dcontext/drawing-text-to-the-canvas/2d.text.draw.space.basic.html b/testing/web-platform/tests/2dcontext/drawing-text-to-the-canvas/2d.text.draw.space.basic.html index 046ce7c7aa9d..ccf68aff56af 100644 --- a/testing/web-platform/tests/2dcontext/drawing-text-to-the-canvas/2d.text.draw.space.basic.html +++ b/testing/web-platform/tests/2dcontext/drawing-text-to-the-canvas/2d.text.draw.space.basic.html @@ -28,7 +28,7 @@ _addTest(function(canvas, ctx) { ctx.font = '50px CanvasTest'; deferTest(); -setTimeout(t.step_func_done(function () { +step_timeout(t.step_func_done(function () { ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); ctx.fillStyle = '#0f0'; diff --git a/testing/web-platform/tests/2dcontext/drawing-text-to-the-canvas/2d.text.draw.space.collapse.nonspace.html b/testing/web-platform/tests/2dcontext/drawing-text-to-the-canvas/2d.text.draw.space.collapse.nonspace.html index 9dd441ade311..8be967bb12e3 100644 --- a/testing/web-platform/tests/2dcontext/drawing-text-to-the-canvas/2d.text.draw.space.collapse.nonspace.html +++ b/testing/web-platform/tests/2dcontext/drawing-text-to-the-canvas/2d.text.draw.space.collapse.nonspace.html @@ -28,7 +28,7 @@ _addTest(function(canvas, ctx) { ctx.font = '50px CanvasTest'; deferTest(); -setTimeout(t.step_func_done(function () { +step_timeout(t.step_func_done(function () { ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); ctx.fillStyle = '#0f0'; diff --git a/testing/web-platform/tests/2dcontext/drawing-text-to-the-canvas/2d.text.measure.width.basic.html b/testing/web-platform/tests/2dcontext/drawing-text-to-the-canvas/2d.text.measure.width.basic.html index 40b43deceb8b..1cfe16438f49 100644 --- a/testing/web-platform/tests/2dcontext/drawing-text-to-the-canvas/2d.text.measure.width.basic.html +++ b/testing/web-platform/tests/2dcontext/drawing-text-to-the-canvas/2d.text.measure.width.basic.html @@ -27,7 +27,7 @@ var t = async_test(""); _addTest(function(canvas, ctx) { deferTest(); -setTimeout(t.step_func_done(function () { +step_timeout(t.step_func_done(function () { ctx.font = '50px CanvasTest'; _assertSame(ctx.measureText('A').width, 50, "ctx.measureText('A').width", "50"); _assertSame(ctx.measureText('AA').width, 100, "ctx.measureText('AA').width", "100"); diff --git a/testing/web-platform/tests/2dcontext/drawing-text-to-the-canvas/2d.text.measure.width.empty.html b/testing/web-platform/tests/2dcontext/drawing-text-to-the-canvas/2d.text.measure.width.empty.html index 67a9b405a0d1..add8ce5ba5f1 100644 --- a/testing/web-platform/tests/2dcontext/drawing-text-to-the-canvas/2d.text.measure.width.empty.html +++ b/testing/web-platform/tests/2dcontext/drawing-text-to-the-canvas/2d.text.measure.width.empty.html @@ -27,7 +27,7 @@ var t = async_test("The empty string has zero width"); _addTest(function(canvas, ctx) { deferTest(); -setTimeout(t.step_func_done(function () { +step_timeout(t.step_func_done(function () { ctx.font = '50px CanvasTest'; _assertSame(ctx.measureText("").width, 0, "ctx.measureText(\"\").width", "0"); }), 500); diff --git a/testing/web-platform/tests/2dcontext/fill-and-stroke-styles/2d.pattern.animated.gif.html b/testing/web-platform/tests/2dcontext/fill-and-stroke-styles/2d.pattern.animated.gif.html index c78ef377b8d7..864ef98409f4 100644 --- a/testing/web-platform/tests/2dcontext/fill-and-stroke-styles/2d.pattern.animated.gif.html +++ b/testing/web-platform/tests/2dcontext/fill-and-stroke-styles/2d.pattern.animated.gif.html @@ -20,11 +20,11 @@ var t = async_test("createPattern() of an animated GIF draws the first frame"); _addTest(function(canvas, ctx) { deferTest(); -setTimeout(function () { +step_timeout(function () { var pattern = ctx.createPattern(document.getElementById('anim-gr.gif'), 'repeat'); ctx.fillStyle = pattern; ctx.fillRect(0, 0, 50, 50); - setTimeout(t.step_func_done(function () { + step_timeout(t.step_func_done(function () { ctx.fillRect(50, 0, 50, 50); _assertPixelApprox(canvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255", 2); _assertPixelApprox(canvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255", 2); diff --git a/testing/web-platform/tests/2dcontext/text-styles/2d.text.draw.baseline.bottom.html b/testing/web-platform/tests/2dcontext/text-styles/2d.text.draw.baseline.bottom.html index cde7e891d6f1..3cff44d7a0c9 100644 --- a/testing/web-platform/tests/2dcontext/text-styles/2d.text.draw.baseline.bottom.html +++ b/testing/web-platform/tests/2dcontext/text-styles/2d.text.draw.baseline.bottom.html @@ -28,7 +28,7 @@ _addTest(function(canvas, ctx) { ctx.font = '50px CanvasTest'; deferTest(); -setTimeout(t.step_func_done(function () { +step_timeout(t.step_func_done(function () { ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); ctx.fillStyle = '#0f0'; diff --git a/testing/web-platform/tests/2dcontext/text-styles/2d.text.draw.baseline.hanging.html b/testing/web-platform/tests/2dcontext/text-styles/2d.text.draw.baseline.hanging.html index e5bdb98cc52a..58d14940c5da 100644 --- a/testing/web-platform/tests/2dcontext/text-styles/2d.text.draw.baseline.hanging.html +++ b/testing/web-platform/tests/2dcontext/text-styles/2d.text.draw.baseline.hanging.html @@ -28,7 +28,7 @@ _addTest(function(canvas, ctx) { ctx.font = '50px CanvasTest'; deferTest(); -setTimeout(t.step_func_done(function () { +step_timeout(t.step_func_done(function () { ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); ctx.fillStyle = '#0f0'; diff --git a/testing/web-platform/tests/2dcontext/text-styles/2d.text.draw.baseline.ideographic.html b/testing/web-platform/tests/2dcontext/text-styles/2d.text.draw.baseline.ideographic.html index cc99e1ab437e..d2e8857b20f8 100644 --- a/testing/web-platform/tests/2dcontext/text-styles/2d.text.draw.baseline.ideographic.html +++ b/testing/web-platform/tests/2dcontext/text-styles/2d.text.draw.baseline.ideographic.html @@ -28,7 +28,7 @@ _addTest(function(canvas, ctx) { ctx.font = '50px CanvasTest'; deferTest(); -setTimeout(t.step_func_done(function () { +step_timeout(t.step_func_done(function () { ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); ctx.fillStyle = '#0f0'; diff --git a/testing/web-platform/tests/2dcontext/text-styles/2d.text.draw.baseline.middle.html b/testing/web-platform/tests/2dcontext/text-styles/2d.text.draw.baseline.middle.html index 6cdbb17e657c..b36135f593f7 100644 --- a/testing/web-platform/tests/2dcontext/text-styles/2d.text.draw.baseline.middle.html +++ b/testing/web-platform/tests/2dcontext/text-styles/2d.text.draw.baseline.middle.html @@ -28,7 +28,7 @@ _addTest(function(canvas, ctx) { ctx.font = '50px CanvasTest'; deferTest(); -setTimeout(t.step_func_done(function () { +step_timeout(t.step_func_done(function () { ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); ctx.fillStyle = '#0f0'; diff --git a/testing/web-platform/tests/2dcontext/text-styles/2d.text.draw.baseline.top.html b/testing/web-platform/tests/2dcontext/text-styles/2d.text.draw.baseline.top.html index 15c0c1f3867c..5a5590136ca7 100644 --- a/testing/web-platform/tests/2dcontext/text-styles/2d.text.draw.baseline.top.html +++ b/testing/web-platform/tests/2dcontext/text-styles/2d.text.draw.baseline.top.html @@ -28,7 +28,7 @@ _addTest(function(canvas, ctx) { ctx.font = '50px CanvasTest'; deferTest(); -setTimeout(t.step_func_done(function () { +step_timeout(t.step_func_done(function () { ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); ctx.fillStyle = '#0f0'; diff --git a/testing/web-platform/tests/2dcontext/text-styles/2d.text.draw.space.collapse.end.html b/testing/web-platform/tests/2dcontext/text-styles/2d.text.draw.space.collapse.end.html index 9ce607000dae..dcfb04e68f65 100644 --- a/testing/web-platform/tests/2dcontext/text-styles/2d.text.draw.space.collapse.end.html +++ b/testing/web-platform/tests/2dcontext/text-styles/2d.text.draw.space.collapse.end.html @@ -28,7 +28,7 @@ _addTest(function(canvas, ctx) { ctx.font = '50px CanvasTest'; deferTest(); -setTimeout(t.step_func_done(function () { +step_timeout(t.step_func_done(function () { ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); ctx.fillStyle = '#0f0'; diff --git a/testing/web-platform/tests/2dcontext/text-styles/2d.text.draw.space.collapse.other.html b/testing/web-platform/tests/2dcontext/text-styles/2d.text.draw.space.collapse.other.html index 25275b5b5ef3..53cf30c4024e 100644 --- a/testing/web-platform/tests/2dcontext/text-styles/2d.text.draw.space.collapse.other.html +++ b/testing/web-platform/tests/2dcontext/text-styles/2d.text.draw.space.collapse.other.html @@ -28,7 +28,7 @@ _addTest(function(canvas, ctx) { ctx.font = '50px CanvasTest'; deferTest(); -setTimeout(t.step_func_done(function () { +step_timeout(t.step_func_done(function () { ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); ctx.fillStyle = '#0f0'; diff --git a/testing/web-platform/tests/2dcontext/text-styles/2d.text.draw.space.collapse.space.html b/testing/web-platform/tests/2dcontext/text-styles/2d.text.draw.space.collapse.space.html index 3069e794633f..a460f6ef4ff1 100644 --- a/testing/web-platform/tests/2dcontext/text-styles/2d.text.draw.space.collapse.space.html +++ b/testing/web-platform/tests/2dcontext/text-styles/2d.text.draw.space.collapse.space.html @@ -28,7 +28,7 @@ _addTest(function(canvas, ctx) { ctx.font = '50px CanvasTest'; deferTest(); -setTimeout(t.step_func_done(function () { +step_timeout(t.step_func_done(function () { ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); ctx.fillStyle = '#0f0'; diff --git a/testing/web-platform/tests/2dcontext/text-styles/2d.text.draw.space.collapse.start.html b/testing/web-platform/tests/2dcontext/text-styles/2d.text.draw.space.collapse.start.html index b3b05f436f8c..3e5b3da6a313 100644 --- a/testing/web-platform/tests/2dcontext/text-styles/2d.text.draw.space.collapse.start.html +++ b/testing/web-platform/tests/2dcontext/text-styles/2d.text.draw.space.collapse.start.html @@ -28,7 +28,7 @@ _addTest(function(canvas, ctx) { ctx.font = '50px CanvasTest'; deferTest(); -setTimeout(t.step_func_done(function () { +step_timeout(t.step_func_done(function () { ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); ctx.fillStyle = '#0f0'; diff --git a/testing/web-platform/tests/2dcontext/text-styles/2d.text.measure.width.space.html b/testing/web-platform/tests/2dcontext/text-styles/2d.text.measure.width.space.html index dfa1dee1c198..d6e37a19cb63 100644 --- a/testing/web-platform/tests/2dcontext/text-styles/2d.text.measure.width.space.html +++ b/testing/web-platform/tests/2dcontext/text-styles/2d.text.measure.width.space.html @@ -27,7 +27,7 @@ var t = async_test("Space characters are converted to U+0020 and collapsed (per _addTest(function(canvas, ctx) { deferTest(); -setTimeout(t.step_func_done(function () { +step_timeout(t.step_func_done(function () { ctx.font = '50px CanvasTest'; _assertSame(ctx.measureText('A B').width, 150, "ctx.measureText('A B').width", "150"); _assertSame(ctx.measureText('A B').width, 150, "ctx.measureText('A B').width", "150"); diff --git a/testing/web-platform/tests/2dcontext/tools/tests2d.yaml b/testing/web-platform/tests/2dcontext/tools/tests2d.yaml index 9e1f6dde42e6..e060b7282bfc 100644 --- a/testing/web-platform/tests/2dcontext/tools/tests2d.yaml +++ b/testing/web-platform/tests/2dcontext/tools/tests2d.yaml @@ -3486,11 +3486,11 @@ - anim-gr.gif code: | deferTest(); - setTimeout(function () { + step_timeout(function () { var pattern = ctx.createPattern(document.getElementById('anim-gr.gif'), 'repeat'); ctx.fillStyle = pattern; ctx.fillRect(0, 0, 50, 50); - setTimeout(t.step_func_done(function () { + step_timeout(t.step_func_done(function () { ctx.fillRect(50, 0, 50, 50); @assert pixel 25,25 ==~ 0,255,0,255; @assert pixel 75,25 ==~ 0,255,0,255; @@ -9033,7 +9033,7 @@ - anim-gr.gif code: | deferTest(); - setTimeout(t.step_func_done(function () { + step_timeout(t.step_func_done(function () { ctx.drawImage(document.getElementById('anim-gr.gif'), 0, 0); @assert pixel 50,25 ==~ 0,255,0,255; }), 500); @@ -9047,7 +9047,7 @@ - anim-gr.png code: | deferTest(); - setTimeout(t.step_func_done(function () { + step_timeout(t.step_func_done(function () { ctx.drawImage(document.getElementById('anim-gr.png'), 0, 0); @assert pixel 50,25 ==~ 0,255,0,255; }), 500); diff --git a/testing/web-platform/tests/2dcontext/tools/tests2dtext.yaml b/testing/web-platform/tests/2dcontext/tools/tests2dtext.yaml index 96c65265c8d7..9b168e996da3 100644 --- a/testing/web-platform/tests/2dcontext/tools/tests2dtext.yaml +++ b/testing/web-platform/tests/2dcontext/tools/tests2dtext.yaml @@ -418,7 +418,7 @@ # Hanging baseline is 0.500em above alphabetic # WebKit doesn't block onload on font loads, so we try to make it a bit more reliable -# by waiting with setTimeout after load before drawing +# by waiting with step_timeout after load before drawing - name: 2d.text.draw.fill.maxWidth.fontface desc: fillText works on @font-face fonts @@ -429,7 +429,7 @@ code: | ctx.font = '50px CanvasTest'; deferTest(); - setTimeout(t.step_func_done(function () { + step_timeout(t.step_func_done(function () { ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); ctx.fillStyle = '#f00'; @@ -450,7 +450,7 @@ code: | ctx.font = '50px CanvasTest'; deferTest(); - setTimeout(t.step_func_done(function () { + step_timeout(t.step_func_done(function () { ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); ctx.fillStyle = '#0f0'; @@ -470,7 +470,7 @@ code: | ctx.font = '67px CanvasTest'; deferTest(); - setTimeout(t.step_func_done(function () { + step_timeout(t.step_func_done(function () { ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); ctx.fillStyle = '#0f0'; @@ -496,7 +496,7 @@ ctx.fillStyle = '#0f0'; ctx.fillText('AA', 0, 50); deferTest(); - setTimeout(t.step_func_done(function () { + step_timeout(t.step_func_done(function () { ctx.fillText('AA', 0, 50); @assert pixel 5,5 ==~ 0,255,0,255; @assert pixel 95,5 ==~ 0,255,0,255; @@ -515,7 +515,7 @@ code: | ctx.font = '67px CanvasTest'; deferTest(); - setTimeout(t.step_func_done(function () { + step_timeout(t.step_func_done(function () { ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); ctx.fillStyle = '#0f0'; @@ -536,7 +536,7 @@ code: | ctx.font = '50px CanvasTest'; deferTest(); - setTimeout(t.step_func_done(function () { + step_timeout(t.step_func_done(function () { ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); ctx.fillStyle = '#0f0'; @@ -560,7 +560,7 @@ code: | ctx.font = '50px CanvasTest'; deferTest(); - setTimeout(t.step_func_done(function () { + step_timeout(t.step_func_done(function () { ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); ctx.fillStyle = '#0f0'; @@ -584,7 +584,7 @@ code: | ctx.font = '50px CanvasTest'; deferTest(); - setTimeout(t.step_func_done(function () { + step_timeout(t.step_func_done(function () { ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); ctx.fillStyle = '#0f0'; @@ -607,7 +607,7 @@ code: | ctx.font = '50px CanvasTest'; deferTest(); - setTimeout(t.step_func_done(function () { + step_timeout(t.step_func_done(function () { ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); ctx.fillStyle = '#0f0'; @@ -630,7 +630,7 @@ code: | ctx.font = '50px CanvasTest'; deferTest(); - setTimeout(t.step_func_done(function () { + step_timeout(t.step_func_done(function () { ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); ctx.fillStyle = '#0f0'; @@ -653,7 +653,7 @@ code: | ctx.font = '50px CanvasTest'; deferTest(); - setTimeout(t.step_func_done(function () { + step_timeout(t.step_func_done(function () { ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); ctx.fillStyle = '#0f0'; @@ -677,7 +677,7 @@ code: | ctx.font = '50px CanvasTest'; deferTest(); - setTimeout(t.step_func_done(function () { + step_timeout(t.step_func_done(function () { ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); ctx.fillStyle = '#0f0'; @@ -701,7 +701,7 @@ code: | ctx.font = '50px CanvasTest'; deferTest(); - setTimeout(t.step_func_done(function () { + step_timeout(t.step_func_done(function () { ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); ctx.fillStyle = '#0f0'; @@ -726,7 +726,7 @@ code: | ctx.font = '50px CanvasTest'; deferTest(); - setTimeout(t.step_func_done(function () { + step_timeout(t.step_func_done(function () { ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); ctx.fillStyle = '#0f0'; @@ -752,7 +752,7 @@ code: | ctx.font = '50px CanvasTest'; deferTest(); - setTimeout(t.step_func_done(function () { + step_timeout(t.step_func_done(function () { ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); ctx.fillStyle = '#0f0'; @@ -777,7 +777,7 @@ code: | ctx.font = '50px CanvasTest'; deferTest(); - setTimeout(t.step_func_done(function () { + step_timeout(t.step_func_done(function () { ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); ctx.fillStyle = '#0f0'; @@ -803,7 +803,7 @@ code: | ctx.font = '50px CanvasTest'; deferTest(); - setTimeout(t.step_func_done(function () { + step_timeout(t.step_func_done(function () { ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); ctx.fillStyle = '#0f0'; @@ -827,7 +827,7 @@ code: | ctx.font = '50px CanvasTest'; deferTest(); - setTimeout(t.step_func_done(function () { + step_timeout(t.step_func_done(function () { ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); ctx.fillStyle = '#0f0'; @@ -852,7 +852,7 @@ code: | ctx.font = '50px CanvasTest'; deferTest(); - setTimeout(t.step_func_done(function () { + step_timeout(t.step_func_done(function () { ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); ctx.fillStyle = '#0f0'; @@ -871,7 +871,7 @@ code: | ctx.font = '50px CanvasTest'; deferTest(); - setTimeout(t.step_func_done(function () { + step_timeout(t.step_func_done(function () { ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); ctx.fillStyle = '#0f0'; @@ -890,7 +890,7 @@ code: | ctx.font = '50px CanvasTest'; deferTest(); - setTimeout(t.step_func_done(function () { + step_timeout(t.step_func_done(function () { ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); ctx.fillStyle = '#0f0'; @@ -909,7 +909,7 @@ code: | ctx.font = '50px CanvasTest'; deferTest(); - setTimeout(t.step_func_done(function () { + step_timeout(t.step_func_done(function () { ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); ctx.fillStyle = '#0f0'; @@ -928,7 +928,7 @@ code: | ctx.font = '50px CanvasTest'; deferTest(); - setTimeout(t.step_func_done(function () { + step_timeout(t.step_func_done(function () { ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); ctx.fillStyle = '#0f0'; @@ -947,7 +947,7 @@ code: | ctx.font = '50px CanvasTest'; deferTest(); - setTimeout(t.step_func_done(function () { + step_timeout(t.step_func_done(function () { ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); ctx.fillStyle = '#0f0'; @@ -968,7 +968,7 @@ - CanvasTest code: | deferTest(); - setTimeout(t.step_func_done(function () { + step_timeout(t.step_func_done(function () { ctx.font = '50px CanvasTest'; @assert ctx.measureText('A').width === 50; @assert ctx.measureText('AA').width === 100; @@ -986,7 +986,7 @@ - CanvasTest code: | deferTest(); - setTimeout(t.step_func_done(function () { + step_timeout(t.step_func_done(function () { ctx.font = '50px CanvasTest'; @assert ctx.measureText("").width === 0; }), 500); @@ -999,7 +999,7 @@ - CanvasTest code: | deferTest(); - setTimeout(t.step_func_done(function () { + step_timeout(t.step_func_done(function () { ctx.font = '50px CanvasTest'; @assert ctx.measureText('A B').width === 150; @assert ctx.measureText('A B').width === 150; @moz-todo diff --git a/testing/web-platform/tests/FileAPI/OWNERS b/testing/web-platform/tests/FileAPI/OWNERS index 7e93ac00d503..a84e2ab73d5a 100644 --- a/testing/web-platform/tests/FileAPI/OWNERS +++ b/testing/web-platform/tests/FileAPI/OWNERS @@ -2,5 +2,4 @@ @zqzhang @zcorpan @jdm -@Ms2ger @mkruisselbrink diff --git a/testing/web-platform/tests/FileAPI/blob/Blob-XHR-revoke.html b/testing/web-platform/tests/FileAPI/blob/Blob-XHR-revoke.html index fea313eeee56..a38caaf32210 100644 --- a/testing/web-platform/tests/FileAPI/blob/Blob-XHR-revoke.html +++ b/testing/web-platform/tests/FileAPI/blob/Blob-XHR-revoke.html @@ -17,12 +17,22 @@ async_test(function(t) { xhr.send(); - xhr.onload = t.step_func(function() { + xhr.onload = t.step_func_done(function() { assert_equals(xhr.response, "test"); - t.done(); }) xhr.onerror = t.step_func(function() { assert_unreached("Got unexpected error event"); }) -}); - \ No newline at end of file +}, "Revoke blob URL after open(), will fetch"); + +async_test(t => { + const blob = new Blob(["test"]), + blobURL = URL.createObjectURL(blob), + client = new XMLHttpRequest + URL.revokeObjectURL(blobURL) + client.open("GET", blobURL) + client.onload = t.step_func(() => assert_unreached("Got unexpected load event")) + client.onerror = t.step_func_done() + client.send() +}, "Revoke blob URL before open(), network error (after send())") + diff --git a/testing/web-platform/tests/IndexedDB/abort-in-initial-upgradeneeded.html b/testing/web-platform/tests/IndexedDB/abort-in-initial-upgradeneeded.html index 6330ecb02e9f..20040158e9c9 100644 --- a/testing/web-platform/tests/IndexedDB/abort-in-initial-upgradeneeded.html +++ b/testing/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/testing/web-platform/tests/IndexedDB/close-in-upgradeneeded.html b/testing/web-platform/tests/IndexedDB/close-in-upgradeneeded.html index eda823a21f14..402906fc1c19 100644 --- a/testing/web-platform/tests/IndexedDB/close-in-upgradeneeded.html +++ b/testing/web-platform/tests/IndexedDB/close-in-upgradeneeded.html @@ -7,6 +7,7 @@ + + + diff --git a/testing/web-platform/tests/IndexedDB/fire-error-event-exception.html b/testing/web-platform/tests/IndexedDB/fire-error-event-exception.html new file mode 100644 index 000000000000..fe0dc182567a --- /dev/null +++ b/testing/web-platform/tests/IndexedDB/fire-error-event-exception.html @@ -0,0 +1,205 @@ + + +Fire error event - Exception thrown + + + + + diff --git a/testing/web-platform/tests/IndexedDB/fire-success-event-exception.html b/testing/web-platform/tests/IndexedDB/fire-success-event-exception.html new file mode 100644 index 000000000000..c4e55066bbab --- /dev/null +++ b/testing/web-platform/tests/IndexedDB/fire-success-event-exception.html @@ -0,0 +1,72 @@ + + +Fire success event - Exception thrown + + + + + diff --git a/testing/web-platform/tests/IndexedDB/fire-upgradeneeded-event-exception.html b/testing/web-platform/tests/IndexedDB/fire-upgradeneeded-event-exception.html new file mode 100644 index 000000000000..5db452ebafe6 --- /dev/null +++ b/testing/web-platform/tests/IndexedDB/fire-upgradeneeded-event-exception.html @@ -0,0 +1,77 @@ + + +Fire upgradeneeded event - Exception thrown + + + + + diff --git a/testing/web-platform/tests/IndexedDB/idbcursor_continue_objectstore.htm b/testing/web-platform/tests/IndexedDB/idbcursor_continue_objectstore.htm index 76750c969a49..e86edc464cbe 100644 --- a/testing/web-platform/tests/IndexedDB/idbcursor_continue_objectstore.htm +++ b/testing/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/testing/web-platform/tests/IndexedDB/idbfactory-deleteDatabase-opaque-origin.html b/testing/web-platform/tests/IndexedDB/idbfactory-deleteDatabase-opaque-origin.html new file mode 100644 index 000000000000..058116fac515 --- /dev/null +++ b/testing/web-platform/tests/IndexedDB/idbfactory-deleteDatabase-opaque-origin.html @@ -0,0 +1,66 @@ + + +IDBFactory.deleteDatabase() and opaque origins + + + diff --git a/testing/web-platform/tests/IndexedDB/idbfactory-open-opaque-origin.html b/testing/web-platform/tests/IndexedDB/idbfactory-open-opaque-origin.html new file mode 100644 index 000000000000..f69c47d31ad0 --- /dev/null +++ b/testing/web-platform/tests/IndexedDB/idbfactory-open-opaque-origin.html @@ -0,0 +1,68 @@ + + +IDBFactory.open() and opaque origins + + + diff --git a/testing/web-platform/tests/IndexedDB/idbfactory_deleteDatabase4.htm b/testing/web-platform/tests/IndexedDB/idbfactory_deleteDatabase4.htm index 3a4e9944da5a..73adb1a4d89f 100644 --- a/testing/web-platform/tests/IndexedDB/idbfactory_deleteDatabase4.htm +++ b/testing/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) { @@ -25,7 +26,7 @@ db.onerror = fail(t, "db.error"); db.abort = fail(t, "db.abort"); - setTimeout(t.step_func(Second), 4); + step_timeout(t.step_func(Second), 4); db.close(); }); @@ -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/testing/web-platform/tests/IndexedDB/idbindex_get.htm b/testing/web-platform/tests/IndexedDB/idbindex_get.htm index 835cbefd2c36..5afd8b5e8f68 100644 --- a/testing/web-platform/tests/IndexedDB/idbindex_get.htm +++ b/testing/web-platform/tests/IndexedDB/idbindex_get.htm @@ -7,7 +7,7 @@ diff --git a/testing/web-platform/tests/IndexedDB/idbindex_getKey4.htm b/testing/web-platform/tests/IndexedDB/idbindex_getKey4.htm index 2002a5fe194f..d0d1f5734c38 100644 --- a/testing/web-platform/tests/IndexedDB/idbindex_getKey4.htm +++ b/testing/web-platform/tests/IndexedDB/idbindex_getKey4.htm @@ -30,7 +30,7 @@ rq.onsuccess = t.step_func(function(e) { assert_equals(e.target.result, 4); - setTimeout(function() { t.done(); }, 4) + step_timeout(function() { t.done(); }, 4) }); } diff --git a/testing/web-platform/tests/IndexedDB/idbobjectstore_createIndex13.htm b/testing/web-platform/tests/IndexedDB/idbobjectstore_createIndex13.htm index fb70cc72b8d6..ac32df662908 100644 --- a/testing/web-platform/tests/IndexedDB/idbobjectstore_createIndex13.htm +++ b/testing/web-platform/tests/IndexedDB/idbobjectstore_createIndex13.htm @@ -19,7 +19,7 @@ open_rq.onsuccess = function (event) { var txn = db.transaction("store", "readwrite"); - ostore = txn.objectStore("store"); + var ostore = txn.objectStore("store"); t.step(function(){ assert_throws("InvalidStateError", function(){ ostore.createIndex("index", "indexedProperty"); diff --git a/testing/web-platform/tests/IndexedDB/idbobjectstore_get4.htm b/testing/web-platform/tests/IndexedDB/idbobjectstore_get4.htm index 7853697a19f4..4a8de9f77a80 100644 --- a/testing/web-platform/tests/IndexedDB/idbobjectstore_get4.htm +++ b/testing/web-platform/tests/IndexedDB/idbobjectstore_get4.htm @@ -17,7 +17,7 @@ .get(1); rq.onsuccess = t.step_func(function(e) { assert_equals(e.target.results, undefined); - setTimeout(function() { t.done(); }, 10); + step_timeout(function() { t.done(); }, 10); }); }; diff --git a/testing/web-platform/tests/IndexedDB/keygenerator-explicit.html b/testing/web-platform/tests/IndexedDB/keygenerator-explicit.html new file mode 100644 index 000000000000..1add18c0c61c --- /dev/null +++ b/testing/web-platform/tests/IndexedDB/keygenerator-explicit.html @@ -0,0 +1,146 @@ + + +Key Generator behavior with explicit keys generator overflow + + + + + diff --git a/testing/web-platform/tests/IndexedDB/keygenerator-inject.html b/testing/web-platform/tests/IndexedDB/keygenerator-inject.html new file mode 100644 index 000000000000..fcdd7d6f4a65 --- /dev/null +++ b/testing/web-platform/tests/IndexedDB/keygenerator-inject.html @@ -0,0 +1,119 @@ + + +Key Generator behavior with explicit keys and value injection + + + + + diff --git a/testing/web-platform/tests/IndexedDB/keypath_invalid.htm b/testing/web-platform/tests/IndexedDB/keypath_invalid.htm index 9c5bd6c2f6c6..1a4357bb5d5f 100644 --- a/testing/web-platform/tests/IndexedDB/keypath_invalid.htm +++ b/testing/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/testing/web-platform/tests/IndexedDB/support.js b/testing/web-platform/tests/IndexedDB/support.js index 63b23e5a73e7..cf3aa4d0ee23 100644 --- a/testing/web-platform/tests/IndexedDB/support.js +++ b/testing/web-platform/tests/IndexedDB/support.js @@ -50,7 +50,7 @@ function createdb_for_multiple_tests(dbname, version) { function auto_fail(evt, current_test) { /* Fail handlers, if we haven't set on/whatever/, don't * expect to get event whatever. */ - rq_open.manually_handled = {} + rq_open.manually_handled = {}; rq_open.addEventListener(evt, function(e) { if (current_test !== test) { @@ -71,15 +71,15 @@ function createdb_for_multiple_tests(dbname, version) { this.db.onversionchange = fail(test, 'unexpected db.versionchange'); } - }) - }) + }); + }); rq_open.__defineSetter__("on" + evt, function(h) { rq_open.manually_handled[evt] = true; if (!h) rq_open.addEventListener(evt, function() {}); else rq_open.addEventListener(evt, test.step_func(h)); - }) + }); } // add a .setTest method to the IDBOpenDBRequest object @@ -123,6 +123,10 @@ function indexeddb_test(upgrade_func, open_func, description, options) { }); open.onsuccess = t.step_func(function() { var db = open.result; + t.add_cleanup(function() { + db.close(); + indexedDB.deleteDatabase(db.name); + }); if (open_func) open_func(t, db); }); @@ -143,3 +147,44 @@ function expect(t, expected) { } }; } + +// Checks to see if the passed transaction is active (by making +// requests against the named store). +function is_transaction_active(tx, store_name) { + try { + const request = tx.objectStore(store_name).get(0); + request.onerror = e => { + e.preventDefault(); + e.stopPropagation(); + }; + return true; + } catch (ex) { + assert_equals(ex.name, 'TransactionInactiveError', + 'Active check should either not throw anything, or throw ' + + 'TransactionInactiveError'); + return false; + } +} + +// Keep the passed transaction alive indefinitely (by making requests +// against the named store). Returns a function to to let the +// transaction finish, and asserts that the transaction is not yet +// finished. +function keep_alive(tx, store_name) { + let completed = false; + tx.addEventListener('complete', () => { completed = true; }); + + let pin = true; + + function spin() { + if (!pin) + return; + tx.objectStore(store_name).get(0).onsuccess = spin; + } + spin(); + + return () => { + assert_false(completed, 'Transaction completed while kept alive'); + pin = false; + }; +} diff --git a/testing/web-platform/tests/IndexedDB/transaction-deactivation-timing.html b/testing/web-platform/tests/IndexedDB/transaction-deactivation-timing.html new file mode 100644 index 000000000000..e3b4a968e877 --- /dev/null +++ b/testing/web-platform/tests/IndexedDB/transaction-deactivation-timing.html @@ -0,0 +1,143 @@ + + +Transactions deactivation timing + + + + + diff --git a/testing/web-platform/tests/IndexedDB/transaction-lifetime-blocked.htm b/testing/web-platform/tests/IndexedDB/transaction-lifetime-blocked.htm index 3288506c5058..b0c91ec84579 100644 --- a/testing/web-platform/tests/IndexedDB/transaction-lifetime-blocked.htm +++ b/testing/web-platform/tests/IndexedDB/transaction-lifetime-blocked.htm @@ -41,7 +41,7 @@ db.onerror = fail(t, "db.error"); db.abort = fail(t, "db.abort"); - setTimeout(t.step_func(OpenSecond), 10); + step_timeout(t.step_func(OpenSecond), 10); }); // Errors @@ -91,7 +91,7 @@ "open2.success", ]); - setTimeout(function() { t.done(); }, 10); + step_timeout(function() { t.done(); }, 10); }); // Errors diff --git a/testing/web-platform/tests/IndexedDB/transaction-lifetime.htm b/testing/web-platform/tests/IndexedDB/transaction-lifetime.htm index 2412424fd4e7..c646286f43ad 100644 --- a/testing/web-platform/tests/IndexedDB/transaction-lifetime.htm +++ b/testing/web-platform/tests/IndexedDB/transaction-lifetime.htm @@ -41,7 +41,7 @@ db.onerror = fail(t, "db.error"); db.abort = fail(t, "db.abort"); - setTimeout(t.step_func(OpenSecond), 10); + step_timeout(t.step_func(OpenSecond), 10); }); // Errors @@ -83,7 +83,7 @@ "open2.success", ]); - setTimeout(function() { t.done(); }, 10); + step_timeout(function() { t.done(); }, 10); }); // Errors diff --git a/testing/web-platform/tests/IndexedDB/upgrade-transaction-deactivation-timing.html b/testing/web-platform/tests/IndexedDB/upgrade-transaction-deactivation-timing.html new file mode 100644 index 000000000000..f941f219e563 --- /dev/null +++ b/testing/web-platform/tests/IndexedDB/upgrade-transaction-deactivation-timing.html @@ -0,0 +1,48 @@ + + +Upgrade transaction deactivation timing + + + + + diff --git a/testing/web-platform/tests/IndexedDB/writer-starvation.htm b/testing/web-platform/tests/IndexedDB/writer-starvation.htm index ae6c90150e28..412308387fce 100644 --- a/testing/web-platform/tests/IndexedDB/writer-starvation.htm +++ b/testing/web-platform/tests/IndexedDB/writer-starvation.htm @@ -81,7 +81,7 @@ }); if (read_success_count < RQ_COUNT + 5) - setTimeout(this.step_func(loop), write_request_count ? 1000 : 100); + step_timeout(this.step_func(loop), write_request_count ? 1000 : 100); else // This is merely a "nice" hack to run finish after the last request is done db.transaction("s") @@ -89,7 +89,7 @@ .count() .onsuccess = this.step_func(function() { - setTimeout(this.step_func(finish), 100); + step_timeout(this.step_func(finish), 100); }); } } diff --git a/testing/web-platform/tests/WebCryptoAPI/OWNERS b/testing/web-platform/tests/WebCryptoAPI/OWNERS index 6924cd9438cc..3b1ac0f99fd0 100644 --- a/testing/web-platform/tests/WebCryptoAPI/OWNERS +++ b/testing/web-platform/tests/WebCryptoAPI/OWNERS @@ -1,4 +1,3 @@ @Wafflespeanut -@Ms2ger @jimsch @engelke diff --git a/testing/web-platform/tests/XMLHttpRequest/OWNERS b/testing/web-platform/tests/XMLHttpRequest/OWNERS index 6dd7aff93265..5256cf3d602b 100644 --- a/testing/web-platform/tests/XMLHttpRequest/OWNERS +++ b/testing/web-platform/tests/XMLHttpRequest/OWNERS @@ -8,4 +8,5 @@ @mathiasbynens @ronkorving @jdm -@Ms2ger +@annevk +@wisniewskit diff --git a/testing/web-platform/tests/XMLHttpRequest/README.md b/testing/web-platform/tests/XMLHttpRequest/README.md new file mode 100644 index 000000000000..8fbe615bf648 --- /dev/null +++ b/testing/web-platform/tests/XMLHttpRequest/README.md @@ -0,0 +1,7 @@ +Tests for the [XMLHttpRequest Standard](https://xhr.spec.whatwg.org/). + +More XMLHttpRequest-related tests can be found in + +* /cors +* /fetch +* /url (failure.html in particular) diff --git a/testing/web-platform/tests/XMLHttpRequest/abort-after-receive.htm b/testing/web-platform/tests/XMLHttpRequest/abort-after-receive.htm index bd97b68358d6..1c460c898c3c 100644 --- a/testing/web-platform/tests/XMLHttpRequest/abort-after-receive.htm +++ b/testing/web-platform/tests/XMLHttpRequest/abort-after-receive.htm @@ -22,8 +22,8 @@ assert_equals(client.readyState, 0); - setTimeout(function(){ // use a timeout to catch any implementation that might queue an abort event for later - just in case - test.step(function(){test.done();}); + test.step_timeout(function(){ // use a timeout to catch any implementation that might queue an abort event for later - just in case + test.done() }, 200); } }); diff --git a/testing/web-platform/tests/XMLHttpRequest/abort-after-stop.htm b/testing/web-platform/tests/XMLHttpRequest/abort-after-stop.htm index 87e9ebcd853e..24cb5a49a057 100644 --- a/testing/web-platform/tests/XMLHttpRequest/abort-after-stop.htm +++ b/testing/web-platform/tests/XMLHttpRequest/abort-after-stop.htm @@ -19,11 +19,9 @@ }); client.open("GET", "resources/delay.py?ms=3000", true); client.send(null); - setTimeout(function(){ - test.step(function(){ - assert_equals(abortFired, true); - test.done(); - }); + test.step_timeout(() => { + assert_equals(abortFired, true); + test.done(); }, 200); window.stop(); }); diff --git a/testing/web-platform/tests/XMLHttpRequest/abort-after-timeout.htm b/testing/web-platform/tests/XMLHttpRequest/abort-after-timeout.htm index e8e84b1a35d2..924bc424d50e 100644 --- a/testing/web-platform/tests/XMLHttpRequest/abort-after-timeout.htm +++ b/testing/web-platform/tests/XMLHttpRequest/abort-after-timeout.htm @@ -25,20 +25,18 @@ client.timeout = 100; - setTimeout(test.step_func(function() { + test.step_timeout(() => { assert_true(timeoutFired); // abort should not cause the "abort" event to fire client.abort(); - setTimeout(function(){ // use a timeout to catch any implementation that might queue an abort event for later - just in case - test.step(function(){test.done();}); + test.step_timeout(() => { // use a timeout to catch any implementation that might queue an abort event for later - just in case + test.done() }, 200); assert_equals(client.readyState, 0); - - test.done(); - }), 300); + }, 300); client.ontimeout = function () { timeoutFired = true; diff --git a/testing/web-platform/tests/XMLHttpRequest/anonymous-mode-unsupported.htm b/testing/web-platform/tests/XMLHttpRequest/anonymous-mode-unsupported.htm index 9cacf61b7d23..f995ec2a94e2 100644 --- a/testing/web-platform/tests/XMLHttpRequest/anonymous-mode-unsupported.htm +++ b/testing/web-platform/tests/XMLHttpRequest/anonymous-mode-unsupported.htm @@ -29,7 +29,7 @@ client.open("GET", "resources/inspect-headers.py?filter_name=cookie") client.onreadystatechange = test.step_func(function(){ if(client.readyState === 4){ - assert_equals(client.responseText, 'cookie: test=anonymous-mode-unsupported\n', 'The deprecated anonymous:true should be ignored, cookie sent anyway') + assert_equals(client.responseText, 'Cookie: test=anonymous-mode-unsupported\n', 'The deprecated anonymous:true should be ignored, cookie sent anyway') test.done(); } }); diff --git a/testing/web-platform/tests/XMLHttpRequest/data-uri.htm b/testing/web-platform/tests/XMLHttpRequest/data-uri.htm index 8c2970583e8a..5123789852a4 100644 --- a/testing/web-platform/tests/XMLHttpRequest/data-uri.htm +++ b/testing/web-platform/tests/XMLHttpRequest/data-uri.htm @@ -1,16 +1,14 @@ -XMLHttpRequest: data uri +XMLHttpRequest: data URLs - -
diff --git a/testing/web-platform/tests/XMLHttpRequest/event-load.htm b/testing/web-platform/tests/XMLHttpRequest/event-load.htm index 9098eebc743e..cdd0c5bb8ad1 100644 --- a/testing/web-platform/tests/XMLHttpRequest/event-load.htm +++ b/testing/web-platform/tests/XMLHttpRequest/event-load.htm @@ -3,10 +3,8 @@ XMLHttpRequest: The send() method: Fire an event named load (synchronous flag is unset) - - - - + +
\ No newline at end of file + diff --git a/testing/web-platform/tests/XMLHttpRequest/event-loadend.htm b/testing/web-platform/tests/XMLHttpRequest/event-loadend.htm index b0c621317257..b17d9b9134ea 100644 --- a/testing/web-platform/tests/XMLHttpRequest/event-loadend.htm +++ b/testing/web-platform/tests/XMLHttpRequest/event-loadend.htm @@ -6,9 +6,6 @@ - - -
@@ -23,9 +20,9 @@ }); client.onreadystatechange = function() { if (client.readyState !== 4) return; - setTimeout(test.step_func(function() { + test.step_timeout(() => { assert_unreached("onloadend not called after 100 ms"); - }), 100); + }, 100); }; client.open("GET", "resources/well-formed.xml"); client.send(null); diff --git a/testing/web-platform/tests/XMLHttpRequest/event-loadstart-upload.htm b/testing/web-platform/tests/XMLHttpRequest/event-loadstart-upload.htm new file mode 100644 index 000000000000..275d418a7e09 --- /dev/null +++ b/testing/web-platform/tests/XMLHttpRequest/event-loadstart-upload.htm @@ -0,0 +1,28 @@ + + + +XMLHttpRequest: The send() method: Fire a progress event named loadstart on upload object (synchronous flag is unset) + + + + +
+ diff --git a/testing/web-platform/tests/XMLHttpRequest/event-loadstart.htm b/testing/web-platform/tests/XMLHttpRequest/event-loadstart.htm index 5149003034d7..442be938dc7f 100644 --- a/testing/web-platform/tests/XMLHttpRequest/event-loadstart.htm +++ b/testing/web-platform/tests/XMLHttpRequest/event-loadstart.htm @@ -20,9 +20,9 @@ assert_equals(client.readyState, 1); test.done(); }); - setTimeout(test.step_func(function () { + test.step_timeout(function () { assert_unreached("onloadstart not called after 500 ms"); - }), 500); + }, 500); client.open("GET", "resources/well-formed.xml"); client.send(null); }); diff --git a/testing/web-platform/tests/XMLHttpRequest/event-progress.htm b/testing/web-platform/tests/XMLHttpRequest/event-progress.htm index f2f40b85bc75..65d3f289810f 100644 --- a/testing/web-platform/tests/XMLHttpRequest/event-progress.htm +++ b/testing/web-platform/tests/XMLHttpRequest/event-progress.htm @@ -6,9 +6,6 @@ - - -
- -
diff --git a/testing/web-platform/tests/XMLHttpRequest/event-timeout-order.htm b/testing/web-platform/tests/XMLHttpRequest/event-timeout-order.htm index 7376ca2f8b14..d4dc78010a74 100644 --- a/testing/web-platform/tests/XMLHttpRequest/event-timeout-order.htm +++ b/testing/web-platform/tests/XMLHttpRequest/event-timeout-order.htm @@ -28,9 +28,9 @@ xhr.timeout = 5; xhr.open("POST", "resources/delay.py?ms=20000"); xhr.send("Test Message"); - setTimeout(test.step_func(function () { + test.step_timeout(() => { assert_unreached("ontimeout not called."); - }), 10); + }, 10); }); diff --git a/testing/web-platform/tests/XMLHttpRequest/event-timeout.htm b/testing/web-platform/tests/XMLHttpRequest/event-timeout.htm index 3368efc4b9d4..c40213562b57 100644 --- a/testing/web-platform/tests/XMLHttpRequest/event-timeout.htm +++ b/testing/web-platform/tests/XMLHttpRequest/event-timeout.htm @@ -25,9 +25,9 @@ client.timeout = 5; client.open("GET", "resources/delay.py?ms=20000"); client.send(null); - setTimeout(test.step_func(function () { + test.step_timeout(() => { assert_unreached("ontimeout not called."); - }), 10); + }, 10); }); diff --git a/testing/web-platform/tests/XMLHttpRequest/event-upload-progress-crossorigin.htm b/testing/web-platform/tests/XMLHttpRequest/event-upload-progress-crossorigin.htm index 66461689c52f..4ca9f7cfc67f 100644 --- a/testing/web-platform/tests/XMLHttpRequest/event-upload-progress-crossorigin.htm +++ b/testing/web-platform/tests/XMLHttpRequest/event-upload-progress-crossorigin.htm @@ -6,7 +6,6 @@ -
diff --git a/testing/web-platform/tests/XMLHttpRequest/event-upload-progress.htm b/testing/web-platform/tests/XMLHttpRequest/event-upload-progress.htm index 98c76cc3fc33..e4b24e7cdd5c 100644 --- a/testing/web-platform/tests/XMLHttpRequest/event-upload-progress.htm +++ b/testing/web-platform/tests/XMLHttpRequest/event-upload-progress.htm @@ -5,8 +5,6 @@ - -
@@ -14,7 +12,11 @@ var test = async_test(); test.step(function() { var client = new XMLHttpRequest(); - client.upload.onprogress = test.step_func(function() { + client.upload.onprogress = test.step_func(function(e) { + assert_true(e instanceof ProgressEvent); + // This short payload will most likely be sent before the first progress evt + assert_equals(e.loaded, 22); + assert_equals(e.total, 22); test.done(); }); client.onreadystatechange = test.step_func(function() { diff --git a/testing/web-platform/tests/XMLHttpRequest/getallresponseheaders-cl.htm b/testing/web-platform/tests/XMLHttpRequest/getallresponseheaders-cl.htm new file mode 100644 index 000000000000..1a99f22fa587 --- /dev/null +++ b/testing/web-platform/tests/XMLHttpRequest/getallresponseheaders-cl.htm @@ -0,0 +1,27 @@ + +Casing of known headers + + + diff --git a/testing/web-platform/tests/XMLHttpRequest/getallresponseheaders.htm b/testing/web-platform/tests/XMLHttpRequest/getallresponseheaders.htm new file mode 100644 index 000000000000..5d83ba4f57a9 --- /dev/null +++ b/testing/web-platform/tests/XMLHttpRequest/getallresponseheaders.htm @@ -0,0 +1,24 @@ + +XMLHttpRequest: getAllResponseHeaders() + + +
+ diff --git a/testing/web-platform/tests/XMLHttpRequest/getresponseheader-case-insensitive.htm b/testing/web-platform/tests/XMLHttpRequest/getresponseheader-case-insensitive.htm index 8e0537edf174..6a961493574e 100644 --- a/testing/web-platform/tests/XMLHttpRequest/getresponseheader-case-insensitive.htm +++ b/testing/web-platform/tests/XMLHttpRequest/getresponseheader-case-insensitive.htm @@ -4,7 +4,7 @@ XMLHttpRequest: getResponseHeader() case-insensitive matching - +
@@ -21,7 +21,7 @@ assert_equals(client.getResponseHeader("X-custom-HEADER"), "test") assert_equals(client.getResponseHeader("X-CUSTOM-header-COMMA"), "1, 2") assert_equals(client.getResponseHeader("X-CUSTOM-no-such-header-in-response"), null) - assert_true(client.getResponseHeader("CONTENT-TYPE").indexOf("text/plain") != -1) + assert_equals(client.getResponseHeader("CONTENT-TYPE"), "text/plain") test.done() } }) diff --git a/testing/web-platform/tests/XMLHttpRequest/loadstart-and-state.html b/testing/web-platform/tests/XMLHttpRequest/loadstart-and-state.html new file mode 100644 index 000000000000..460b2bfc9908 --- /dev/null +++ b/testing/web-platform/tests/XMLHttpRequest/loadstart-and-state.html @@ -0,0 +1,40 @@ + +XMLHttpRequest: loadstart event corner cases + + +
+ diff --git a/testing/web-platform/tests/XMLHttpRequest/open-after-setrequestheader.htm b/testing/web-platform/tests/XMLHttpRequest/open-after-setrequestheader.htm index 525edbfc1abe..ca1ae25946f0 100644 --- a/testing/web-platform/tests/XMLHttpRequest/open-after-setrequestheader.htm +++ b/testing/web-platform/tests/XMLHttpRequest/open-after-setrequestheader.htm @@ -4,7 +4,7 @@ XMLHttpRequest: open() after setRequestHeader() - + diff --git a/testing/web-platform/tests/XMLHttpRequest/open-referer.htm b/testing/web-platform/tests/XMLHttpRequest/open-referer.htm index 4ffdfe0c5d55..d7ed793ebe22 100644 --- a/testing/web-platform/tests/XMLHttpRequest/open-referer.htm +++ b/testing/web-platform/tests/XMLHttpRequest/open-referer.htm @@ -4,7 +4,7 @@ XMLHttpRequest: open() - value of Referer header - +
@@ -13,7 +13,7 @@ var client = new XMLHttpRequest() client.open("POST", "resources/inspect-headers.py?filter_name=referer", false) client.send(null) - assert_equals(client.responseText, "referer: "+location.href+'\n') + assert_equals(client.responseText, "Referer: "+location.href+'\n') }) diff --git a/testing/web-platform/tests/XMLHttpRequest/open-send-during-abort.htm b/testing/web-platform/tests/XMLHttpRequest/open-send-during-abort.htm new file mode 100644 index 000000000000..dc6f86bfc2c7 --- /dev/null +++ b/testing/web-platform/tests/XMLHttpRequest/open-send-during-abort.htm @@ -0,0 +1,27 @@ + +XMLHttpRequest: open() during abort() + + +
+ diff --git a/testing/web-platform/tests/XMLHttpRequest/open-url-bogus.htm b/testing/web-platform/tests/XMLHttpRequest/open-url-bogus.htm deleted file mode 100644 index 117bd4958a53..000000000000 --- a/testing/web-platform/tests/XMLHttpRequest/open-url-bogus.htm +++ /dev/null @@ -1,25 +0,0 @@ - - - - XMLHttpRequest: open() - bogus URLs - - - - - -
- - - diff --git a/testing/web-platform/tests/XMLHttpRequest/overridemimetype-blob.html b/testing/web-platform/tests/XMLHttpRequest/overridemimetype-blob.html new file mode 100644 index 000000000000..4094480f9e82 --- /dev/null +++ b/testing/web-platform/tests/XMLHttpRequest/overridemimetype-blob.html @@ -0,0 +1,65 @@ + +XMLHttpRequest: overrideMimeType() and responseType = "blob" + + + +
+ diff --git a/testing/web-platform/tests/XMLHttpRequest/overridemimetype-invalid-mime-type.htm b/testing/web-platform/tests/XMLHttpRequest/overridemimetype-invalid-mime-type.htm index 9cfd801e05bb..506aff841942 100644 --- a/testing/web-platform/tests/XMLHttpRequest/overridemimetype-invalid-mime-type.htm +++ b/testing/web-platform/tests/XMLHttpRequest/overridemimetype-invalid-mime-type.htm @@ -1,25 +1,41 @@ - - - XMLHttpRequest: overrideMimeType() in unsent state, invalid MIME types - - - - - - -
- - - +XMLHttpRequest: overrideMimeType() and invalid MIME types + + + + +
+ diff --git a/testing/web-platform/tests/XMLHttpRequest/preserve-ua-header-on-redirect.htm b/testing/web-platform/tests/XMLHttpRequest/preserve-ua-header-on-redirect.htm index 074934aefd7b..fad883c1ef01 100644 --- a/testing/web-platform/tests/XMLHttpRequest/preserve-ua-header-on-redirect.htm +++ b/testing/web-platform/tests/XMLHttpRequest/preserve-ua-header-on-redirect.htm @@ -14,7 +14,7 @@ client.onreadystatechange = function() { test.step(function() { if(client.readyState == 4) { - assert_equals(client.responseText, 'user-agent: '+navigator.userAgent+'\n') + assert_equals(client.responseText, 'User-Agent: '+navigator.userAgent+'\n') test.done() } }) @@ -29,7 +29,7 @@ client.onreadystatechange = function() { test2.step(function() { if(client.readyState == 4) { - assert_equals(client.responseText, 'user-agent: TEST\n') + assert_equals(client.responseText, 'User-Agent: TEST\n') test2.done() } }) diff --git a/testing/web-platform/tests/XMLHttpRequest/readme.txt b/testing/web-platform/tests/XMLHttpRequest/readme.txt deleted file mode 100644 index 2e5f64cd5182..000000000000 --- a/testing/web-platform/tests/XMLHttpRequest/readme.txt +++ /dev/null @@ -1,31 +0,0 @@ -Currently this testsuite tries to provide tests for XMLHttpRequest level 1. -This test suite is not stable and is still under development. Tests may -contain bugs and may change over time as a result of those bugs being fixed. - -When more browsers implement XMLHttpRequest level 2 this testsuite will -slowly evolve most likely. - - http://dev.w3.org/2006/webapi/XMLHttpRequest/ - http://dev.w3.org/2006/webapi/XMLHttpRequest-2/ - -If the folders above give the status of the feature tested you can assume -this is against level 1 unless explicitly stated otherwise. - -NOTE: readyState and onreadystatechange are tested throughout the various -tests. statusText is tested together with status. - -NOTE: open-url-base* have absolute paths in them. They need to be adjusted -on a per location basis. - -NOTE: open-url-base-inserted-after-open.htm, open-url-base-inserted.htm, -send-authentication.htm and open-url-base.htm refer to localhost. - - -TESTS THAT ARE UNSTABLE AND (PROBABLY) NEED CHANGES - responsexml-basic (see email WHATWG) - send-authentication (see "user:password" debacle) - - -TESTS NOT STARTED ON YET - - + diff --git a/testing/web-platform/tests/fullscreen/api/document-exit-fullscreen-nested-manual.html b/testing/web-platform/tests/fullscreen/api/document-exit-fullscreen-nested-manual.html new file mode 100644 index 000000000000..dfd53bc745ee --- /dev/null +++ b/testing/web-platform/tests/fullscreen/api/document-exit-fullscreen-nested-manual.html @@ -0,0 +1,31 @@ + +Document#exitFullscreen() for nested fullscreen + + + +
+ diff --git a/testing/web-platform/tests/html/OWNERS b/testing/web-platform/tests/html/OWNERS index ac6926398d63..0d889a1fc164 100644 --- a/testing/web-platform/tests/html/OWNERS +++ b/testing/web-platform/tests/html/OWNERS @@ -1,7 +1,5 @@ @ayg -@Ms2ger @jdm @jgraham -@sideshowbarker @zcorpan @zqzhang diff --git a/testing/web-platform/tests/html/browsers/browsing-the-web/unloading-documents/beforeunload-canceling.html b/testing/web-platform/tests/html/browsers/browsing-the-web/unloading-documents/beforeunload-canceling.html index f330bfdc8340..b415ac2a39c1 100644 --- a/testing/web-platform/tests/html/browsers/browsing-the-web/unloading-documents/beforeunload-canceling.html +++ b/testing/web-platform/tests/html/browsers/browsing-the-web/unloading-documents/beforeunload-canceling.html @@ -118,7 +118,10 @@ const testCases = [ } ]; -for (const testCase of testCases) { +var testCaseIndex = 0; +function runNextTest() { + const testCase = testCases[testCaseIndex]; + const labelAboutReturnValue = testCase.setReturnValue === undefined ? "" : `; setting returnValue to ${testCase.setReturnValue}`; @@ -126,10 +129,14 @@ for (const testCase of testCases) { const iframe = document.createElement("iframe"); iframe.onload = t.step_func(() => { iframe.contentWindow.runTest(t, testCase); + if (++testCaseIndex < testCases.length) + runNextTest(); }); iframe.src = "beforeunload-canceling-1.html"; document.body.appendChild(iframe); }, `Returning ${testCase.valueToReturn} with a real iframe unloading${labelAboutReturnValue}`); } + +runNextTest(); diff --git a/testing/web-platform/tests/html/browsers/history/the-location-interface/location-protocol-setter-with-colon.sub.html b/testing/web-platform/tests/html/browsers/history/the-location-interface/location-protocol-setter-with-colon.sub.html index 396776d43914..0612b5c70920 100644 --- a/testing/web-platform/tests/html/browsers/history/the-location-interface/location-protocol-setter-with-colon.sub.html +++ b/testing/web-platform/tests/html/browsers/history/the-location-interface/location-protocol-setter-with-colon.sub.html @@ -6,7 +6,7 @@
- + diff --git a/testing/web-platform/tests/html/browsers/offline/application-cache-api/api_update_error.html b/testing/web-platform/tests/html/browsers/offline/application-cache-api/api_update_error.html index ef88158cd0ed..469baea8bad7 100644 --- a/testing/web-platform/tests/html/browsers/offline/application-cache-api/api_update_error.html +++ b/testing/web-platform/tests/html/browsers/offline/application-cache-api/api_update_error.html @@ -1,16 +1,11 @@ - + Offline Application Cache - API_update_error -
    -
  1. Remove the manifest file (manifest/clock.manifest) from the server.
  2. -
  3. Refresh the page, then calling update() will throw InvalidStateError exception.
  4. -
-
+ + + diff --git a/testing/web-platform/tests/html/browsers/offline/no-appcache-in-shared-workers-historical.js b/testing/web-platform/tests/html/browsers/offline/no-appcache-in-shared-workers-historical.js new file mode 100644 index 000000000000..4f9b732e34a0 --- /dev/null +++ b/testing/web-platform/tests/html/browsers/offline/no-appcache-in-shared-workers-historical.js @@ -0,0 +1,14 @@ +"use strict"; +self.importScripts('/resources/testharness.js'); + +test(() => { + assert_equals(self.applicationCache, undefined, "self.applicationCache must be undefined"); + assert_false("applicationCache" in self, "applicationCache must not even be a property of self"); +}, "self.applicationCache must not exist"); + +test(() => { + assert_equals(self.ApplicationCache, undefined, "self.ApplicationCache must be undefined"); + assert_false("ApplicationCache" in self, "ApplicationCache must not even be a property of self"); +}, "ApplicationCache must not be exposed"); + +done(); diff --git a/testing/web-platform/tests/html/browsers/the-window-object/support/noopener-target.html b/testing/web-platform/tests/html/browsers/the-window-object/support/noopener-target.html index d0d0360260cc..41e197a74630 100644 --- a/testing/web-platform/tests/html/browsers/the-window-object/support/noopener-target.html +++ b/testing/web-platform/tests/html/browsers/the-window-object/support/noopener-target.html @@ -4,5 +4,12 @@ var channel = new BroadcastChannel(channelName); channel.postMessage({ name: window.name, haveOpener: window.opener !== null }); - window.close(); + + // Because messages are not delivered synchronously and because closing a + // browsing context prompts the eventual clearing of all task sources, this + // document should not be closed until the opener document has confirmed + // receipt. + channel.onmessage = function() { + window.close(); + }; diff --git a/testing/web-platform/tests/html/browsers/the-window-object/window-open-noopener.html b/testing/web-platform/tests/html/browsers/the-window-object/window-open-noopener.html index 808f55e23a41..f9489c3be327 100644 --- a/testing/web-platform/tests/html/browsers/the-window-object/window-open-noopener.html +++ b/testing/web-platform/tests/html/browsers/the-window-object/window-open-noopener.html @@ -64,7 +64,10 @@ for (var i = 0; i < testData.length; ++i) { } else { t.step(function() { var w1; - this.add_cleanup(function() { w1.close(); }); + this.add_cleanup(function() { + w1.close(); + channel.postMessage(null); + }); var windowName = this.windowName; var channel = new BroadcastChannel(windowName); diff --git a/testing/web-platform/tests/html/browsers/windows/browsing-context-window.html b/testing/web-platform/tests/html/browsers/windows/browsing-context-window.html new file mode 100644 index 000000000000..f4f3c715ac45 --- /dev/null +++ b/testing/web-platform/tests/html/browsers/windows/browsing-context-window.html @@ -0,0 +1,37 @@ + + + + HTML Test: Newly-Created browsing context Window and `this` + + + + + + +
+ + + diff --git a/testing/web-platform/tests/html/browsers/windows/browsing-context-first-created.xhtml b/testing/web-platform/tests/html/browsers/windows/browsing-context.html similarity index 82% rename from testing/web-platform/tests/html/browsers/windows/browsing-context-first-created.xhtml rename to testing/web-platform/tests/html/browsers/windows/browsing-context.html index a059eec4cc4c..ad3a01fd3eb5 100644 --- a/testing/web-platform/tests/html/browsers/windows/browsing-context-first-created.xhtml +++ b/testing/web-platform/tests/html/browsers/windows/browsing-context.html @@ -1,5 +1,5 @@ - - + + HTML Test: Browsing context is first created @@ -9,34 +9,25 @@
diff --git a/testing/web-platform/tests/html/browsers/windows/noreferrer-cross-origin-close-manual.sub.html b/testing/web-platform/tests/html/browsers/windows/noreferrer-cross-origin-close-manual.sub.html index 0191fa61e159..8e2740c268c3 100644 --- a/testing/web-platform/tests/html/browsers/windows/noreferrer-cross-origin-close-manual.sub.html +++ b/testing/web-platform/tests/html/browsers/windows/noreferrer-cross-origin-close-manual.sub.html @@ -1,3 +1,3 @@

Follow this link to open a new browsing context and then confirm it can be closed: -link. +link. diff --git a/testing/web-platform/tests/html/browsers/windows/noreferrer-cross-origin-window-name.sub.html b/testing/web-platform/tests/html/browsers/windows/noreferrer-cross-origin-window-name-manual.sub.html similarity index 67% rename from testing/web-platform/tests/html/browsers/windows/noreferrer-cross-origin-window-name.sub.html rename to testing/web-platform/tests/html/browsers/windows/noreferrer-cross-origin-window-name-manual.sub.html index 790c22157c87..c598ffbfaa6c 100644 --- a/testing/web-platform/tests/html/browsers/windows/noreferrer-cross-origin-window-name.sub.html +++ b/testing/web-platform/tests/html/browsers/windows/noreferrer-cross-origin-window-name-manual.sub.html @@ -1,3 +1,3 @@

Follow this link to open a new browsing context and then confirm it says "idonteven": -link. +link. diff --git a/testing/web-platform/tests/html/browsers/windows/noreferrer.html b/testing/web-platform/tests/html/browsers/windows/noreferrer-null-opener.html similarity index 92% rename from testing/web-platform/tests/html/browsers/windows/noreferrer.html rename to testing/web-platform/tests/html/browsers/windows/noreferrer-null-opener.html index c072486b0a0e..f308abc05e76 100644 --- a/testing/web-platform/tests/html/browsers/windows/noreferrer.html +++ b/testing/web-platform/tests/html/browsers/windows/noreferrer-null-opener.html @@ -10,7 +10,7 @@ var hyperlink = document.body.appendChild(document.createElement("a")) hyperlink.rel = "noreferrer" hyperlink.target = "_blank" - hyperlink.href = "support-opener-null.html" + hyperlink.href = "resources/window-opener.html" hyperlink.click() document.body.removeChild(hyperlink) diff --git a/testing/web-platform/tests/html/browsers/windows/noreferrer-window-name.html b/testing/web-platform/tests/html/browsers/windows/noreferrer-window-name.html index 37aea98f5c52..c13bae9de42e 100644 --- a/testing/web-platform/tests/html/browsers/windows/noreferrer-window-name.html +++ b/testing/web-platform/tests/html/browsers/windows/noreferrer-window-name.html @@ -11,7 +11,7 @@ var hyperlink = document.body.appendChild(document.createElement("a")) hyperlink.rel = "noreferrer" hyperlink.target = "sufficientlyrandomwindownameamiright" - hyperlink.href = "support-named-null-opener.html#" + n + hyperlink.href = "resources/noreferrer-window-name.html#" + n return hyperlink } diff --git a/testing/web-platform/tests/html/browsers/windows/resources/browsing-context-window.html b/testing/web-platform/tests/html/browsers/windows/resources/browsing-context-window.html new file mode 100644 index 000000000000..c1594f637ec5 --- /dev/null +++ b/testing/web-platform/tests/html/browsers/windows/resources/browsing-context-window.html @@ -0,0 +1,7 @@ + diff --git a/testing/web-platform/tests/html/browsers/windows/support-window-name-echo.html b/testing/web-platform/tests/html/browsers/windows/resources/echo-window-name.html similarity index 100% rename from testing/web-platform/tests/html/browsers/windows/support-window-name-echo.html rename to testing/web-platform/tests/html/browsers/windows/resources/echo-window-name.html diff --git a/testing/web-platform/tests/html/browsers/windows/support-nested-browsing-contexts.html b/testing/web-platform/tests/html/browsers/windows/resources/nested-post-to-opener.html similarity index 100% rename from testing/web-platform/tests/html/browsers/windows/support-nested-browsing-contexts.html rename to testing/web-platform/tests/html/browsers/windows/resources/nested-post-to-opener.html diff --git a/testing/web-platform/tests/html/browsers/windows/support-named-null-opener.html b/testing/web-platform/tests/html/browsers/windows/resources/noreferrer-window-name.html similarity index 100% rename from testing/web-platform/tests/html/browsers/windows/support-named-null-opener.html rename to testing/web-platform/tests/html/browsers/windows/resources/noreferrer-window-name.html diff --git a/testing/web-platform/tests/html/browsers/windows/support-post-to-opener.html b/testing/web-platform/tests/html/browsers/windows/resources/post-to-opener.html similarity index 100% rename from testing/web-platform/tests/html/browsers/windows/support-post-to-opener.html rename to testing/web-platform/tests/html/browsers/windows/resources/post-to-opener.html diff --git a/testing/web-platform/tests/html/browsers/windows/support-open-cross-origin.sub.html b/testing/web-platform/tests/html/browsers/windows/resources/target-cross-origin.sub.html similarity index 63% rename from testing/web-platform/tests/html/browsers/windows/support-open-cross-origin.sub.html rename to testing/web-platform/tests/html/browsers/windows/resources/target-cross-origin.sub.html index 06137ef75047..8472f96b906e 100644 --- a/testing/web-platform/tests/html/browsers/windows/support-open-cross-origin.sub.html +++ b/testing/web-platform/tests/html/browsers/windows/resources/target-cross-origin.sub.html @@ -1,3 +1,3 @@

Follow this link to open a new browsing context in a separate origin. -link. +link. diff --git a/testing/web-platform/tests/html/browsers/windows/support-close.html b/testing/web-platform/tests/html/browsers/windows/resources/window-close-button.html similarity index 100% rename from testing/web-platform/tests/html/browsers/windows/support-close.html rename to testing/web-platform/tests/html/browsers/windows/resources/window-close-button.html diff --git a/testing/web-platform/tests/html/browsers/windows/support-opener-null.html b/testing/web-platform/tests/html/browsers/windows/resources/window-opener.html similarity index 100% rename from testing/web-platform/tests/html/browsers/windows/support-opener-null.html rename to testing/web-platform/tests/html/browsers/windows/resources/window-opener.html diff --git a/testing/web-platform/tests/html/browsers/windows/targeting-cross-origin-nested-browsing-contexts.html b/testing/web-platform/tests/html/browsers/windows/targeting-cross-origin-nested-browsing-contexts.html index e37a595f7574..44d4fbad6b79 100644 --- a/testing/web-platform/tests/html/browsers/windows/targeting-cross-origin-nested-browsing-contexts.html +++ b/testing/web-platform/tests/html/browsers/windows/targeting-cross-origin-nested-browsing-contexts.html @@ -15,7 +15,7 @@ if (e.data.name == "openee") { var a = document.body.appendChild(document.createElement('a')); a.target = "nested1"; - a.href = "support-post-to-opener.html"; + a.href = "resources/post-to-opener.html"; a.click(); windowsToClose.push(e.source); } else { @@ -31,7 +31,7 @@ var a = document.body.appendChild(document.createElement('a')); a.target = "openee"; - a.href = get_host_info().HTTP_REMOTE_ORIGIN + "/html/browsers/windows/support-nested-browsing-contexts.html"; + a.href = get_host_info().HTTP_REMOTE_ORIGIN + "/html/browsers/windows/resources/nested-post-to-opener.html"; a.click(); }); diff --git a/testing/web-platform/tests/html/browsers/windows/targeting-multiple-cross-origin-manual.sub.html b/testing/web-platform/tests/html/browsers/windows/targeting-multiple-cross-origin-manual.sub.html index c5cb03baf09c..c8f8cfbe2940 100644 --- a/testing/web-platform/tests/html/browsers/windows/targeting-multiple-cross-origin-manual.sub.html +++ b/testing/web-platform/tests/html/browsers/windows/targeting-multiple-cross-origin-manual.sub.html @@ -1,9 +1,9 @@

Follow this link to open a new browsing context in a separate origin. Follow the instructions in that new window, and then come back to this window. -link. +link.

Once you come back to this page, follow this link. -link. +link.

After clicking that link, you should have three additional windows open. diff --git a/testing/web-platform/tests/html/dom/elements/elements-in-the-dom/historical.html b/testing/web-platform/tests/html/dom/elements/elements-in-the-dom/historical.html index c18ee318f501..469ff08ca5b6 100644 --- a/testing/web-platform/tests/html/dom/elements/elements-in-the-dom/historical.html +++ b/testing/web-platform/tests/html/dom/elements/elements-in-the-dom/historical.html @@ -13,6 +13,8 @@ "commandDisabled", "commandChecked", "commandTriggers", + // https://github.com/whatwg/html/pull/2402 + "dropzone", // https://github.com/whatwg/html/commit/5ddfc78b1f82e86cc202d72ccc752a0e15f1e4ad "inert", ].forEach(function(member) { diff --git a/testing/web-platform/tests/html/dom/reflection.js b/testing/web-platform/tests/html/dom/reflection.js index b105a8b5ad68..e3ff41574c49 100644 --- a/testing/web-platform/tests/html/dom/reflection.js +++ b/testing/web-platform/tests/html/dom/reflection.js @@ -789,8 +789,7 @@ for (var element in elements) { // Don't try to test the defaultVal -- it should be either 0 or -1, but the // rules are complicated, and a lot of them are SHOULDs. ReflectionTests.reflects({type: "long", defaultVal: null}, "tabIndex", element); - // TODO: classList, contextMenu, itemProp, itemRef, dropzone (require - // tokenlist support) + // TODO: classList, contextMenu, itemProp, itemRef for (var idlAttrName in elements[element]) { var type = elements[element][idlAttrName]; diff --git a/testing/web-platform/tests/html/dom/resources/interfaces.idl b/testing/web-platform/tests/html/dom/resources/interfaces.idl index 8ad5abcdff38..26c8cff17a9b 100644 --- a/testing/web-platform/tests/html/dom/resources/interfaces.idl +++ b/testing/web-platform/tests/html/dom/resources/interfaces.idl @@ -136,7 +136,6 @@ interface HTMLElement : Element { [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(); @@ -1790,7 +1789,7 @@ interface MessageEvent : Event { 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); + void initMessageEvent(DOMString type, optional boolean bubbles = false, optional boolean cancelable = false, optional any data = null, optional DOMString origin = "", optional DOMString lastEventId = "", optional (WindowProxy or MessagePort)? source = null, optional sequence ports = []); }; dictionary MessageEventInit : EventInit { diff --git a/testing/web-platform/tests/html/rendering/replaced-elements/resources/svg-sizing.js b/testing/web-platform/tests/html/rendering/replaced-elements/resources/svg-sizing.js index f54541e9ea25..c212c6b28328 100644 --- a/testing/web-platform/tests/html/rendering/replaced-elements/resources/svg-sizing.js +++ b/testing/web-platform/tests/html/rendering/replaced-elements/resources/svg-sizing.js @@ -400,7 +400,7 @@ var SVGSizing = (function() { var next = function() {func(config, id, cont)}; // Make sure we don't blow the stack, without too much slowness if (id % 20 === 0) { - setTimeout(next, 0); + step_timeout(next, 0); } else { next(); } diff --git a/testing/web-platform/tests/html/rendering/replaced-elements/svg-embedded-sizing/svg-embedded-sizing.js b/testing/web-platform/tests/html/rendering/replaced-elements/svg-embedded-sizing/svg-embedded-sizing.js index 5dc5131c58cc..a502d2c7477c 100644 --- a/testing/web-platform/tests/html/rendering/replaced-elements/svg-embedded-sizing/svg-embedded-sizing.js +++ b/testing/web-platform/tests/html/rendering/replaced-elements/svg-embedded-sizing/svg-embedded-sizing.js @@ -82,10 +82,10 @@ function testPlaceholderWithHeight(placeholder, } else { t.step(function() { placeholder.addEventListener('load', function() { - // setTimeout is a work-around to let engines + // step_timeout is a work-around to let engines // finish layout of child browsing contexts even // after the load event - setTimeout(t.step_func(checkSize), 0); + step_timeout(t.step_func(checkSize), 0); }); testContainer.appendChild(container); }); diff --git a/testing/web-platform/tests/html/semantics/document-metadata/styling/LinkStyle.html b/testing/web-platform/tests/html/semantics/document-metadata/styling/LinkStyle.html index 09278d2028b8..d1bb4335207c 100644 --- a/testing/web-platform/tests/html/semantics/document-metadata/styling/LinkStyle.html +++ b/testing/web-platform/tests/html/semantics/document-metadata/styling/LinkStyle.html @@ -29,14 +29,27 @@

+ + +
+ diff --git a/testing/web-platform/tests/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_allow_top_navigation_by_user_activation-manual.html b/testing/web-platform/tests/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_allow_top_navigation_by_user_activation-manual.html new file mode 100644 index 000000000000..0fa9de7c125c --- /dev/null +++ b/testing/web-platform/tests/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_allow_top_navigation_by_user_activation-manual.html @@ -0,0 +1,24 @@ + + + + + + + + +

This tests that an iframe in sandbox with 'allow-top-navigation-by-user-activation' + can navigate the top level page, if it is trigged by a user gesture.

+

Click on the button in the iframe and it should navigate the top page.

+ + + diff --git a/testing/web-platform/tests/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_allow_top_navigation_by_user_activation_without_user_gesture.html b/testing/web-platform/tests/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_allow_top_navigation_by_user_activation_without_user_gesture.html new file mode 100644 index 000000000000..042851bbb492 --- /dev/null +++ b/testing/web-platform/tests/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_allow_top_navigation_by_user_activation_without_user_gesture.html @@ -0,0 +1,19 @@ + + + + + + + + +

This tests that an iframe in sandbox with 'allow-top-navigation-by-user-activation' + cannot navigate its top level page, if it is not trigged by a user gesture.

+ + + diff --git a/testing/web-platform/tests/html/semantics/embedded-content/the-iframe-element/support/iframe-that-performs-top-navigation-without-user-gesture-failed.html b/testing/web-platform/tests/html/semantics/embedded-content/the-iframe-element/support/iframe-that-performs-top-navigation-without-user-gesture-failed.html new file mode 100644 index 000000000000..0436d56df972 --- /dev/null +++ b/testing/web-platform/tests/html/semantics/embedded-content/the-iframe-element/support/iframe-that-performs-top-navigation-without-user-gesture-failed.html @@ -0,0 +1,16 @@ + + +The top navigation from this iframe should be blocked. This text should appear. + + + diff --git a/testing/web-platform/tests/html/semantics/embedded-content/the-iframe-element/support/iframe-that-performs-top-navigation.html b/testing/web-platform/tests/html/semantics/embedded-content/the-iframe-element/support/iframe-that-performs-top-navigation.html new file mode 100644 index 000000000000..c855ca3bab21 --- /dev/null +++ b/testing/web-platform/tests/html/semantics/embedded-content/the-iframe-element/support/iframe-that-performs-top-navigation.html @@ -0,0 +1,20 @@ + + + + + +

This doc tried to navigate the top page when loaded, which should fail since it's not trigged by user activation while in a sandboxed frame with 'allow-top-navigtaion-by-user-activation'.

+ Click the button below, the top navigation should succeed with a new page saying "PASSED: Navigation succeeded." in browsers supporting the 'allow-top-navigtaion-by-user-activation' iframe@sandbox keyword (eg., Chrome v58+); Otherwise, the top navigation should fail. +

+ + + diff --git a/testing/web-platform/tests/html/semantics/embedded-content/the-iframe-element/support/navigation-changed-iframe.html b/testing/web-platform/tests/html/semantics/embedded-content/the-iframe-element/support/navigation-changed-iframe.html new file mode 100644 index 000000000000..abe0e78dfe4a --- /dev/null +++ b/testing/web-platform/tests/html/semantics/embedded-content/the-iframe-element/support/navigation-changed-iframe.html @@ -0,0 +1,14 @@ + + + + + +

DOMAIN

+

PASSED: Navigation succeeded.

+ + diff --git a/testing/web-platform/tests/html/semantics/forms/textfieldselection/select-event.html b/testing/web-platform/tests/html/semantics/forms/textfieldselection/select-event.html index 92a12d12eb3a..0582d9640f04 100644 --- a/testing/web-platform/tests/html/semantics/forms/textfieldselection/select-event.html +++ b/testing/web-platform/tests/html/semantics/forms/textfieldselection/select-event.html @@ -1,45 +1,83 @@ text field selection: select() - +
+ + + + + + + diff --git a/testing/web-platform/tests/html/semantics/forms/textfieldselection/selection-not-application.html b/testing/web-platform/tests/html/semantics/forms/textfieldselection/selection-not-application.html index 576e6d1254ac..b0db8a96fabd 100644 --- a/testing/web-platform/tests/html/semantics/forms/textfieldselection/selection-not-application.html +++ b/testing/web-platform/tests/html/semantics/forms/textfieldselection/selection-not-application.html @@ -14,14 +14,17 @@ test(function(){ var el = document.createElement("input"); el.type = type; + assert_equals(el.selectionStart, null); + assert_equals(el.selectionEnd, null); + assert_equals(el.selectionDirection, null); assert_throws("InvalidStateError", function(){ - el.selectionStart; + el.selectionStart = 0; }); assert_throws("InvalidStateError", function(){ - el.selectionEnd; + el.selectionEnd = 0; }); assert_throws("InvalidStateError", function(){ - el.selectionDirection; + el.selectionDirection = 'none'; }); assert_throws("InvalidStateError", function(){ el.setRangeText("foobar"); diff --git a/testing/web-platform/tests/html/semantics/forms/textfieldselection/textfieldselection-setRangeText.html b/testing/web-platform/tests/html/semantics/forms/textfieldselection/textfieldselection-setRangeText.html index 4b586cc10785..a46b83fadd1e 100644 --- a/testing/web-platform/tests/html/semantics/forms/textfieldselection/textfieldselection-setRangeText.html +++ b/testing/web-platform/tests/html/semantics/forms/textfieldselection/textfieldselection-setRangeText.html @@ -124,5 +124,6 @@ q = true; }), 10); }, element.id + " setRangeText fires a select event"); + }) diff --git a/testing/web-platform/tests/html/semantics/forms/textfieldselection/textfieldselection-setSelectionRange.html b/testing/web-platform/tests/html/semantics/forms/textfieldselection/textfieldselection-setSelectionRange.html index 537bbeccbb57..8650876207c7 100644 --- a/testing/web-platform/tests/html/semantics/forms/textfieldselection/textfieldselection-setSelectionRange.html +++ b/testing/web-platform/tests/html/semantics/forms/textfieldselection/textfieldselection-setSelectionRange.html @@ -290,17 +290,4 @@ test(function() { "element.selectionEnd should be value.length"); }, 'textarea setSelectionRange(Math.pow(2,31), Math.pow(2,32) - 1)'); },"test of textarea.setSelectionRange"); - -async_test(function() { - var q = false; - var textarea = document.getElementById("b"); - textarea.addEventListener("select", this.step_func_done(function(e) { - assert_true(q, "event should be queued"); - assert_true(e.isTrusted, "event is trusted"); - assert_true(e.bubbles, "event bubbles"); - assert_false(e.cancelable, "event is not cancelable"); - })); - textarea.setSelectionRange(0, 1); - q = true; -}, "textarea setSelectionRange fires a select event"); diff --git a/testing/web-platform/tests/html/semantics/forms/the-select-element/selected-index.html b/testing/web-platform/tests/html/semantics/forms/the-select-element/selected-index.html index 1be5378cdf4f..6c30698a8ae1 100644 --- a/testing/web-platform/tests/html/semantics/forms/the-select-element/selected-index.html +++ b/testing/web-platform/tests/html/semantics/forms/the-select-element/selected-index.html @@ -28,46 +28,76 @@ diff --git a/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/crossorigin-common.js b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/crossorigin-common.js new file mode 100644 index 000000000000..59bf0fd42fcd --- /dev/null +++ b/testing/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/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/crossorigin-import-different.sub.html b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/crossorigin-import-different.sub.html new file mode 100644 index 000000000000..29528d5d7375 --- /dev/null +++ b/testing/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/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/crossorigin-import-missingheader.sub.html b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/crossorigin-import-missingheader.sub.html new file mode 100644 index 000000000000..cccb30f71886 --- /dev/null +++ b/testing/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/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/crossorigin-import-same.sub.html b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/crossorigin-import-same.sub.html new file mode 100644 index 000000000000..84f4de1d7e01 --- /dev/null +++ b/testing/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/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/crossorigin-import-wrongheader.sub.html b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/crossorigin-import-wrongheader.sub.html new file mode 100644 index 000000000000..5743a9e30429 --- /dev/null +++ b/testing/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/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/crossorigin-root-different.sub.html b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/crossorigin-root-different.sub.html new file mode 100644 index 000000000000..870d8a495aee --- /dev/null +++ b/testing/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/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/crossorigin-root-missingheader.sub.html b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/crossorigin-root-missingheader.sub.html new file mode 100644 index 000000000000..03943002ba3b --- /dev/null +++ b/testing/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/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/crossorigin-root-same.sub.html b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/crossorigin-root-same.sub.html new file mode 100644 index 000000000000..3ec839e9a908 --- /dev/null +++ b/testing/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/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/crossorigin-root-wrongheader.sub.html b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/crossorigin-root-wrongheader.sub.html new file mode 100644 index 000000000000..c45736a896b9 --- /dev/null +++ b/testing/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/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/crossorigin-scripterror.js b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/crossorigin-scripterror.js new file mode 100644 index 000000000000..29d04ec6198c --- /dev/null +++ b/testing/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/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/crossorigin.html b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/crossorigin.html new file mode 100644 index 000000000000..cf7be01e7b59 --- /dev/null +++ b/testing/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/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/errorhandling-parseerror-common.js b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/errorhandling-parseerror-common.js new file mode 100644 index 000000000000..4eb5597a582a --- /dev/null +++ b/testing/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/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/errorhandling-parseerror-dependent.html b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/errorhandling-parseerror-dependent.html new file mode 100644 index 000000000000..3a00f62f00f0 --- /dev/null +++ b/testing/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/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/errorhandling-parseerror-dependent.js b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/errorhandling-parseerror-dependent.js new file mode 100644 index 000000000000..71872c47cfe1 --- /dev/null +++ b/testing/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/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/errorhandling-parseerror-dependentmultiple.html b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/errorhandling-parseerror-dependentmultiple.html new file mode 100644 index 000000000000..37487aa5352e --- /dev/null +++ b/testing/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/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/errorhandling-parseerror-dependentmultiple.js b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/errorhandling-parseerror-dependentmultiple.js new file mode 100644 index 000000000000..71872c47cfe1 --- /dev/null +++ b/testing/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/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/errorhandling-parseerror-root.html b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/errorhandling-parseerror-root.html new file mode 100644 index 000000000000..012f3e9b8c0e --- /dev/null +++ b/testing/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/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/errorhandling-wrongMimetype-import.js b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/errorhandling-wrongMimetype-import.js new file mode 100644 index 000000000000..5e7b21b3214e --- /dev/null +++ b/testing/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/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/errorhandling-wrongMimetype.js b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/errorhandling-wrongMimetype.js new file mode 100644 index 000000000000..373a5324455e --- /dev/null +++ b/testing/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/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/errorhandling.html b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/errorhandling.html new file mode 100644 index 000000000000..6f36d2ce8965 --- /dev/null +++ b/testing/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/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/execorder-dynamicordered2.js b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/execorder-dynamicordered2.js new file mode 100644 index 000000000000..d7115a2ac62c --- /dev/null +++ b/testing/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/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/execorder-dynamicordered3.js b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/execorder-dynamicordered3.js new file mode 100644 index 000000000000..c04e101bb80e --- /dev/null +++ b/testing/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/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/execorder-dynamicordered4.js b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/execorder-dynamicordered4.js new file mode 100644 index 000000000000..958736a3d867 --- /dev/null +++ b/testing/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/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/execorder-dynamicunordered1.js b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/execorder-dynamicunordered1.js new file mode 100644 index 000000000000..a54cb7a3032f --- /dev/null +++ b/testing/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/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/execorder-dynamicunordered2.js b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/execorder-dynamicunordered2.js new file mode 100644 index 000000000000..df0cd85421d5 --- /dev/null +++ b/testing/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/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/execorder-parsedordered2.js b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/execorder-parsedordered2.js new file mode 100644 index 000000000000..fca73bd9dbd5 --- /dev/null +++ b/testing/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/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/execorder-parsedordered4.js b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/execorder-parsedordered4.js new file mode 100644 index 000000000000..6435333bb961 --- /dev/null +++ b/testing/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/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/execorder-parsedunordered1.js b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/execorder-parsedunordered1.js new file mode 100644 index 000000000000..ea0bb1b48631 --- /dev/null +++ b/testing/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/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/execorder-parsedunordered2.js b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/execorder-parsedunordered2.js new file mode 100644 index 000000000000..ce219ee0ea55 --- /dev/null +++ b/testing/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/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/execorder.html b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/execorder.html new file mode 100644 index 000000000000..3f28267298b5 --- /dev/null +++ b/testing/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/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/imports-a.js b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/imports-a.js new file mode 100644 index 000000000000..2d16783d45dc --- /dev/null +++ b/testing/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/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/imports-b.js b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/imports-b.js new file mode 100644 index 000000000000..ae194e4d8a4e --- /dev/null +++ b/testing/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/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/imports-cycle-a.js b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/imports-cycle-a.js new file mode 100644 index 000000000000..8bd8526f761a --- /dev/null +++ b/testing/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/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/imports-cycle-b.js b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/imports-cycle-b.js new file mode 100644 index 000000000000..218f350c3917 --- /dev/null +++ b/testing/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/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/imports-cycle.js b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/imports-cycle.js new file mode 100644 index 000000000000..9f452e4abeb5 --- /dev/null +++ b/testing/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/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/imports-inc-a.js b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/imports-inc-a.js new file mode 100644 index 000000000000..8cb2298e8a01 --- /dev/null +++ b/testing/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/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/imports-inc-ab.js b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/imports-inc-ab.js new file mode 100644 index 000000000000..b7d84005c587 --- /dev/null +++ b/testing/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/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/imports-inc-b.js b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/imports-inc-b.js new file mode 100644 index 000000000000..243b84fdd096 --- /dev/null +++ b/testing/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/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/imports-self-inner.js b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/imports-self-inner.js new file mode 100644 index 000000000000..40eca1c8dfb8 --- /dev/null +++ b/testing/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/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/imports-self.js b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/imports-self.js new file mode 100644 index 000000000000..32eb7b6841de --- /dev/null +++ b/testing/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/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/imports.html b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/imports.html new file mode 100644 index 000000000000..91a0fd35e575 --- /dev/null +++ b/testing/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/testing/web-platform/tests/html/syntax/parsing-html-fragments/the-input-byte-stream-015.html b/testing/web-platform/tests/html/syntax/parsing-html-fragments/the-input-byte-stream-015.html deleted file mode 100644 index 383c93b5e573..000000000000 --- a/testing/web-platform/tests/html/syntax/parsing-html-fragments/the-input-byte-stream-015.html +++ /dev/null @@ -1,35 +0,0 @@ - - - - No encoding declaration - - - - - - - - - - - - -
 
- - - - - -
- - - diff --git a/testing/web-platform/tests/html/syntax/parsing-html-fragments/the-input-byte-stream-015.html.headers b/testing/web-platform/tests/html/syntax/parsing-html-fragments/the-input-byte-stream-015.html.headers deleted file mode 100644 index 156209f9c81f..000000000000 --- a/testing/web-platform/tests/html/syntax/parsing-html-fragments/the-input-byte-stream-015.html.headers +++ /dev/null @@ -1 +0,0 @@ -Content-Type: text/html diff --git a/testing/web-platform/tests/html/syntax/parsing/test.js b/testing/web-platform/tests/html/syntax/parsing/test.js index 6f4afba5cd7c..6dc6e19f3ec0 100644 --- a/testing/web-platform/tests/html/syntax/parsing/test.js +++ b/testing/web-platform/tests/html/syntax/parsing/test.js @@ -320,7 +320,7 @@ function init_tests(test_type) { var x = tests[test_id]; var t = x[0]; iframe_map[t.name] = iframe.id; - setTimeout(function() { + step_timeout(function() { t.step(function() { var string_uri_encoded_input = x[1]; var string_escaped_expected = x[2]; diff --git a/testing/web-platform/tests/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/origin-check-in-document-open-basic.html b/testing/web-platform/tests/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/origin-check-in-document-open-basic.html index 7335122e28f4..118be71af19c 100644 --- a/testing/web-platform/tests/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/origin-check-in-document-open-basic.html +++ b/testing/web-platform/tests/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/origin-check-in-document-open-basic.html @@ -14,5 +14,13 @@ testInIFrame(undefined, (ctx) => { assert_unreached("Opening a same origin document throws"); } }, "It should be possible to open same origin documents."); + +testInIFrame(undefined, (ctx) => { + try { + ctx.iframes[0].contentDocument.write(""); + } catch (e) { + assert_unreached("Implicitly opening a same origin document throws"); + } +}, "It should be possible to implicitly open same origin documents."); diff --git a/testing/web-platform/tests/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/origin-check-in-document-open-same-origin-domain.sub.html b/testing/web-platform/tests/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/origin-check-in-document-open-same-origin-domain.sub.html index d2f4e4023a36..5e5ca8078180 100644 --- a/testing/web-platform/tests/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/origin-check-in-document-open-same-origin-domain.sub.html +++ b/testing/web-platform/tests/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/origin-check-in-document-open-same-origin-domain.sub.html @@ -12,5 +12,11 @@ testInIFrame("http://{{host}}:{{ports[http][1]}}/html/webappapis/dynamic-markup- var doc = ctx.iframes[0].contentDocument; assert_throws("SecurityError", doc.open.bind(doc), "Opening a same origin-domain (but not same origin) document doesn't throw."); }, "It should not be possible to open same origin-domain (but not same origin) documents."); + +testInIFrame("http://{{host}}:{{ports[http][1]}}/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/resources/set-document-domain.html", (ctx) => { + document.domain = document.domain; + var doc = ctx.iframes[0].contentDocument; + assert_throws("SecurityError", doc.write.bind(doc, ""), "Implicitly opening a same origin-domain (but not same origin) document doesn't throw."); +}, "It should not be possible to implicitly open same origin-domain (but not same origin) documents."); diff --git a/testing/web-platform/tests/html/webappapis/scripting/events/compile-event-handler-settings-objects.html b/testing/web-platform/tests/html/webappapis/scripting/events/compile-event-handler-settings-objects.html new file mode 100644 index 000000000000..29ac9b8ced46 --- /dev/null +++ b/testing/web-platform/tests/html/webappapis/scripting/events/compile-event-handler-settings-objects.html @@ -0,0 +1,69 @@ + + +Entry and incumbent settings objects when compiling an inline event handler + + + +
+ + diff --git a/testing/web-platform/tests/html/webappapis/scripting/events/messageevent-constructor.https.html b/testing/web-platform/tests/html/webappapis/scripting/events/messageevent-constructor.https.html index 8a8a8f67f22f..479127df4cf8 100644 --- a/testing/web-platform/tests/html/webappapis/scripting/events/messageevent-constructor.https.html +++ b/testing/web-platform/tests/html/webappapis/scripting/events/messageevent-constructor.https.html @@ -70,11 +70,17 @@ test(function() { test(function() { var ev = document.createEvent("messageevent") - assert_equals(MessageEvent.prototype.initMessageEvent.length, 8, "MessageEvent.prototype.initMessageEvent.length should be 8") - assert_throws(new TypeError(), function() { - ev.initMessageEvent("test", true, false, "testData", "testOrigin", "testId", window) - }, "Calling initMessageEvent with only 7 parameters should throw a TypeError") -}, "All parameters to initMessageEvent should be mandatory") + assert_equals(MessageEvent.prototype.initMessageEvent.length, 1, "MessageEvent.prototype.initMessageEvent.length should be 1") + ev.initMessageEvent("test") + assert_equals(ev.type, "test", "type attribute") + assert_equals(ev.bubbles, false, "bubbles attribute") + assert_equals(ev.cancelable, false, "bubbles attribute") + assert_equals(ev.data, null, "data attribute") + assert_equals(ev.origin, "", "origin attribute") + assert_equals(ev.lastEventId, "", "lastEventId attribute") + assert_equals(ev.source, null, "source attribute") + assert_array_equals(ev.ports, [], "ports attribute") +}, "initMessageEvent operation default parameter values") promise_test(function(t) { var worker_url = "/service-workers/service-worker/resources/empty-worker.js"; diff --git a/testing/web-platform/tests/html/webappapis/scripting/events/resources/compiled-event-handler-settings-objects-support.html b/testing/web-platform/tests/html/webappapis/scripting/events/resources/compiled-event-handler-settings-objects-support.html new file mode 100644 index 000000000000..d40c0b9cce8a --- /dev/null +++ b/testing/web-platform/tests/html/webappapis/scripting/events/resources/compiled-event-handler-settings-objects-support.html @@ -0,0 +1,12 @@ + + +This will be in an iframe + + + + + + + diff --git a/testing/web-platform/tests/html/webappapis/scripting/events/resources/open-window.html b/testing/web-platform/tests/html/webappapis/scripting/events/resources/open-window.html new file mode 100644 index 000000000000..1d23263570e6 --- /dev/null +++ b/testing/web-platform/tests/html/webappapis/scripting/events/resources/open-window.html @@ -0,0 +1,4 @@ + + +This window will open during the course of the test +

Hello

diff --git a/testing/web-platform/tests/html/webappapis/scripting/processing-model-2/compile-error-cross-origin-setTimeout.html b/testing/web-platform/tests/html/webappapis/scripting/processing-model-2/compile-error-cross-origin-setTimeout.html index ba3be9d0a84f..7c46cc21a3e9 100644 --- a/testing/web-platform/tests/html/webappapis/scripting/processing-model-2/compile-error-cross-origin-setTimeout.html +++ b/testing/web-platform/tests/html/webappapis/scripting/processing-model-2/compile-error-cross-origin-setTimeout.html @@ -29,4 +29,4 @@ document.body.appendChild(script); - \ No newline at end of file + diff --git a/testing/web-platform/tests/html/webappapis/scripting/processing-model-2/compile-error-in-setInterval.html b/testing/web-platform/tests/html/webappapis/scripting/processing-model-2/compile-error-in-setInterval.html index 39a01335c3ba..79ca7d524a23 100644 --- a/testing/web-platform/tests/html/webappapis/scripting/processing-model-2/compile-error-in-setInterval.html +++ b/testing/web-platform/tests/html/webappapis/scripting/processing-model-2/compile-error-in-setInterval.html @@ -23,7 +23,7 @@ assert_equals(typeof c, 'number', 'third arg'); }); interval = setInterval("{", 10); - setTimeout(function(){ + step_timeout(function(){ t.step(function(){ clearInterval(interval); assert_true(ran, 'ran'); diff --git a/testing/web-platform/tests/html/webappapis/scripting/processing-model-2/compile-error-in-setTimeout.html b/testing/web-platform/tests/html/webappapis/scripting/processing-model-2/compile-error-in-setTimeout.html index 87966031388d..1bb730e13418 100644 --- a/testing/web-platform/tests/html/webappapis/scripting/processing-model-2/compile-error-in-setTimeout.html +++ b/testing/web-platform/tests/html/webappapis/scripting/processing-model-2/compile-error-in-setTimeout.html @@ -33,4 +33,4 @@ }, 20); - \ No newline at end of file + diff --git a/testing/web-platform/tests/html/webappapis/scripting/processing-model-2/runtime-error-cross-origin-setTimeout.html b/testing/web-platform/tests/html/webappapis/scripting/processing-model-2/runtime-error-cross-origin-setTimeout.html index 20ee21c61717..6f9add5c9f59 100644 --- a/testing/web-platform/tests/html/webappapis/scripting/processing-model-2/runtime-error-cross-origin-setTimeout.html +++ b/testing/web-platform/tests/html/webappapis/scripting/processing-model-2/runtime-error-cross-origin-setTimeout.html @@ -29,4 +29,4 @@ document.body.appendChild(script); - \ No newline at end of file + diff --git a/testing/web-platform/tests/html/webappapis/scripting/processing-model-2/runtime-error-in-setInterval.html b/testing/web-platform/tests/html/webappapis/scripting/processing-model-2/runtime-error-in-setInterval.html index fcfb6c597591..090e1dd78e03 100644 --- a/testing/web-platform/tests/html/webappapis/scripting/processing-model-2/runtime-error-in-setInterval.html +++ b/testing/web-platform/tests/html/webappapis/scripting/processing-model-2/runtime-error-in-setInterval.html @@ -23,7 +23,7 @@ assert_equals(typeof c, 'number', 'third arg'); }); interval = setInterval("undefined_variable;", 10); - setTimeout(function(){ + step_timeout(function(){ clearInterval(interval); t.step(function(){ assert_true(ran, 'ran'); diff --git a/testing/web-platform/tests/html/webappapis/scripting/processing-model-2/runtime-error-in-setTimeout.html b/testing/web-platform/tests/html/webappapis/scripting/processing-model-2/runtime-error-in-setTimeout.html index c0c69ad7c463..cebcd4346cee 100644 --- a/testing/web-platform/tests/html/webappapis/scripting/processing-model-2/runtime-error-in-setTimeout.html +++ b/testing/web-platform/tests/html/webappapis/scripting/processing-model-2/runtime-error-in-setTimeout.html @@ -33,4 +33,4 @@ }, 20); - \ No newline at end of file + diff --git a/testing/web-platform/tests/html/webappapis/scripting/processing-model-2/support/syntax-error-in-setInterval.js b/testing/web-platform/tests/html/webappapis/scripting/processing-model-2/support/syntax-error-in-setInterval.js index 812c0daea13e..3b42fd9bc92e 100644 --- a/testing/web-platform/tests/html/webappapis/scripting/processing-model-2/support/syntax-error-in-setInterval.js +++ b/testing/web-platform/tests/html/webappapis/scripting/processing-model-2/support/syntax-error-in-setInterval.js @@ -1,5 +1,5 @@ interval = setInterval('{', 10); -setTimeout(function(){ +step_timeout(function(){ clearInterval(interval); t.step(function(){ assert_true(ran, 'ran'); diff --git a/testing/web-platform/tests/html/webappapis/scripting/processing-model-2/support/undefined-variable-in-setInterval.js b/testing/web-platform/tests/html/webappapis/scripting/processing-model-2/support/undefined-variable-in-setInterval.js index 2950fdb51d1d..4aa7da8256c6 100644 --- a/testing/web-platform/tests/html/webappapis/scripting/processing-model-2/support/undefined-variable-in-setInterval.js +++ b/testing/web-platform/tests/html/webappapis/scripting/processing-model-2/support/undefined-variable-in-setInterval.js @@ -1,5 +1,5 @@ interval = setInterval('undefined_variable;', 10); -setTimeout(function(){ +step_timeout(function(){ clearInterval(interval); t.step(function(){ assert_true(ran, 'ran'); diff --git a/testing/web-platform/tests/html/webappapis/the-windoworworkerglobalscope-mixin/Worker_Self_Origin.html b/testing/web-platform/tests/html/webappapis/the-windoworworkerglobalscope-mixin/Worker_Self_Origin.html new file mode 100644 index 000000000000..22b28b3e35ef --- /dev/null +++ b/testing/web-platform/tests/html/webappapis/the-windoworworkerglobalscope-mixin/Worker_Self_Origin.html @@ -0,0 +1,45 @@ + + +Test workers self.origin + + +
+ diff --git a/testing/web-platform/tests/html/webappapis/the-windoworworkerglobalscope-mixin/support/WorkerSelfOriginSharedWorker.js b/testing/web-platform/tests/html/webappapis/the-windoworworkerglobalscope-mixin/support/WorkerSelfOriginSharedWorker.js new file mode 100644 index 000000000000..3acc57102a3a --- /dev/null +++ b/testing/web-platform/tests/html/webappapis/the-windoworworkerglobalscope-mixin/support/WorkerSelfOriginSharedWorker.js @@ -0,0 +1,5 @@ +// Post back the location of the worker + +onconnect = function(e) { + e.ports[0].postMessage(self.origin); +} diff --git a/testing/web-platform/tests/html/webappapis/the-windoworworkerglobalscope-mixin/support/WorkerSelfOriginWorker.js b/testing/web-platform/tests/html/webappapis/the-windoworworkerglobalscope-mixin/support/WorkerSelfOriginWorker.js new file mode 100644 index 000000000000..1a69b55d3f58 --- /dev/null +++ b/testing/web-platform/tests/html/webappapis/the-windoworworkerglobalscope-mixin/support/WorkerSelfOriginWorker.js @@ -0,0 +1,4 @@ +// Post back the location of the worker + +postMessage(self.origin); + diff --git a/testing/web-platform/tests/infrastructure/reftest-wait-ref.html b/testing/web-platform/tests/infrastructure/reftest-wait-ref.html new file mode 100644 index 000000000000..6772c2c460e7 --- /dev/null +++ b/testing/web-platform/tests/infrastructure/reftest-wait-ref.html @@ -0,0 +1,13 @@ + +Reference for Test infrastructure should support 'reftest-wait' + + +
+
The box above should be green.
diff --git a/testing/web-platform/tests/infrastructure/reftest-wait.html b/testing/web-platform/tests/infrastructure/reftest-wait.html new file mode 100644 index 000000000000..ddb17cc3c237 --- /dev/null +++ b/testing/web-platform/tests/infrastructure/reftest-wait.html @@ -0,0 +1,21 @@ + + +Test infrastructure should support 'reftest-wait' + + + +
+
The box above should be green.
+ diff --git a/testing/web-platform/tests/lint.whitelist b/testing/web-platform/tests/lint.whitelist index 8898d91ff5e5..f1356ea30c3d 100644 --- a/testing/web-platform/tests/lint.whitelist +++ b/testing/web-platform/tests/lint.whitelist @@ -73,6 +73,7 @@ TRAILING WHITESPACE: encoding/legacy*/* W3C-TEST.ORG:README.md W3C-TEST.ORG:*/README.md W3C-TEST.ORG:docs/* +SET TIMEOUT: docs/* ## Helper scripts ## @@ -87,7 +88,7 @@ CR AT EOL:WebIDL/valid/idl/documentation-dos.widl CR AT EOL:cors/resources/cors-headers.asis CR AT EOL:html/semantics/embedded-content/the-canvas-element/size.attributes.parse.whitespace.html INDENT TABS:html/semantics/embedded-content/the-canvas-element/size.attributes.parse.whitespace.html -CR AT EOL:webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/newlines.vtt +CR AT EOL:webvtt/parsing/file-parsing/tests/support/newlines.vtt PARSE-FAILED:dom/nodes/Document-createElement-namespace-tests/empty.svg PARSE-FAILED:dom/nodes/Document-createElement-namespace-tests/empty.xhtml PARSE-FAILED:dom/nodes/Document-createElement-namespace-tests/minimal_html.svg @@ -106,6 +107,7 @@ PRINT STATEMENT:encrypted-media/polyfill/make-polyfill-tests.py W3C-TEST.ORG:subresource-integrity/refresh-header.js.headers # semi-legitimate use of console.* +CONSOLE:console/* CONSOLE:streams/resources/test-utils.js CONSOLE:service-workers/service-worker/resources/navigation-redirect-other-origin.html CONSOLE:service-workers/service-worker/navigation-redirect.https.html @@ -133,6 +135,75 @@ TRAILING WHITESPACE:webgl/tools/*.patch # The tests under this directory are not done by us *:webgl/conformance-1.0.3/* +# setTimeout usage (should probably mostly be fixed) +SET TIMEOUT: *-manual.* +SET TIMEOUT: 2dcontext/* +SET TIMEOUT: annotation-model/scripts/ajv.min.js +SET TIMEOUT: cookies/resources/testharness-helpers.js +SET TIMEOUT: common/reftest-wait.js +SET TIMEOUT: conformance-checkers/* +SET TIMEOUT: content-security-policy/* +SET TIMEOUT: encrypted-media/Google/migrated_to_root_disabled/encrypted-media-utils.js +SET TIMEOUT: encrypted-media/polyfill/chrome-polyfill.js +SET TIMEOUT: encrypted-media/polyfill/clearkey-polyfill.js +SET TIMEOUT: encrypted-media/scripts/playback-temporary-events.js +SET TIMEOUT: eventsource/eventsource-close.htm +SET TIMEOUT: eventsource/eventsource-request-cancellation.htm +SET TIMEOUT: html/* +SET TIMEOUT: IndexedDB/* +SET TIMEOUT: media-source/mediasource-util.js +SET TIMEOUT: media-source/URL-createObjectURL-revoke.html +SET TIMEOUT: mixed-content/generic/sanity-checker.js +SET TIMEOUT: navigation-timing/* +SET TIMEOUT: offscreen-canvas/the-offscreen-canvas/* +SET TIMEOUT: old-tests/submission/Microsoft/history/history_000.htm +SET TIMEOUT: old-tests/submission/Microsoft/sandbox/* +SET TIMEOUT: old-tests/submission/Microsoft/structuredclone/structuredclone_0.html +SET TIMEOUT: old-tests/submission/Opera/script_scheduling/* +SET TIMEOUT: old-tests/webdriver/timeouts/res/implicit_waits_tests.html +SET TIMEOUT: page-visibility/resources/pagevistestharness.js +SET TIMEOUT: payment-request/allowpaymentrequest/setting-allowpaymentrequest-timing.https.sub.html +SET TIMEOUT: pointerevents/pointerevent_support.js +SET TIMEOUT: preload/single-download-preload.html +SET TIMEOUT: resource-timing/resource-timing.js +SET TIMEOUT: screen-orientation/lock-bad-argument.html +SET TIMEOUT: screen-orientation/onchange-event.html +SET TIMEOUT: screen-orientation/resources/sandboxed-iframe-locking.html +SET TIMEOUT: secure-contexts/basic-popup-and-iframe-tests.https.js +SET TIMEOUT: service-workers/service-worker/activation.https.html +SET TIMEOUT: service-workers/service-worker/fetch-frame-resource.https.html +SET TIMEOUT: service-workers/service-worker/fetch-request-redirect.https.html +SET TIMEOUT: service-workers/service-worker/fetch-waits-for-activate.https.html +SET TIMEOUT: service-workers/service-worker/update-recovery.https.html +SET TIMEOUT: service-workers/service-worker/resources/extendable-event-async-waituntil.js +SET TIMEOUT: service-workers/service-worker/resources/fetch-event-async-respond-with-worker.js +SET TIMEOUT: service-workers/service-worker/resources/fetch-event-test-worker.js +SET TIMEOUT: service-workers/service-worker/resources/performance-timeline-worker.js +SET TIMEOUT: shadow-dom/Document-prototype-currentScript.html +SET TIMEOUT: shadow-dom/scroll-to-the-fragment-in-shadow-tree.html +SET TIMEOUT: shadow-dom/slotchange-event.html +SET TIMEOUT: shadow-dom/untriaged/html-elements-in-shadow-trees/html-forms/test-003.html +SET TIMEOUT: shadow-dom/untriaged/html-elements-in-shadow-trees/inert-html-elements/test-001.html +SET TIMEOUT: streams/piping/close-propagation-forward.js +SET TIMEOUT: streams/piping/error-propagation-backward.js +SET TIMEOUT: streams/piping/error-propagation-forward.js +SET TIMEOUT: streams/piping/general.js +SET TIMEOUT: streams/readable-streams/cancel.js +SET TIMEOUT: streams/resources/rs-utils.js +SET TIMEOUT: streams/writable-streams/byte-length-queuing-strategy.js +SET TIMEOUT: user-timing/* +SET TIMEOUT: webaudio/js/lodash.js +SET TIMEOUT: webaudio/the-audio-api/the-mediaelementaudiosourcenode-interface/mediaElementAudioSourceToScriptProcessorTest.html +SET TIMEOUT: webmessaging/* +SET TIMEOUT: websockets/* +SET TIMEOUT: webstorage/eventTestHarness.js +SET TIMEOUT: webvtt/* +SET TIMEOUT: workers/* +SET TIMEOUT: XMLHttpRequest/open-url-multi-window-6.htm +SET TIMEOUT: XMLHttpRequest/xmlhttprequest-timeout-reused.html +SET TIMEOUT: XMLHttpRequest/resources/init.htm +SET TIMEOUT: XMLHttpRequest/resources/xmlhttprequest-timeout.js + # CI scripts PRINT STATEMENT:check_stability.py W3C-TEST.ORG:check_stability.py diff --git a/testing/web-platform/tests/media-capabilities/idlharness.html b/testing/web-platform/tests/media-capabilities/idlharness.html index 1fa20c6153d0..af0669bfd2a6 100644 --- a/testing/web-platform/tests/media-capabilities/idlharness.html +++ b/testing/web-platform/tests/media-capabilities/idlharness.html @@ -32,11 +32,11 @@ dictionary MediaConfiguration { enum MediaConfigurationType { "file", - "MediaSource", + "media-source", }; dictionary VideoConfiguration { - required DOMString type; + required DOMString contentType; required unsigned long width; required unsigned long height; required unsigned long bitrate; @@ -44,7 +44,7 @@ dictionary VideoConfiguration { }; dictionary AudioConfiguration { - required DOMString type; + required DOMString contentType; DOMString channels; unsigned long bitrate; unsigned long samplerate; @@ -58,12 +58,12 @@ interface MediaDecodingAbility { [Exposed=(Window)] partial interface Navigator { - readonly attribute MediaCapabilities mediaCapabilities; + [SameObject] readonly attribute MediaCapabilities mediaCapabilities; }; [Exposed=(Worker)] partial interface WorkerNavigator { - readonly attribute MediaCapabilities mediaCapabilities; + [SameObject] readonly attribute MediaCapabilities mediaCapabilities; }; [Exposed=(Window, Worker)] diff --git a/testing/web-platform/tests/media-capabilities/query.html b/testing/web-platform/tests/media-capabilities/query.html index 809fbc66ec5c..f1bd22ba1ae3 100644 --- a/testing/web-platform/tests/media-capabilities/query.html +++ b/testing/web-platform/tests/media-capabilities/query.html @@ -4,6 +4,22 @@ diff --git a/testing/web-platform/tests/media/CanvasTest.ttf b/testing/web-platform/tests/media/CanvasTest.ttf new file mode 100644 index 0000000000000000000000000000000000000000..9023592ef5aa83a03dd6957398897a585062ca57 GIT binary patch literal 2528 zcmds3+iM(E9RAMC>}--IZHkSlbcJb}Hmx+fn~4|=c}SaNsWzb@-3F9mI_^#~3%fJR z?rbg~7_kpEQi_7Nf1zrjK~Q`sQnW2nkwV|M-@%oK-E?>x_(MpM29?acOqAH}eAZX8>i{v90{QD@UK8 z?l;0S4h7BS^-meAn|!xZ@)uj54c;RECHbzRm$TF>nv6e6K2fq3%b3Ch^~cB?u2r(v zkH7ad5c`2P>9SY#cXvOjFn>GsdB|P~`n~De%#NWyu}z}@xPEE<^GzId1b6hq`YrNJ zpl7(G&#mANPHPA{)^6*E!$^@bL|Q0mLqc}TB|Swb8%8pe2%7wX7*!uCHz~QWfyJ-r z7tPW^=Wn!Ro%h$|>{uSdXvUa|I&fOQrS7LPvS9~Z(v&zMA=;65&=C=`DhY|mZ&Kj!3HhbNxDPn<$e@rAG|9>`>_U%Yaa|m@d0+T+9$}A07}*9%}w^Ondom zl3bI=hUcy>--uAx7wLGEX&Kzn_%3s9JFtg_4YL!pi){|FXP{H;ZW!kJ85v$FZVvZc z=7R1t%y+FTKz4K3D>LVrE9j_0Kg^W>kV`b=3OX8csX3V|_H9EhakU|rxWPtGG$xDs zeRLLqoPhkgUkcxKN!R$Lr8Sp8i&%_ketg8+5v}5Y_$i__v?%)`I)-*-GNN_L7dTC! z$#2##gbi9?mv|+j6|{;sB3i|`_#mP+>{8kyItD{YMzl`3g%NltV+j=$Fb4-d3>-ub zhlow2(MK>aNlgJoLYZ6^7Cnmetngdg!aW6>yiIwPzj@l!;1b)kFc{MzW$@m3p1uag z87D`H8(I%iBJ=u;J%|+dLb#J*WgAu=<5fZ*DXp;5R9MY}C{;>IjO(NK5lxbD9RfzY z@=~QR=lI6K+#$nE_oaaWNmxCd;m?tPvxY zJ8xC9c9rx5g?W}XCSRSBcZdsV~Z&>YL1E97mjWcg0TE4dJ(nei;|UEZ=>^4@JlJ9c3=csI~@nRO6C WZTNf5{_GpcUH|0vRERIFfAlvXi@|mP literal 0 HcmV?d00001 diff --git a/testing/web-platform/tests/mediacapture-streams/MediaStream-MediaElement-preload-none.https.html b/testing/web-platform/tests/mediacapture-streams/MediaStream-MediaElement-preload-none.https.html index ce97806a85ce..6b9da9ce0a2b 100644 --- a/testing/web-platform/tests/mediacapture-streams/MediaStream-MediaElement-preload-none.https.html +++ b/testing/web-platform/tests/mediacapture-streams/MediaStream-MediaElement-preload-none.https.html @@ -21,6 +21,9 @@ { // The optional deferred load steps (for preload none) for MediaStream resources should be skipped. mediaElement.addEventListener("suspend", t.unreached_func("'suspend' should not be fired.")); + mediaElement.addEventListener("error", t.step_func(function() { + assert_unreached("'error' should not be fired, code=" + mediaElement.error.code); + })); mediaElement.addEventListener("loadeddata", t.step_func(function() { diff --git a/testing/web-platform/tests/mediacapture-streams/MediaStreamTrack-end.https.html b/testing/web-platform/tests/mediacapture-streams/MediaStreamTrack-end-manual.https.html similarity index 100% rename from testing/web-platform/tests/mediacapture-streams/MediaStreamTrack-end.https.html rename to testing/web-platform/tests/mediacapture-streams/MediaStreamTrack-end-manual.https.html diff --git a/testing/web-platform/tests/notifications/shownotification-resolve-manual.html b/testing/web-platform/tests/notifications/shownotification-resolve-manual.https.html similarity index 100% rename from testing/web-platform/tests/notifications/shownotification-resolve-manual.html rename to testing/web-platform/tests/notifications/shownotification-resolve-manual.https.html diff --git a/testing/web-platform/tests/payment-request/OWNERS b/testing/web-platform/tests/payment-request/OWNERS index 35ae0f6c00b5..eabd49986cda 100644 --- a/testing/web-platform/tests/payment-request/OWNERS +++ b/testing/web-platform/tests/payment-request/OWNERS @@ -1 +1,2 @@ @halindrome +@marcoscaceres diff --git a/testing/web-platform/tests/pointerevents/extension/idlharness.html b/testing/web-platform/tests/pointerevents/extension/idlharness.html new file mode 100644 index 000000000000..985712e5f72e --- /dev/null +++ b/testing/web-platform/tests/pointerevents/extension/idlharness.html @@ -0,0 +1,55 @@ + + +idlharness test + + + + + + + +
+dictionary PointerEventInit : MouseEventInit {
+    sequence coalescedEvents;
+};
+
+[Constructor(DOMString type, optional PointerEventInit eventInitDict)]
+interface PointerEvent : MouseEvent {
+    sequence getCoalescedEvents();
+};
+
+
+ diff --git a/testing/web-platform/tests/pointerevents/extension/pointerevent_constructor.html b/testing/web-platform/tests/pointerevents/extension/pointerevent_constructor.html new file mode 100644 index 000000000000..f5f8201c9edf --- /dev/null +++ b/testing/web-platform/tests/pointerevents/extension/pointerevent_constructor.html @@ -0,0 +1,78 @@ + + + + PointerEvent: Constructor test + + + + + + + +

PointerEvent: Dispatch custom event with coalesced events

+

Test Description: This test checks if PointerEvent constructor works properly with respect to the coalesced events.

+
+ +
+

The following pointer types were detected: .

+
+
+ + diff --git a/testing/web-platform/tests/pointerevents/pointerevent_click_during_capture-manual.html b/testing/web-platform/tests/pointerevents/pointerevent_click_during_capture-manual.html new file mode 100644 index 000000000000..ed0e3e2c1eb7 --- /dev/null +++ b/testing/web-platform/tests/pointerevents/pointerevent_click_during_capture-manual.html @@ -0,0 +1,108 @@ + + + + click event target during capture + + + + + + + + + +

Pointer Event: click event during capture

+

+

Test Description: + Click event should be sent to the first common ancestor of the pointerdown and pointerup targets. +
    +
  1. Click on the green box with the left button of mouse.
  2. +
  3. Press down the left button on the blue box and drag to the green box and release the button.
  4. +
  5. Repeat the two steps above once again.
  6. +
+

+
+
+
+
+
+
+
+ + diff --git a/testing/web-platform/tests/pointerevents/pointerevent_disabled_form_control-manual.html b/testing/web-platform/tests/pointerevents/pointerevent_disabled_form_control-manual.html new file mode 100644 index 000000000000..20e07a980b2b --- /dev/null +++ b/testing/web-platform/tests/pointerevents/pointerevent_disabled_form_control-manual.html @@ -0,0 +1,66 @@ + + + + Pointer Events properties tests + + + + + + + + + + +

Pointer Event: pointerevents fire to disabled form controls

+

+

+ Test Description: + Pointerevents are dispatched to disabled form controls. +

+
+ Use the mouse or pen to press on the purple button. Or with touch, tap on the purple box. +
+ +
+

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

+

The following pointer types were detected: .

+

Refresh the page to run the tests again with a different pointer type.

+
+
+ + diff --git a/testing/web-platform/tests/preload/download-resources.html b/testing/web-platform/tests/preload/download-resources.html index 390487aed347..c1c72f1a4853 100644 --- a/testing/web-platform/tests/preload/download-resources.html +++ b/testing/web-platform/tests/preload/download-resources.html @@ -8,7 +8,7 @@ - + @@ -21,7 +21,7 @@ verifyPreloadAndRTSupport() verifyNumberOfDownloads("resources/dummy.js", 1); verifyNumberOfDownloads("resources/dummy.css", 1); - verifyNumberOfDownloads("/fonts/CanvasTest.ttf", 1); + verifyNumberOfDownloads("/media/CanvasTest.ttf", 1); verifyNumberOfDownloads("/media/white.mp4", 1); verifyNumberOfDownloads("/media/sound_5.oga", 1); verifyNumberOfDownloads("/media/foo.vtt", 1); diff --git a/testing/web-platform/tests/preload/onload-event.html b/testing/web-platform/tests/preload/onload-event.html index 5a1a6010906d..3d4ac368b7c5 100644 --- a/testing/web-platform/tests/preload/onload-event.html +++ b/testing/web-platform/tests/preload/onload-event.html @@ -18,7 +18,7 @@ - + diff --git a/testing/web-platform/tests/preload/preload-with-type.html b/testing/web-platform/tests/preload/preload-with-type.html index 5bce1da302e5..cfe640876d3e 100644 --- a/testing/web-platform/tests/preload/preload-with-type.html +++ b/testing/web-platform/tests/preload/preload-with-type.html @@ -31,7 +31,7 @@ - + + @@ -49,7 +49,7 @@ verifyNumberOfDownloads("resources/dummy.css", 1); verifyNumberOfDownloads("resources/square.png", 1); verifyNumberOfDownloads("resources/square.png?background", 1); - verifyNumberOfDownloads("/fonts/CanvasTest.ttf", 1); + verifyNumberOfDownloads("/media/CanvasTest.ttf", 1); verifyNumberOfDownloads("resources/dummy.xml?foobar", 0); verifyNumberOfDownloads("/media/foo.vtt", 1); verifyNumberOfDownloads("resources/dummy.xml", 1); diff --git a/testing/web-platform/tests/presentation-api/controlling-ua/PresentationConnection_onmessage-manual.html b/testing/web-platform/tests/presentation-api/controlling-ua/PresentationConnection_onmessage-manual.html new file mode 100644 index 000000000000..43affaa5f3f0 --- /dev/null +++ b/testing/web-platform/tests/presentation-api/controlling-ua/PresentationConnection_onmessage-manual.html @@ -0,0 +1,138 @@ + + + +Receiving a message through PresentationConnection + + + + + + + +

+ Click the button below and select the available presentation display, to start the manual test. The test passes if a "PASS" result appears.
+ +

+ + diff --git a/testing/web-platform/tests/presentation-api/controlling-ua/PresentationConnection_send-manual.html b/testing/web-platform/tests/presentation-api/controlling-ua/PresentationConnection_send-manual.html new file mode 100644 index 000000000000..9060ca92889f --- /dev/null +++ b/testing/web-platform/tests/presentation-api/controlling-ua/PresentationConnection_send-manual.html @@ -0,0 +1,128 @@ + + + +Sending a message through PresentationConnection + + + + + + + +

+ Click the button below and select the available presentation display, to start the manual test. The test passes if a "PASS" result appears.
+ +

+ + diff --git a/testing/web-platform/tests/presentation-api/controlling-ua/common.js b/testing/web-platform/tests/presentation-api/controlling-ua/common.js index a86cb7d955ec..3d8715bc613d 100644 --- a/testing/web-platform/tests/presentation-api/controlling-ua/common.js +++ b/testing/web-platform/tests/presentation-api/controlling-ua/common.js @@ -13,4 +13,13 @@ 'support/presentation.html', castUrl ]; + + // Both a controlling side and a receiving one must share the same Stash ID to + // transmit data from one to the other. On the other hand, due to polling mechanism + // which cleans up a stash, stashes in both controller-to-receiver direction + // and one for receiver-to-controller are necessary. + window.stashIds = { + toController: '9bf08fea-a71a-42f9-b3c4-fa19499e4d12', + toReceiver: 'f1fdfd10-b606-4748-a644-0a8e9df3bdd6' + } })(window); \ No newline at end of file diff --git a/testing/web-platform/tests/presentation-api/controlling-ua/support/presentation.html b/testing/web-platform/tests/presentation-api/controlling-ua/support/presentation.html index f1eef248b847..99c9a6547222 100644 --- a/testing/web-platform/tests/presentation-api/controlling-ua/support/presentation.html +++ b/testing/web-platform/tests/presentation-api/controlling-ua/support/presentation.html @@ -3,22 +3,89 @@ + + + + + +

Click the button below and select the available presentation display, to start the manual test.

+ + + diff --git a/testing/web-platform/tests/presentation-api/receiving-ua/idlharness.html b/testing/web-platform/tests/presentation-api/receiving-ua/support/idlharness_receiving-ua.html similarity index 60% rename from testing/web-platform/tests/presentation-api/receiving-ua/idlharness.html rename to testing/web-platform/tests/presentation-api/receiving-ua/support/idlharness_receiving-ua.html index 24b0859a683b..2566f8e9874a 100644 --- a/testing/web-platform/tests/presentation-api/receiving-ua/idlharness.html +++ b/testing/web-platform/tests/presentation-api/receiving-ua/support/idlharness_receiving-ua.html @@ -2,11 +2,14 @@ Presentation API IDL tests for Receiving User Agent + + + - diff --git a/testing/web-platform/tests/presentation-api/receiving-ua/support/stash.js b/testing/web-platform/tests/presentation-api/receiving-ua/support/stash.js new file mode 100644 index 000000000000..616907d4f2c9 --- /dev/null +++ b/testing/web-platform/tests/presentation-api/receiving-ua/support/stash.js @@ -0,0 +1,83 @@ +var Stash = function(inbound, outbound) { + this.stashPath = '/presentation-api/controlling-ua/support/stash.py?id='; + this.inbound = inbound; + this.outbound = outbound; +} + +// initialize a stash on wptserve +Stash.prototype.init = function() { + return Promise.all([ + fetch(this.stashPath + this.inbound).then(response => { + return response.text(); + }), + fetch(this.stashPath + this.outbound).then(response => { + return response.text(); + }) + ]); +} + +// upload a test result to a stash on wptserve +Stash.prototype.send = function(result) { + return fetch(this.stashPath + this.outbound, { + method: 'POST', + body: JSON.stringify({ type: 'data', data: result }) + }).then(response => { + return response.text(); + }).then(text => { + return text === 'ok' ? null : Promise.reject(); + }) +}; + +// wait until a test result is uploaded to a stash on wptserve +Stash.prototype.receive = function() { + return new Promise((resolve, reject) => { + let intervalId; + const interval = 500; // msec + const polling = () => { + return fetch(this.stashPath + this.inbound).then(response => { + return response.text(); + }).then(text => { + if (text) { + try { + const json = JSON.parse(text); + if (json.type === 'data') + resolve(json.data); + else + reject(); + } catch(e) { + resolve(text); + } + clearInterval(intervalId); + } + }); + }; + intervalId = setInterval(polling, interval); + }); +}; + +// reset a stash on wptserve +Stash.prototype.stop = function() { + return Promise.all([ + fetch(this.stashPath + this.inbound).then(response => { + return response.text(); + }), + fetch(this.stashPath + this.outbound).then(response => { + return response.text(); + }) + ]).then(() => { + return Promise.all([ + fetch(this.stashPath + this.inbound, { + method: 'POST', + body: JSON.stringify({ type: 'stop' }) + }).then(response => { + return response.text(); + }), + fetch(this.stashPath + this.outbound, { + method: 'POST', + body: JSON.stringify({ type: 'stop' }) + }).then(response => { + return response.text(); + }) + ]); + }); +} diff --git a/testing/web-platform/tests/presentation-api/receiving-ua/support/stash.py b/testing/web-platform/tests/presentation-api/receiving-ua/support/stash.py new file mode 100644 index 000000000000..5bddc7160f27 --- /dev/null +++ b/testing/web-platform/tests/presentation-api/receiving-ua/support/stash.py @@ -0,0 +1,10 @@ +def main(request, response): + key = request.GET.first("id") + + if request.method == "POST": + request.server.stash.put(key, request.body) + return "ok" + else: + value = request.server.stash.take(key) + assert request.server.stash.take(key) is None + return value \ No newline at end of file diff --git a/testing/web-platform/tests/referrer-policy/README.md b/testing/web-platform/tests/referrer-policy/README.md index e8e58e71b921..24897996fab7 100644 --- a/testing/web-platform/tests/referrer-policy/README.md +++ b/testing/web-platform/tests/referrer-policy/README.md @@ -214,7 +214,7 @@ A single test expansion pattern, be it a requirement or a suppressed pattern, ge * Expand each field's pattern (single, any of, or all) to list of allowed values (defined by the ```test_expansion_schema```) -* Permute - Recursively enumerate all **selections** accross all fields +* Permute - Recursively enumerate all **selections** across all fields Be aware that if there is more than one pattern expanding into a same selection (which also shares the same ```name``` field), the pattern appearing later in the spec JSON will overwrite a previously generated selection. To make sure this is not undetected when generating, set the value of the ```expansion``` field to ```default``` for an expansion appearing earlier and ```override``` for the one appearing later. diff --git a/testing/web-platform/tests/resources/testharness.js b/testing/web-platform/tests/resources/testharness.js index fe9ac185b03c..ee842e42832c 100644 --- a/testing/web-platform/tests/resources/testharness.js +++ b/testing/web-platform/tests/resources/testharness.js @@ -1918,10 +1918,46 @@ policies and contribution forms [3]. this.notify_complete(); }; + /* + * Determine if any tests share the same `name` property. Return an array + * containing the names of any such duplicates. + */ + Tests.prototype.find_duplicates = function() { + var names = Object.create(null); + var duplicates = []; + + forEach (this.tests, + function(test) + { + if (test.name in names && duplicates.indexOf(test.name) === -1) { + duplicates.push(test.name); + } + names[test.name] = true; + }); + + return duplicates; + }; + Tests.prototype.notify_complete = function() { var this_obj = this; + var duplicates; + if (this.status.status === null) { - this.status.status = this.status.OK; + duplicates = this.find_duplicates(); + + // Test names are presumed to be unique within test files--this + // allows consumers to use them for identification purposes. + // Duplicated names violate this expectation and should therefore + // be reported as an error. + if (duplicates.length) { + this.status.status = this.status.ERROR; + this.status.message = + duplicates.length + ' duplicate test name' + + (duplicates.length > 1 ? 's' : '') + ': "' + + duplicates.join('", "') + '"'; + } else { + this.status.status = this.status.OK; + } } forEach (this.all_done_callbacks, diff --git a/testing/web-platform/tests/screen-orientation/OWNERS b/testing/web-platform/tests/screen-orientation/OWNERS index bbdded8fff9e..5b2bd7975d09 100644 --- a/testing/web-platform/tests/screen-orientation/OWNERS +++ b/testing/web-platform/tests/screen-orientation/OWNERS @@ -1 +1,2 @@ @haoxli +@marcoscaceres diff --git a/testing/web-platform/tests/selection/addRange.js b/testing/web-platform/tests/selection/addRange.js index 5b94f86da739..7c443f7dade9 100644 --- a/testing/web-platform/tests/selection/addRange.js +++ b/testing/web-platform/tests/selection/addRange.js @@ -1,6 +1,11 @@ "use strict"; function testAddRange(exception, range, endpoints, qualifier, testName) { + if (!isSelectableNode(endpoints[0]) || !isSelectableNode(endpoints[2])) { + testAddRangeDoesNothing(exception, range, endpoints, qualifier, testName); + return; + } + test(function() { assert_equals(exception, null, "Test setup must not throw exceptions"); @@ -110,6 +115,22 @@ function testAddRange(exception, range, endpoints, qualifier, testName) { }, testName + ": modifying the Selection's last Range must modify the " + qualifier + " added Range"); } +function testAddRangeDoesNothing(exception, range, endpoints, qualifier, testName) { + test(function() { + assert_equals(exception, null, "Test setup must not throw exceptions"); + + assertSelectionNoChange(function() { selection.addRange(range); }); + assert_equals(range.startContainer, endpoints[0], + "addRange() must not modify the startContainer of the Range it's given"); + assert_equals(range.startOffset, endpoints[1], + "addRange() must not modify the startOffset of the Range it's given"); + assert_equals(range.endContainer, endpoints[2], + "addRange() must not modify the endContainer of the Range it's given"); + assert_equals(range.endOffset, endpoints[3], + "addRange() must not modify the endOffset of the Range it's given"); + }, testName + ": " + qualifier + " addRange() must do nothing"); +} + // Do only n evals, not n^2 var testRangesEvaled = testRanges.map(eval); @@ -176,7 +197,8 @@ function testAddRangeSubSet(startIndex, optionalEndIndex) { } testAddRange(exception, range1, endpoints1, "first", testName); - testAddRange(exception, range2, endpoints2, "second", testName); + if (selection.rangeCount > 0) + testAddRangeDoesNothing(exception, range2, endpoints2, "second", testName); } } } diff --git a/testing/web-platform/tests/selection/collapse.js b/testing/web-platform/tests/selection/collapse.js index 1894aad92b2a..7c97e2725d6e 100644 --- a/testing/web-platform/tests/selection/collapse.js +++ b/testing/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/testing/web-platform/tests/selection/collapseToStartEnd.html b/testing/web-platform/tests/selection/collapseToStartEnd.html index 37c57fa78817..07c2b843b40a 100644 --- a/testing/web-platform/tests/selection/collapseToStartEnd.html +++ b/testing/web-platform/tests/selection/collapseToStartEnd.html @@ -7,19 +7,19 @@ + + + + diff --git a/testing/web-platform/tests/service-workers/service-worker/controller-on-reload.https.html b/testing/web-platform/tests/service-workers/service-worker/controller-on-reload.https.html index 4490c707963b..e0beb7260be1 100644 --- a/testing/web-platform/tests/service-workers/service-worker/controller-on-reload.https.html +++ b/testing/web-platform/tests/service-workers/service-worker/controller-on-reload.https.html @@ -6,7 +6,8 @@ + + + diff --git a/testing/web-platform/tests/service-workers/service-worker/registration-iframe.https.html b/testing/web-platform/tests/service-workers/service-worker/registration-iframe.https.html index fb60afe84975..d6a2c3b55193 100644 --- a/testing/web-platform/tests/service-workers/service-worker/registration-iframe.https.html +++ b/testing/web-platform/tests/service-workers/service-worker/registration-iframe.https.html @@ -5,15 +5,15 @@ diff --git a/testing/web-platform/tests/service-workers/service-worker/request-end-to-end.https.html b/testing/web-platform/tests/service-workers/service-worker/request-end-to-end.https.html index c9c3b30464b2..e952332c586a 100644 --- a/testing/web-platform/tests/service-workers/service-worker/request-end-to-end.https.html +++ b/testing/web-platform/tests/service-workers/service-worker/request-end-to-end.https.html @@ -22,22 +22,34 @@ t.step(function() { function onRegister(registration) { var sw = registration.installing; + sw.addEventListener('statechange', t.step_func(function(event) { + if (event.target.state == 'activated') { + onActive(sw); + } + })); + } + + function onActive(sw) { var port = sendMessagePort(sw); port.addEventListener('message', t.step_func(function(event) { onMessage(event); }), false); port.start(); - sw.addEventListener('statechange', t.step_func(function(event) { - if (event.target.state == 'activated') - onActive(); - })); - } - - function onActive() { - with_iframe(scope).then(function(f) { frames.push(f); }); } function onMessage(event) { + if (event.data === 'received port') { + onPortReady(); + } else { + onResult(event); + } + } + + function onPortReady() { + with_iframe(scope).then(function(f) { frames.push(f); }); + } + + function onResult(event) { assert_equals( event.data.url, location.href.substring(0, location.href.lastIndexOf('/') + 1) + diff --git a/testing/web-platform/tests/service-workers/service-worker/resources/postmessage-blob-url.js b/testing/web-platform/tests/service-workers/service-worker/resources/postmessage-blob-url.js new file mode 100644 index 000000000000..9095194a4c03 --- /dev/null +++ b/testing/web-platform/tests/service-workers/service-worker/resources/postmessage-blob-url.js @@ -0,0 +1,5 @@ +self.onmessage = e => { + fetch(e.data) + .then(response => response.text()) + .then(text => e.source.postMessage('Worker reply:' + text)); +}; diff --git a/testing/web-platform/tests/service-workers/service-worker/resources/request-end-to-end-worker.js b/testing/web-platform/tests/service-workers/service-worker/resources/request-end-to-end-worker.js index 323c7f24367a..dcf6feefd7d3 100644 --- a/testing/web-platform/tests/service-workers/service-worker/resources/request-end-to-end-worker.js +++ b/testing/web-platform/tests/service-workers/service-worker/resources/request-end-to-end-worker.js @@ -1,9 +1,20 @@ var port = undefined; +// Create a then-able object that is never resolved. +function createPending() { + return { then: createPending }; +} onmessage = function(e) { var message = e.data; if (typeof message === 'object' && 'port' in message) { port = message.port; + + port.postMessage('received port'); + // The ServiceWorker which handles the "message" event must persist long + // enough to handle the subsequent "fetch" event. To promote test + // simplicity, the worker prevents its own termination indefinitely via a + // then-able that is never resolved. + e.waitUntil(createPending()); } }; diff --git a/testing/web-platform/tests/shadow-dom/untriaged/html-elements-in-shadow-trees/inert-html-elements/test-001.html b/testing/web-platform/tests/shadow-dom/untriaged/html-elements-in-shadow-trees/inert-html-elements/test-001.html index 33bdf69d11fd..b3a82136bd91 100644 --- a/testing/web-platform/tests/shadow-dom/untriaged/html-elements-in-shadow-trees/inert-html-elements/test-001.html +++ b/testing/web-platform/tests/shadow-dom/untriaged/html-elements-in-shadow-trees/inert-html-elements/test-001.html @@ -72,7 +72,7 @@ A_08_01_01_T01.step(function () { // should be reloaded, so iframe context shouldn't be affected // set timeout to give the iframe time to load content - setTimeout('A_08_01_01_T01.checkIframeContent()', 2000); + step_timeout(A_08_01_01_T01.checkIframeContent, 2000); }); diff --git a/testing/web-platform/tests/storage/OWNERS b/testing/web-platform/tests/storage/OWNERS new file mode 100644 index 000000000000..951a4728f32f --- /dev/null +++ b/testing/web-platform/tests/storage/OWNERS @@ -0,0 +1,2 @@ +@annevk +@inexorabletash diff --git a/testing/web-platform/tests/storage/README.md b/testing/web-platform/tests/storage/README.md new file mode 100644 index 000000000000..d95c3ce8cff5 --- /dev/null +++ b/testing/web-platform/tests/storage/README.md @@ -0,0 +1,7 @@ +This directory contains the Storage test suite. + +To run the tests in this test suite within a browser, go to: . + +The living standard is: + +The API is at: diff --git a/testing/web-platform/tests/storage/interfaces.html b/testing/web-platform/tests/storage/interfaces.html new file mode 100644 index 000000000000..c390f3278929 --- /dev/null +++ b/testing/web-platform/tests/storage/interfaces.html @@ -0,0 +1,30 @@ + + +Storage API IDL tests + + + + + + diff --git a/testing/web-platform/tests/storage/interfaces.idl b/testing/web-platform/tests/storage/interfaces.idl new file mode 100644 index 000000000000..4967404225ee --- /dev/null +++ b/testing/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/testing/web-platform/tests/storage/interfaces.worker.js b/testing/web-platform/tests/storage/interfaces.worker.js new file mode 100644 index 000000000000..e6feed7db9d9 --- /dev/null +++ b/testing/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/testing/web-platform/tests/storage/opaque-origin.https.html b/testing/web-platform/tests/storage/opaque-origin.https.html new file mode 100644 index 000000000000..563f2fea3c51 --- /dev/null +++ b/testing/web-platform/tests/storage/opaque-origin.https.html @@ -0,0 +1,79 @@ + + +StorageManager API and opaque origins + + + diff --git a/testing/web-platform/tests/streams/readable-streams/brand-checks.js b/testing/web-platform/tests/streams/readable-streams/brand-checks.js index 32553cf92f52..737154ae7584 100644 --- a/testing/web-platform/tests/streams/readable-streams/brand-checks.js +++ b/testing/web-platform/tests/streams/readable-streams/brand-checks.js @@ -5,15 +5,15 @@ if (self.importScripts) { self.importScripts('/resources/testharness.js'); } -let ReadableStreamReader; +let ReadableStreamDefaultReader; let ReadableStreamController; test(() => { // It's not exposed globally, but we test a few of its properties here. - ReadableStreamReader = (new ReadableStream()).getReader().constructor; + ReadableStreamDefaultReader = (new ReadableStream()).getReader().constructor; -}, 'Can get the ReadableStreamReader constructor indirectly'); +}, 'Can get the ReadableStreamDefaultReader constructor indirectly'); test(() => { @@ -29,7 +29,7 @@ test(() => { function fakeReadableStream() { return { cancel() { return Promise.resolve(); }, - getReader() { return new ReadableStreamReader(new ReadableStream()); }, + getReader() { return new ReadableStreamDefaultReader(new ReadableStream()); }, pipeThrough(obj) { return obj.readable; }, pipeTo() { return Promise.resolve(); }, tee() { return [realReadableStream(), realReadableStream()]; } @@ -40,7 +40,7 @@ function realReadableStream() { return new ReadableStream(); } -function fakeReadableStreamReader() { +function fakeReadableStreamDefaultReader() { return { get closed() { return Promise.resolve(); }, cancel() { return Promise.resolve(); }, @@ -77,44 +77,44 @@ test(() => { test(() => { - assert_throws(new TypeError(), () => new ReadableStreamReader(fakeReadableStream()), - 'Constructing a ReadableStreamReader should throw'); + assert_throws(new TypeError(), () => new ReadableStreamDefaultReader(fakeReadableStream()), + 'Constructing a ReadableStreamDefaultReader should throw'); -}, 'ReadableStreamReader enforces a brand check on its argument'); +}, 'ReadableStreamDefaultReader enforces a brand check on its argument'); promise_test(t => { return Promise.all([ - getterRejects(t, ReadableStreamReader.prototype, 'closed', fakeReadableStreamReader()), - getterRejects(t, ReadableStreamReader.prototype, 'closed', realReadableStream()) + getterRejects(t, ReadableStreamDefaultReader.prototype, 'closed', fakeReadableStreamDefaultReader()), + getterRejects(t, ReadableStreamDefaultReader.prototype, 'closed', realReadableStream()) ]); -}, 'ReadableStreamReader.prototype.closed enforces a brand check'); +}, 'ReadableStreamDefaultReader.prototype.closed enforces a brand check'); promise_test(t => { return Promise.all([ - methodRejects(t, ReadableStreamReader.prototype, 'cancel', fakeReadableStreamReader()), - methodRejects(t, ReadableStreamReader.prototype, 'cancel', realReadableStream()) + methodRejects(t, ReadableStreamDefaultReader.prototype, 'cancel', fakeReadableStreamDefaultReader()), + methodRejects(t, ReadableStreamDefaultReader.prototype, 'cancel', realReadableStream()) ]); -}, 'ReadableStreamReader.prototype.cancel enforces a brand check'); +}, 'ReadableStreamDefaultReader.prototype.cancel enforces a brand check'); promise_test(t => { return Promise.all([ - methodRejects(t, ReadableStreamReader.prototype, 'read', fakeReadableStreamReader()), - methodRejects(t, ReadableStreamReader.prototype, 'read', realReadableStream()) + methodRejects(t, ReadableStreamDefaultReader.prototype, 'read', fakeReadableStreamDefaultReader()), + methodRejects(t, ReadableStreamDefaultReader.prototype, 'read', realReadableStream()) ]); -}, 'ReadableStreamReader.prototype.read enforces a brand check'); +}, 'ReadableStreamDefaultReader.prototype.read enforces a brand check'); test(() => { - methodThrows(ReadableStreamReader.prototype, 'releaseLock', fakeReadableStreamReader()); - methodThrows(ReadableStreamReader.prototype, 'releaseLock', realReadableStream()); + methodThrows(ReadableStreamDefaultReader.prototype, 'releaseLock', fakeReadableStreamDefaultReader()); + methodThrows(ReadableStreamDefaultReader.prototype, 'releaseLock', realReadableStream()); -}, 'ReadableStreamReader.prototype.releaseLock enforces a brand check'); +}, 'ReadableStreamDefaultReader.prototype.releaseLock enforces a brand check'); test(() => { diff --git a/testing/web-platform/tests/streams/readable-streams/readable-stream-reader.dedicatedworker.html b/testing/web-platform/tests/streams/readable-streams/default-reader.dedicatedworker.html similarity index 56% rename from testing/web-platform/tests/streams/readable-streams/readable-stream-reader.dedicatedworker.html rename to testing/web-platform/tests/streams/readable-streams/default-reader.dedicatedworker.html index e2818771e455..0a0b2d0511b6 100644 --- a/testing/web-platform/tests/streams/readable-streams/readable-stream-reader.dedicatedworker.html +++ b/testing/web-platform/tests/streams/readable-streams/default-reader.dedicatedworker.html @@ -1,11 +1,11 @@ -readable-stream-reader.js dedicated worker wrapper file +default-reader.js dedicated worker wrapper file diff --git a/testing/web-platform/tests/streams/readable-streams/readable-stream-reader.html b/testing/web-platform/tests/streams/readable-streams/default-reader.html similarity index 62% rename from testing/web-platform/tests/streams/readable-streams/readable-stream-reader.html rename to testing/web-platform/tests/streams/readable-streams/default-reader.html index dd9c5f3fa8ef..00092c9ae658 100644 --- a/testing/web-platform/tests/streams/readable-streams/readable-stream-reader.html +++ b/testing/web-platform/tests/streams/readable-streams/default-reader.html @@ -1,10 +1,10 @@ -readable-stream-reader.js browser context wrapper file +default-reader.js browser context wrapper file - + diff --git a/testing/web-platform/tests/streams/readable-streams/readable-stream-reader.js b/testing/web-platform/tests/streams/readable-streams/default-reader.js similarity index 82% rename from testing/web-platform/tests/streams/readable-streams/readable-stream-reader.js rename to testing/web-platform/tests/streams/readable-streams/default-reader.js index 1d5bc13004f8..dbe8d95597e3 100644 --- a/testing/web-platform/tests/streams/readable-streams/readable-stream-reader.js +++ b/testing/web-platform/tests/streams/readable-streams/default-reader.js @@ -5,29 +5,29 @@ if (self.importScripts) { self.importScripts('/resources/testharness.js'); } -let ReadableStreamReader; +let ReadableStreamDefaultReader; test(() => { // It's not exposed globally, but we test a few of its properties here. - ReadableStreamReader = (new ReadableStream()).getReader().constructor; + ReadableStreamDefaultReader = (new ReadableStream()).getReader().constructor; -}, 'Can get the ReadableStreamReader constructor indirectly'); +}, 'Can get the ReadableStreamDefaultReader constructor indirectly'); test(() => { - assert_throws(new TypeError(), () => new ReadableStreamReader('potato')); - assert_throws(new TypeError(), () => new ReadableStreamReader({})); - assert_throws(new TypeError(), () => new ReadableStreamReader()); + assert_throws(new TypeError(), () => new ReadableStreamDefaultReader('potato')); + assert_throws(new TypeError(), () => new ReadableStreamDefaultReader({})); + assert_throws(new TypeError(), () => new ReadableStreamDefaultReader()); -}, 'ReadableStreamReader constructor should get a ReadableStream object as argument'); +}, 'ReadableStreamDefaultReader constructor should get a ReadableStream object as argument'); test(() => { const methods = ['cancel', 'constructor', 'read', 'releaseLock']; const properties = methods.concat(['closed']).sort(); - const rsReader = new ReadableStreamReader(new ReadableStream()); + const rsReader = new ReadableStreamDefaultReader(new ReadableStream()); const proto = Object.getPrototypeOf(rsReader); assert_array_equals(Object.getOwnPropertyNames(proto).sort(), properties); @@ -56,41 +56,41 @@ test(() => { assert_equals(typeof rsReader.releaseLock, 'function', 'has a releaseLock method'); assert_equals(rsReader.releaseLock.length, 0, 'releaseLock has no parameters'); -}, 'ReadableStreamReader instances should have the correct list of properties'); +}, 'ReadableStreamDefaultReader instances should have the correct list of properties'); test(() => { - const rsReader = new ReadableStreamReader(new ReadableStream()); + const rsReader = new ReadableStreamDefaultReader(new ReadableStream()); assert_equals(rsReader.closed, rsReader.closed, 'closed should return the same promise'); -}, 'ReadableStreamReader closed should always return the same promise object'); +}, 'ReadableStreamDefaultReader closed should always return the same promise object'); test(() => { const rs = new ReadableStream(); - new ReadableStreamReader(rs); // Constructing directly the first time should be fine. - assert_throws(new TypeError(), () => new ReadableStreamReader(rs), + new ReadableStreamDefaultReader(rs); // Constructing directly the first time should be fine. + assert_throws(new TypeError(), () => new ReadableStreamDefaultReader(rs), 'constructing directly the second time should fail'); -}, 'Constructing a ReadableStreamReader directly should fail if the stream is already locked (via direct ' + +}, 'Constructing a ReadableStreamDefaultReader directly should fail if the stream is already locked (via direct ' + 'construction)'); test(() => { const rs = new ReadableStream(); - new ReadableStreamReader(rs); // Constructing directly should be fine. + new ReadableStreamDefaultReader(rs); // Constructing directly should be fine. assert_throws(new TypeError(), () => rs.getReader(), 'getReader() should fail'); -}, 'Getting a ReadableStreamReader via getReader should fail if the stream is already locked (via direct ' + +}, 'Getting a ReadableStreamDefaultReader via getReader should fail if the stream is already locked (via direct ' + 'construction)'); test(() => { const rs = new ReadableStream(); rs.getReader(); // getReader() should be fine. - assert_throws(new TypeError(), () => new ReadableStreamReader(rs), 'constructing directly should fail'); + assert_throws(new TypeError(), () => new ReadableStreamDefaultReader(rs), 'constructing directly should fail'); -}, 'Constructing a ReadableStreamReader directly should fail if the stream is already locked (via getReader)'); +}, 'Constructing a ReadableStreamDefaultReader directly should fail if the stream is already locked (via getReader)'); test(() => { @@ -98,7 +98,7 @@ test(() => { rs.getReader(); // getReader() should be fine. assert_throws(new TypeError(), () => rs.getReader(), 'getReader() should fail'); -}, 'Getting a ReadableStreamReader via getReader should fail if the stream is already locked (via getReader)'); +}, 'Getting a ReadableStreamDefaultReader via getReader should fail if the stream is already locked (via getReader)'); test(() => { @@ -108,9 +108,9 @@ test(() => { } }); - new ReadableStreamReader(rs); // Constructing directly should not throw. + new ReadableStreamDefaultReader(rs); // Constructing directly should not throw. -}, 'Constructing a ReadableStreamReader directly should be OK if the stream is closed'); +}, 'Constructing a ReadableStreamDefaultReader directly should be OK if the stream is closed'); test(() => { @@ -121,9 +121,9 @@ test(() => { } }); - new ReadableStreamReader(rs); // Constructing directly should not throw. + new ReadableStreamDefaultReader(rs); // Constructing directly should not throw. -}, 'Constructing a ReadableStreamReader directly should be OK if the stream is errored'); +}, 'Constructing a ReadableStreamDefaultReader directly should be OK if the stream is errored'); promise_test(() => { @@ -332,7 +332,7 @@ promise_test(t => { controller.error(); return promise; -}, 'ReadableStreamReader closed promise should be rejected with undefined if that is the error'); +}, 'ReadableStreamDefaultReader closed promise should be rejected with undefined if that is the error'); promise_test(t => { @@ -350,7 +350,8 @@ promise_test(t => { } ); -}, 'ReadableStreamReader: if start rejects with no parameter, it should error the stream with an undefined error'); +}, 'ReadableStreamDefaultReader: if start rejects with no parameter, it should error the stream with an undefined ' + + 'error'); promise_test(t => { @@ -367,7 +368,7 @@ promise_test(t => { controller.error(theError); return promise; -}, 'Erroring a ReadableStream after checking closed should reject ReadableStreamReader closed promise'); +}, 'Erroring a ReadableStream after checking closed should reject ReadableStreamDefaultReader closed promise'); promise_test(t => { @@ -386,7 +387,7 @@ promise_test(t => { return promise_rejects(t, theError, rs.getReader().closed); -}, 'Erroring a ReadableStream before checking closed should reject ReadableStreamReader closed promise'); +}, 'Erroring a ReadableStream before checking closed should reject ReadableStreamDefaultReader closed promise'); promise_test(() => { diff --git a/testing/web-platform/tests/streams/readable-streams/readable-stream-reader.serviceworker.https.html b/testing/web-platform/tests/streams/readable-streams/default-reader.serviceworker.https.html similarity index 64% rename from testing/web-platform/tests/streams/readable-streams/readable-stream-reader.serviceworker.https.html rename to testing/web-platform/tests/streams/readable-streams/default-reader.serviceworker.https.html index cc8afe03a213..ab41ff29bfc0 100644 --- a/testing/web-platform/tests/streams/readable-streams/readable-stream-reader.serviceworker.https.html +++ b/testing/web-platform/tests/streams/readable-streams/default-reader.serviceworker.https.html @@ -1,6 +1,6 @@ -readable-stream-reader.js service worker wrapper file +default-reader.js service worker wrapper file @@ -8,5 +8,5 @@ diff --git a/testing/web-platform/tests/streams/readable-streams/readable-stream-reader.sharedworker.html b/testing/web-platform/tests/streams/readable-streams/default-reader.sharedworker.html similarity index 56% rename from testing/web-platform/tests/streams/readable-streams/readable-stream-reader.sharedworker.html rename to testing/web-platform/tests/streams/readable-streams/default-reader.sharedworker.html index 277e4ed2380d..96de3ba0ff37 100644 --- a/testing/web-platform/tests/streams/readable-streams/readable-stream-reader.sharedworker.html +++ b/testing/web-platform/tests/streams/readable-streams/default-reader.sharedworker.html @@ -1,11 +1,11 @@ -readable-stream-reader.js shared worker wrapper file +default-reader.js shared worker wrapper file diff --git a/testing/web-platform/tests/streams/readable-streams/garbage-collection.js b/testing/web-platform/tests/streams/readable-streams/garbage-collection.js index fb00c946bbb5..ebc2d76d05c9 100644 --- a/testing/web-platform/tests/streams/readable-streams/garbage-collection.js +++ b/testing/web-platform/tests/streams/readable-streams/garbage-collection.js @@ -70,6 +70,6 @@ promise_test(() => { return delay(50).then(() => assert_throws(new TypeError(), () => rs.getReader(), 'old reader should still be locking the stream even after garbage collection')); -}, 'Garbage-collecting a ReadableStreamReader should not unlock its stream'); +}, 'Garbage-collecting a ReadableStreamDefaultReader should not unlock its stream'); done(); diff --git a/testing/web-platform/tests/streams/writable-streams/bad-strategies.js b/testing/web-platform/tests/streams/writable-streams/bad-strategies.js index eb14cf22e12b..0eed5faeac43 100644 --- a/testing/web-platform/tests/streams/writable-streams/bad-strategies.js +++ b/testing/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/testing/web-platform/tests/streams/writable-streams/reentrant-strategy.dedicatedworker.html b/testing/web-platform/tests/streams/writable-streams/reentrant-strategy.dedicatedworker.html new file mode 100644 index 000000000000..52f26395ba38 --- /dev/null +++ b/testing/web-platform/tests/streams/writable-streams/reentrant-strategy.dedicatedworker.html @@ -0,0 +1,11 @@ + + +reentrant-strategy.js dedicated worker wrapper file + + + + + diff --git a/testing/web-platform/tests/streams/writable-streams/reentrant-strategy.html b/testing/web-platform/tests/streams/writable-streams/reentrant-strategy.html new file mode 100644 index 000000000000..4d9c33a54084 --- /dev/null +++ b/testing/web-platform/tests/streams/writable-streams/reentrant-strategy.html @@ -0,0 +1,11 @@ + + +reentrant-strategy.js browser context wrapper file + + + + + + + + diff --git a/testing/web-platform/tests/streams/writable-streams/reentrant-strategy.js b/testing/web-platform/tests/streams/writable-streams/reentrant-strategy.js new file mode 100644 index 000000000000..4ef9957f9665 --- /dev/null +++ b/testing/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/testing/web-platform/tests/streams/writable-streams/reentrant-strategy.serviceworker.https.html b/testing/web-platform/tests/streams/writable-streams/reentrant-strategy.serviceworker.https.html new file mode 100644 index 000000000000..49fdf6da2aa0 --- /dev/null +++ b/testing/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/testing/web-platform/tests/streams/writable-streams/reentrant-strategy.sharedworker.html b/testing/web-platform/tests/streams/writable-streams/reentrant-strategy.sharedworker.html new file mode 100644 index 000000000000..1bd555aa9a5d --- /dev/null +++ b/testing/web-platform/tests/streams/writable-streams/reentrant-strategy.sharedworker.html @@ -0,0 +1,11 @@ + + +reentrant-strategy.js shared worker wrapper file + + + + + diff --git a/testing/web-platform/tests/svg/OWNERS b/testing/web-platform/tests/svg/OWNERS index 6bd6b7589321..b85bcce6c5be 100644 --- a/testing/web-platform/tests/svg/OWNERS +++ b/testing/web-platform/tests/svg/OWNERS @@ -1,3 +1,2 @@ @heycam -@Ms2ger @nikosandronikos diff --git a/testing/web-platform/tests/tools/.travis.yml b/testing/web-platform/tests/tools/.travis.yml index dd7388580e9d..37319bf0f5ea 100644 --- a/testing/web-platform/tests/tools/.travis.yml +++ b/testing/web-platform/tests/tools/.travis.yml @@ -12,6 +12,8 @@ matrix: env: TOXENV=py27 HYPOTHESIS_PROFILE=ci - python: 3.5 env: TOXENV=py35 HYPOTHESIS_PROFILE=ci + - python: 3.6 + env: TOXENV=py36 HYPOTHESIS_PROFILE=ci - python: pypy env: TOXENV=pypy HYPOTHESIS_PROFILE=ci_pypy diff --git a/testing/web-platform/tests/tools/appveyor.yml b/testing/web-platform/tests/tools/appveyor.yml index 67f189c57fb0..b0cedd5c78fb 100644 --- a/testing/web-platform/tests/tools/appveyor.yml +++ b/testing/web-platform/tests/tools/appveyor.yml @@ -4,6 +4,7 @@ environment: matrix: - PYTHON: 'C:\\Python27' - PYTHON: 'C:\\Python35' + - PYTHON: 'C:\\Python36' # Needed to make py.test believe our top level can be imported (we # otherwise end up in a wpt-tools directory, and of course you cannot diff --git a/testing/web-platform/tests/tools/lint/lint.py b/testing/web-platform/tests/tools/lint/lint.py index 4b74117542fa..01e35bb79d2e 100644 --- a/testing/web-platform/tests/tools/lint/lint.py +++ b/testing/web-platform/tests/tools/lint/lint.py @@ -15,9 +15,10 @@ from . import fnmatch from ..localpaths import repo_root from ..gitignore.gitignore import PathFilter -from manifest.sourcefile import SourceFile, meta_re +from manifest.sourcefile import SourceFile, js_meta_re, python_meta_re from six import binary_type, iteritems, itervalues from six.moves import range +from six.moves.urllib.parse import urlsplit, urljoin here = os.path.abspath(os.path.split(__file__)[0]) @@ -34,12 +35,6 @@ you could add the following line to the lint.whitelist file. %s:%s""" -def all_git_paths(repo_root): - command_line = ["git", "ls-tree", "-r", "--name-only", "HEAD"] - output = subprocess.check_output(command_line, cwd=repo_root) - for item in output.split("\n"): - yield item - def all_filesystem_paths(repo_root): path_filter = PathFilter(repo_root, extras=[".git/*"]) for dirpath, dirnames, filenames in os.walk(repo_root): @@ -51,12 +46,6 @@ def all_filesystem_paths(repo_root): path_filter(os.path.relpath(os.path.join(dirpath, item) + "/", repo_root))] - -def all_paths(repo_root, ignore_local): - fn = all_git_paths if ignore_local else all_filesystem_paths - for item in fn(repo_root): - yield item - def check_path_length(repo_root, path, css_mode): if len(path) + 1 > 150: return [("PATH LENGTH", "/%s longer than maximum path length (%d > 150)" % (path, len(path) + 1), path, None)] @@ -157,6 +146,12 @@ class CRRegexp(Regexp): error = "CR AT EOL" description = "CR character in line separator" +class SetTimeoutRegexp(Regexp): + pattern = b"setTimeout\s*\(" + error = "SET TIMEOUT" + file_extensions = [".html", ".htm", ".js", ".xht", ".xhtml", ".svg"] + description = "setTimeout used; step_timeout should typically be used instead" + class W3CTestOrgRegexp(Regexp): pattern = b"w3c\-test\.org" error = "W3C-TEST.ORG" @@ -183,6 +178,7 @@ regexps = [item() for item in [TrailingWhitespaceRegexp, TabsRegexp, CRRegexp, + SetTimeoutRegexp, W3CTestOrgRegexp, Webidl2Regexp, ConsoleRegexp, @@ -226,6 +222,33 @@ def check_parsed(repo_root, path, f, css_mode): if source_file.type == "visual" and not source_file.name_is_visual: return [("CONTENT-VISUAL", "Visual test whose filename doesn't end in '-visual'", path, None)] + for reftest_node in source_file.reftest_nodes: + href = reftest_node.attrib.get("href", "") + parts = urlsplit(href) + if parts.scheme or parts.netloc: + errors.append(("ABSOLUTE-URL-REF", + "Reference test with a reference file specified via an absolute URL: '%s'" % href, path, None)) + continue + + ref_url = urljoin(source_file.url, href) + ref_parts = urlsplit(ref_url) + + if source_file.url == ref_url: + errors.append(("SAME-FILE-REF", + "Reference test which points at itself as a reference", + path, + None)) + continue + + assert ref_parts.path != "" + + reference_file = os.path.join(repo_root, ref_parts.path[1:]) + reference_rel = reftest_node.attrib.get("rel", "") + + if not os.path.isfile(reference_file): + errors.append(("NON-EXISTENT-REF", + "Reference test with a non-existent '%s' relationship reference: '%s'" % (reference_rel, href), path, None)) + if len(source_file.timeout_nodes) > 1: errors.append(("MULTIPLE-TIMEOUT", "More than one meta name='timeout'", path, None)) @@ -341,9 +364,18 @@ def check_python_ast(repo_root, path, f, css_mode): return errors -broken_metadata = re.compile(b"//\s*META:") +broken_js_metadata = re.compile(b"//\s*META:") +broken_python_metadata = re.compile(b"#\s*META:") + + def check_script_metadata(repo_root, path, f, css_mode): - if not path.endswith((".worker.js", ".any.js")): + if path.endswith((".worker.js", ".any.js")): + meta_re = js_meta_re + broken_metadata = broken_js_metadata + elif path.endswith(".py"): + meta_re = python_meta_re + broken_metadata = broken_python_metadata + else: return [] done = False @@ -413,8 +445,8 @@ def output_errors_text(errors): for error_type, description, path, line_number in errors: pos_string = path if line_number: - pos_string += " %s" % line_number - print("%s: %s %s" % (error_type, pos_string, description)) + pos_string += ":%s" % line_number + print("%s: %s (%s)" % (pos_string, description, error_type)) def output_errors_json(errors): for error_type, error, path, line_number in errors: @@ -438,15 +470,13 @@ def parse_args(): help="List of paths to lint") parser.add_argument("--json", action="store_true", help="Output machine-readable JSON format") - parser.add_argument("--ignore-local", action="store_true", - help="Ignore locally added files in the working directory (requires git).") parser.add_argument("--css-mode", action="store_true", help="Run CSS testsuite specific lints") return parser.parse_args() def main(force_css_mode=False): args = parse_args() - paths = args.paths if args.paths else all_paths(repo_root, args.ignore_local) + paths = args.paths if args.paths else all_filesystem_paths(repo_root) return lint(repo_root, paths, args.json, force_css_mode or args.css_mode) def lint(repo_root, paths, output_json, css_mode): diff --git a/testing/web-platform/tests/tools/lint/tests/dummy/dependency.html b/testing/web-platform/tests/tools/lint/tests/dummy/dependency.html new file mode 100644 index 000000000000..29296f4c5876 --- /dev/null +++ b/testing/web-platform/tests/tools/lint/tests/dummy/dependency.html @@ -0,0 +1 @@ +This file is used to demonstrate acceptance of root-relative reftest references. diff --git a/testing/web-platform/tests/tools/lint/tests/dummy/ref/absolute.html b/testing/web-platform/tests/tools/lint/tests/dummy/ref/absolute.html new file mode 100644 index 000000000000..4b47bc883671 --- /dev/null +++ b/testing/web-platform/tests/tools/lint/tests/dummy/ref/absolute.html @@ -0,0 +1 @@ + diff --git a/testing/web-platform/tests/tools/lint/tests/dummy/ref/existent_relative-ref.html b/testing/web-platform/tests/tools/lint/tests/dummy/ref/existent_relative-ref.html new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/testing/web-platform/tests/tools/lint/tests/dummy/ref/existent_relative.html b/testing/web-platform/tests/tools/lint/tests/dummy/ref/existent_relative.html new file mode 100644 index 000000000000..29364ee5fb11 --- /dev/null +++ b/testing/web-platform/tests/tools/lint/tests/dummy/ref/existent_relative.html @@ -0,0 +1 @@ + diff --git a/testing/web-platform/tests/tools/lint/tests/dummy/ref/existent_root_relative.html b/testing/web-platform/tests/tools/lint/tests/dummy/ref/existent_root_relative.html new file mode 100644 index 000000000000..2bedc2d309ba --- /dev/null +++ b/testing/web-platform/tests/tools/lint/tests/dummy/ref/existent_root_relative.html @@ -0,0 +1 @@ + diff --git a/testing/web-platform/tests/tools/lint/tests/dummy/ref/non_existent_relative.html b/testing/web-platform/tests/tools/lint/tests/dummy/ref/non_existent_relative.html new file mode 100644 index 000000000000..009a1d5eb011 --- /dev/null +++ b/testing/web-platform/tests/tools/lint/tests/dummy/ref/non_existent_relative.html @@ -0,0 +1 @@ + diff --git a/testing/web-platform/tests/tools/lint/tests/dummy/ref/non_existent_root_relative.html b/testing/web-platform/tests/tools/lint/tests/dummy/ref/non_existent_root_relative.html new file mode 100644 index 000000000000..b1812013aa09 --- /dev/null +++ b/testing/web-platform/tests/tools/lint/tests/dummy/ref/non_existent_root_relative.html @@ -0,0 +1 @@ + diff --git a/testing/web-platform/tests/tools/lint/tests/dummy/ref/same_file_empty.html b/testing/web-platform/tests/tools/lint/tests/dummy/ref/same_file_empty.html new file mode 100644 index 000000000000..eaa18e9c0108 --- /dev/null +++ b/testing/web-platform/tests/tools/lint/tests/dummy/ref/same_file_empty.html @@ -0,0 +1 @@ + diff --git a/testing/web-platform/tests/tools/lint/tests/dummy/ref/same_file_path.html b/testing/web-platform/tests/tools/lint/tests/dummy/ref/same_file_path.html new file mode 100644 index 000000000000..6a80c1f20ddf --- /dev/null +++ b/testing/web-platform/tests/tools/lint/tests/dummy/ref/same_file_path.html @@ -0,0 +1 @@ + diff --git a/testing/web-platform/tests/tools/lint/tests/test_file_lints.py b/testing/web-platform/tests/tools/lint/tests/test_file_lints.py index 4b0df8bd00c3..5cd3a7d96a88 100644 --- a/testing/web-platform/tests/tools/lint/tests/test_file_lints.py +++ b/testing/web-platform/tests/tools/lint/tests/test_file_lints.py @@ -130,6 +130,21 @@ def test_console(): assert errors == [("PARSE-FAILED", "Unable to parse file", filename, 1)] +def test_setTimeout(): + error_map = check_with_files(b"") + + for (filename, (errors, kind)) in error_map.items(): + check_errors(errors) + + if kind == "python": + assert errors == [("PARSE-FAILED", "Unable to parse file", filename, 1)] + else: + assert errors == [('SET TIMEOUT', + 'setTimeout used; step_timeout should typically be used instead', + filename, + 1)] + + def test_meta_timeout(): code = b""" @@ -424,6 +439,7 @@ def test_css_support_file(filename, css_mode, expect_error): (b"""// META: timeout=long\n""", None), (b"""// META: timeout=long\n""", None), (b"""// META: script=foo.js\n""", None), + (b"""# META:\n""", None), (b"""\n// META: timeout=long\n""", (2, "STRAY-METADATA")), (b""" // META: timeout=long\n""", (1, "INDENTED-METADATA")), (b"""// META: timeout=long\n// META: timeout=long\n""", None), @@ -455,3 +471,42 @@ def test_script_metadata(filename, input, error): ] else: assert errors == [] + + +@pytest.mark.parametrize("input,error", [ + (b"""#META: timeout=long\n""", None), + (b"""# META: timeout=long\n""", None), + (b"""# META: timeout=long\n""", None), + (b""""// META:"\n""", None), + (b"""\n# META: timeout=long\n""", (2, "STRAY-METADATA")), + (b""" # META: timeout=long\n""", (1, "INDENTED-METADATA")), + (b"""# META: timeout=long\n# META: timeout=long\n""", None), + (b"""# META: timeout=long\n\n# META: timeout=long\n""", (3, "STRAY-METADATA")), + (b"""# META: timeout=long\n# Start of the test\n# META: timeout=long\n""", (3, "STRAY-METADATA")), + (b"""# META:\n""", (1, "BROKEN-METADATA")), + (b"""# META: foobar\n""", (1, "BROKEN-METADATA")), + (b"""# META: foo=bar\n""", (1, "UNKNOWN-METADATA")), + (b"""# META: timeout=bar\n""", (1, "UNKNOWN-TIMEOUT-METADATA")), +]) +def test_python_metadata(input, error): + filename = "test.py" + errors = check_file_contents("", filename, six.BytesIO(input), False) + check_errors(errors) + + if error is not None: + line, kind = error + messages = { + "STRAY-METADATA": "Metadata comments should start the file", + "INDENTED-METADATA": "Metadata comments should start the line", + "BROKEN-METADATA": "Metadata comment is not formatted correctly", + "UNKNOWN-TIMEOUT-METADATA": "Unexpected value for timeout metadata", + "UNKNOWN-METADATA": "Unexpected kind of metadata", + } + assert errors == [ + (kind, + messages[kind], + filename, + line), + ] + else: + assert errors == [] diff --git a/testing/web-platform/tests/tools/lint/tests/test_lint.py b/testing/web-platform/tests/tools/lint/tests/test_lint.py index 858c3afa8cfe..3b33fa1c1a80 100644 --- a/testing/web-platform/tests/tools/lint/tests/test_lint.py +++ b/testing/web-platform/tests/tools/lint/tests/test_lint.py @@ -1,20 +1,22 @@ from __future__ import unicode_literals import os +import sys import mock import pytest import six +from ...localpaths import repo_root from .. import lint as lint_mod from ..lint import filter_whitelist_errors, parse_whitelist, lint _dummy_repo = os.path.join(os.path.dirname(__file__), "dummy") -def _mock_lint(name): +def _mock_lint(name, **kwargs): wrapped = getattr(lint_mod, name) - return mock.patch(lint_mod.__name__ + "." + name, wraps=wrapped) + return mock.patch(lint_mod.__name__ + "." + name, wraps=wrapped, **kwargs) def test_filter_whitelist_errors(): @@ -149,7 +151,99 @@ def test_lint_failing(capsys): assert mocked_check_file_contents.call_count == 1 out, err = capsys.readouterr() assert "TRAILING WHITESPACE" in out - assert "broken.html 1 " in out + assert "broken.html:1" in out + assert err == "" + + +def test_ref_existent_relative(capsys): + with _mock_lint("check_path") as mocked_check_path: + with _mock_lint("check_file_contents") as mocked_check_file_contents: + rv = lint(_dummy_repo, ["ref/existent_relative.html"], False, False) + assert rv == 0 + assert mocked_check_path.call_count == 1 + assert mocked_check_file_contents.call_count == 1 + out, err = capsys.readouterr() + assert out == "" + assert err == "" + + +def test_ref_existent_root_relative(capsys): + with _mock_lint("check_path") as mocked_check_path: + with _mock_lint("check_file_contents") as mocked_check_file_contents: + rv = lint(_dummy_repo, ["ref/existent_root_relative.html"], False, False) + assert rv == 0 + assert mocked_check_path.call_count == 1 + assert mocked_check_file_contents.call_count == 1 + out, err = capsys.readouterr() + assert out == "" + assert err == "" + + +def test_ref_non_existent_relative(capsys): + with _mock_lint("check_path") as mocked_check_path: + with _mock_lint("check_file_contents") as mocked_check_file_contents: + rv = lint(_dummy_repo, ["ref/non_existent_relative.html"], False, False) + assert rv == 1 + assert mocked_check_path.call_count == 1 + assert mocked_check_file_contents.call_count == 1 + out, err = capsys.readouterr() + assert "NON-EXISTENT-REF" in out + assert "ref/non_existent_relative.html" in out + assert "non_existent_file.html" in out + assert err == "" + + +def test_ref_non_existent_root_relative(capsys): + with _mock_lint("check_path") as mocked_check_path: + with _mock_lint("check_file_contents") as mocked_check_file_contents: + rv = lint(_dummy_repo, ["ref/non_existent_root_relative.html"], False, False) + assert rv == 1 + assert mocked_check_path.call_count == 1 + assert mocked_check_file_contents.call_count == 1 + out, err = capsys.readouterr() + assert "NON-EXISTENT-REF" in out + assert "ref/non_existent_root_relative.html" in out + assert "/non_existent_file.html" in out + assert err == "" + + +def test_ref_absolute_url(capsys): + with _mock_lint("check_path") as mocked_check_path: + with _mock_lint("check_file_contents") as mocked_check_file_contents: + rv = lint(_dummy_repo, ["ref/absolute.html"], False, False) + assert rv == 1 + assert mocked_check_path.call_count == 1 + assert mocked_check_file_contents.call_count == 1 + out, err = capsys.readouterr() + assert "ABSOLUTE-URL-REF" in out + assert "http://example.com/reference.html" in out + assert "ref/absolute.html" in out + assert err == "" + + +def test_ref_same_file_empty(capsys): + with _mock_lint("check_path") as mocked_check_path: + with _mock_lint("check_file_contents") as mocked_check_file_contents: + rv = lint(_dummy_repo, ["ref/same_file_empty.html"], False, False) + assert rv == 1 + assert mocked_check_path.call_count == 1 + assert mocked_check_file_contents.call_count == 1 + out, err = capsys.readouterr() + assert "SAME-FILE-REF" in out + assert "same_file_empty.html" in out + assert err == "" + + +def test_ref_same_file_path(capsys): + with _mock_lint("check_path") as mocked_check_path: + with _mock_lint("check_file_contents") as mocked_check_file_contents: + rv = lint(_dummy_repo, ["ref/same_file_path.html"], False, False) + assert rv == 1 + assert mocked_check_path.call_count == 1 + assert mocked_check_file_contents.call_count == 1 + out, err = capsys.readouterr() + assert "SAME-FILE-REF" in out + assert "same_file_path.html" in out assert err == "" @@ -162,6 +256,46 @@ def test_lint_passing_and_failing(capsys): assert mocked_check_file_contents.call_count == 2 out, err = capsys.readouterr() assert "TRAILING WHITESPACE" in out - assert "broken.html 1 " in out + assert "broken.html:1" in out assert "okay.html" not in out assert err == "" + + +def test_all_filesystem_paths(): + with mock.patch( + 'os.walk', + return_value=[('.', + ['dir_a', 'dir_b'], + ['file_a', 'file_b']), + (os.path.join('.', 'dir_a'), + [], + ['file_c', 'file_d'])] + ) as m: + got = list(lint_mod.all_filesystem_paths('.')) + assert got == ['file_a', + 'file_b', + os.path.join('dir_a', 'file_c'), + os.path.join('dir_a', 'file_d')] + + +def test_main_with_args(): + orig_argv = sys.argv + try: + sys.argv = ['./lint', 'a', 'b', 'c'] + with _mock_lint('lint', return_value=True) as m: + lint_mod.main() + m.assert_called_once_with(repo_root, ['a', 'b', 'c'], False, False) + finally: + sys.argv = orig_argv + + +def test_main_no_args(): + orig_argv = sys.argv + try: + sys.argv = ['./lint'] + with _mock_lint('lint', return_value=True) as m: + with _mock_lint('all_filesystem_paths', return_value=['foo', 'bar']) as m2: + lint_mod.main() + m.assert_called_once_with(repo_root, ['foo', 'bar'], False, False) + finally: + sys.argv = orig_argv diff --git a/testing/web-platform/tests/tools/manifest/item.py b/testing/web-platform/tests/tools/manifest/item.py index 3d3480a1d255..61be4443b402 100644 --- a/testing/web-platform/tests/tools/manifest/item.py +++ b/testing/web-platform/tests/tools/manifest/item.py @@ -210,6 +210,23 @@ class WebdriverSpecTest(URLManifestItem): URLManifestItem.__init__(self, source_file, url, url_base=url_base, manifest=manifest) self.timeout = timeout + def to_json(self): + rv = URLManifestItem.to_json(self) + if self.timeout is not None: + rv[-1]["timeout"] = self.timeout + return rv + + @classmethod + def from_json(cls, manifest, tests_root, path, obj, source_files=None): + source_file = get_source_file(source_files, tests_root, manifest, path) + + url, extras = obj + return cls(source_file, + url, + url_base=manifest.url_base, + timeout=extras.get("timeout"), + manifest=manifest) + class SupportFile(ManifestItem): item_type = "support" diff --git a/testing/web-platform/tests/tools/manifest/sourcefile.py b/testing/web-platform/tests/tools/manifest/sourcefile.py index 6047b2b5e72a..cd210e832255 100644 --- a/testing/web-platform/tests/tools/manifest/sourcefile.py +++ b/testing/web-platform/tests/tools/manifest/sourcefile.py @@ -16,7 +16,8 @@ from .item import Stub, ManualTest, WebdriverSpecTest, RefTestNode, RefTest, Tes from .utils import rel_path_to_url, ContextManagerBytesIO, cached_property wd_pattern = "*.py" -meta_re = re.compile(b"//\s*META:\s*(\w*)=(.*)$") +js_meta_re = re.compile(b"//\s*META:\s*(\w*)=(.*)$") +python_meta_re = re.compile(b"#\s*META:\s*(\w*)=(.*)$") reference_file_re = re.compile(r'(^|[\-_])(not)?ref[0-9]*([\-_]|$)') @@ -29,14 +30,17 @@ def replace_end(s, old, new): return s[:-len(old)] + new -def read_script_metadata(f): +def read_script_metadata(f, regexp): """ Yields any metadata (pairs of bytestrings) from the file-like object `f`, - as specified according to the `meta_re` regex. + as specified according to a supplied regexp. + + `regexp` - Regexp containing two groups containing the metadata name and + value. """ for line in f: assert isinstance(line, binary_type), line - m = meta_re.match(line) + m = regexp.match(line) if not m: break @@ -274,11 +278,15 @@ class SourceFile(object): @cached_property def script_metadata(self): - if not self.name_is_worker and not self.name_is_multi_global: + if self.name_is_worker or self.name_is_multi_global: + regexp = js_meta_re + elif self.name_is_webdriver: + regexp = python_meta_re + else: return None with self.open() as f: - return list(read_script_metadata(f)) + return list(read_script_metadata(f, regexp)) @cached_property def timeout(self): @@ -482,8 +490,10 @@ class SourceFile(object): elif self.name_is_multi_global: rv = TestharnessTest.item_type, [ - TestharnessTest(self, replace_end(self.url, ".any.js", ".any.html"), timeout=self.timeout), - TestharnessTest(self, replace_end(self.url, ".any.js", ".any.worker.html"), timeout=self.timeout), + TestharnessTest(self, replace_end(self.url, ".any.js", ".any.html"), + timeout=self.timeout), + TestharnessTest(self, replace_end(self.url, ".any.js", ".any.worker.html"), + timeout=self.timeout), ] elif self.name_is_worker: @@ -492,7 +502,8 @@ class SourceFile(object): timeout=self.timeout)]) elif self.name_is_webdriver: - rv = WebdriverSpecTest.item_type, [WebdriverSpecTest(self, self.url)] + rv = WebdriverSpecTest.item_type, [WebdriverSpecTest(self, self.url, + timeout=self.timeout)] elif self.content_is_css_manual and not self.name_is_reference: rv = ManualTest.item_type, [ManualTest(self, self.url)] diff --git a/testing/web-platform/tests/tools/manifest/tests/test_sourcefile.py b/testing/web-platform/tests/tools/manifest/tests/test_sourcefile.py index b0af7261a504..193ff54de747 100644 --- a/testing/web-platform/tests/tools/manifest/tests/test_sourcefile.py +++ b/testing/web-platform/tests/tools/manifest/tests/test_sourcefile.py @@ -3,7 +3,7 @@ import os import pytest from six import BytesIO -from ..sourcefile import SourceFile, read_script_metadata +from ..sourcefile import SourceFile, read_script_metadata, js_meta_re, python_meta_re def create(filename, contents=b""): assert isinstance(contents, bytes) @@ -143,7 +143,7 @@ def test_worker_long_timeout(): importScripts('/resources/testharness.js') test()""" - metadata = list(read_script_metadata(BytesIO(contents))) + metadata = list(read_script_metadata(BytesIO(contents), js_meta_re)) assert metadata == [(b"timeout", b"long")] s = create("html/test.worker.js", contents=contents) @@ -156,6 +156,25 @@ test()""" assert item.timeout == "long" +def test_python_long_timeout(): + contents = b"""# META: timeout=long + +""" + + metadata = list(read_script_metadata(BytesIO(contents), + python_meta_re)) + assert metadata == [(b"timeout", b"long")] + + s = create("webdriver/test.py", contents=contents) + assert s.name_is_webdriver + + item_type, items = s.manifest_items() + assert item_type == "wdspec" + + for item in items: + assert item.timeout == "long" + + def test_multi_global(): s = create("html/test.any.js") assert not s.name_is_non_test @@ -186,7 +205,7 @@ def test_multi_global_long_timeout(): importScripts('/resources/testharness.js') test()""" - metadata = list(read_script_metadata(BytesIO(contents))) + metadata = list(read_script_metadata(BytesIO(contents), js_meta_re)) assert metadata == [(b"timeout", b"long")] s = create("html/test.any.js", contents=contents) @@ -212,7 +231,7 @@ test()""" (b"""// META: foobar\n""", []), ]) def test_script_metadata(input, expected): - metadata = read_script_metadata(BytesIO(input)) + metadata = read_script_metadata(BytesIO(input), js_meta_re) assert list(metadata) == expected diff --git a/testing/web-platform/tests/tools/runner/index.html b/testing/web-platform/tests/tools/runner/index.html index 31b1ce73243e..9cb648ed9b71 100644 --- a/testing/web-platform/tests/tools/runner/index.html +++ b/testing/web-platform/tests/tools/runner/index.html @@ -128,9 +128,7 @@
-

Progress - updating and loading test manifest; this may take several minutes -

+

Progress

diff --git a/testing/web-platform/tests/tools/runner/runner.css b/testing/web-platform/tests/tools/runner/runner.css index 983532fead79..2ed7e1dd69e9 100644 --- a/testing/web-platform/tests/tools/runner/runner.css +++ b/testing/web-platform/tests/tools/runner/runner.css @@ -184,17 +184,13 @@ td.ERROR { background-color: inherit; } to { - background-color: #ffc; + background-color: #f6bb42; } } -#manifest { - padding-left: 6px; - padding-right: 6px; - font-size: 80%; - font-weight: normal; - font-style: italic; - color: #999; +.loading-manifest { + background-image: none; + color: #333; animation-duration: 1.5s; animation-name: alert_updating; animation-iteration-count: infinite; diff --git a/testing/web-platform/tests/tools/runner/runner.js b/testing/web-platform/tests/tools/runner/runner.js index ae8f240342ce..39b263419254 100644 --- a/testing/web-platform/tests/tools/runner/runner.js +++ b/testing/web-platform/tests/tools/runner/runner.js @@ -152,7 +152,6 @@ function VisualOutput(elem, runner) { this.section_wrapper = null; this.results_table = this.elem.querySelector(".results > table"); this.section = null; - this.manifest_status = this.elem.querySelector("#manifest"); this.progress = this.elem.querySelector(".summary .progress"); this.meter = this.progress.querySelector(".progress-bar"); this.result_count = null; @@ -195,7 +194,7 @@ VisualOutput.prototype = { } this.meter.style.width = '0px'; this.meter.textContent = '0%'; - this.manifest_status.style.display = "none"; + this.meter.classList.remove("stopped", "loading-manifest"); this.elem.querySelector(".jsonResults").style.display = "none"; this.results_table.removeChild(this.results_table.tBodies[0]); this.results_table.appendChild(document.createElement("tbody")); @@ -205,14 +204,13 @@ VisualOutput.prototype = { this.clear(); this.instructions.style.display = "none"; this.elem.style.display = "block"; - this.manifest_status.style.display = "inline"; + this.steady_status("loading-manifest"); }, on_start: function() { this.clear(); this.instructions.style.display = "none"; this.elem.style.display = "block"; - this.meter.classList.remove("stopped"); this.meter.classList.add("progress-striped", "active"); }, @@ -281,17 +279,24 @@ VisualOutput.prototype = { this.update_meter(this.runner.progress(), this.runner.results.count(), this.runner.test_count()); }, - on_done: function() { + steady_status: function(statusName) { + var statusTexts = { + done: "Done!", + stopped: "Stopped", + "loading-manifest": "Updating and loading test manifest; this may take several minutes." + }; + var textContent = statusTexts[statusName]; + this.meter.setAttribute("aria-valuenow", this.meter.getAttribute("aria-valuemax")); this.meter.style.width = "100%"; - if (this.runner.stop_flag) { - this.meter.textContent = "Stopped"; - this.meter.classList.add("stopped"); - } else { - this.meter.textContent = "Done!"; - } - this.meter.classList.remove("progress-striped", "active"); + this.meter.textContent = textContent; + this.meter.classList.remove("progress-striped", "active", "stopped", "loading-manifest"); + this.meter.classList.add(statusName); this.runner.test_div.textContent = ""; + }, + + on_done: function() { + this.steady_status(this.runner.stop_flag ? "stopped" : "done"); //add the json serialization of the results var a = this.elem.querySelector(".jsonResults"); var json = this.runner.results.to_json(); @@ -644,8 +649,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 +673,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 +690,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 +734,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 +766,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/testing/web-platform/tests/tools/serve/serve.py b/testing/web-platform/tests/tools/serve/serve.py index c8b202fe6001..4b4e1ac474ac 100644 --- a/testing/web-platform/tests/tools/serve/serve.py +++ b/testing/web-platform/tests/tools/serve/serve.py @@ -19,7 +19,7 @@ from multiprocessing import Process, Event from ..localpaths import repo_root import sslutils -from manifest.sourcefile import read_script_metadata +from manifest.sourcefile import read_script_metadata, js_meta_re from wptserve import server as wptserve, handlers from wptserve import stash from wptserve.logger import set_logger @@ -63,7 +63,7 @@ fetch_tests_from_worker(new Worker("%(worker_path)s")); path = path.replace(".any.worker.html", ".any.js") path = path.replace(".worker.html", ".worker.js") with open(path, "rb") as f: - for key, value in read_script_metadata(f): + for key, value in read_script_metadata(f, js_meta_re): if key == b"timeout": if value == b"long": yield '' @@ -101,7 +101,7 @@ self.GLOBAL = { path = filesystem_path(self.base_path, request, self.url_base) path = path.replace(".any.html", ".any.js") with open(path, "rb") as f: - for key, value in read_script_metadata(f): + for key, value in read_script_metadata(f, js_meta_re): if key == b"timeout": if value == b"long": yield '' @@ -137,7 +137,7 @@ done(); path = filesystem_path(self.base_path, request, self.url_base) path = path.replace(".any.worker.js", ".any.js") with open(path, "rb") as f: - for key, value in read_script_metadata(f): + for key, value in read_script_metadata(f, js_meta_re): if key == b"timeout": pass elif key == b"script": @@ -259,7 +259,8 @@ class ServerProc(object): ssl_config, **kwargs): self.proc = Process(target=self.create_daemon, args=(init_func, host, port, paths, routes, bind_hostname, - external_config, ssl_config)) + external_config, ssl_config), + kwargs=kwargs) self.proc.daemon = True self.proc.start() diff --git a/testing/web-platform/tests/tools/sslutils/openssl.py b/testing/web-platform/tests/tools/sslutils/openssl.py index 1b636f02272a..09c2471aaee3 100644 --- a/testing/web-platform/tests/tools/sslutils/openssl.py +++ b/testing/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, @@ -62,7 +67,10 @@ class OpenSSL(object): # but at least in MSYS shells, the os.environ dictionary can be mixed. env = {} for k, v in os.environ.iteritems(): - env[k.encode("utf8")] = v.encode("utf8") + try: + env[k.encode("utf8")] = v.encode("utf8") + except UnicodeDecodeError: + pass if self.base_conf_path is not None: env["OPENSSL_CONF"] = self.base_conf_path.encode("utf8") @@ -305,8 +313,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/testing/web-platform/tests/tools/tox.ini b/testing/web-platform/tests/tools/tox.ini index 990f6d600000..4acefc401c7a 100644 --- a/testing/web-platform/tests/tools/tox.ini +++ b/testing/web-platform/tests/tools/tox.ini @@ -1,5 +1,5 @@ [tox] -envlist = py27,py35,pypy +envlist = py27,py35,py36,pypy skipsdist=True [testenv] diff --git a/testing/web-platform/tests/tools/webdriver/webdriver/client.py b/testing/web-platform/tests/tools/webdriver/webdriver/client.py index 818e2f3b76a1..822caa648ac7 100644 --- a/testing/web-platform/tests/tools/webdriver/webdriver/client.py +++ b/testing/web-platform/tests/tools/webdriver/webdriver/client.py @@ -31,43 +31,49 @@ def command(func): class Timeouts(object): + def __init__(self, session): self.session = session - self._script = 30 - self._load = 0 - self._implicit_wait = 0 - def _set_timeouts(self, name, value): - body = {"type": name, - "ms": value * 1000} - return self.session.send_command("POST", "timeouts", body) + def _get(self, key=None): + timeouts = self.session.send_session_command("GET", "timeouts") + if key is not None: + return timeouts[key] + return timeouts + + def _set(self, key, secs): + body = {key: secs * 1000} + timeouts = self.session.send_session_command("POST", "timeouts", body) + return timeouts[key] @property def script(self): - return self._script + return self._get("script") @script.setter - def script(self, value): - self._set_timeouts("script", value) - self._script = value + def script(self, secs): + return self._set("script", secs) @property - def load(self): - return self._load + def page_load(self): + return self._get("pageLoad") - @load.setter - def set_load(self, value): - self._set_timeouts("page load", value) - self._script = value + @page_load.setter + def page_load(self, secs): + return self._set("pageLoad", secs) @property - def implicit_wait(self): - return self._implicit_wait + def implicit(self): + return self._get("implicit") - @implicit_wait.setter - def implicit_wait(self, value): - self._set_timeouts("implicit wait", value) - self._implicit_wait = value + @implicit.setter + def implicit(self, secs): + return self._set("implicit", secs) + + def __str__(self): + name = "%s.%s" % (self.__module__, self.__class__.__name__) + return "<%s script=%d, load=%d, implicit=%d>" % \ + (name, self.script, self.page_load, self.implicit) class ActionSequence(object): @@ -83,30 +89,26 @@ class ActionSequence(object): .key_up("a") \ .perform() """ - def __init__(self, session, action_type, input_id, pointer_params=None): + def __init__(self, session, action_type, input_id): """Represents a sequence of actions of one type for one input source. :param session: WebDriver session. :param action_type: Action type; may be "none", "key", or "pointer". :param input_id: ID of input source. - :param pointer_params: Optional dictionary of pointer parameters. """ self.session = session + # TODO take advantage of remote end generating uuid self._id = input_id self._type = action_type self._actions = [] - self._pointer_params = pointer_params @property def dict(self): - d = { - "type": self._type, - "id": self._id, - "actions": self._actions, + return { + "type": self._type, + "id": self._id, + "actions": self._actions, } - if self._pointer_params is not None: - d["parameters"] = self._pointer_params - return d @command def perform(self): @@ -116,48 +118,6 @@ class ActionSequence(object): def _key_action(self, subtype, value): self._actions.append({"type": subtype, "value": value}) - def _pointer_action(self, subtype, button): - self._actions.append({"type": subtype, "button": button}) - - def pointer_move(self, x, y, duration=None, origin=None): - """Queue a pointerMove action. - - :param x: Destination x-axis coordinate of pointer in CSS pixels. - :param y: Destination y-axis coordinate of pointer in CSS pixels. - :param duration: Number of milliseconds over which to distribute the - move. If None, remote end defaults to 0. - :param origin: Origin of coordinates, either "viewport", "pointer" or - an Element. If None, remote end defaults to "viewport". - """ - # TODO change to pointerMove once geckodriver > 0.14 is available on mozilla-central - action = { - "type": "move", - "x": x, - "y": y - } - if duration is not None: - action["duration"] = duration - if origin is not None: - action["origin"] = origin if isinstance(origin, basestring) else origin.json() - self._actions.append(action) - return self - - def pointer_up(self, button): - """Queue a pointerUp action for `button`. - - :param button: Pointer button to perform action with. - """ - self._pointer_action("pointerUp", button) - return self - - def pointer_down(self, button): - """Queue a pointerDown action for `button`. - - :param button: Pointer button to perform action with. - """ - self._pointer_action("pointerDown", button) - return self - def key_up(self, value): """Queue a keyUp action for `value`. @@ -198,11 +158,11 @@ class Actions(object): ``ActionSequence.dict``. """ body = {"actions": [] if actions is None else actions} - return self.session.send_command("POST", "actions", body) + return self.session.send_session_command("POST", "actions", body) @command def release(self): - return self.session.send_command("DELETE", "actions") + return self.session.send_session_command("DELETE", "actions") def sequence(self, *args, **kwargs): """Return an empty ActionSequence of the designated type. @@ -218,31 +178,31 @@ class Window(object): @property @command def size(self): - resp = self.session.send_command("GET", "window/size") + resp = self.session.send_session_command("GET", "window/rect") return (resp["width"], resp["height"]) @size.setter @command def size(self, (width, height)): body = {"width": width, "height": height} - self.session.send_command("POST", "window/size", body) + self.session.send_session_command("POST", "window/rect", body) @property @command def position(self): - resp = self.session.send_command("GET", "window/position") + resp = self.session.send_session_command("GET", "window/rect") return (resp["x"], resp["y"]) @position.setter @command def position(self, (x, y)): body = {"x": x, "y": y} - self.session.send_command("POST", "window/position", body) + self.session.send_session_command("POST", "window/rect", body) @property @command def maximize(self): - return self.session.send_command("POST", "window/maximize") + return self.session.send_session_command("POST", "window/maximize") class Find(object): @@ -259,7 +219,7 @@ class Find(object): body = {"using": strategy, "value": selector} - data = self.session.send_command("POST", route, body, key="value") + data = self.session.send_session_command("POST", route, body) if all: rv = [self.session._element(item) for item in data] @@ -274,7 +234,7 @@ class Cookies(object): self.session = session def __getitem__(self, name): - self.session.send_command("GET", "cookie/%s" % name, {}, key="value") + self.session.send_session_command("GET", "cookie/%s" % name, {}) def __setitem__(self, name, value): cookie = {"name": name, @@ -284,7 +244,7 @@ class Cookies(object): cookie["value"] = value elif hasattr(value, "value"): cookie["value"] = value.value - self.session.send_command("POST", "cookie/%s" % name, {}, key="value") + self.session.send_session_command("POST", "cookie/%s" % name, {}) class UserPrompt(object): @@ -293,22 +253,22 @@ class UserPrompt(object): @command def dismiss(self): - self.session.send_command("POST", "alert/dismiss") + self.session.send_session_command("POST", "alert/dismiss") @command def accept(self): - self.session.send_command("POST", "alert/accept") + self.session.send_session_command("POST", "alert/accept") @property @command def text(self): - return self.session.send_command("GET", "alert/text", key="value") + return self.session.send_session_command("GET", "alert/text") @text.setter @command def text(self, value): body = {"value": list(value)} - self.session.send_command("POST", "alert/text", body=body) + self.session.send_session_command("POST", "alert/text", body=body) class Session(object): @@ -357,20 +317,20 @@ class Session(object): #body["capabilities"] = caps body = caps - response = self.transport.send("POST", "session", body=body) - self.session_id = response.body["value"]["sessionId"] + value = self.send_command("POST", "session", body=body) + self.session_id = value["sessionId"] if self.extension_cls: self.extension = self.extension_cls(self) - return response.body["value"] + return value def end(self): if self.session_id is None: return url = "session/%s" % self.session_id - self.transport.send("DELETE", url) + self.send_command("DELETE", url) self.session_id = None self.timeouts = None @@ -378,53 +338,58 @@ class Session(object): self.find = None self.extension = None - def send_raw_command(self, method, url, body=None, headers=None): - """Send a command to the remote end. - - :param method: HTTP method to use in request - :param url: "command part" of the requests URL path - :param body: body of the HTTP request - :param headers: Additional headers to include in the HTTP request - - :return: an instance of wdclient.Response describing the HTTP response - received from the remote end + def send_command(self, method, url, body=None): """ - url = urlparse.urljoin("session/%s/" % self.session_id, url) - return self.transport.send(method, url, body, headers) + Send a command to the remote end and validate its success. - def send_command(self, method, url, body=None, key=None): - """Send a command to the remote end and validate its success. + :param method: HTTP method to use in request. + :param uri: "Command part" of the HTTP request URL, + e.g. `window/rect`. + :param body: Optional body of the HTTP request. - :param method: HTTP method to use in request - :param url: "command part" of the requests URL path - :param body: body of the HTTP request - :param key: (deprecated) when specified, this string value will be used - to de-reference the HTTP response body following JSON parsing + :return: `None` if the HTTP response body was empty, otherwise + the result of parsing the body as JSON. - :return: None if the HTTP response body was empty, otherwise the - result of parsing the HTTP response body as JSON + :raises error.WebDriverException: If the remote end returns + an error. """ + response = self.transport.send(method, url, body) + value = response.body["value"] + if response.status != 200: + cls = error.get(value.get("error")) + raise cls(value.get("message")) + + return value + + def send_session_command(self, method, uri, body=None): + """ + Send a command to an established session and validate its success. + + :param method: HTTP method to use in request. + :param url: "Command part" of the HTTP request URL, + e.g. `window/rect`. + :param body: Optional body of the HTTP request. Must be JSON + serialisable. + + :return: `None` if the HTTP response body was empty, otherwise + the result of parsing the body as JSON. + + :raises error.SessionNotCreatedException: If there is no active + session. + :raises error.WebDriverException: If the remote end returns + an error. + """ if self.session_id is None: raise error.SessionNotCreatedException() - response = self.send_raw_command(method, url, body) - - if response.status != 200: - cls = error.get(response.body["value"].get("error")) - raise cls(response.body["value"].get("message")) - - if key is not None: - response.body = response.body[key] - if not response.body: - response.body = None - - return response.body + url = urlparse.urljoin("session/%s/" % self.session_id, uri) + return self.send_command(method, url, body) @property @command def url(self): - return self.send_command("GET", "url", key="value") + return self.send_session_command("GET", "url") @url.setter @command @@ -432,35 +397,35 @@ class Session(object): if urlparse.urlsplit(url).netloc is None: return self.url(url) body = {"url": url} - return self.send_command("POST", "url", body) + return self.send_session_command("POST", "url", body) @command def back(self): - return self.send_command("POST", "back") + return self.send_session_command("POST", "back") @command def forward(self): - return self.send_command("POST", "forward") + return self.send_session_command("POST", "forward") @command def refresh(self): - return self.send_command("POST", "refresh") + return self.send_session_command("POST", "refresh") @property @command def title(self): - return self.send_command("GET", "title", key="value") + return self.send_session_command("GET", "title") @property @command def window_handle(self): - return self.send_command("GET", "window", key="value") + return self.send_session_command("GET", "window") @window_handle.setter @command def window_handle(self, handle): body = {"handle": handle} - return self.send_command("POST", "window", body=body) + return self.send_session_command("POST", "window", body=body) def switch_frame(self, frame): if frame == "parent": @@ -473,21 +438,21 @@ class Session(object): else: body = {"id": frame} - return self.send_command("POST", url, body) + return self.send_session_command("POST", url, body) @command def close(self): - return self.send_command("DELETE", "window") + return self.send_session_command("DELETE", "window") @property @command def handles(self): - return self.send_command("GET", "window/handles", key="value") + return self.send_session_command("GET", "window/handles") @property @command def active_element(self): - data = self.send_command("GET", "element/active", key="value") + data = self.send_session_command("GET", "element/active") if data is not None: return self._element(data) @@ -504,7 +469,7 @@ class Session(object): url = "cookie" else: url = "cookie/%s" % name - return self.send_command("GET", url, {}, key="value") + return self.send_session_command("GET", url, {}) @command def set_cookie(self, name, value, path=None, domain=None, secure=None, expiry=None): @@ -518,14 +483,14 @@ class Session(object): body["secure"] = secure if expiry is not None: body["expiry"] = expiry - self.send_command("POST", "cookie", {"cookie": body}) + self.send_session_command("POST", "cookie", {"cookie": body}) def delete_cookie(self, name=None): if name is None: url = "cookie" else: url = "cookie/%s" % name - self.send_command("DELETE", url, {}, key="value") + self.send_session_command("DELETE", url, {}) #[...] @@ -538,7 +503,7 @@ class Session(object): "script": script, "args": args } - return self.send_command("POST", "execute", body, key="value") + return self.send_session_command("POST", "execute/sync", body) @command def execute_async_script(self, script, args=None): @@ -549,13 +514,13 @@ class Session(object): "script": script, "args": args } - return self.send_command("POST", "execute_async", body, key="value") + return self.send_session_command("POST", "execute/async", body) #[...] @command def screenshot(self): - return self.send_command("GET", "screenshot", key="value") + return self.send_session_command("GET", "screenshot") class Element(object): @@ -565,35 +530,32 @@ class Element(object): assert id not in self.session._element_cache self.session._element_cache[self.id] = self + def send_element_command(self, method, uri, body=None): + url = "element/%s/%s" % (self.id, uri) + return self.session.send_session_command(method, url, body) + def json(self): return {element_key: self.id} - @property - def session_id(self): - return self.session.session_id - - def url(self, suffix): - return "element/%s/%s" % (self.id, suffix) - @command def find_element(self, strategy, selector): body = {"using": strategy, "value": selector} - elem = self.session.send_command("POST", self.url("element"), body, key="value") + elem = self.send_element_command("POST", "element", body) return self.session.element(elem) @command def click(self): - self.session.send_command("POST", self.url("click"), {}) + self.send_element_command("POST", "click", {}) @command def tap(self): - self.session.send_command("POST", self.url("tap"), {}) + self.send_element_command("POST", "tap", {}) @command def clear(self): - self.session.send_command("POST", self.url("clear"), {}) + self.send_element_command("POST", self.url("clear"), {}) @command def send_keys(self, keys): @@ -601,32 +563,31 @@ class Element(object): keys = [char for char in keys] body = {"value": keys} - - return self.session.send_command("POST", self.url("value"), body) + return self.send_element_command("POST", "value", body) @property @command def text(self): - return self.session.send_command("GET", self.url("text"), key="value") + return self.send_element_command("GET", "text") @property @command def name(self): - return self.session.send_command("GET", self.url("name"), key="value") + return self.send_element_command("GET", "name") @command def style(self, property_name): - return self.session.send_command("GET", self.url("css/%s" % property_name), key="value") + return self.send_element_command("GET", "css/%s" % property_name) @property @command def rect(self): - return self.session.send_command("GET", self.url("rect")) + return self.send_element_command("GET", "rect") @command def property(self, name): - return self.session.send_command("GET", self.url("property/%s" % name), key="value") + return self.send_element_command("GET", "property/%s" % name) @command def attribute(self, name): - return self.session.send_command("GET", self.url("attribute/%s" % name), key="value") + return self.send_element_command("GET", "attribute/%s" % name) diff --git a/testing/web-platform/tests/tools/webdriver/webdriver/transport.py b/testing/web-platform/tests/tools/webdriver/webdriver/transport.py index db63467bf655..7856a8fa2384 100644 --- a/testing/web-platform/tests/tools/webdriver/webdriver/transport.py +++ b/testing/web-platform/tests/tools/webdriver/webdriver/transport.py @@ -19,8 +19,8 @@ class Response(object): def __repr__(self): return "wdclient.Response(status=%d, body=%s)" % (self.status, self.body) - @staticmethod - def from_http_response(http_response): + @classmethod + def from_http_response(cls, http_response): status = http_response.status body = http_response.read() @@ -45,7 +45,7 @@ class Response(object): # with a key `value` set to the JSON Serialization of data. assert "value" in body - return Response(status, body) + return cls(status, body) class HTTPWireProtocol(object): """Transports messages (commands and responses) over the WebDriver diff --git a/testing/web-platform/tests/tools/wptserve/README.md b/testing/web-platform/tests/tools/wptserve/README.md index c0c88e2c36ca..30a7dccc93ef 100644 --- a/testing/web-platform/tests/tools/wptserve/README.md +++ b/testing/web-platform/tests/tools/wptserve/README.md @@ -1,4 +1,6 @@ wptserve ======== -Web server designed for use with web-platform-tests +Web server designed for use with web-platform-tests. + +[wptserve.readthedocs.io](http://wptserve.readthedocs.io/en/latest/index.html) diff --git a/testing/web-platform/tests/tools/wptserve/tests/functional/base.py b/testing/web-platform/tests/tools/wptserve/tests/functional/base.py index eae7e87d9e1e..62d5e3253e6b 100644 --- a/testing/web-platform/tests/tools/wptserve/tests/functional/base.py +++ b/testing/web-platform/tests/tools/wptserve/tests/functional/base.py @@ -4,9 +4,10 @@ import base64 import logging import os import unittest -import urllib -import urllib2 -import urlparse + +from six.moves.urllib.parse import urlencode, urlunsplit +from six.moves.urllib.request import Request as BaseRequest +from six.moves.urllib.request import urlopen import wptserve @@ -17,9 +18,9 @@ wptserve.logger.set_logger(logging.getLogger()) here = os.path.split(__file__)[0] doc_root = os.path.join(here, "docroot") -class Request(urllib2.Request): +class Request(BaseRequest): def __init__(self, *args, **kwargs): - urllib2.Request.__init__(self, *args, **kwargs) + BaseRequest.__init__(self, *args, **kwargs) self.method = "GET" def get_method(self): @@ -27,10 +28,10 @@ class Request(urllib2.Request): def add_data(self, data): if hasattr(data, "iteritems"): - data = urllib.urlencode(data) + data = urlencode(data) print(data) self.add_header("Content-Length", str(len(data))) - urllib2.Request.add_data(self, data) + BaseRequest.add_data(self, data) class TestUsingServer(unittest.TestCase): def setUp(self): @@ -45,7 +46,7 @@ class TestUsingServer(unittest.TestCase): self.server.stop() def abs_url(self, path, query=None): - return urlparse.urlunsplit(("http", "%s:%i" % (self.server.host, self.server.port), path, query, None)) + return urlunsplit(("http", "%s:%i" % (self.server.host, self.server.port), path, query, None)) def request(self, path, query=None, method="GET", headers=None, body=None, auth=None): req = Request(self.abs_url(path, query)) @@ -62,4 +63,4 @@ class TestUsingServer(unittest.TestCase): if auth is not None: req.add_header("Authorization", "Basic %s" % base64.b64encode('%s:%s' % auth)) - return urllib2.urlopen(req) + return urlopen(req) diff --git a/testing/web-platform/tests/tools/wptserve/tests/functional/test_handlers.py b/testing/web-platform/tests/tools/wptserve/tests/functional/test_handlers.py index 9189725cb25e..f99597a43f0a 100644 --- a/testing/web-platform/tests/tools/wptserve/tests/functional/test_handlers.py +++ b/testing/web-platform/tests/tools/wptserve/tests/functional/test_handlers.py @@ -2,9 +2,10 @@ import json import os import pytest import unittest -import urllib2 import uuid +from six.moves.urllib.error import HTTPError + import wptserve from .base import TestUsingServer, doc_root @@ -74,12 +75,12 @@ class TestFileHandler(TestUsingServer): self.assertEqual(expected_part[1] + "\r\n", body) def test_range_invalid(self): - with self.assertRaises(urllib2.HTTPError) as cm: + with self.assertRaises(HTTPError) as cm: self.request("/document.txt", headers={"Range":"bytes=11-10"}) self.assertEqual(cm.exception.code, 416) expected = open(os.path.join(doc_root, "document.txt"), 'rb').read() - with self.assertRaises(urllib2.HTTPError) as cm: + with self.assertRaises(HTTPError) as cm: self.request("/document.txt", headers={"Range":"bytes=%i-%i" % (len(expected), len(expected) + 10)}) self.assertEqual(cm.exception.code, 416) @@ -120,7 +121,7 @@ class TestFunctionHandler(TestUsingServer): route = ("GET", "/test/test_tuple_1_rv", handler) self.server.router.register(*route) - with pytest.raises(urllib2.HTTPError) as cm: + with pytest.raises(HTTPError) as cm: self.request(route[1]) assert cm.value.code == 500 @@ -171,7 +172,7 @@ class TestFunctionHandler(TestUsingServer): route = ("GET", "/test/test_tuple_1_rv", handler) self.server.router.register(*route) - with pytest.raises(urllib2.HTTPError) as cm: + with pytest.raises(HTTPError) as cm: self.request(route[1]) assert cm.value.code == 500 @@ -249,19 +250,19 @@ class TestPythonHandler(TestUsingServer): self.assertEqual("PASS", resp.read()) def test_no_main(self): - with pytest.raises(urllib2.HTTPError) as cm: + with pytest.raises(HTTPError) as cm: self.request("/no_main.py") assert cm.value.code == 500 def test_invalid(self): - with pytest.raises(urllib2.HTTPError) as cm: + with pytest.raises(HTTPError) as cm: self.request("/invalid.py") assert cm.value.code == 500 def test_missing(self): - with pytest.raises(urllib2.HTTPError) as cm: + with pytest.raises(HTTPError) as cm: self.request("/missing.py") assert cm.value.code == 404 @@ -280,7 +281,7 @@ class TestDirectoryHandler(TestUsingServer): assert resp.info()["Content-Type"] == "text/html" def test_subdirectory_no_trailing_slash(self): - with pytest.raises(urllib2.HTTPError) as cm: + with pytest.raises(HTTPError) as cm: self.request("/subdir") assert cm.value.code == 404 diff --git a/testing/web-platform/tests/tools/wptserve/tests/functional/test_server.py b/testing/web-platform/tests/tools/wptserve/tests/functional/test_server.py index 7681f4412416..2646beda374f 100644 --- a/testing/web-platform/tests/tools/wptserve/tests/functional/test_server.py +++ b/testing/web-platform/tests/tools/wptserve/tests/functional/test_server.py @@ -1,12 +1,13 @@ import unittest -import urllib2 + +from six.moves.urllib.error import HTTPError import wptserve from .base import TestUsingServer class TestFileHandler(TestUsingServer): def test_not_handled(self): - with self.assertRaises(urllib2.HTTPError) as cm: + with self.assertRaises(HTTPError) as cm: resp = self.request("/not_existing") self.assertEqual(cm.exception.code, 404) @@ -32,7 +33,7 @@ class TestRequestHandler(TestUsingServer): route = ("GET", "/test/raises", handler) self.server.router.register(*route) - with self.assertRaises(urllib2.HTTPError) as cm: + with self.assertRaises(HTTPError) as cm: resp = self.request("/test/raises") self.assertEqual(cm.exception.code, 500) diff --git a/testing/web-platform/tests/tools/wptserve/tox.ini b/testing/web-platform/tests/tools/wptserve/tox.ini index 9532ca4c2b1b..0026f56e957d 100644 --- a/testing/web-platform/tests/tools/wptserve/tox.ini +++ b/testing/web-platform/tests/tools/wptserve/tox.ini @@ -6,12 +6,13 @@ deps = coverage flake8 pytest + six commands = coverage run -m pytest tests/functional flake8 [flake8] -ignore = E128,E129,E221,E226,E231,E251,E265,E302,E303,E402,E901,F821,F841 +ignore = E128,E129,E221,E226,E231,E251,E265,E302,E303,E305,E402,E901,F821,F841 max-line-length = 141 exclude=docs,.git,__pycache__,.tox,.eggs,*.egg,tests/functional/docroot/ diff --git a/testing/web-platform/tests/tools/wptserve/wptserve/handlers.py b/testing/web-platform/tests/tools/wptserve/wptserve/handlers.py index c40321dfeabb..9cc1f7341df9 100644 --- a/testing/web-platform/tests/tools/wptserve/wptserve/handlers.py +++ b/testing/web-platform/tests/tools/wptserve/wptserve/handlers.py @@ -2,8 +2,8 @@ import cgi import json import os import traceback -import urllib -import urlparse + +from six.moves.urllib.parse import parse_qs, quote, unquote, urljoin from .constants import content_types from .pipes import Pipeline, template @@ -30,7 +30,7 @@ def filesystem_path(base_path, request, url_base="/"): if base_path is None: base_path = request.doc_root - path = urllib.unquote(request.url_parts.path) + path = unquote(request.url_parts.path) if path.startswith(url_base): path = path[len(url_base):] @@ -85,11 +85,11 @@ class DirectoryHandler(object): # statically defined ones if base_path != "/": - link = urlparse.urljoin(base_path, "..") + link = urljoin(base_path, "..") yield ("""
  • %(name)s
  • """ % {"link": link, "name": ".."}) for item in sorted(os.listdir(path)): - link = cgi.escape(urllib.quote(item)) + link = cgi.escape(quote(item)) if os.path.isdir(os.path.join(path, item)): link += "/" class_ = "dir" @@ -128,7 +128,7 @@ class FileHandler(object): byte_ranges = None data = self.get_data(response, path, byte_ranges) response.content = data - query = urlparse.parse_qs(request.url_parts.query) + query = parse_qs(request.url_parts.query) pipeline = None if "pipe" in query: diff --git a/testing/web-platform/tests/tools/wptserve/wptserve/pipes.py b/testing/web-platform/tests/tools/wptserve/wptserve/pipes.py index 41f7dd33e266..95108ba7e93d 100644 --- a/testing/web-platform/tests/tools/wptserve/wptserve/pipes.py +++ b/testing/web-platform/tests/tools/wptserve/wptserve/pipes.py @@ -8,10 +8,7 @@ from cStringIO import StringIO def resolve_content(response): - rv = "".join(item for item in response.iter_content(read_file=True)) - if type(rv) == unicode: - rv = rv.encode(response.encoding) - return rv + return b"".join(item for item in response.iter_content(read_file=True)) class Pipeline(object): diff --git a/testing/web-platform/tests/tools/wptserve/wptserve/request.py b/testing/web-platform/tests/tools/wptserve/wptserve/request.py index 6b8a7cef86ef..447663469b13 100644 --- a/testing/web-platform/tests/tools/wptserve/wptserve/request.py +++ b/testing/web-platform/tests/tools/wptserve/wptserve/request.py @@ -3,7 +3,8 @@ import cgi import Cookie import StringIO import tempfile -import urlparse + +from six.moves.urllib.parse import parse_qsl, urlsplit from . import stash from .utils import HTTPException @@ -186,14 +187,6 @@ class Request(object): Absolute URL for the request. - .. attribute:: headers - - List of request headers. - - .. attribute:: raw_input - - File-like object representing the body of the request. - .. attribute:: url_parts Parts of the requested URL as obtained by urlparse.urlsplit(path) @@ -207,10 +200,18 @@ class Request(object): RequestHeaders object providing a dictionary-like representation of the request headers. + .. attribute:: raw_headers. + + Dictionary of non-normalized request headers. + .. attribute:: body Request body as a string + .. attribute:: raw_input + + File-like object representing the body of the request. + .. attribute:: GET MultiDict representing the parameters supplied with the request. @@ -265,9 +266,9 @@ class Request(object): host, port, self.request_path) - self.url_parts = urlparse.urlsplit(self.url) + self.url_parts = urlsplit(self.url) - self._raw_headers = request_handler.headers + self.raw_headers = request_handler.headers self.request_line = request_handler.raw_requestline @@ -290,7 +291,7 @@ class Request(object): @property def GET(self): if self._GET is None: - params = urlparse.parse_qsl(self.url_parts.query, keep_blank_values=True) + params = parse_qsl(self.url_parts.query, keep_blank_values=True) self._GET = MultiDict() for key, value in params: self._GET.add(key, value) @@ -325,7 +326,7 @@ class Request(object): @property def headers(self): if self._headers is None: - self._headers = RequestHeaders(self._raw_headers) + self._headers = RequestHeaders(self.raw_headers) return self._headers @property diff --git a/testing/web-platform/tests/tools/wptserve/wptserve/server.py b/testing/web-platform/tests/tools/wptserve/wptserve/server.py index 31929efd6e18..0ab512cb2a56 100644 --- a/testing/web-platform/tests/tools/wptserve/wptserve/server.py +++ b/testing/web-platform/tests/tools/wptserve/wptserve/server.py @@ -9,7 +9,8 @@ import threading import time import traceback import types -import urlparse + +from six.moves.urllib.parse import urlsplit, urlunsplit from . import routes as default_routes from .logger import get_logger @@ -89,7 +90,7 @@ class RequestRewriter(object): :param request_handler: BaseHTTPRequestHandler for which to rewrite the request. """ - split_url = urlparse.urlsplit(request_handler.path) + split_url = urlsplit(request_handler.path) if split_url.path in self.rules: methods, destination = self.rules[split_url.path] if "*" in methods or request_handler.command in methods: @@ -97,7 +98,7 @@ class RequestRewriter(object): (request_handler.path, destination)) new_url = list(split_url) new_url[2] = destination - new_url = urlparse.urlunsplit(new_url) + new_url = urlunsplit(new_url) request_handler.path = new_url @@ -456,6 +457,6 @@ class WebTestHttpd(object): if not self.started: return None - return urlparse.urlunsplit(("http" if not self.use_ssl else "https", - "%s:%s" % (self.host, self.port), - path, query, fragment)) + return urlunsplit(("http" if not self.use_ssl else "https", + "%s:%s" % (self.host, self.port), + path, query, fragment)) diff --git a/testing/web-platform/tests/typedarrays/OWNERS b/testing/web-platform/tests/typedarrays/OWNERS index f02987223e3e..c9668ec9dd25 100644 --- a/testing/web-platform/tests/typedarrays/OWNERS +++ b/testing/web-platform/tests/typedarrays/OWNERS @@ -1,4 +1,3 @@ @koustuvsinha @zqzhang @haoxli -@Ms2ger diff --git a/testing/web-platform/tests/uievents/OWNERS b/testing/web-platform/tests/uievents/OWNERS index 50802902fb8d..aa05033e7f44 100644 --- a/testing/web-platform/tests/uievents/OWNERS +++ b/testing/web-platform/tests/uievents/OWNERS @@ -1,3 +1,2 @@ @jdm @zqzhang -@Ms2ger diff --git a/testing/web-platform/tests/uievents/constructors/inputevent-constructor.html b/testing/web-platform/tests/uievents/constructors/inputevent-constructor.html index f1f5641785eb..9ade36d6a3d9 100644 --- a/testing/web-platform/tests/uievents/constructors/inputevent-constructor.html +++ b/testing/web-platform/tests/uievents/constructors/inputevent-constructor.html @@ -22,4 +22,14 @@ test(function() { test(function() { assert_equals(new InputEvent('type', { data: 'data' }).data, 'data'); }, 'InputEvent construtor with InputEventInit where data is non empty string'); + +test(function() { + const range = new StaticRange(); + range.setEnd(document, 1); + const resultRange = new InputEvent('type', { targetRanges: [range] }).getTargetRanges()[0]; + assert_equals(resultRange.startContainer, document); + assert_equals(resultRange.startOffset, 0); + assert_equals(resultRange.endContainer, document); + assert_equals(resultRange.endOffset, 1); +}, 'InputEvent construtor with InputEventInit where targetRanges is non empty list'); diff --git a/testing/web-platform/tests/url/OWNERS b/testing/web-platform/tests/url/OWNERS index bddf6d575142..34afaead3e3f 100644 --- a/testing/web-platform/tests/url/OWNERS +++ b/testing/web-platform/tests/url/OWNERS @@ -1,9 +1,9 @@ @mikewest @tomalec @rubys -@sideshowbarker @zcorpan @xiaojunwu @smola @domenic @Sebmaster +@annevk diff --git a/testing/web-platform/tests/url/failure.html b/testing/web-platform/tests/url/failure.html new file mode 100644 index 000000000000..7ffb3cbe28c7 --- /dev/null +++ b/testing/web-platform/tests/url/failure.html @@ -0,0 +1,38 @@ + + +Test URL parser failure consistency + + +
    + + diff --git a/testing/web-platform/tests/url/setters_tests.json b/testing/web-platform/tests/url/setters_tests.json index 64bda20c7a38..dbe7f7777333 100644 --- a/testing/web-platform/tests/url/setters_tests.json +++ b/testing/web-platform/tests/url/setters_tests.json @@ -39,6 +39,14 @@ "protocol": "b:" } }, + { + "href": "javascript:alert(1)", + "new_value": "defuse", + "expected": { + "href": "defuse:alert(1)", + "protocol": "defuse:" + } + }, { "comment": "Upper-case ASCII is lower-cased", "href": "a://example.net", @@ -215,6 +223,14 @@ "username": "" } }, + { + "href": "javascript:alert(1)", + "new_value": "wario", + "expected": { + "href": "javascript:alert(1)", + "username": "" + } + }, { "href": "http://example.net", "new_value": "me", @@ -273,6 +289,14 @@ "username": "" } }, + { + "href": "javascript://x/", + "new_value": "wario", + "expected": { + "href": "javascript://wario@x/", + "username": "wario" + } + }, { "href": "file://test/", "new_value": "test", @@ -368,6 +392,14 @@ "password": "" } }, + { + "href": "javascript://x/", + "new_value": "bowser", + "expected": { + "href": "javascript://:bowser@x/", + "password": "bowser" + } + }, { "href": "file://test/", "new_value": "test", @@ -460,6 +492,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", @@ -812,6 +863,16 @@ "port": "" } }, + { + "href": "file://hi/x", + "new_value": "", + "expected": { + "href": "file:///x", + "host": "", + "hostname": "", + "port": "" + } + }, { "href": "sc://test@test/", "new_value": "", @@ -1136,6 +1197,16 @@ "port": "" } }, + { + "href": "file://hi/x", + "new_value": "", + "expected": { + "href": "file:///x", + "host": "", + "hostname": "", + "port": "" + } + }, { "href": "sc://test@test/", "new_value": "", @@ -1350,6 +1421,14 @@ "href": "sc://x:12/", "port": "12" } + }, + { + "href": "javascript://x/", + "new_value": "12", + "expected": { + "href": "javascript://x:12/", + "port": "12" + } } ], "pathname": [ @@ -1609,6 +1688,14 @@ "href": "http://example.net/#%c3%89t%C3%A9", "hash": "#%c3%89t%C3%A9" } + }, + { + "href": "javascript:alert(1)", + "new_value": "castle", + "expected": { + "href": "javascript:alert(1)#castle", + "hash": "#castle" + } } ] } diff --git a/testing/web-platform/tests/url/urltestdata.json b/testing/web-platform/tests/url/urltestdata.json index 5d390c92d4ba..f6b71ff47f00 100644 --- a/testing/web-platform/tests/url/urltestdata.json +++ b/testing/web-platform/tests/url/urltestdata.json @@ -3582,7 +3582,7 @@ "base": "http://other.com/", "failure": true }, - "U+FFFD is disallowed", + "U+FFFD", { "input": "https://\ufffd", "base": "about:blank", @@ -3593,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://๏ผง๏ฝ.com", @@ -3647,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", @@ -3712,6 +3756,11 @@ "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://๏ผ๏ผธ๏ฝƒ๏ผ๏ผŽ๏ผ๏ผ’๏ผ•๏ผ๏ผŽ๏ผ๏ผ‘", @@ -4438,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/", @@ -4810,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/", @@ -4882,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", @@ -4953,6 +5048,90 @@ "search": "", "hash": "" }, + { + "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:", @@ -4996,7 +5175,7 @@ "search": "", "hash": "#frag" }, - "# IPv6 trailing zeros test", + "# IPv6 tests", { "input": "http://[1:0::]", "base": "http://example.net/", @@ -5012,16 +5191,56 @@ "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://?", "base": "about:blank", - "failure": "true" + "failure": true }, { "input": "http://#", "base": "about:blank", - "failure": "true" + "failure": true }, "# Non-special-URL path tests", { @@ -5425,5 +5644,33 @@ "input": "non-special://[:80/", "base": "about:blank", "failure": true + }, + { + "input": "blob:https://example.com:443/", + "base": "about:blank", + "href": "blob:https://example.com:443/", + "protocol": "blob:", + "username": "", + "password": "", + "host": "", + "hostname": "", + "port": "", + "pathname": "https://example.com:443/", + "search": "", + "hash": "" + }, + { + "input": "blob:d3958f5c-0777-0845-9dcf-2cb28783acaf", + "base": "about:blank", + "href": "blob:d3958f5c-0777-0845-9dcf-2cb28783acaf", + "protocol": "blob:", + "username": "", + "password": "", + "host": "", + "hostname": "", + "port": "", + "pathname": "d3958f5c-0777-0845-9dcf-2cb28783acaf", + "search": "", + "hash": "" } ] diff --git a/testing/web-platform/tests/web-animations/interfaces/AnimationEffectTiming/delay.html b/testing/web-platform/tests/web-animations/interfaces/AnimationEffectTiming/delay.html index d6e1cd904543..1b34f7dbe761 100644 --- a/testing/web-platform/tests/web-animations/interfaces/AnimationEffectTiming/delay.html +++ b/testing/web-platform/tests/web-animations/interfaces/AnimationEffectTiming/delay.html @@ -11,6 +11,11 @@ diff --git a/testing/web-platform/tests/web-animations/interfaces/AnimationEffectTiming/direction.html b/testing/web-platform/tests/web-animations/interfaces/AnimationEffectTiming/direction.html index c3657f3a09b8..957181202454 100644 --- a/testing/web-platform/tests/web-animations/interfaces/AnimationEffectTiming/direction.html +++ b/testing/web-platform/tests/web-animations/interfaces/AnimationEffectTiming/direction.html @@ -11,6 +11,11 @@ diff --git a/testing/web-platform/tests/web-animations/interfaces/AnimationEffectTiming/easing.html b/testing/web-platform/tests/web-animations/interfaces/AnimationEffectTiming/easing.html index 6c3d305c92a1..73cdf66dec49 100644 --- a/testing/web-platform/tests/web-animations/interfaces/AnimationEffectTiming/easing.html +++ b/testing/web-platform/tests/web-animations/interfaces/AnimationEffectTiming/easing.html @@ -11,6 +11,11 @@ diff --git a/testing/web-platform/tests/web-animations/interfaces/AnimationEffectTiming/iterations.html b/testing/web-platform/tests/web-animations/interfaces/AnimationEffectTiming/iterations.html index 1ba41028b225..8dfe1695643a 100644 --- a/testing/web-platform/tests/web-animations/interfaces/AnimationEffectTiming/iterations.html +++ b/testing/web-platform/tests/web-animations/interfaces/AnimationEffectTiming/iterations.html @@ -10,6 +10,11 @@ + + + + + diff --git a/testing/web-platform/tests/webdriver/actions/conftest.py b/testing/web-platform/tests/webdriver/actions/conftest.py index b51a6d4e0cf6..f5aeb894ce51 100644 --- a/testing/web-platform/tests/webdriver/actions/conftest.py +++ b/testing/web-platform/tests/webdriver/actions/conftest.py @@ -30,5 +30,5 @@ def key_reporter(session, test_actions_page, request): @pytest.fixture -def test_actions_page(session, server): - session.url = server.where_is("webdriver/actions/support/test_actions_wdspec.html") +def test_actions_page(session, url): + session.url = url("/webdriver/actions/support/test_actions_wdspec.html") diff --git a/testing/web-platform/tests/webdriver/actions/key.py b/testing/web-platform/tests/webdriver/actions/key.py index d4f313c47353..e45856c489bb 100644 --- a/testing/web-platform/tests/webdriver/actions/key.py +++ b/testing/web-platform/tests/webdriver/actions/key.py @@ -1,3 +1,5 @@ +# META: timeout=long + import pytest from support.keys import Keys diff --git a/testing/web-platform/tests/webdriver/conftest.py b/testing/web-platform/tests/webdriver/conftest.py index 8160adf6a106..d614cd1be48a 100644 --- a/testing/web-platform/tests/webdriver/conftest.py +++ b/testing/web-platform/tests/webdriver/conftest.py @@ -1,5 +1,6 @@ import json import os +import urlparse import pytest import webdriver @@ -10,6 +11,7 @@ from util.http_request import HTTPRequest default_host = "http://127.0.0.1" default_port = "4444" + @pytest.fixture(scope="session") def _session(request): host = os.environ.get("WD_HOST", default_host) @@ -26,6 +28,7 @@ def _session(request): return session + @pytest.fixture(scope="function") def session(_session, request): # finalisers are popped off a stack, @@ -36,6 +39,25 @@ def session(_session, request): return _session + @pytest.fixture(scope="function") def http(session): return HTTPRequest(session.transport.host, session.transport.port) + + +@pytest.fixture +def server_config(): + return json.loads(os.environ.get("WD_SERVER_CONFIG")) + + +@pytest.fixture +def url(server_config): + def inner(path, query="", fragment=""): + rv = urlparse.urlunsplit(("http", + "%s:%s" % (server_config["host"], + server_config["ports"]["http"][0]), + path, + query, + fragment)) + return rv + return inner diff --git a/testing/web-platform/tests/webdriver/contexts.py b/testing/web-platform/tests/webdriver/contexts.py index 7170663ef57c..88657e2e6c6d 100644 --- a/testing/web-platform/tests/webdriver/contexts.py +++ b/testing/web-platform/tests/webdriver/contexts.py @@ -25,10 +25,11 @@ def test_window_size_types(http, session): with http.get("/session/%s/window/size" % session.session_id) as resp: assert resp.status == 200 body = json.load(resp) - assert "width" in body - assert "height" in body - assert isinstance(body["width"], int) - assert isinstance(body["height"], int) + assert "value" in body + assert "width" in body["value"] + assert "height" in body["value"] + assert isinstance(body["value"]["width"], int) + assert isinstance(body["value"]["height"], int) size = session.window.size assert isinstance(size, tuple) @@ -83,10 +84,11 @@ def test_window_position_types(http, session): with http.get("/session/%s/window/position" % session.session_id) as resp: assert resp.status == 200 body = json.load(resp) - assert "x" in body - assert "y" in body - assert isinstance(body["x"], int) - assert isinstance(body["y"], int) + assert "value" in body + assert "x" in body["value"] + assert "y" in body["value"] + assert isinstance(body["value"]["x"], int) + assert isinstance(body["value"]["y"], int) pos = session.window.position assert isinstance(pos, tuple) diff --git a/testing/web-platform/tests/webdriver/navigation.py b/testing/web-platform/tests/webdriver/navigation.py index 5faba9aa1cae..53122fc45ff9 100644 --- a/testing/web-platform/tests/webdriver/navigation.py +++ b/testing/web-platform/tests/webdriver/navigation.py @@ -19,10 +19,10 @@ two_frames_doc = inline("" % one_frame_doc) @pytest.fixture def new_window(session): """Open new window and return the window handle.""" - windows_before = session.window_handles + windows_before = session.handles name = session.execute_script("window.open()") - assert len(session.window_handles) == len(windows_before) + 1 - new_windows = session.window_handles - windows_before + assert len(session.handles) == len(windows_before) + 1 + new_windows = set(session.handles) - set(windows_before) return new_windows.pop() @@ -83,8 +83,8 @@ def test_get_current_url_file_protocol(session): def test_get_current_url_malformed_url(session): - session.url = "foo" - assert session.url + with pytest.raises(webdriver.InvalidArgumentException): + session.url = "foo" def test_get_current_url_after_modified_location(session): @@ -108,6 +108,6 @@ def test_get_current_url_nested_browsing_contexts(session): session.switch_frame(outer_frame) inner_frame = session.find.css("iframe", all=False) - session.switch_frame(frame) + session.switch_frame(inner_frame) assert session.url == top_level_url diff --git a/testing/web-platform/tests/webdriver/util/cleanup.py b/testing/web-platform/tests/webdriver/util/cleanup.py index 7b2fd9543b14..c86d172550fa 100644 --- a/testing/web-platform/tests/webdriver/util/cleanup.py +++ b/testing/web-platform/tests/webdriver/util/cleanup.py @@ -21,7 +21,7 @@ def restore_windows(session): for window in _windows(session, exclude=[current_window]): session.window_handle = window - if len(session.window_handles) > 1: + if len(session.handles) > 1: session.close() session.window_handle = current_window diff --git a/testing/web-platform/tests/webgl/OWNERS b/testing/web-platform/tests/webgl/OWNERS index 0ed929edad3c..7507064ad72f 100644 --- a/testing/web-platform/tests/webgl/OWNERS +++ b/testing/web-platform/tests/webgl/OWNERS @@ -1,2 +1 @@ -@Ms2ger @emilio diff --git a/testing/web-platform/tests/webmessaging/OWNERS b/testing/web-platform/tests/webmessaging/OWNERS index b7d80e92a1db..bd7cf0bdb4c0 100644 --- a/testing/web-platform/tests/webmessaging/OWNERS +++ b/testing/web-platform/tests/webmessaging/OWNERS @@ -1,5 +1,4 @@ @zqzhang @aogilvie -@Ms2ger @jdm @mkruisselbrink diff --git a/testing/web-platform/tests/webrtc/rtcpeerconnection/setRemoteDescription.html b/testing/web-platform/tests/webrtc/rtcpeerconnection/setRemoteDescription.html new file mode 100644 index 000000000000..4557fcbf82fa --- /dev/null +++ b/testing/web-platform/tests/webrtc/rtcpeerconnection/setRemoteDescription.html @@ -0,0 +1,56 @@ + + + + + RTCPeerConnection setRemoteDescription tests + + + + + + + + + diff --git a/testing/web-platform/tests/websockets/OWNERS b/testing/web-platform/tests/websockets/OWNERS index 7c26b48d35e7..705040182a27 100644 --- a/testing/web-platform/tests/websockets/OWNERS +++ b/testing/web-platform/tests/websockets/OWNERS @@ -3,4 +3,3 @@ @zqzhang @Jxck @jdm -@Ms2ger diff --git a/testing/web-platform/tests/webstorage/OWNERS b/testing/web-platform/tests/webstorage/OWNERS index ccd94c4f3329..269ff9e368b3 100644 --- a/testing/web-platform/tests/webstorage/OWNERS +++ b/testing/web-platform/tests/webstorage/OWNERS @@ -5,4 +5,3 @@ @kangxu @ibelem @jdm -@Ms2ger diff --git a/testing/web-platform/tests/webstorage/event_no_duplicates.html b/testing/web-platform/tests/webstorage/event_no_duplicates.html new file mode 100644 index 000000000000..149e201c7dd7 --- /dev/null +++ b/testing/web-platform/tests/webstorage/event_no_duplicates.html @@ -0,0 +1,111 @@ + + +WebStorage Test: StorageEvent - only if something changes + + + + + + + diff --git a/testing/web-platform/tests/webvtt/OWNERS b/testing/web-platform/tests/webvtt/OWNERS index 0ea4adb9056b..3bdec87b9c00 100644 --- a/testing/web-platform/tests/webvtt/OWNERS +++ b/testing/web-platform/tests/webvtt/OWNERS @@ -1,3 +1,2 @@ -@r12a @silviapfeiffer @zcorpan diff --git a/testing/web-platform/tests/webvtt/webvtt-api-for-browsers/vttcue-interface/align.html b/testing/web-platform/tests/webvtt/api/VTTCue/align.html similarity index 71% rename from testing/web-platform/tests/webvtt/webvtt-api-for-browsers/vttcue-interface/align.html rename to testing/web-platform/tests/webvtt/api/VTTCue/align.html index dcae64fcabad..f06a172bf77c 100644 --- a/testing/web-platform/tests/webvtt/webvtt-api-for-browsers/vttcue-interface/align.html +++ b/testing/web-platform/tests/webvtt/api/VTTCue/align.html @@ -1,5 +1,6 @@ VTTCue.align +
    @@ -7,22 +8,33 @@ test(function(){ var video = document.createElement('video'); document.body.appendChild(video); - var c1 = new VTTCue(0, 1, 'text1'); - assert_equals(c1.align, 'center'); + + var cue = new VTTCue(0, 1, 'text'); + assert_true('align' in cue, 'align is not supported'); + assert_equals(cue.align, 'center'); + var track = document.createElement('track'); var t = track.track; - t.addCue(c1); - assert_equals(c1.align, 'center'); + t.addCue(cue); + + assert_equals(cue.align, 'center'); + video.appendChild(track); - assert_equals(c1.align, 'center'); + assert_equals(cue.align, 'center'); + t.mode = 'showing'; - assert_equals(c1.align, 'center'); - c1.align = 'start'; - assert_equals(c1.align, 'start'); - c1.align = 'end'; - assert_equals(c1.align, 'end'); - c1.align = 'start\u0000'; - assert_equals(c1.align, 'end'); + assert_equals(cue.align, 'center'); + + cue.align = 'start'; + assert_equals(cue.align, 'start'); + + cue.align = 'end'; + assert_equals(cue.align, 'end'); + + ['start\u0000', 'centre', 'middle'].forEach(function(invalid) { + cue.align = invalid; + assert_equals(cue.align, 'end'); + }); }, document.title+', script-created cue'); var t_parsed = async_test(document.title+', parsed cue'); diff --git a/testing/web-platform/tests/webvtt/api/VTTCue/constructor.html b/testing/web-platform/tests/webvtt/api/VTTCue/constructor.html new file mode 100644 index 000000000000..255ee8c7d319 --- /dev/null +++ b/testing/web-platform/tests/webvtt/api/VTTCue/constructor.html @@ -0,0 +1,49 @@ + +VTTCue() + + + +
    + diff --git a/testing/web-platform/tests/webvtt/webvtt-api-for-browsers/vttcue-interface/getCueAsHTML.html b/testing/web-platform/tests/webvtt/api/VTTCue/getCueAsHTML.html similarity index 98% rename from testing/web-platform/tests/webvtt/webvtt-api-for-browsers/vttcue-interface/getCueAsHTML.html rename to testing/web-platform/tests/webvtt/api/VTTCue/getCueAsHTML.html index a253cc7396da..2f07d3aa0ada 100644 --- a/testing/web-platform/tests/webvtt/webvtt-api-for-browsers/vttcue-interface/getCueAsHTML.html +++ b/testing/web-platform/tests/webvtt/api/VTTCue/getCueAsHTML.html @@ -1,5 +1,6 @@ VTTCue.getCueAsHTML() +
    diff --git a/testing/web-platform/tests/webvtt/webvtt-api-for-browsers/vttcue-interface/line.html b/testing/web-platform/tests/webvtt/api/VTTCue/line.html similarity index 94% rename from testing/web-platform/tests/webvtt/webvtt-api-for-browsers/vttcue-interface/line.html rename to testing/web-platform/tests/webvtt/api/VTTCue/line.html index 88e360246978..e0c4ddc143d4 100644 --- a/testing/web-platform/tests/webvtt/webvtt-api-for-browsers/vttcue-interface/line.html +++ b/testing/web-platform/tests/webvtt/api/VTTCue/line.html @@ -1,5 +1,6 @@ VTTCue.line +
    @@ -8,6 +9,7 @@ test(function(){ var video = document.createElement('video'); document.body.appendChild(video); var c1 = new VTTCue(0, 1, 'text1'); + assert_true('line' in c1, 'line is not supported'); assert_equals(c1.line, "auto"); var track = document.createElement('track'); var t = track.track; diff --git a/testing/web-platform/tests/webvtt/api/VTTCue/lineAlign.html b/testing/web-platform/tests/webvtt/api/VTTCue/lineAlign.html new file mode 100644 index 000000000000..7be0d540e137 --- /dev/null +++ b/testing/web-platform/tests/webvtt/api/VTTCue/lineAlign.html @@ -0,0 +1,39 @@ + +VTTCue.lineAlign + + + +
    + diff --git a/testing/web-platform/tests/webvtt/api/VTTCue/position.html b/testing/web-platform/tests/webvtt/api/VTTCue/position.html new file mode 100644 index 000000000000..4bbf54ea7b3e --- /dev/null +++ b/testing/web-platform/tests/webvtt/api/VTTCue/position.html @@ -0,0 +1,32 @@ + +VTTCue.position + + + +
    + diff --git a/testing/web-platform/tests/webvtt/api/VTTCue/positionAlign.html b/testing/web-platform/tests/webvtt/api/VTTCue/positionAlign.html new file mode 100644 index 000000000000..bde1c6eee7b0 --- /dev/null +++ b/testing/web-platform/tests/webvtt/api/VTTCue/positionAlign.html @@ -0,0 +1,23 @@ + +VTTCue.positionAlign + + + +
    + diff --git a/testing/web-platform/tests/webvtt/api/VTTCue/region.html b/testing/web-platform/tests/webvtt/api/VTTCue/region.html new file mode 100644 index 000000000000..ae51c5f6039c --- /dev/null +++ b/testing/web-platform/tests/webvtt/api/VTTCue/region.html @@ -0,0 +1,38 @@ + +VTTCue.region + + + +
    + diff --git a/testing/web-platform/tests/webvtt/api/VTTCue/size.html b/testing/web-platform/tests/webvtt/api/VTTCue/size.html new file mode 100644 index 000000000000..26a26f0a8c00 --- /dev/null +++ b/testing/web-platform/tests/webvtt/api/VTTCue/size.html @@ -0,0 +1,26 @@ + +VTTCue.size + + + +
    + diff --git a/testing/web-platform/tests/webvtt/webvtt-api-for-browsers/vttcue-interface/snapToLines.html b/testing/web-platform/tests/webvtt/api/VTTCue/snapToLines.html similarity index 95% rename from testing/web-platform/tests/webvtt/webvtt-api-for-browsers/vttcue-interface/snapToLines.html rename to testing/web-platform/tests/webvtt/api/VTTCue/snapToLines.html index c28b9d064e2b..ac9f843dbba7 100644 --- a/testing/web-platform/tests/webvtt/webvtt-api-for-browsers/vttcue-interface/snapToLines.html +++ b/testing/web-platform/tests/webvtt/api/VTTCue/snapToLines.html @@ -1,5 +1,6 @@ VTTCue.snapToLines +
    @@ -11,6 +12,7 @@ setup(function(){ }); test(function(){ var c1 = new VTTCue(0, 1, 'text1'); + assert_true('snapToLines' in c1, 'snapToLines is not supported'); assert_true(c1.snapToLines); c1.line = 101; c1.snapToLines = false; diff --git a/testing/web-platform/tests/webvtt/webvtt-api-for-browsers/vttcue-interface/text.html b/testing/web-platform/tests/webvtt/api/VTTCue/text.html similarity index 91% rename from testing/web-platform/tests/webvtt/webvtt-api-for-browsers/vttcue-interface/text.html rename to testing/web-platform/tests/webvtt/api/VTTCue/text.html index ec317f82851f..54a0890b5aab 100644 --- a/testing/web-platform/tests/webvtt/webvtt-api-for-browsers/vttcue-interface/text.html +++ b/testing/web-platform/tests/webvtt/api/VTTCue/text.html @@ -1,5 +1,6 @@ VTTCue.text +
    @@ -11,6 +12,7 @@ setup(function(){ }); test(function(){ var c1 = new VTTCue(0, 1, 'text1\r\n\n\u0000'); + assert_true('text' in cue, 'text is not supported'); assert_equals(c1.text, 'text1\r\n\n\u0000'); c1.text = c1.text; assert_equals(c1.text, 'text1\r\n\n\u0000'); diff --git a/testing/web-platform/tests/webvtt/webvtt-api-for-browsers/vttcue-interface/vertical.html b/testing/web-platform/tests/webvtt/api/VTTCue/vertical.html similarity index 93% rename from testing/web-platform/tests/webvtt/webvtt-api-for-browsers/vttcue-interface/vertical.html rename to testing/web-platform/tests/webvtt/api/VTTCue/vertical.html index 51fd169ba424..63ca161c8225 100644 --- a/testing/web-platform/tests/webvtt/webvtt-api-for-browsers/vttcue-interface/vertical.html +++ b/testing/web-platform/tests/webvtt/api/VTTCue/vertical.html @@ -1,5 +1,6 @@ VTTCue.vertical +
    @@ -13,6 +14,7 @@ test(function(){ var video = document.createElement('video'); document.body.appendChild(video); var c1 = new VTTCue(0, 1, 'text1'); + assert_true('vertical' in c1, 'vertical is not supported'); assert_equals(c1.vertical, ''); var track = document.createElement('track'); var t = track.track; diff --git a/testing/web-platform/tests/webvtt/api/VTTRegion/constructor.html b/testing/web-platform/tests/webvtt/api/VTTRegion/constructor.html new file mode 100644 index 000000000000..53c19688e424 --- /dev/null +++ b/testing/web-platform/tests/webvtt/api/VTTRegion/constructor.html @@ -0,0 +1,18 @@ + +VTTRegion() + + + +
    + diff --git a/testing/web-platform/tests/webvtt/api/VTTRegion/lines.html b/testing/web-platform/tests/webvtt/api/VTTRegion/lines.html new file mode 100644 index 000000000000..a9be61067548 --- /dev/null +++ b/testing/web-platform/tests/webvtt/api/VTTRegion/lines.html @@ -0,0 +1,37 @@ + +VTTRegion.lines + + + +
    + diff --git a/testing/web-platform/tests/webvtt/api/VTTRegion/regionAnchorX.html b/testing/web-platform/tests/webvtt/api/VTTRegion/regionAnchorX.html new file mode 100644 index 000000000000..acdb9ef239e9 --- /dev/null +++ b/testing/web-platform/tests/webvtt/api/VTTRegion/regionAnchorX.html @@ -0,0 +1,26 @@ + +VTTRegion.regionAnchorX + + + +
    + diff --git a/testing/web-platform/tests/webvtt/api/VTTRegion/regionAnchorY.html b/testing/web-platform/tests/webvtt/api/VTTRegion/regionAnchorY.html new file mode 100644 index 000000000000..9e4728846c81 --- /dev/null +++ b/testing/web-platform/tests/webvtt/api/VTTRegion/regionAnchorY.html @@ -0,0 +1,26 @@ + +VTTRegion.regionAnchorY + + + +
    + diff --git a/testing/web-platform/tests/webvtt/api/VTTRegion/scroll.html b/testing/web-platform/tests/webvtt/api/VTTRegion/scroll.html new file mode 100644 index 000000000000..63dc50ab450f --- /dev/null +++ b/testing/web-platform/tests/webvtt/api/VTTRegion/scroll.html @@ -0,0 +1,27 @@ + +VTTRegion.scroll + + + +
    + diff --git a/testing/web-platform/tests/webvtt/api/VTTRegion/viewportAnchorX.html b/testing/web-platform/tests/webvtt/api/VTTRegion/viewportAnchorX.html new file mode 100644 index 000000000000..8adf7ba02a5a --- /dev/null +++ b/testing/web-platform/tests/webvtt/api/VTTRegion/viewportAnchorX.html @@ -0,0 +1,26 @@ + +VTTRegion.viewportAnchorX + + + +
    + diff --git a/testing/web-platform/tests/webvtt/api/VTTRegion/viewportAnchorY.html b/testing/web-platform/tests/webvtt/api/VTTRegion/viewportAnchorY.html new file mode 100644 index 000000000000..cdbe793f6677 --- /dev/null +++ b/testing/web-platform/tests/webvtt/api/VTTRegion/viewportAnchorY.html @@ -0,0 +1,26 @@ + +VTTRegion.viewportAnchorY + + + +
    + diff --git a/testing/web-platform/tests/webvtt/api/VTTRegion/width.html b/testing/web-platform/tests/webvtt/api/VTTRegion/width.html new file mode 100644 index 000000000000..fdc663f86a7f --- /dev/null +++ b/testing/web-platform/tests/webvtt/api/VTTRegion/width.html @@ -0,0 +1,26 @@ + +VTTRegion.width + + + +
    + diff --git a/testing/web-platform/tests/webvtt/parsing/README.md b/testing/web-platform/tests/webvtt/parsing/README.md new file mode 100644 index 000000000000..e789c1657b39 --- /dev/null +++ b/testing/web-platform/tests/webvtt/parsing/README.md @@ -0,0 +1,9 @@ +# Parsing Tests + +Tests the [parsing section of the WebVTT spec.](https://w3c.github.io/webvtt/#parsing) + +Tests for [file parsing](https://w3c.github.io/webvtt/#file-parsing) are located +in `file-parsing/`. + +Tests for [cue text parsing](https://w3c.github.io/webvtt/#cue-text-parsing-rules) +are located in `cue-text-parsing/` diff --git a/testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-cue-text-parsing-rules/buildtests.py b/testing/web-platform/tests/webvtt/parsing/cue-text-parsing/buildtests.py similarity index 100% rename from testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-cue-text-parsing-rules/buildtests.py rename to testing/web-platform/tests/webvtt/parsing/cue-text-parsing/buildtests.py diff --git a/testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-cue-text-parsing-rules/common.js b/testing/web-platform/tests/webvtt/parsing/cue-text-parsing/common.js similarity index 100% rename from testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-cue-text-parsing-rules/common.js rename to testing/web-platform/tests/webvtt/parsing/cue-text-parsing/common.js diff --git a/testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-cue-text-parsing-rules/dat/entities.dat b/testing/web-platform/tests/webvtt/parsing/cue-text-parsing/dat/entities.dat similarity index 100% rename from testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-cue-text-parsing-rules/dat/entities.dat rename to testing/web-platform/tests/webvtt/parsing/cue-text-parsing/dat/entities.dat diff --git a/testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-cue-text-parsing-rules/dat/tags.dat b/testing/web-platform/tests/webvtt/parsing/cue-text-parsing/dat/tags.dat similarity index 100% rename from testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-cue-text-parsing-rules/dat/tags.dat rename to testing/web-platform/tests/webvtt/parsing/cue-text-parsing/dat/tags.dat diff --git a/testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-cue-text-parsing-rules/dat/timestamps.dat b/testing/web-platform/tests/webvtt/parsing/cue-text-parsing/dat/timestamps.dat similarity index 100% rename from testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-cue-text-parsing-rules/dat/timestamps.dat rename to testing/web-platform/tests/webvtt/parsing/cue-text-parsing/dat/timestamps.dat diff --git a/testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-cue-text-parsing-rules/dat/tree-building.dat b/testing/web-platform/tests/webvtt/parsing/cue-text-parsing/dat/tree-building.dat similarity index 100% rename from testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-cue-text-parsing-rules/dat/tree-building.dat rename to testing/web-platform/tests/webvtt/parsing/cue-text-parsing/dat/tree-building.dat diff --git a/testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-cue-text-parsing-rules/tests/entities.html b/testing/web-platform/tests/webvtt/parsing/cue-text-parsing/tests/entities.html similarity index 100% rename from testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-cue-text-parsing-rules/tests/entities.html rename to testing/web-platform/tests/webvtt/parsing/cue-text-parsing/tests/entities.html diff --git a/testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-cue-text-parsing-rules/tests/tags.html b/testing/web-platform/tests/webvtt/parsing/cue-text-parsing/tests/tags.html similarity index 100% rename from testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-cue-text-parsing-rules/tests/tags.html rename to testing/web-platform/tests/webvtt/parsing/cue-text-parsing/tests/tags.html diff --git a/testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-cue-text-parsing-rules/tests/timestamps.html b/testing/web-platform/tests/webvtt/parsing/cue-text-parsing/tests/timestamps.html similarity index 100% rename from testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-cue-text-parsing-rules/tests/timestamps.html rename to testing/web-platform/tests/webvtt/parsing/cue-text-parsing/tests/timestamps.html diff --git a/testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-cue-text-parsing-rules/tests/tree-building.html b/testing/web-platform/tests/webvtt/parsing/cue-text-parsing/tests/tree-building.html similarity index 100% rename from testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-cue-text-parsing-rules/tests/tree-building.html rename to testing/web-platform/tests/webvtt/parsing/cue-text-parsing/tests/tree-building.html diff --git a/testing/web-platform/tests/webvtt/parsing/file-parsing/README.md b/testing/web-platform/tests/webvtt/parsing/file-parsing/README.md new file mode 100644 index 000000000000..4cff0af95209 --- /dev/null +++ b/testing/web-platform/tests/webvtt/parsing/file-parsing/README.md @@ -0,0 +1,52 @@ +# Tests for http://w3c.github.io/webvtt/#file-parsing + +Tests that expect an 'error' event (due to invalid signature) are: + +```bash +./signature-invalid.html +./support/*.vtt +``` + +Other tests are generated from source files with a custom format. The source files are: + +```bash +./support/*.test +``` + +## .test Format + +* The first line is the title of the test. +* Subsequent lines until a blank line contain HTML metadata. +* Subsequent lines until a `===` line contains JS assertions. +* Finally the WebVTT file. Special characters can be escaped using python3 escape sequences: `\x00`, `\r`. + +## Building Tests + +Requirements: Python 3.2 or newer + +```bash +$ python3 tools/build.py +``` + +## Spec Coverage Report + +There is also a python implementation of the WebVTT file parser algorithm and a +script to create a test coverage report of this implementation, under `tools/`. + +Requirements: +* Python 3.2 or newer +* [Coverage.py](https://pypi.python.org/pypi/coverage) + +Installing Coverage.py using [pip](https://pypi.python.org/pypi/pip). + +```bash +$ pip3 install coverage +``` + +Generating the report: + +```bash +$ python3 spec_report.py +``` + +Will output `report.html`. diff --git a/testing/web-platform/tests/webvtt/parsing/file-parsing/signature-invalid.html b/testing/web-platform/tests/webvtt/parsing/file-parsing/signature-invalid.html new file mode 100644 index 000000000000..62ee90828f98 --- /dev/null +++ b/testing/web-platform/tests/webvtt/parsing/file-parsing/signature-invalid.html @@ -0,0 +1,49 @@ + +WebVTT parser test: invalid signatures + + + +
    + diff --git a/testing/web-platform/tests/webvtt/parsing/file-parsing/support/arrows.test b/testing/web-platform/tests/webvtt/parsing/file-parsing/support/arrows.test new file mode 100644 index 000000000000..72207a241704 --- /dev/null +++ b/testing/web-platform/tests/webvtt/parsing/file-parsing/support/arrows.test @@ -0,0 +1,38 @@ +arrows + + +assert_equals(cues.length, 6); + +for (var i = 0; i < cues.length; i++) { + assert_equals(cues[i].id, '', 'Failed with cue ' + i); + assert_equals(cues[i].text, 'text' + i, 'Failed with cue ' + i); +} + +=== +WEBVTT + +--> +00:00:00.000 --> 00:00:01.000 +text0 +foo--> +00:00:00.000 --> 00:00:01.000 +text1 +-->foo +00:00:00.000 --> 00:00:01.000 +text2 +---> +00:00:00.000 --> 00:00:01.000 +text3 +-->--> +00:00:00.000 --> 00:00:01.000 +text4 +00:00:00.000 --> 00:00:01.000 +text5 + +00:00:00.000 -a --> + +00:00:00.000 --a --> + +00:00:00.000 - --> + +00:00:00.000 -- --> diff --git a/testing/web-platform/tests/webvtt/parsing/file-parsing/support/empty.vtt b/testing/web-platform/tests/webvtt/parsing/file-parsing/support/empty.vtt new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/testing/web-platform/tests/webvtt/parsing/file-parsing/support/header-garbage.test b/testing/web-platform/tests/webvtt/parsing/file-parsing/support/header-garbage.test new file mode 100644 index 000000000000..a8714aae91a7 --- /dev/null +++ b/testing/web-platform/tests/webvtt/parsing/file-parsing/support/header-garbage.test @@ -0,0 +1,15 @@ +header, garbage + + +assert_equals(cues.length, 1); + +assert_equals(cues[0].text, 'text'); +assert_equals(cues[0].startTime, 0); +assert_equals(cues[0].endTime, 1); + +=== +WEBVTT +foobar + +00:00:00.000 --> 00:00:01.000 +text \ No newline at end of file diff --git a/testing/web-platform/tests/webvtt/parsing/file-parsing/support/header-space.test b/testing/web-platform/tests/webvtt/parsing/file-parsing/support/header-space.test new file mode 100644 index 000000000000..3b2fa7dc90d5 --- /dev/null +++ b/testing/web-platform/tests/webvtt/parsing/file-parsing/support/header-space.test @@ -0,0 +1,14 @@ +header, space + + +assert_equals(cues.length, 1); + +assert_equals(cues[0].text, 'text'); +assert_equals(cues[0].startTime, 0); +assert_equals(cues[0].endTime, 1); + +=== +WEBVTT +\x20 +00:00:00.000 --> 00:00:01.000 +text \ No newline at end of file diff --git a/testing/web-platform/tests/webvtt/parsing/file-parsing/support/header-tab.test b/testing/web-platform/tests/webvtt/parsing/file-parsing/support/header-tab.test new file mode 100644 index 000000000000..91892d614ab6 --- /dev/null +++ b/testing/web-platform/tests/webvtt/parsing/file-parsing/support/header-tab.test @@ -0,0 +1,14 @@ +header, tab + + +assert_equals(cues.length, 1); + +assert_equals(cues[0].text, 'text'); +assert_equals(cues[0].startTime, 0); +assert_equals(cues[0].endTime, 1); + +=== +WEBVTT +\t +00:00:00.000 --> 00:00:01.000 +text diff --git a/testing/web-platform/tests/webvtt/parsing/file-parsing/support/header-timings.test b/testing/web-platform/tests/webvtt/parsing/file-parsing/support/header-timings.test new file mode 100644 index 000000000000..c3348e43f844 --- /dev/null +++ b/testing/web-platform/tests/webvtt/parsing/file-parsing/support/header-timings.test @@ -0,0 +1,13 @@ +header, timings + + +assert_equals(cues.length, 1); + +assert_equals(cues[0].text, 'text'); +assert_equals(cues[0].startTime, 0); +assert_equals(cues[0].endTime, 1); + +=== +WEBVTT +00:00:00.000 --> 00:00:01.000 +text \ No newline at end of file diff --git a/testing/web-platform/tests/webvtt/parsing/file-parsing/support/ids.test b/testing/web-platform/tests/webvtt/parsing/file-parsing/support/ids.test new file mode 100644 index 000000000000..135f1c6abc76 --- /dev/null +++ b/testing/web-platform/tests/webvtt/parsing/file-parsing/support/ids.test @@ -0,0 +1,32 @@ +ids + + +assert_equals(cues.length, 5); +assert_equals(cues[0].id, " leading space"); +assert_equals(cues[1].id, "trailing space "); +assert_equals(cues[2].id, "-- >"); +assert_equals(cues[3].id, "->"); +assert_equals(cues[4].id, " "); + +=== +WEBVTT + +\x20leading space +00:00:00.000 --> 00:00:01.000 +text0 + +trailing space\x20 +00:00:00.000 --> 00:00:01.000 +text1 + +-- > +00:00:00.000 --> 00:00:01.000 +text2 + +-> +00:00:00.000 --> 00:00:01.000 +text3 + +\x20 +00:00:00.000 --> 00:00:01.000 +text4 diff --git a/testing/web-platform/tests/webvtt/parsing/file-parsing/support/newlines.test b/testing/web-platform/tests/webvtt/parsing/file-parsing/support/newlines.test new file mode 100644 index 000000000000..2d10536b68e2 --- /dev/null +++ b/testing/web-platform/tests/webvtt/parsing/file-parsing/support/newlines.test @@ -0,0 +1,36 @@ +newlines + + +assert_equals(cues.length, 4); + +assert_equals(cues[0].id, "cr"); +assert_equals(cues[0].text, "text0"); + +assert_equals(cues[1].id, "lf"); +assert_equals(cues[1].text, "text1"); + +assert_equals(cues[2].id, "crlf"); +assert_equals(cues[2].text, "text2"); + +assert_equals(cues[3].id, "lfcr"); +assert_equals(cues[3].text, "text3"); + +=== +WEBVTT\r\ +\r\ +cr\r\ +00:00:00.000 --> 00:00:01.000\r\ +text0\n\ +\n\ +lf\n\ +00:00:00.000 --> 00:00:01.000\n\ +text1\r\n\ +\r\n\ +crlf\r\n\ +00:00:00.000 --> 00:00:01.000\r\n\ +text2\n\ +\r\ +lfcr\r\ +00:00:00.000 --> 00:00:01.000\n\ +text3\n\ +\r diff --git a/testing/web-platform/tests/webvtt/parsing/file-parsing/support/nulls.test b/testing/web-platform/tests/webvtt/parsing/file-parsing/support/nulls.test new file mode 100644 index 000000000000..02450ce5c434 --- /dev/null +++ b/testing/web-platform/tests/webvtt/parsing/file-parsing/support/nulls.test @@ -0,0 +1,232 @@ +nulls + + +assert_equals(cues.length, 7, cues); + +assert_equals(cues[0].id, ""); +assert_equals(cues[0].text, "text0"); + +assert_equals(cues[1].id, "\uFFFD (null in id)"); +assert_equals(cues[1].text, "text1"); + +assert_equals(cues[2].id, "\uFFFD (null in cue data)"); +assert_equals(cues[2].text, "\uFFFDtext\uFFFD2"); + +assert_equals(cues[3].align, "center"); +assert_equals(cues[3].text, "text3"); + +assert_equals(cues[4].align, "center"); +assert_equals(cues[4].text, "text4"); + +assert_equals(cues[5].align, "center"); +assert_equals(cues[5].text, "text5"); + +assert_equals(cues[6].align, "end"); +assert_equals(cues[6].text, "text6"); + +=== +WEBVTT +\x00 +(null in previous line should make this line also part of the header) +00:00:00.000 --> 00:00:01.000 +text0 + +\x00 (null in id) +00:00:00.000 --> 00:00:01.000 +text1 + +\uFFFD (null in cue data) +00:00:00.000 --> 00:00:01.000 +\uFFFDtext\x002 + +00:00:00.000 --> 00:00:01.000 align\x00:end +text3 + +00:00:00.000 --> 00:00:01.000 align:end\x00 +text4 + +00:00:00.000 --> 00:00:01.000\x00align:end +text5 + +00:00:00.000 --> 00:00:01.000\x00 align:end +text6 + +00:00:00.000\x00 --> 00:00:01.000 +invalid + +00:00:00.000 -->\x0000:00:01.000 +invalid + +\x0000:00:00.000 --> 00:00:01.000 +invalid + +0\x000:00:00.000 --> 00:00:01.000 +invalid + +00\x00:00:00.000 --> 00:00:01.000 +invalid + +00:\x0000:00.000 --> 00:00:01.000 +invalid + +00:0\x000:00.000 --> 00:00:01.000 +invalid + +00:00\x00:00.000 --> 00:00:01.000 +invalid + +00:00:\x0000.000 --> 00:00:01.000 +invalid + +00:00:0\x000.000 --> 00:00:01.000 +invalid + +00:00:00\x00.000 --> 00:00:01.000 +invalid + +00:00:00.\x00000 --> 00:00:01.000 +invalid + +00:00:00.0\x0000 --> 00:00:01.000 +invalid + +00:00:00.00\x000 --> 00:00:01.000 +invalid + +00:00:00.000\x00 --> 00:00:01.000 +invalid + +00:00:00.000 \x00--> 00:00:01.000 +invalid + +00:00:00.000 -\x00-> 00:00:01.000 +invalid + +00:00:00.000 --\x00> 00:00:01.000 +invalid + +00:00:00.000 -->\x00 00:00:01.000 +invalid + +00:00:00.000 --> \x0000:00:01.000 +invalid + +00:00:00.000 --> 0\x000:00:01.000 +invalid + +00:00:00.000 --> 00\x00:00:01.000 +invalid + +00:00:00.000 --> 00:\x0000:01.000 +invalid + +00:00:00.000 --> 00:0\x000:01.000 +invalid + +00:00:00.000 --> 00:00\x00:01.000 +invalid + +00:00:00.000 --> 00:00:\x0001.000 +invalid + +00:00:00.000 --> 00:00:0\x001.000 +invalid + +00:00:00.000 --> 00:00:01\x00.000 +invalid + +00:00:00.000 --> 00:00:01.\x00000 +invalid + +00:00:00.000 --> 00:00:01.0\x0000 +invalid + +00:00:00.000 --> 00:00:01.00\x000 +invalid + +\x000:00:00.000 --> 00:00:01.000 +invalid + +0\x00:00:00.000 --> 00:00:01.000 +invalid + +00\x0000:00.000 --> 00:00:01.000 +invalid + +00:\x000:00.000 --> 00:00:01.000 +invalid + +00:0\x00:00.000 --> 00:00:01.000 +invalid + +00:00\x0000.000 --> 00:00:01.000 +invalid + +00:00:\x000.000 --> 00:00:01.000 +invalid + +00:00:0\x00.000 --> 00:00:01.000 +invalid + +00:00:00\x00000 --> 00:00:01.000 +invalid + +00:00:00.\x0000 --> 00:00:01.000 +invalid + +00:00:00.0\x000 --> 00:00:01.000 +invalid + +00:00:00.00\x00 --> 00:00:01.000 +invalid + +00:00:00.000\x00--> 00:00:01.000 +invalid + +00:00:00.000 \x00-> 00:00:01.000 +invalid + +00:00:00.000 -\x00> 00:00:01.000 +invalid + +00:00:00.000 --\x00 00:00:01.000 +invalid + +00:00:00.000 -->\x0000:00:01.000 +invalid + +00:00:00.000 --> \x000:00:01.000 +invalid + +00:00:00.000 --> 0\x00:00:01.000 +invalid + +00:00:00.000 --> 00\x0000:01.000 +invalid + +00:00:00.000 --> 00:\x000:01.000 +invalid + +00:00:00.000 --> 00:0\x00:01.000 +invalid + +00:00:00.000 --> 00:00\x0001.000 +invalid + +00:00:00.000 --> 00:00:\x001.000 +invalid + +00:00:00.000 --> 00:00:0\x00.000 +invalid + +00:00:00.000 --> 00:00:01\x00000 +invalid + +00:00:00.000 --> 00:00:01.\x0000 +invalid + +00:00:00.000 --> 00:00:01.0\x000 +invalid + +00:00:00.000 --> 00:00:01.00\x00 +invalid diff --git a/testing/web-platform/tests/webvtt/parsing/file-parsing/support/regions-id.test b/testing/web-platform/tests/webvtt/parsing/file-parsing/support/regions-id.test new file mode 100644 index 000000000000..b611f84371bf --- /dev/null +++ b/testing/web-platform/tests/webvtt/parsing/file-parsing/support/regions-id.test @@ -0,0 +1,52 @@ +regions, id + + +assert_equals(cues.length, 4); + +var region1 = cues[0].region; +assert_equals(region1.lines, 2); + +var region2 = cues[1].region; +assert_equals(region2.lines, 1); + +var region3 = cues[2].region; +assert_equals(region3.lines, 3); + +var region4 = cues[3].region; +assert_equals(region4.lines, 4); + +=== +WEBVTT + +NOTE No API for accessing region ids, so using lines to uniquely identify regions + +REGION +id:foo +id:bar +lines:1 + +REGION +id:bar id:foo +lines:2 + +REGION +id:id +id: foo +id :bar +lines:3 + +REGION +id:\v +lines:4 + +00:00:00.000 --> 00:00:01.000 region:foo +valid + +00:00:00.000 --> 00:00:01.000 region:bar +valid + +00:00:00.000 --> 00:00:01.000 region:id +valid + +00:00:00.000 --> 00:00:01.000 region:\v +valid diff --git a/testing/web-platform/tests/webvtt/parsing/file-parsing/support/regions-lines.test b/testing/web-platform/tests/webvtt/parsing/file-parsing/support/regions-lines.test new file mode 100644 index 000000000000..a492a5448c36 --- /dev/null +++ b/testing/web-platform/tests/webvtt/parsing/file-parsing/support/regions-lines.test @@ -0,0 +1,129 @@ +regions, lines + + +assert_equals(cues.length, 13); + +var regions = Array.from(cues).map(function(cue) { + return cue.region; +}); + +var valid_lines = [ + 0, + 1, + 100, + 101, + 65536, + 4294967296, + 18446744073709552000, + 10000000000000000000000000000000000, + 2, +]; +valid_lines.forEach(function(valid, index) { + assert_equals(regions[index].lines, valid, 'Failed with region ' + index); +}); + +for (var i = 0; i < 4; i++) { + var index = valid_lines.length + i; + + assert_equals(regions[index].lines, 3, 'Failed with region ' + index); +} + +=== +WEBVTT + +NOTE valid + +REGION +id:1 +lines:0 + +REGION +id:2 +lines:1 + +REGION +id:3 +lines:100 + +REGION +id:4 +lines:101 + +REGION +id:5 +lines:65536 + +REGION +id:6 +lines:4294967296 + +REGION +id:7 +lines:18446744073709552000 + +REGION +id:8 +lines:10000000000000000000000000000000000 + +REGION +id:9 +lines:1 lines:3 +lines:2 + +NOTE invalid + +REGION +id:10 +lines:-0 + +REGION +id:11 +lines:1.5 + +REGION +id:12 +lines:-1 + +REGION +id:13 +lines: 1 +lines :1 + +00:00:00.000 --> 00:00:01.000 region:1 +text + +00:00:00.000 --> 00:00:01.000 region:2 +text + +00:00:00.000 --> 00:00:01.000 region:3 +text + +00:00:00.000 --> 00:00:01.000 region:4 +text + +00:00:00.000 --> 00:00:01.000 region:5 +text + +00:00:00.000 --> 00:00:01.000 region:6 +text + +00:00:00.000 --> 00:00:01.000 region:7 +text + +00:00:00.000 --> 00:00:01.000 region:8 +text + +00:00:00.000 --> 00:00:01.000 region:9 +text + +00:00:00.000 --> 00:00:01.000 region:10 +text + +00:00:00.000 --> 00:00:01.000 region:11 +text + +00:00:00.000 --> 00:00:01.000 region:12 +text + +00:00:00.000 --> 00:00:01.000 region:13 +text diff --git a/testing/web-platform/tests/webvtt/parsing/file-parsing/support/regions-old.test b/testing/web-platform/tests/webvtt/parsing/file-parsing/support/regions-old.test new file mode 100644 index 000000000000..4acb54b262c4 --- /dev/null +++ b/testing/web-platform/tests/webvtt/parsing/file-parsing/support/regions-old.test @@ -0,0 +1,18 @@ +regions, old + + +assert_equals(cues.length, 2); + +assert_equals(cues[0].region, null); +assert_equals(cues[1].region, null); + +=== +WEBVTT +Region: id=foo width=40% lines=3 regionanchor=0%,100% viewportanchor=10%,90% scroll=up +Region: id=bar width=40% lines=3 regionanchor=100%,100% viewportanchor=90%,90% scroll=up + +00:00:00.000 --> 00:00:01.000 region:foo +text0 + +00:00:00.000 --> 00:00:01.000 region:bar +text1 diff --git a/testing/web-platform/tests/webvtt/parsing/file-parsing/support/regions-regionanchor.test b/testing/web-platform/tests/webvtt/parsing/file-parsing/support/regions-regionanchor.test new file mode 100644 index 000000000000..0b0a896e2024 --- /dev/null +++ b/testing/web-platform/tests/webvtt/parsing/file-parsing/support/regions-regionanchor.test @@ -0,0 +1,182 @@ +regions, regionanchor + + +assert_equals(cues.length, 20); + +var regions = Array.from(cues).map(function(cue) { + return cue.region; +}); + +var valid_anchors = [ + [0, 100], + [0, 0], + [1, 1], + [100, 0], + [0, 100], + [100, 100], +]; +valid_anchors.forEach(function(pair, index) { + var anchorX = pair[0]; + var anchorY = pair[1]; + + assert_equals(regions[index].regionAnchorX, anchorX, 'Failed with region ' + index); + assert_equals(regions[index].regionAnchorY, anchorY, 'Failed with region ' + index); +}); + +for (var i = 0; i < 14; i++) { + var index = valid_anchors.length + i; + + assert_equals(regions[index].regionAnchorX, 0, 'Failed with region ' + index); + assert_equals(regions[index].regionAnchorY, 100, 'Failed with region ' + index); +} + +=== +WEBVTT + +NOTE valid + +REGION +id:0 + +REGION +id:1 +regionanchor:0%,0% + +REGION +id:2 +regionanchor:1%,1% + +REGION +id:3 +regionanchor:100%,0% + +REGION +id:4 +regionanchor:0%,100% + +REGION +id:5 +regionanchor:100%,100% + +NOTE invalid + +REGION +id:6 +regionanchor:0,0 + +REGION +id:7 +regionanchor:0%,0 + +REGION +id:8 +regionanchor:0,0% + +REGION +id:9 +regionanchor:1% + +REGION +id:10 +regionanchor:,1% + +REGION +id:11 +regionanchor:101%,1% + +REGION +id:12 +regionanchor:1%,101% + +REGION +id:13 +regionanchor:-0%,0% + +REGION +id:14 +regionanchor:0%,-0% + +REGION +id:15 +regionanchor:65536%,65536% + +REGION +id:16 +regionanchor:4294967296%,4294967296% + +REGION +id:17 +regionanchor:18446744073709552000%,18446744073709552000% + +REGION +id:18 +regionanchor:10000000000000000000000000000000000%,10000000000000000000000000000000000% + +REGION +id:19 +regionanchor: 100%,100% +regionanchor :100%,100% +regionanchor:100% ,100% +regionanchor:100%, 100% +regionanchor:100 %,100% +regionanchor:100%,100 % + +00:00:00.000 --> 00:00:01.000 region:0 +text + +00:00:00.000 --> 00:00:01.000 region:1 +text + +00:00:00.000 --> 00:00:01.000 region:2 +text + +00:00:00.000 --> 00:00:01.000 region:3 +text + +00:00:00.000 --> 00:00:01.000 region:4 +text + +00:00:00.000 --> 00:00:01.000 region:5 +text + +00:00:00.000 --> 00:00:01.000 region:6 +text + +00:00:00.000 --> 00:00:01.000 region:7 +text + +00:00:00.000 --> 00:00:01.000 region:8 +text + +00:00:00.000 --> 00:00:01.000 region:9 +text + +00:00:00.000 --> 00:00:01.000 region:10 +text + +00:00:00.000 --> 00:00:01.000 region:11 +text + +00:00:00.000 --> 00:00:01.000 region:12 +text + +00:00:00.000 --> 00:00:01.000 region:13 +text + +00:00:00.000 --> 00:00:01.000 region:14 +text + +00:00:00.000 --> 00:00:01.000 region:15 +text + +00:00:00.000 --> 00:00:01.000 region:16 +text + +00:00:00.000 --> 00:00:01.000 region:17 +text + +00:00:00.000 --> 00:00:01.000 region:18 +text + +00:00:00.000 --> 00:00:01.000 region:19 +text diff --git a/testing/web-platform/tests/webvtt/parsing/file-parsing/support/regions-scroll.test b/testing/web-platform/tests/webvtt/parsing/file-parsing/support/regions-scroll.test new file mode 100644 index 000000000000..f4b27800dd9f --- /dev/null +++ b/testing/web-platform/tests/webvtt/parsing/file-parsing/support/regions-scroll.test @@ -0,0 +1,67 @@ +regions, scroll + + +assert_equals(cues.length, 6); + +var regions = Array.from(cues).map(function(cue) { + return cue.region; +}); + +var valid_lines = [ + '', + 'up', + 'up', + '', + '', + 'up', +].forEach(function(valid, index) { + assert_equals(regions[index].scroll, valid, 'Failed with region ' + index); +}); + +=== +WEBVTT + +REGION +id:0 + +REGION +id:1 +scroll:up + +REGION +id:2 +scroll:up scroll:up scroll:up scroll:up scroll:up scroll:up scroll:up scroll:up +scroll:up scroll:up scroll:up scroll:up scroll:up scroll:up scroll:up scroll:up + +REGION +id:3 +scroll:down +scroll:left +scroll:right + +REGION +id:4 +scroll: up +scroll :up + +REGION +id:5 +scroll:up scroll: + +00:00:00.000 --> 00:00:01.000 region:0 +text + +00:00:00.000 --> 00:00:01.000 region:1 +text + +00:00:00.000 --> 00:00:01.000 region:2 +text + +00:00:00.000 --> 00:00:01.000 region:3 +text + +00:00:00.000 --> 00:00:01.000 region:4 +text + +00:00:00.000 --> 00:00:01.000 region:5 +text diff --git a/testing/web-platform/tests/webvtt/parsing/file-parsing/support/regions-viewportanchor.test b/testing/web-platform/tests/webvtt/parsing/file-parsing/support/regions-viewportanchor.test new file mode 100644 index 000000000000..c63816d0c455 --- /dev/null +++ b/testing/web-platform/tests/webvtt/parsing/file-parsing/support/regions-viewportanchor.test @@ -0,0 +1,182 @@ +regions, viewportanchor + + +assert_equals(cues.length, 20); + +var regions = Array.from(cues).map(function(cue) { + return cue.region; +}); + +var valid_anchors = [ + [0, 100], + [0, 0], + [1, 1], + [100, 0], + [0, 100], + [100, 100], +]; +valid_anchors.forEach(function(pair, index) { + var anchorX = pair[0]; + var anchorY = pair[1]; + + assert_equals(regions[index].viewportAnchorX, anchorX, 'Failed with region ' + index); + assert_equals(regions[index].viewportAnchorY, anchorY, 'Failed with region ' + index); +}); + +for (var i = 0; i < 14; i++) { + var index = valid_anchors.length + i; + + assert_equals(regions[index].viewportAnchorX, 0, 'Failed with region ' + index); + assert_equals(regions[index].viewportAnchorY, 100, 'Failed with region ' + index); +} + +=== +WEBVTT + +NOTE valid + +REGION +id:0 + +REGION +id:1 +viewportanchor:0%,0% + +REGION +id:2 +viewportanchor:1%,1% + +REGION +id:3 +viewportanchor:100%,0% + +REGION +id:4 +viewportanchor:0%,100% + +REGION +id:5 +viewportanchor:100%,100% + +NOTE invalid + +REGION +id:6 +viewportanchor:0,0 + +REGION +id:7 +viewportanchor:0%,0 + +REGION +id:8 +viewportanchor:0,0% + +REGION +id:9 +viewportanchor:1% + +REGION +id:10 +viewportanchor:,1% + +REGION +id:11 +viewportanchor:101%,1% + +REGION +id:12 +viewportanchor:1%,101% + +REGION +id:13 +viewportanchor:-0%,0% + +REGION +id:14 +viewportanchor:0%,-0% + +REGION +id:15 +viewportanchor:65536%,65536% + +REGION +id:16 +viewportanchor:4294967296%,4294967296% + +REGION +id:17 +viewportanchor:18446744073709552000%,18446744073709552000% + +REGION +id:18 +viewportanchor:10000000000000000000000000000000000%,10000000000000000000000000000000000% + +REGION +id:19 +viewportanchor: 100%,100% +viewportanchor :100%,100% +viewportanchor:100% ,100% +viewportanchor:100%, 100% +viewportanchor:100 %,100% +viewportanchor:100%,100 % + +00:00:00.000 --> 00:00:01.000 region:0 +text + +00:00:00.000 --> 00:00:01.000 region:1 +text + +00:00:00.000 --> 00:00:01.000 region:2 +text + +00:00:00.000 --> 00:00:01.000 region:3 +text + +00:00:00.000 --> 00:00:01.000 region:4 +text + +00:00:00.000 --> 00:00:01.000 region:5 +text + +00:00:00.000 --> 00:00:01.000 region:6 +text + +00:00:00.000 --> 00:00:01.000 region:7 +text + +00:00:00.000 --> 00:00:01.000 region:8 +text + +00:00:00.000 --> 00:00:01.000 region:9 +text + +00:00:00.000 --> 00:00:01.000 region:10 +text + +00:00:00.000 --> 00:00:01.000 region:11 +text + +00:00:00.000 --> 00:00:01.000 region:12 +text + +00:00:00.000 --> 00:00:01.000 region:13 +text + +00:00:00.000 --> 00:00:01.000 region:14 +text + +00:00:00.000 --> 00:00:01.000 region:15 +text + +00:00:00.000 --> 00:00:01.000 region:16 +text + +00:00:00.000 --> 00:00:01.000 region:17 +text + +00:00:00.000 --> 00:00:01.000 region:18 +text + +00:00:00.000 --> 00:00:01.000 region:19 +text diff --git a/testing/web-platform/tests/webvtt/parsing/file-parsing/support/settings-align.test b/testing/web-platform/tests/webvtt/parsing/file-parsing/support/settings-align.test new file mode 100644 index 000000000000..ec5618a64b9f --- /dev/null +++ b/testing/web-platform/tests/webvtt/parsing/file-parsing/support/settings-align.test @@ -0,0 +1,64 @@ +settings, align + + +assert_equals(cues.length, 13); + +[ + 'center', + 'start', + 'center', + 'end', + 'left', + 'right', + 'end', + 'end', + 'end', + 'end', + 'end', + 'end', + 'center', +].forEach(function(valid, index) { + assert_equals(cues[index].align, valid, 'Failed with cue ' + index); +}); + +=== +WEBVTT + +00:00:00.000 --> 00:00:01.000 +text0 + +00:00:00.000 --> 00:00:01.000 align:start +text1 + +00:00:00.000 --> 00:00:01.000 align:center +text2 + +00:00:00.000 --> 00:00:01.000 align:end +text3 + +00:00:00.000 --> 00:00:01.000 align:left +text4 + +00:00:00.000 --> 00:00:01.000 align:right +text5 + +00:00:00.000 --> 00:00:01.000 align:start align:end +text6 + +00:00:00.000 --> 00:00:01.000 align:end align:CENTER +text7 + +00:00:00.000 --> 00:00:01.000 align:end align: center +text8 + +00:00:00.000 --> 00:00:01.000 align:end align: +text9 + +00:00:00.000 --> 00:00:01.000 align:end align:middle +text10 + +00:00:00.000 --> 00:00:01.000 align:end align +text11 + +00:00:00.000 --> 00:00:01.000 align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:center +text12 diff --git a/testing/web-platform/tests/webvtt/parsing/file-parsing/support/settings-line.test b/testing/web-platform/tests/webvtt/parsing/file-parsing/support/settings-line.test new file mode 100644 index 000000000000..cfa7980692b3 --- /dev/null +++ b/testing/web-platform/tests/webvtt/parsing/file-parsing/support/settings-line.test @@ -0,0 +1,178 @@ +settings, line + + +assert_equals(cues.length, 36); + +// Test starts with simple valid values +var valid_values = [ + -1, + 0, + 0, + 1, + 100, + 101, + 65536, + 4294967296, + 18446744073709552000, + 10000000000000000000000000000000000, + 1.5, +]; +valid_values.forEach(function(valid, index) { + assert_equals(cues[index].line, valid, 'Failed with cue ' + index); + assert_true(cues[index].snapToLines, 'Failed with cue ' + index); +}); + +// Then a set of invalid ones +var invalid_length = 18; +for (var i = 0; i < invalid_length; i++) { + var index = valid_values.length + i; + + assert_equals(cues[index].line, 'auto', 'Failed with cue ' + index); + assert_true(cues[index].snapToLines, 'Failed with cue ' + index); +} + +// Then more specific tests +var index = valid_values.length + invalid_length; + +assert_equals(cues[index].line, 0); +assert_false(cues[index].snapToLines); + +assert_equals(cues[index + 1].line, 0); +assert_false(cues[index + 1].snapToLines); + +assert_equals(cues[index + 2].line, 100); +assert_false(cues[index + 2].snapToLines); +assert_equals(cues[index + 2].lineAlign, 'start'); + +assert_equals(cues[index + 3].line, 100); +assert_false(cues[index + 3].snapToLines); +assert_equals(cues[index + 3].lineAlign, 'start'); + +assert_equals(cues[index + 4].line, 100); +assert_false(cues[index + 4].snapToLines); +assert_equals(cues[index + 4].lineAlign, 'center'); + +assert_equals(cues[index + 5].line, 100); +assert_false(cues[index + 5].snapToLines); +assert_equals(cues[index + 5].lineAlign, 'end'); + +assert_equals(cues[index + 6].line, 100); +assert_false(cues[index + 6].snapToLines); +assert_equals(cues[index + 6].lineAlign, 'start'); + +=== +WEBVTT + +NOTE valid + +00:00:00.000 --> 00:00:01.000 line:-1 +valid0 + +00:00:00.000 --> 00:00:01.000 line:0 +valid1 + +00:00:00.000 --> 00:00:01.000 line:-0 +valid2 + +00:00:00.000 --> 00:00:01.000 line:1 +valid3 + +00:00:00.000 --> 00:00:01.000 line:100 +valid4 + +00:00:00.000 --> 00:00:01.000 line:101 +valid5 + +00:00:00.000 --> 00:00:01.000 line:65536 +valid6 + +00:00:00.000 --> 00:00:01.000 line:4294967296 +valid7 + +00:00:00.000 --> 00:00:01.000 line:18446744073709552000 +valid8 + +00:00:00.000 --> 00:00:01.000 line:10000000000000000000000000000000000 +valid9 + +00:00:00.000 --> 00:00:01.000 line:1.5 +valid10 + +NOTE invalid + +00:00:00.000 --> 00:00:01.000 line:65536% +invalid11 + +00:00:00.000 --> 00:00:01.000 line:4294967296% +invalid12 + +00:00:00.000 --> 00:00:01.000 line:18446744073709552000% +invalid13 + +00:00:00.000 --> 00:00:01.000 line:10000000000000000000000000000000000% +invalid14 + +00:00:00.000 --> 00:00:01.000 line:-0% +invalid15 + +00:00:00.000 --> 00:00:01.000 line:101% +invalid16 + +00:00:00.000 --> 00:00:01.000 line:1%- +invalid17 + +00:00:00.000 --> 00:00:01.000 line:1- +invalid18 + +00:00:00.000 --> 00:00:01.000 line:%1 +invalid19 + +00:00:00.000 --> 00:00:01.000 line:1%% +invalid20 + +00:00:00.000 --> 00:00:01.000 line:0%0 +invalid21 + +00:00:00.000 --> 00:00:01.000 line: 0% +invalid22 + +00:00:00.000 --> 00:00:01.000 line:0%x +invalid23 + +00:00:00.000 --> 00:00:01.000 line:- +invalid24 + +00:00:00.000 --> 00:00:01.000 line:% +invalid25 + +00:00:00.000 --> 00:00:01.000 line:1..5 +invalid26 + +00:00:00.000 --> 00:00:01.000 line:.5 +invalid27 + +00:00:00.000 --> 00:00:01.000 line:5. +invalid28 + +NOTE extra + +00:00:00.000 --> 00:00:01.000 line:0% +text29 + +00:00:00.000 --> 00:00:01.000 line:00% +text30 + +00:00:00.000 --> 00:00:01.000 line:100% +text31 + +00:00:00.000 --> 00:00:01.000 line:100%,start +text32 + +00:00:00.000 --> 00:00:01.000 line:100%,center +text33 + +00:00:00.000 --> 00:00:01.000 line:100%,end +text34 + +00:00:00.000 --> 00:00:01.000 line:100%,middle +text35 diff --git a/testing/web-platform/tests/webvtt/parsing/file-parsing/support/settings-multiple.test b/testing/web-platform/tests/webvtt/parsing/file-parsing/support/settings-multiple.test new file mode 100644 index 000000000000..2aa7dc1624da --- /dev/null +++ b/testing/web-platform/tests/webvtt/parsing/file-parsing/support/settings-multiple.test @@ -0,0 +1,34 @@ +settings, multiple + + +assert_equals(cues.length, 2); + +var cue = cues[0]; +assert_equals(cue.id, 'id0'); +assert_equals(cue.text, 'text0'); +assert_equals(cue.align, 'start'); +assert_equals(cue.line, 1); +assert_equals(cue.snapToLines, false); +assert_equals(cue.vertical, 'lr'); +assert_equals(cue.size, 50); +assert_equals(cue.position, 25); + +var cue = cues[1]; +assert_equals(cue.id, 'id1'); +assert_equals(cue.text, 'text1'); +assert_equals(cue.align, 'center'); +assert_equals(cue.line, 1); +assert_equals(cue.vertical, 'rl'); +assert_equals(cue.size, 0); +assert_equals(cue.position, 100); + +=== +WEBVTT + +id0 +00:00:00.000 --> 00:00:01.000 align:start line:1% vertical:lr size:50% position:25% +text0 + +id1 +00:00:00.000 --> 00:00:01.000 align:center line:1 vertical:rl size:0% position:100% +text1 diff --git a/testing/web-platform/tests/webvtt/parsing/file-parsing/support/settings-position.test b/testing/web-platform/tests/webvtt/parsing/file-parsing/support/settings-position.test new file mode 100644 index 000000000000..a78cc1890e5f --- /dev/null +++ b/testing/web-platform/tests/webvtt/parsing/file-parsing/support/settings-position.test @@ -0,0 +1,104 @@ +settings, position + + +assert_equals(cues.length, 22); + +var valid_positions = [ + [1, 'auto'], + [100, 'auto'], + [1, 'auto'], + [1.5, 'auto'], + [1, 'line-left'], + [1, 'center'], + [1, 'line-right'], + [1, 'auto'], + [1, 'auto'], + [1, 'auto'], +]; +valid_positions.forEach(function(pair, index) { + var position = pair[0]; + var positionAlign = pair[1]; + + assert_equals(cues[index].position, position, 'Failed with cue ' + index); + assert_equals(cues[index].positionAlign, positionAlign, 'Failed with cue ' + index); +}); + +for (var i = 0; i < 12; i++) { + var index = valid_positions.length + i; + + assert_equals(cues[index].position, 'auto', 'Failed with cue ' + index); + assert_equals(cues[index].positionAlign, 'auto', 'Failed with cue ' + index); +} + +=== +WEBVTT + +NOTE valid + +00:00:00.000 --> 00:00:01.000 position:1% +text0 + +00:00:00.000 --> 00:00:01.000 position:100% +text1 + +00:00:00.000 --> 00:00:01.000 position:1% position:x +text2 + +00:00:00.000 --> 00:00:01.000 position:1.5% +text3 + +00:00:00.000 --> 00:00:01.000 position:1%,line-left +text4 + +00:00:00.000 --> 00:00:01.000 position:1%,center +text5 + +00:00:00.000 --> 00:00:01.000 position:1%,line-right +text6 + +00:00:00.000 --> 00:00:01.000 position:1%,middle +text7 + +00:00:00.000 --> 00:00:01.000 position:1% ,center +text8 + +00:00:00.000 --> 00:00:01.000 position:1%, center +text9 + +NOTE invalid + +00:00:00.000 --> 00:00:01.000 position:-1% +invalid10 + +00:00:00.000 --> 00:00:01.000 position:1 +invalid11 + +00:00:00.000 --> 00:00:01.000 position:1x +invalid12 + +00:00:00.000 --> 00:00:01.000 position:1%x +invalid13 + +00:00:00.000 --> 00:00:01.000 position: +invalid14 + +00:00:00.000 --> 00:00:01.000 position: 1% +invalid15 + +00:00:00.000 --> 00:00:01.000 position:101% +invalid16 + +00:00:00.000 --> 00:00:01.000 position:65536% +invalid17 + +00:00:00.000 --> 00:00:01.000 position:4294967296% +invalid18 + +00:00:00.000 --> 00:00:01.000 position:101%,line-left +invalid19 + +00:00:00.000 --> 00:00:01.000 position:101%,center +invalid20 + +00:00:00.000 --> 00:00:01.000 position:101%,line-right +invalid21 diff --git a/testing/web-platform/tests/webvtt/parsing/file-parsing/support/settings-region.test b/testing/web-platform/tests/webvtt/parsing/file-parsing/support/settings-region.test new file mode 100644 index 000000000000..bfd0434e7674 --- /dev/null +++ b/testing/web-platform/tests/webvtt/parsing/file-parsing/support/settings-region.test @@ -0,0 +1,71 @@ +settings, region + + +assert_equals(cues.length, 9); + +var fooRegion = cues[0].region; +assert_true(!!fooRegion, 'Cue 0 has invalid region'); + +var barRegion = cues[1].region; +assert_true(!!barRegion, 'Cue 1 has invalid region'); + +assert_not_equals(fooRegion, barRegion); + +var valid_regions = [ + fooRegion, + barRegion, + barRegion, + null, + fooRegion +]; +valid_regions.forEach(function(valid, index) { + assert_equals(cues[index].region, valid, 'Failed with cue ' + index); +}); + +for (var i = 0; i < 4; i++) { + var index = valid_regions.length + i; + + assert_equals(cues[index].region, null); +} + +=== +WEBVTT + +REGION +id:foo + +REGION +id:bar + +REGION +id:foo + +REGION +width:10% + +00:00:00.000 --> 00:00:01.000 region:foo +text0 + +00:00:00.000 --> 00:00:01.000 region:bar +text1 + +00:00:00.000 --> 00:00:01.000 region:foo region:bar +text2 + +00:00:00.000 --> 00:00:01.000 region:invalid +text3 + +00:00:00.000 --> 00:00:01.000 region:invalid region:foo +text4 + +00:00:00.000 --> 00:00:01.000 region: +invalid5 + +00:00:00.000 --> 00:00:01.000 region:\x20 +invalid6 + +00:00:00.000 --> 00:00:01.000 region: foo +invalid7 + +00:00:00.000 --> 00:00:01.000 region :foo +invalid8 diff --git a/testing/web-platform/tests/webvtt/parsing/file-parsing/support/settings-size.test b/testing/web-platform/tests/webvtt/parsing/file-parsing/support/settings-size.test new file mode 100644 index 000000000000..4c2de1d5f2f6 --- /dev/null +++ b/testing/web-platform/tests/webvtt/parsing/file-parsing/support/settings-size.test @@ -0,0 +1,78 @@ +settings, size + + +assert_equals(cues.length, 16); + +var valid_sizes = [ + 100, + 2, + 0, + 0, + 100, + 50, + 1.5, +]; +valid_sizes.forEach(function(valid, index) { + assert_equals(cues[index].size, valid, 'Failed with cue ' + index); +}); + +for (var i = 0; i < 9; i++) { + var index = valid_sizes.length + i; + + assert_equals(cues[index].size, 100, 'Failed with cue ' + index); +} + +=== +WEBVTT + +NOTE valid + +00:00:00.000 --> 00:00:01.000 +text0 + +00:00:00.000 --> 00:00:01.000 size:1xx size:2% +text1 + +00:00:00.000 --> 00:00:01.000 size:0% +text2 + +00:00:00.000 --> 00:00:01.000 size:00% +text3 + +00:00:00.000 --> 00:00:01.000 size:50% size:100% +text4 + +00:00:00.000 --> 00:00:01.000 size:50% size:101% +text5 + +00:00:00.000 --> 00:00:01.000 size:1.5% +text6 + +NOTE invalid + +00:00:00.000 --> 00:00:01.000 size: +invalid7 + +00:00:00.000 --> 00:00:01.000 size:x +invalid8 + +00:00:00.000 --> 00:00:01.000 size:% +invalid9 + +00:00:00.000 --> 00:00:01.000 size:%% +invalid10 + +00:00:00.000 --> 00:00:01.000 size:1%% +invalid11 + +00:00:00.000 --> 00:00:01.000 size:1%x +invalid12 + +00:00:00.000 --> 00:00:01.000 size:101% +invalid13 + +00:00:00.000 --> 00:00:01.000 size:-3% +invalid14 + +00:00:00.000 --> 00:00:01.000 size:200% +invalid15 diff --git a/testing/web-platform/tests/webvtt/parsing/file-parsing/support/settings-vertical.test b/testing/web-platform/tests/webvtt/parsing/file-parsing/support/settings-vertical.test new file mode 100644 index 000000000000..33d23b2c4607 --- /dev/null +++ b/testing/web-platform/tests/webvtt/parsing/file-parsing/support/settings-vertical.test @@ -0,0 +1,47 @@ +settings, size + + +assert_equals(cues.length, 8); + +var valid_vertical = [ + '', + 'lr', + 'rl', + 'lr', +]; +valid_vertical.forEach(function(valid, index) { + assert_equals(cues[index].vertical, valid, 'Failed with cue ' + index); +}); + +for (var i = 0; i < 4; i++) { + var index = valid_vertical.length + i; + + assert_equals(cues[index].vertical, '', 'Failed with cue ' + index); +} + +=== +WEBVTT + +00:00:00.000 --> 00:00:01.000 +text0 + +00:00:00.000 --> 00:00:01.000 vertical:lr +text1 + +00:00:00.000 --> 00:00:01.000 vertical:rl +text2 + +00:00:00.000 --> 00:00:01.000 vertical:rl vertical:lr +text3 + +00:00:00.000 --> 00:00:01.000 vertical: +invalid4 + +00:00:00.000 --> 00:00:01.000 vertical:RL +invalid5 + +00:00:00.000 --> 00:00:01.000 vertical: rl +invalid6 + +00:00:00.000 --> 00:00:01.000 vertical:vertical-rl +invalid7 diff --git a/testing/web-platform/tests/webvtt/parsing/file-parsing/support/signature-bom.test b/testing/web-platform/tests/webvtt/parsing/file-parsing/support/signature-bom.test new file mode 100644 index 000000000000..245385f572d7 --- /dev/null +++ b/testing/web-platform/tests/webvtt/parsing/file-parsing/support/signature-bom.test @@ -0,0 +1,7 @@ +signature, bom + + +assert_equals(cues.length, 0); + +=== +\ufeffWEBVTT diff --git a/testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/signature-formfeed.vtt b/testing/web-platform/tests/webvtt/parsing/file-parsing/support/signature-formfeed.vtt similarity index 100% rename from testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/signature-formfeed.vtt rename to testing/web-platform/tests/webvtt/parsing/file-parsing/support/signature-formfeed.vtt diff --git a/testing/web-platform/tests/webvtt/parsing/file-parsing/support/signature-invalid-whitespace.vtt b/testing/web-platform/tests/webvtt/parsing/file-parsing/support/signature-invalid-whitespace.vtt new file mode 100644 index 000000000000..1f67eaee9731 --- /dev/null +++ b/testing/web-platform/tests/webvtt/parsing/file-parsing/support/signature-invalid-whitespace.vtt @@ -0,0 +1 @@ +WEBVTTย foo diff --git a/testing/web-platform/tests/webvtt/parsing/file-parsing/support/signature-invalid.vtt b/testing/web-platform/tests/webvtt/parsing/file-parsing/support/signature-invalid.vtt new file mode 100644 index 000000000000..5407fcb35051 --- /dev/null +++ b/testing/web-platform/tests/webvtt/parsing/file-parsing/support/signature-invalid.vtt @@ -0,0 +1 @@ +VTTWEB diff --git a/testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/signature-lowercase.vtt b/testing/web-platform/tests/webvtt/parsing/file-parsing/support/signature-lowercase.vtt similarity index 100% rename from testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/signature-lowercase.vtt rename to testing/web-platform/tests/webvtt/parsing/file-parsing/support/signature-lowercase.vtt diff --git a/testing/web-platform/tests/webvtt/parsing/file-parsing/support/signature-missing-whitespace.vtt b/testing/web-platform/tests/webvtt/parsing/file-parsing/support/signature-missing-whitespace.vtt new file mode 100644 index 000000000000..7ed44af02c7f --- /dev/null +++ b/testing/web-platform/tests/webvtt/parsing/file-parsing/support/signature-missing-whitespace.vtt @@ -0,0 +1 @@ +WEBVTTfoo diff --git a/testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/no-signature.vtt b/testing/web-platform/tests/webvtt/parsing/file-parsing/support/signature-missing.vtt similarity index 78% rename from testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/no-signature.vtt rename to testing/web-platform/tests/webvtt/parsing/file-parsing/support/signature-missing.vtt index 44ad480844fc..bd90460a23b9 100644 --- a/testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/no-signature.vtt +++ b/testing/web-platform/tests/webvtt/parsing/file-parsing/support/signature-missing.vtt @@ -1,2 +1,2 @@ 00:00:00.000 --> 00:00:01.000 -"FAIL" +invalid diff --git a/testing/web-platform/tests/webvtt/parsing/file-parsing/support/signature-no-newline.test b/testing/web-platform/tests/webvtt/parsing/file-parsing/support/signature-no-newline.test new file mode 100644 index 000000000000..13cf042c17b2 --- /dev/null +++ b/testing/web-platform/tests/webvtt/parsing/file-parsing/support/signature-no-newline.test @@ -0,0 +1,7 @@ +signature, no newline + + +assert_equals(cues.length, 0); + +=== +WEBVTT \ No newline at end of file diff --git a/testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/signature-null.vtt b/testing/web-platform/tests/webvtt/parsing/file-parsing/support/signature-null.vtt similarity index 100% rename from testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/signature-null.vtt rename to testing/web-platform/tests/webvtt/parsing/file-parsing/support/signature-null.vtt diff --git a/testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/signature-too-short.vtt b/testing/web-platform/tests/webvtt/parsing/file-parsing/support/signature-partial.vtt similarity index 100% rename from testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/signature-too-short.vtt rename to testing/web-platform/tests/webvtt/parsing/file-parsing/support/signature-partial.vtt diff --git a/testing/web-platform/tests/webvtt/parsing/file-parsing/support/signature-space-no-newline.test b/testing/web-platform/tests/webvtt/parsing/file-parsing/support/signature-space-no-newline.test new file mode 100644 index 000000000000..021107316f1c --- /dev/null +++ b/testing/web-platform/tests/webvtt/parsing/file-parsing/support/signature-space-no-newline.test @@ -0,0 +1,7 @@ +signature, space, no newline + + +assert_equals(cues.length, 0); + +=== +WEBVTT\x20 \ No newline at end of file diff --git a/testing/web-platform/tests/webvtt/parsing/file-parsing/support/signature-space.test b/testing/web-platform/tests/webvtt/parsing/file-parsing/support/signature-space.test new file mode 100644 index 000000000000..349562eb9e34 --- /dev/null +++ b/testing/web-platform/tests/webvtt/parsing/file-parsing/support/signature-space.test @@ -0,0 +1,7 @@ +signature, space + + +assert_equals(cues.length, 0); + +=== +WEBVTT\x20 diff --git a/testing/web-platform/tests/webvtt/parsing/file-parsing/support/signature-tab-no-newline.test b/testing/web-platform/tests/webvtt/parsing/file-parsing/support/signature-tab-no-newline.test new file mode 100644 index 000000000000..fbca4bed6064 --- /dev/null +++ b/testing/web-platform/tests/webvtt/parsing/file-parsing/support/signature-tab-no-newline.test @@ -0,0 +1,7 @@ +signature, tab, no newline + + +assert_equals(cues.length, 0); + +=== +WEBVTT\t \ No newline at end of file diff --git a/testing/web-platform/tests/webvtt/parsing/file-parsing/support/signature-tab.test b/testing/web-platform/tests/webvtt/parsing/file-parsing/support/signature-tab.test new file mode 100644 index 000000000000..3b500d04636b --- /dev/null +++ b/testing/web-platform/tests/webvtt/parsing/file-parsing/support/signature-tab.test @@ -0,0 +1,7 @@ +signature, tab + + +assert_equals(cues.length, 0); + +=== +WEBVTT\t diff --git a/testing/web-platform/tests/webvtt/parsing/file-parsing/support/signature-timings.test b/testing/web-platform/tests/webvtt/parsing/file-parsing/support/signature-timings.test new file mode 100644 index 000000000000..0197e8ac4239 --- /dev/null +++ b/testing/web-platform/tests/webvtt/parsing/file-parsing/support/signature-timings.test @@ -0,0 +1,8 @@ +signature, timings + + +assert_equals(cues.length, 0); + +=== +WEBVTT 00:00:00.000 --> 00:00:01.000 +text diff --git a/testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/signature-two-boms.vtt b/testing/web-platform/tests/webvtt/parsing/file-parsing/support/signature-two-boms.vtt similarity index 100% rename from testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/signature-two-boms.vtt rename to testing/web-platform/tests/webvtt/parsing/file-parsing/support/signature-two-boms.vtt diff --git a/testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/signature-websrt.vtt b/testing/web-platform/tests/webvtt/parsing/file-parsing/support/signature-websrt.vtt similarity index 100% rename from testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/signature-websrt.vtt rename to testing/web-platform/tests/webvtt/parsing/file-parsing/support/signature-websrt.vtt diff --git a/testing/web-platform/tests/webvtt/parsing/file-parsing/support/stylesheets.test b/testing/web-platform/tests/webvtt/parsing/file-parsing/support/stylesheets.test new file mode 100644 index 000000000000..f4fbf424fc39 --- /dev/null +++ b/testing/web-platform/tests/webvtt/parsing/file-parsing/support/stylesheets.test @@ -0,0 +1,36 @@ +stylesheets, rules + + +// There's no way to test the actual style from js +assert_equals(document.styleSheets.length, 0); + +=== +WEBVTT + +STYLE +::cue(#foo) { + width: 20px; +} /* +NOTE hello +00:00:00.000 -- > 00:00:01.000 +*/ +.foo { + width: 19px; +} + +.bar { + width: 18px; +} + +foo +00:00:00.000 --> 00:00:01.000 +text + +STYLE +::cue(::bar) { + width: 18px; +} + +bar +00:00:00.000 --> 00:00:01.000 +text diff --git a/testing/web-platform/tests/webvtt/parsing/file-parsing/support/timings-60.test b/testing/web-platform/tests/webvtt/parsing/file-parsing/support/timings-60.test new file mode 100644 index 000000000000..7cfe48239222 --- /dev/null +++ b/testing/web-platform/tests/webvtt/parsing/file-parsing/support/timings-60.test @@ -0,0 +1,33 @@ +timings, 60 + + +assert_equals(cues.length, 2); + +assert_equals(cues[0].text, 'text1'); +assert_equals(cues[0].startTime, 0); +assert_equals(cues[0].endTime, 216001); + +assert_equals(cues[1].text, 'text2'); +assert_equals(cues[1].startTime, 216000); +assert_equals(cues[1].endTime, 216001); + +=== +WEBVTT + +00:00:60.000 --> 00:00:01.000 +invalid + +00:60:00.000 --> 00:00:01.000 +invalid + +00:00:00.000 --> 00:00:60.000 +invalid + +00:00:00.000 --> 00:60:00.000 +invalid + +00:00:00.000 --> 60:00:01.000 +text1 + +60:00:00.000 --> 60:00:01.000 +text2 diff --git a/testing/web-platform/tests/webvtt/parsing/file-parsing/support/timings-eof.test b/testing/web-platform/tests/webvtt/parsing/file-parsing/support/timings-eof.test new file mode 100644 index 000000000000..7b871164e9f8 --- /dev/null +++ b/testing/web-platform/tests/webvtt/parsing/file-parsing/support/timings-eof.test @@ -0,0 +1,9 @@ +timings, eof + + +assert_equals(cues.length, 0); + +=== +WEBVTT + +00:00:00.000 --> \ No newline at end of file diff --git a/testing/web-platform/tests/webvtt/parsing/file-parsing/support/timings-garbage.test b/testing/web-platform/tests/webvtt/parsing/file-parsing/support/timings-garbage.test new file mode 100644 index 000000000000..99f7c28b42f4 --- /dev/null +++ b/testing/web-platform/tests/webvtt/parsing/file-parsing/support/timings-garbage.test @@ -0,0 +1,197 @@ +timings, garbage + + + +assert_equals(cues.length, 0); + +=== +WEBVTT + +x00:00:00.000 --> 00:00:01.000 +invalid + +0x0:00:00.000 --> 00:00:01.000 +invalid + +00x:00:00.000 --> 00:00:01.000 +invalid + +00:x00:00.000 --> 00:00:01.000 +invalid + +00:0x0:00.000 --> 00:00:01.000 +invalid + +00:00x:00.000 --> 00:00:01.000 +invalid + +00:00:x00.000 --> 00:00:01.000 +invalid + +00:00:0x0.000 --> 00:00:01.000 +invalid + +00:00:00x.000 --> 00:00:01.000 +invalid + +00:00:00.x000 --> 00:00:01.000 +invalid + +00:00:00.0x00 --> 00:00:01.000 +invalid + +00:00:00.00x0 --> 00:00:01.000 +invalid + +00:00:00.000x --> 00:00:01.000 +invalid + +00:00:00.000 x--> 00:00:01.000 +invalid + +00:00:00.000 -x-> 00:00:01.000 +invalid + +00:00:00.000 --x> 00:00:01.000 +invalid + +00:00:00.000 -->x 00:00:01.000 +invalid + +00:00:00.000 --> x00:00:01.000 +invalid + +00:00:00.000 --> 0x0:00:01.000 +invalid + +00:00:00.000 --> 00x:00:01.000 +invalid + +00:00:00.000 --> 00:x00:01.000 +invalid + +00:00:00.000 --> 00:0x0:01.000 +invalid + +00:00:00.000 --> 00:00x:01.000 +invalid + +00:00:00.000 --> 00:00:x01.000 +invalid + +00:00:00.000 --> 00:00:0x1.000 +invalid + +00:00:00.000 --> 00:00:01x.000 +invalid + +00:00:00.000 --> 00:00:01.x000 +invalid + +00:00:00.000 --> 00:00:01.0x00 +invalid + +00:00:00.000 --> 00:00:01.00x0 +invalid + +x0:00:00.000 --> 00:00:01.000 +invalid + +0x:00:00.000 --> 00:00:01.000 +invalid + +00x00:00.000 --> 00:00:01.000 +invalid + +00:x0:00.000 --> 00:00:01.000 +invalid + +00:0x:00.000 --> 00:00:01.000 +invalid + +00:00x00.000 --> 00:00:01.000 +invalid + +00:00:x0.000 --> 00:00:01.000 +invalid + +00:00:0x.000 --> 00:00:01.000 +invalid + +00:00:00x000 --> 00:00:01.000 +invalid + +00:00:00.x00 --> 00:00:01.000 +invalid + +00:00:00.0x0 --> 00:00:01.000 +invalid + +00:00:00.00x --> 00:00:01.000 +invalid + +00:00:00.000x--> 00:00:01.000 +invalid + +00:00:00.000 x-> 00:00:01.000 +invalid + +00:00:00.000 -x> 00:00:01.000 +invalid + +00:00:00.000 --x 00:00:01.000 +invalid + +00:00:00.000 -->x00:00:01.000 +invalid + +00:00:00.000 --> x0:00:01.000 +invalid + +00:00:00.000 --> 0x:00:01.000 +invalid + +00:00:00.000 --> 00x00:01.000 +invalid + +00:00:00.000 --> 00:x0:01.000 +invalid + +00:00:00.000 --> 00:0x:01.000 +invalid + +00:00:00.000 --> 00:00x01.000 +invalid + +00:00:00.000 --> 00:00:x1.000 +invalid + +00:00:00.000 --> 00:00:0x.000 +invalid + +00:00:00.000 --> 00:00:01x000 +invalid + +00:00:00.000 --> 00:00:01.x00 +invalid + +00:00:00.000 --> 00:00:01.0x0 +invalid + +00:00:00.000 --> 00:00:01.00x +invalid + +00.00:00.000 --> 00:00:01.000 +invalid + +00:00.00.000 --> 00:00:01.000 +invalid + +00:00:00:000 --> 00:00:01.000 +invalid + +00:00.00:000 --> 00:00:01.000 +invalid + +00:00:00,000 --> 00:00:01,000 +invalid \ No newline at end of file diff --git a/testing/web-platform/tests/webvtt/parsing/file-parsing/support/timings-negative.test b/testing/web-platform/tests/webvtt/parsing/file-parsing/support/timings-negative.test new file mode 100644 index 000000000000..2cded0092993 --- /dev/null +++ b/testing/web-platform/tests/webvtt/parsing/file-parsing/support/timings-negative.test @@ -0,0 +1,33 @@ +timings, negative + + +assert_equals(cues.length, 4); + +[ + [0, 0], + [1, 0.999], + [60, 59.999], + [3600, 3599.999], +].forEach(function(pair, index) { + var startTime = pair[0]; + var endTime = pair[1]; + + assert_equals(cues[index].text, 'text' + index, 'Failed with cue ' + index); + assert_equals(cues[index].startTime, startTime, 'Failed with cue ' + index); + assert_equals(cues[index].endTime, endTime, 'Failed with cue ' + index); +}); + +=== +WEBVTT + +00:00:00.000 --> 00:00:00.000 +text0 + +00:00:01.000 --> 00:00:00.999 +text1 + +00:01:00.000 --> 00:00:59.999 +text2 + +01:00:00.000 --> 00:59:59.999 +text3 diff --git a/testing/web-platform/tests/webvtt/parsing/file-parsing/support/timings-omitted-hours.test b/testing/web-platform/tests/webvtt/parsing/file-parsing/support/timings-omitted-hours.test new file mode 100644 index 000000000000..8fb5858571d2 --- /dev/null +++ b/testing/web-platform/tests/webvtt/parsing/file-parsing/support/timings-omitted-hours.test @@ -0,0 +1,22 @@ +timings, omitted hours + + +assert_equals(cues.length, 3); + +Array.from(cues).forEach(function(cue, index) { + assert_equals(cue.text, 'text' + index, 'Failed with cue ' + index); + assert_equals(cue.startTime, 0, 'Failed with cue ' + index); + assert_equals(cue.endTime, 1, 'Failed with cue ' + index); +}); + +=== +WEBVTT + +00:00.000 --> 00:00:01.000 +text0 + +00:00:00.000 --> 00:01.000 +text1 + +00:00.000 --> 00:01.000 +text2 diff --git a/testing/web-platform/tests/webvtt/parsing/file-parsing/support/timings-too-long.test b/testing/web-platform/tests/webvtt/parsing/file-parsing/support/timings-too-long.test new file mode 100644 index 000000000000..5f2cc889a666 --- /dev/null +++ b/testing/web-platform/tests/webvtt/parsing/file-parsing/support/timings-too-long.test @@ -0,0 +1,60 @@ +timings, too long + + +assert_equals(cues.length, 2); + +assert_equals(cues[0].text, 'text0'); +assert_equals(cues[0].startTime, 0); +assert_equals(cues[0].endTime, 1); + +assert_equals(cues[1].text, 'text1'); +assert_equals(cues[1].startTime, 0); +assert_equals(cues[1].endTime, 1); + +=== +WEBVTT + +000:00:00.000 --> 00:00:01.000 +text0 + +00::00:00.000 --> 00:00:01.000 +invalid + +00:000:00.000 --> 00:00:01.000 +invalid + +00:00::00.000 --> 00:00:01.000 +invalid + +00:00:000.000 --> 00:00:01.000 +invalid + +00:00:00..000 --> 00:00:01.000 +invalid + +00:00:00.0000 --> 00:00:01.000 +invalid + +00:00.0000 --> 00:00:01.000 +invalid + +000:00.000 --> 00:01.000 +invalid + +00::00.000 --> 00:01.000 +invalid + +00:000.000 --> 00:01.000 +invalid + +00:00..000 --> 00:01.000 +invalid + +00:00.0000 --> 00:01.000 +invalid + +00:00.000 --> 000:01.000 +invalid + +00:00:00.000 --> 000:00:01.000 +text1 diff --git a/testing/web-platform/tests/webvtt/parsing/file-parsing/support/timings-too-short.test b/testing/web-platform/tests/webvtt/parsing/file-parsing/support/timings-too-short.test new file mode 100644 index 000000000000..d078eacf7c32 --- /dev/null +++ b/testing/web-platform/tests/webvtt/parsing/file-parsing/support/timings-too-short.test @@ -0,0 +1,111 @@ +timings, too short + + +assert_equals(cues.length, 2); + +assert_equals(cues[0].text, 'text0'); +assert_equals(cues[0].startTime, 0); +assert_equals(cues[0].endTime, 1); + +assert_equals(cues[1].text, 'text1'); +assert_equals(cues[1].startTime, 0); +assert_equals(cues[1].endTime, 1); + +=== +WEBVTT + +0:00:00.000 --> 00:00:01.000 +text0 + +0000:00.000 --> 00:00:01.000 +invalid + +00:0:00.000 --> 00:00:01.000 +invalid + +00:0000.000 --> 00:00:01.000 +invalid + +00:00:0.000 --> 00:00:01.000 +invalid + +00:00:00000 --> 00:00:01.000 +invalid + +00:00:00.00 --> 00:00:01.000 +invalid + +00:00:00.0 --> 00:00:01.000 +invalid + +00:00:00. --> 00:00:01.000 +invalid + +00:00:00 --> 00:00:01.000 +invalid + +00:00:0 --> 00:00:01.000 +invalid + +00:00: --> 00:00:01.000 +invalid + +00:00 --> 00:00:01.000 +invalid + +00:0 --> 00:00:01.000 +invalid + +00: --> 00:00:01.000 +invalid + +00 --> 00:00:01.000 +invalid + +0 --> 00:00:01.000 +invalid + + --> 00:00:01.000 +invalid + +0:00.000 --> 00:01.000 +invalid + +0000.000 --> 00:01.000 +invalid + +00:0.000 --> 00:01.000 +invalid + +00:00000 --> 00:01.000 +invalid + +00:00.00 --> 00:01.000 +invalid + +00:00.0 --> 00:01.000 +invalid + +00:00. --> 00:01.000 +invalid + +0:00. --> 00:01.000 +invalid + +:00. --> 00:01.000 +invalid + +00. --> 00:01.000 +invalid + +0. --> 00:01.000 +invalid + +. --> 00:01.000 +invalid + +00:00.000 --> 0:01.000 +invalid + +00:00:00.000 --> 0:00:01.000 +text1 diff --git a/testing/web-platform/tests/webvtt/parsing/file-parsing/support/whitespace-chars.test b/testing/web-platform/tests/webvtt/parsing/file-parsing/support/whitespace-chars.test new file mode 100644 index 000000000000..7ee43facaa65 --- /dev/null +++ b/testing/web-platform/tests/webvtt/parsing/file-parsing/support/whitespace-chars.test @@ -0,0 +1,32 @@ +whitespace chars + + +assert_equals(cues.length, 3); + +assert_equals(cues[0].id, 'spaces'); +assert_equals(cues[0].text, ' text0'); + +assert_equals(cues[1].id, 'tabs'); +assert_equals(cues[1].text, 'text1'); + +assert_equals(cues[2].id, 'form feed'); +assert_equals(cues[2].text, 'text2'); + +=== +WEBVTT + +spaces + 00:00:00.000 --> 00:00:01.000\x20 + text0 + +tabs +\t\t\t00:00:00.000\t\t\t\t-->\t\t00:00:01.000\t +text1 + +form feed +\f\f\f00:00:00.000\f\f\f\f-->\f\f00:00:01.000\f +text2 + +vertical tab +\v\v\v00:00:00.000\v\v\v\v-->\v\v00:00:01.000\v +invalid diff --git a/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/arrows.html b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/arrows.html new file mode 100644 index 000000000000..66c5764f6f71 --- /dev/null +++ b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/arrows.html @@ -0,0 +1,44 @@ + + + + +WebVTT parser test: arrows + + + +
    + diff --git a/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/header-garbage.html b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/header-garbage.html new file mode 100644 index 000000000000..0e859e887994 --- /dev/null +++ b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/header-garbage.html @@ -0,0 +1,43 @@ + + + + +WebVTT parser test: header, garbage + + + +
    + diff --git a/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/header-space.html b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/header-space.html new file mode 100644 index 000000000000..9179a1ca1e32 --- /dev/null +++ b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/header-space.html @@ -0,0 +1,43 @@ + + + + +WebVTT parser test: header, space + + + +
    + diff --git a/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/header-tab.html b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/header-tab.html new file mode 100644 index 000000000000..0f6709c5b3b3 --- /dev/null +++ b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/header-tab.html @@ -0,0 +1,43 @@ + + + + +WebVTT parser test: header, tab + + + +
    + diff --git a/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/header-timings.html b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/header-timings.html new file mode 100644 index 000000000000..f699908f0943 --- /dev/null +++ b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/header-timings.html @@ -0,0 +1,43 @@ + + + + +WebVTT parser test: header, timings + + + +
    + diff --git a/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/ids.html b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/ids.html new file mode 100644 index 000000000000..0f354278c935 --- /dev/null +++ b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/ids.html @@ -0,0 +1,44 @@ + + + + +WebVTT parser test: ids + + + +
    + diff --git a/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/newlines.html b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/newlines.html new file mode 100644 index 000000000000..f6b3b92b4134 --- /dev/null +++ b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/newlines.html @@ -0,0 +1,51 @@ + + + + +WebVTT parser test: newlines + + + +
    + diff --git a/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/nulls.html b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/nulls.html new file mode 100644 index 000000000000..19a4eff621db --- /dev/null +++ b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/nulls.html @@ -0,0 +1,60 @@ + + + + +WebVTT parser test: nulls + + + +
    + diff --git a/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/regions-id.html b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/regions-id.html new file mode 100644 index 000000000000..e478d1235dd6 --- /dev/null +++ b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/regions-id.html @@ -0,0 +1,51 @@ + + + + +WebVTT parser test: regions, id + + + +
    + diff --git a/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/regions-lines.html b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/regions-lines.html new file mode 100644 index 000000000000..b9ae840e462c --- /dev/null +++ b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/regions-lines.html @@ -0,0 +1,64 @@ + + + + +WebVTT parser test: regions, lines + + + +
    + diff --git a/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/regions-old.html b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/regions-old.html new file mode 100644 index 000000000000..2d1b9570af11 --- /dev/null +++ b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/regions-old.html @@ -0,0 +1,42 @@ + + + + +WebVTT parser test: regions, old + + + +
    + diff --git a/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/regions-regionanchor.html b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/regions-regionanchor.html new file mode 100644 index 000000000000..b3e862763a6a --- /dev/null +++ b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/regions-regionanchor.html @@ -0,0 +1,66 @@ + + + + +WebVTT parser test: regions, regionanchor + + + +
    + diff --git a/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/regions-scroll.html b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/regions-scroll.html new file mode 100644 index 000000000000..6e9b94003128 --- /dev/null +++ b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/regions-scroll.html @@ -0,0 +1,54 @@ + + + + +WebVTT parser test: regions, scroll + + + +
    + diff --git a/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/regions-viewportanchor.html b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/regions-viewportanchor.html new file mode 100644 index 000000000000..c0a047ea514d --- /dev/null +++ b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/regions-viewportanchor.html @@ -0,0 +1,66 @@ + + + + +WebVTT parser test: regions, viewportanchor + + + +
    + diff --git a/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/settings-align.html b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/settings-align.html new file mode 100644 index 000000000000..c86ad4269f78 --- /dev/null +++ b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/settings-align.html @@ -0,0 +1,57 @@ + + + + +WebVTT parser test: settings, align + + + +
    + diff --git a/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/settings-line.html b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/settings-line.html new file mode 100644 index 000000000000..a8c2f64e63b9 --- /dev/null +++ b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/settings-line.html @@ -0,0 +1,96 @@ + + + + +WebVTT parser test: settings, line + + + +
    + diff --git a/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/settings-multiple.html b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/settings-multiple.html new file mode 100644 index 000000000000..230d030bb635 --- /dev/null +++ b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/settings-multiple.html @@ -0,0 +1,58 @@ + + + + +WebVTT parser test: settings, multiple + + + +
    + diff --git a/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/settings-position.html b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/settings-position.html new file mode 100644 index 000000000000..991818cb5e98 --- /dev/null +++ b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/settings-position.html @@ -0,0 +1,66 @@ + + + + +WebVTT parser test: settings, position + + + +
    + diff --git a/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/settings-region.html b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/settings-region.html new file mode 100644 index 000000000000..fb857fde95cc --- /dev/null +++ b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/settings-region.html @@ -0,0 +1,64 @@ + + + + +WebVTT parser test: settings, region + + + +
    + diff --git a/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/settings-size.html b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/settings-size.html new file mode 100644 index 000000000000..b56e3c9dbc48 --- /dev/null +++ b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/settings-size.html @@ -0,0 +1,58 @@ + + + + +WebVTT parser test: settings, size + + + +
    + diff --git a/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/settings-vertical.html b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/settings-vertical.html new file mode 100644 index 000000000000..d98ab6be660c --- /dev/null +++ b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/settings-vertical.html @@ -0,0 +1,55 @@ + + + + +WebVTT parser test: settings, size + + + +
    + diff --git a/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/signature-bom.html b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/signature-bom.html new file mode 100644 index 000000000000..c2e083ccdfa8 --- /dev/null +++ b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/signature-bom.html @@ -0,0 +1,39 @@ + + + + +WebVTT parser test: signature, bom + + + +
    + diff --git a/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/signature-no-newline.html b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/signature-no-newline.html new file mode 100644 index 000000000000..17e567dd0ca9 --- /dev/null +++ b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/signature-no-newline.html @@ -0,0 +1,39 @@ + + + + +WebVTT parser test: signature, no newline + + + +
    + diff --git a/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/signature-space-no-newline.html b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/signature-space-no-newline.html new file mode 100644 index 000000000000..60132e284280 --- /dev/null +++ b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/signature-space-no-newline.html @@ -0,0 +1,39 @@ + + + + +WebVTT parser test: signature, space, no newline + + + +
    + diff --git a/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/signature-space.html b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/signature-space.html new file mode 100644 index 000000000000..25fe0873e9b6 --- /dev/null +++ b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/signature-space.html @@ -0,0 +1,39 @@ + + + + +WebVTT parser test: signature, space + + + +
    + diff --git a/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/signature-tab-no-newline.html b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/signature-tab-no-newline.html new file mode 100644 index 000000000000..71caad69baa2 --- /dev/null +++ b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/signature-tab-no-newline.html @@ -0,0 +1,39 @@ + + + + +WebVTT parser test: signature, tab, no newline + + + +
    + diff --git a/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/signature-tab.html b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/signature-tab.html new file mode 100644 index 000000000000..d3e04d8b50db --- /dev/null +++ b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/signature-tab.html @@ -0,0 +1,39 @@ + + + + +WebVTT parser test: signature, tab + + + +
    + diff --git a/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/signature-timings.html b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/signature-timings.html new file mode 100644 index 000000000000..58e5548348cc --- /dev/null +++ b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/signature-timings.html @@ -0,0 +1,39 @@ + + + + +WebVTT parser test: signature, timings + + + +
    + diff --git a/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/stylesheets.html b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/stylesheets.html new file mode 100644 index 000000000000..d0f53f4d9395 --- /dev/null +++ b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/stylesheets.html @@ -0,0 +1,40 @@ + + + + +WebVTT parser test: stylesheets, rules + + + +
    + diff --git a/testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/arrows.vtt b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/support/arrows.vtt similarity index 64% rename from testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/arrows.vtt rename to testing/web-platform/tests/webvtt/parsing/file-parsing/tests/support/arrows.vtt index 057cede29144..30d17b9de1af 100644 --- a/testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/arrows.vtt +++ b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/support/arrows.vtt @@ -2,18 +2,26 @@ WEBVTT --> 00:00:00.000 --> 00:00:01.000 -{} +text0 foo--> 00:00:00.000 --> 00:00:01.000 -{} +text1 -->foo 00:00:00.000 --> 00:00:01.000 -{} +text2 ---> 00:00:00.000 --> 00:00:01.000 -{} +text3 -->--> 00:00:00.000 --> 00:00:01.000 -{} +text4 00:00:00.000 --> 00:00:01.000 -{} +text5 + +00:00:00.000 -a --> + +00:00:00.000 --a --> + +00:00:00.000 - --> + +00:00:00.000 -- --> diff --git a/testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/header-garbage.vtt b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/support/header-garbage.vtt similarity index 91% rename from testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/header-garbage.vtt rename to testing/web-platform/tests/webvtt/parsing/file-parsing/tests/support/header-garbage.vtt index 5935db50f5bd..0504e796bedf 100644 --- a/testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/header-garbage.vtt +++ b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/support/header-garbage.vtt @@ -2,4 +2,4 @@ WEBVTT foobar 00:00:00.000 --> 00:00:01.000 -{} \ No newline at end of file +text \ No newline at end of file diff --git a/testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/header-space.vtt b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/support/header-space.vtt similarity index 90% rename from testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/header-space.vtt rename to testing/web-platform/tests/webvtt/parsing/file-parsing/tests/support/header-space.vtt index 62a7426381b1..9462a1e7c10d 100644 --- a/testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/header-space.vtt +++ b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/support/header-space.vtt @@ -1,4 +1,4 @@ WEBVTT 00:00:00.000 --> 00:00:01.000 -{} +text \ No newline at end of file diff --git a/testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/header-tab.vtt b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/support/header-tab.vtt similarity index 88% rename from testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/header-tab.vtt rename to testing/web-platform/tests/webvtt/parsing/file-parsing/tests/support/header-tab.vtt index f8eac7084a8b..76564a6e1a92 100644 --- a/testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/header-tab.vtt +++ b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/support/header-tab.vtt @@ -1,4 +1,4 @@ WEBVTT 00:00:00.000 --> 00:00:01.000 -{} +text diff --git a/testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/header-timings.vtt b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/support/header-timings.vtt similarity index 90% rename from testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/header-timings.vtt rename to testing/web-platform/tests/webvtt/parsing/file-parsing/tests/support/header-timings.vtt index bd084debc9d0..5442228eecc1 100644 --- a/testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/header-timings.vtt +++ b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/support/header-timings.vtt @@ -1,3 +1,3 @@ WEBVTT 00:00:00.000 --> 00:00:01.000 -{} \ No newline at end of file +text \ No newline at end of file diff --git a/testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/ids.vtt b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/support/ids.vtt similarity index 70% rename from testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/ids.vtt rename to testing/web-platform/tests/webvtt/parsing/file-parsing/tests/support/ids.vtt index ea335ee9eb5e..5f3e91f8a4b9 100644 --- a/testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/ids.vtt +++ b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/support/ids.vtt @@ -2,20 +2,20 @@ WEBVTT leading space 00:00:00.000 --> 00:00:01.000 -{"id":" leading space"} +text0 trailing space 00:00:00.000 --> 00:00:01.000 -{"id":"trailing space "} +text1 -- > 00:00:00.000 --> 00:00:01.000 -{"id":"-- >"} +text2 -> 00:00:00.000 --> 00:00:01.000 -{"id":"->"} +text3 00:00:00.000 --> 00:00:01.000 -{"id":" "} \ No newline at end of file +text4 diff --git a/testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/newlines.vtt b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/support/newlines.vtt similarity index 52% rename from testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/newlines.vtt rename to testing/web-platform/tests/webvtt/parsing/file-parsing/tests/support/newlines.vtt index e79cfeb3dfe2..bde1c30e2c70 100644 --- a/testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/newlines.vtt +++ b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/support/newlines.vtt @@ -1,11 +1,12 @@ -WEBVTT cr 00:00:00.000 --> 00:00:01.000 {"id":"cr"} +WEBVTT cr 00:00:00.000 --> 00:00:01.000 text0 lf 00:00:00.000 --> 00:00:01.000 -{"id":"lf"} +text1 crlf 00:00:00.000 --> 00:00:01.000 -{"id":"crlf"} +text2 lfcr 00:00:00.000 --> 00:00:01.000 -{"id":"lfcr"} +text3 + diff --git a/testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/nulls.vtt b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/support/nulls.vtt similarity index 81% rename from testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/nulls.vtt rename to testing/web-platform/tests/webvtt/parsing/file-parsing/tests/support/nulls.vtt index 85669c265d8a7f3a8d2562a0d21e3fefe98e46a8..fe6d193d6372048b09f0d20ad188942b19f032f3 100644 GIT binary patch literal 2792 zcma)-O-{ow5QS&$Q_K<;MJ|7fF1kSC1{JI=VrWE2sy3;(9O6h^ff+kL{Ym2|Wo3Py zXM5hfygom@tX781RoN5;=Ou5pexFy(j*GnXyjxdIk@1)N^jxp=cGVTTiZ^asbM-FE zp4Z-GetT`KU4-w(TFbN9lG}y3E|}VX*VY)~UM$a$J#%CJet(8tZ;j{7)h@MHHmM}t zn(2eFEAo$$7QW2F8SfxoaSHr>f~QcwFaMCj<9T}i@tCLcht12qNMy&HVs!NWJ=QJT z@jmsOrOAE{oTaJ0A8?B(ozfNAAPsOq8sStL;zSzbEP>pONRQ0J;k&eBBOumZ0yzuY zh0f-6B1<{}Q((9`|XxItQy6I|GFOOi-NC<;-MZ1H< zg>VQa_kb`sQ_x6369o+vG*6;m(qq{AG&x<-r%6oxk`@(4b<@@4Ux{I&i&PU`42wP; Y#`!F+yR=rH0+{|L5lrp@VU~LAAC<;tZ2$lO literal 2773 zcma)-O-{ow5QS%*Q;f2LMJsokMI{hKLSk9LhD}5ajT(}wZP*}=hBy*eU~DJpPtwkl zva&wUvpsKKp6_p;7K@0YtEwqWE-GGc>}OFoTP};r@^)D_WzHYj%JObmw5wUUt$Ceo zc3i*7vgM`Ca=W>Xj7j`AHOBB{GUs+-<`$x_?6E(1#*9HZaqYF@kmXJzqTQDUpy-vxjjOFB%xGFF(vF#;U>jq*mKb9#On zb|6k~9v<{=cC9j+z7unPuIas`AkU~Yi10j35R8enDwhp6+`+ESaNU`vg14p9{a paiVH1`TIeXhyt}l6rzGH`>7oyaTmnSmOABrd;ld^Kqx~U^$(g36tMsR diff --git a/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/support/regions-id.vtt b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/support/regions-id.vtt new file mode 100644 index 000000000000..bbcc14d2cd08 --- /dev/null +++ b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/support/regions-id.vtt @@ -0,0 +1,34 @@ +WEBVTT + +NOTE No API for accessing region ids, so using lines to uniquely identify regions + +REGION +id:foo +id:bar +lines:1 + +REGION +id:bar id:foo +lines:2 + +REGION +id:id +id: foo +id :bar +lines:3 + +REGION +id: +lines:4 + +00:00:00.000 --> 00:00:01.000 region:foo +valid + +00:00:00.000 --> 00:00:01.000 region:bar +valid + +00:00:00.000 --> 00:00:01.000 region:id +valid + +00:00:00.000 --> 00:00:01.000 region: +valid diff --git a/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/support/regions-lines.vtt b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/support/regions-lines.vtt new file mode 100644 index 000000000000..d6397045aaeb --- /dev/null +++ b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/support/regions-lines.vtt @@ -0,0 +1,98 @@ +WEBVTT + +NOTE valid + +REGION +id:1 +lines:0 + +REGION +id:2 +lines:1 + +REGION +id:3 +lines:100 + +REGION +id:4 +lines:101 + +REGION +id:5 +lines:65536 + +REGION +id:6 +lines:4294967296 + +REGION +id:7 +lines:18446744073709552000 + +REGION +id:8 +lines:10000000000000000000000000000000000 + +REGION +id:9 +lines:1 lines:3 +lines:2 + +NOTE invalid + +REGION +id:10 +lines:-0 + +REGION +id:11 +lines:1.5 + +REGION +id:12 +lines:-1 + +REGION +id:13 +lines: 1 +lines :1 + +00:00:00.000 --> 00:00:01.000 region:1 +text + +00:00:00.000 --> 00:00:01.000 region:2 +text + +00:00:00.000 --> 00:00:01.000 region:3 +text + +00:00:00.000 --> 00:00:01.000 region:4 +text + +00:00:00.000 --> 00:00:01.000 region:5 +text + +00:00:00.000 --> 00:00:01.000 region:6 +text + +00:00:00.000 --> 00:00:01.000 region:7 +text + +00:00:00.000 --> 00:00:01.000 region:8 +text + +00:00:00.000 --> 00:00:01.000 region:9 +text + +00:00:00.000 --> 00:00:01.000 region:10 +text + +00:00:00.000 --> 00:00:01.000 region:11 +text + +00:00:00.000 --> 00:00:01.000 region:12 +text + +00:00:00.000 --> 00:00:01.000 region:13 +text diff --git a/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/support/regions-old.vtt b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/support/regions-old.vtt new file mode 100644 index 000000000000..f9b26659a838 --- /dev/null +++ b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/support/regions-old.vtt @@ -0,0 +1,9 @@ +WEBVTT +Region: id=foo width=40% lines=3 regionanchor=0%,100% viewportanchor=10%,90% scroll=up +Region: id=bar width=40% lines=3 regionanchor=100%,100% viewportanchor=90%,90% scroll=up + +00:00:00.000 --> 00:00:01.000 region:foo +text0 + +00:00:00.000 --> 00:00:01.000 region:bar +text1 diff --git a/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/support/regions-regionanchor.vtt b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/support/regions-regionanchor.vtt new file mode 100644 index 000000000000..e6aa770c37b3 --- /dev/null +++ b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/support/regions-regionanchor.vtt @@ -0,0 +1,149 @@ +WEBVTT + +NOTE valid + +REGION +id:0 + +REGION +id:1 +regionanchor:0%,0% + +REGION +id:2 +regionanchor:1%,1% + +REGION +id:3 +regionanchor:100%,0% + +REGION +id:4 +regionanchor:0%,100% + +REGION +id:5 +regionanchor:100%,100% + +NOTE invalid + +REGION +id:6 +regionanchor:0,0 + +REGION +id:7 +regionanchor:0%,0 + +REGION +id:8 +regionanchor:0,0% + +REGION +id:9 +regionanchor:1% + +REGION +id:10 +regionanchor:,1% + +REGION +id:11 +regionanchor:101%,1% + +REGION +id:12 +regionanchor:1%,101% + +REGION +id:13 +regionanchor:-0%,0% + +REGION +id:14 +regionanchor:0%,-0% + +REGION +id:15 +regionanchor:65536%,65536% + +REGION +id:16 +regionanchor:4294967296%,4294967296% + +REGION +id:17 +regionanchor:18446744073709552000%,18446744073709552000% + +REGION +id:18 +regionanchor:10000000000000000000000000000000000%,10000000000000000000000000000000000% + +REGION +id:19 +regionanchor: 100%,100% +regionanchor :100%,100% +regionanchor:100% ,100% +regionanchor:100%, 100% +regionanchor:100 %,100% +regionanchor:100%,100 % + +00:00:00.000 --> 00:00:01.000 region:0 +text + +00:00:00.000 --> 00:00:01.000 region:1 +text + +00:00:00.000 --> 00:00:01.000 region:2 +text + +00:00:00.000 --> 00:00:01.000 region:3 +text + +00:00:00.000 --> 00:00:01.000 region:4 +text + +00:00:00.000 --> 00:00:01.000 region:5 +text + +00:00:00.000 --> 00:00:01.000 region:6 +text + +00:00:00.000 --> 00:00:01.000 region:7 +text + +00:00:00.000 --> 00:00:01.000 region:8 +text + +00:00:00.000 --> 00:00:01.000 region:9 +text + +00:00:00.000 --> 00:00:01.000 region:10 +text + +00:00:00.000 --> 00:00:01.000 region:11 +text + +00:00:00.000 --> 00:00:01.000 region:12 +text + +00:00:00.000 --> 00:00:01.000 region:13 +text + +00:00:00.000 --> 00:00:01.000 region:14 +text + +00:00:00.000 --> 00:00:01.000 region:15 +text + +00:00:00.000 --> 00:00:01.000 region:16 +text + +00:00:00.000 --> 00:00:01.000 region:17 +text + +00:00:00.000 --> 00:00:01.000 region:18 +text + +00:00:00.000 --> 00:00:01.000 region:19 +text diff --git a/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/support/regions-scroll.vtt b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/support/regions-scroll.vtt new file mode 100644 index 000000000000..4c7f21d935f4 --- /dev/null +++ b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/support/regions-scroll.vtt @@ -0,0 +1,46 @@ +WEBVTT + +REGION +id:0 + +REGION +id:1 +scroll:up + +REGION +id:2 +scroll:up scroll:up scroll:up scroll:up scroll:up scroll:up scroll:up scroll:up +scroll:up scroll:up scroll:up scroll:up scroll:up scroll:up scroll:up scroll:up + +REGION +id:3 +scroll:down +scroll:left +scroll:right + +REGION +id:4 +scroll: up +scroll :up + +REGION +id:5 +scroll:up scroll: + +00:00:00.000 --> 00:00:01.000 region:0 +text + +00:00:00.000 --> 00:00:01.000 region:1 +text + +00:00:00.000 --> 00:00:01.000 region:2 +text + +00:00:00.000 --> 00:00:01.000 region:3 +text + +00:00:00.000 --> 00:00:01.000 region:4 +text + +00:00:00.000 --> 00:00:01.000 region:5 +text diff --git a/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/support/regions-viewportanchor.vtt b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/support/regions-viewportanchor.vtt new file mode 100644 index 000000000000..7470be647cd4 --- /dev/null +++ b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/support/regions-viewportanchor.vtt @@ -0,0 +1,149 @@ +WEBVTT + +NOTE valid + +REGION +id:0 + +REGION +id:1 +viewportanchor:0%,0% + +REGION +id:2 +viewportanchor:1%,1% + +REGION +id:3 +viewportanchor:100%,0% + +REGION +id:4 +viewportanchor:0%,100% + +REGION +id:5 +viewportanchor:100%,100% + +NOTE invalid + +REGION +id:6 +viewportanchor:0,0 + +REGION +id:7 +viewportanchor:0%,0 + +REGION +id:8 +viewportanchor:0,0% + +REGION +id:9 +viewportanchor:1% + +REGION +id:10 +viewportanchor:,1% + +REGION +id:11 +viewportanchor:101%,1% + +REGION +id:12 +viewportanchor:1%,101% + +REGION +id:13 +viewportanchor:-0%,0% + +REGION +id:14 +viewportanchor:0%,-0% + +REGION +id:15 +viewportanchor:65536%,65536% + +REGION +id:16 +viewportanchor:4294967296%,4294967296% + +REGION +id:17 +viewportanchor:18446744073709552000%,18446744073709552000% + +REGION +id:18 +viewportanchor:10000000000000000000000000000000000%,10000000000000000000000000000000000% + +REGION +id:19 +viewportanchor: 100%,100% +viewportanchor :100%,100% +viewportanchor:100% ,100% +viewportanchor:100%, 100% +viewportanchor:100 %,100% +viewportanchor:100%,100 % + +00:00:00.000 --> 00:00:01.000 region:0 +text + +00:00:00.000 --> 00:00:01.000 region:1 +text + +00:00:00.000 --> 00:00:01.000 region:2 +text + +00:00:00.000 --> 00:00:01.000 region:3 +text + +00:00:00.000 --> 00:00:01.000 region:4 +text + +00:00:00.000 --> 00:00:01.000 region:5 +text + +00:00:00.000 --> 00:00:01.000 region:6 +text + +00:00:00.000 --> 00:00:01.000 region:7 +text + +00:00:00.000 --> 00:00:01.000 region:8 +text + +00:00:00.000 --> 00:00:01.000 region:9 +text + +00:00:00.000 --> 00:00:01.000 region:10 +text + +00:00:00.000 --> 00:00:01.000 region:11 +text + +00:00:00.000 --> 00:00:01.000 region:12 +text + +00:00:00.000 --> 00:00:01.000 region:13 +text + +00:00:00.000 --> 00:00:01.000 region:14 +text + +00:00:00.000 --> 00:00:01.000 region:15 +text + +00:00:00.000 --> 00:00:01.000 region:16 +text + +00:00:00.000 --> 00:00:01.000 region:17 +text + +00:00:00.000 --> 00:00:01.000 region:18 +text + +00:00:00.000 --> 00:00:01.000 region:19 +text diff --git a/testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/settings-align.vtt b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/support/settings-align.vtt similarity index 97% rename from testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/settings-align.vtt rename to testing/web-platform/tests/webvtt/parsing/file-parsing/tests/support/settings-align.vtt index 1a7ae1b6e629..3bcfe5ac4cbc 100644 --- a/testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/settings-align.vtt +++ b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/support/settings-align.vtt @@ -1,28 +1,40 @@ WEBVTT +00:00:00.000 --> 00:00:01.000 +text0 + 00:00:00.000 --> 00:00:01.000 align:start -{"align":"start"} +text1 00:00:00.000 --> 00:00:01.000 align:center -{"align":"center"} +text2 00:00:00.000 --> 00:00:01.000 align:end -{"align":"end"} +text3 + +00:00:00.000 --> 00:00:01.000 align:left +text4 + +00:00:00.000 --> 00:00:01.000 align:right +text5 00:00:00.000 --> 00:00:01.000 align:start align:end -{"align":"end"} +text6 00:00:00.000 --> 00:00:01.000 align:end align:CENTER -{"align":"end"} +text7 00:00:00.000 --> 00:00:01.000 align:end align: center -{"align":"end"} +text8 00:00:00.000 --> 00:00:01.000 align:end align: -{"align":"end"} +text9 + +00:00:00.000 --> 00:00:01.000 align:end align:middle +text10 00:00:00.000 --> 00:00:01.000 align:end align -{"align":"end"} +text11 00:00:00.000 --> 00:00:01.000 align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:end align:center -{"align":"center"} \ No newline at end of file +text12 diff --git a/testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/settings-line.vtt b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/support/settings-line.vtt similarity index 66% rename from testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/settings-line.vtt rename to testing/web-platform/tests/webvtt/parsing/file-parsing/tests/support/settings-line.vtt index 615ee77486f1..ab5510b20d26 100644 --- a/testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/settings-line.vtt +++ b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/support/settings-line.vtt @@ -1,88 +1,115 @@ WEBVTT +NOTE valid + 00:00:00.000 --> 00:00:01.000 line:-1 -{"line":-1} +valid0 00:00:00.000 --> 00:00:01.000 line:0 -{"line":0} +valid1 00:00:00.000 --> 00:00:01.000 line:-0 -{"line":0} +valid2 00:00:00.000 --> 00:00:01.000 line:1 -{"line":1} +valid3 00:00:00.000 --> 00:00:01.000 line:100 -{"line":100} +valid4 00:00:00.000 --> 00:00:01.000 line:101 -{"line":101} +valid5 00:00:00.000 --> 00:00:01.000 line:65536 -{"line":65536} +valid6 00:00:00.000 --> 00:00:01.000 line:4294967296 -{"line":4294967296} +valid7 00:00:00.000 --> 00:00:01.000 line:18446744073709552000 -{"line":18446744073709552000} +valid8 00:00:00.000 --> 00:00:01.000 line:10000000000000000000000000000000000 -{"line":10000000000000000000000000000000000} - -00:00:00.000 --> 00:00:01.000 line:65536% -{} - -00:00:00.000 --> 00:00:01.000 line:4294967296% -{} - -00:00:00.000 --> 00:00:01.000 line:18446744073709552000% -{} - -00:00:00.000 --> 00:00:01.000 line:10000000000000000000000000000000000% -{} +valid9 00:00:00.000 --> 00:00:01.000 line:1.5 -{"line":1.5} +valid10 -00:00:00.000 --> 00:00:01.000 line:0% -{"snapToLines":false, "line":0} +NOTE invalid + +00:00:00.000 --> 00:00:01.000 line:65536% +invalid11 + +00:00:00.000 --> 00:00:01.000 line:4294967296% +invalid12 + +00:00:00.000 --> 00:00:01.000 line:18446744073709552000% +invalid13 + +00:00:00.000 --> 00:00:01.000 line:10000000000000000000000000000000000% +invalid14 00:00:00.000 --> 00:00:01.000 line:-0% -{} +invalid15 00:00:00.000 --> 00:00:01.000 line:101% -{} - -00:00:00.000 --> 00:00:01.000 line:100% -{"snapToLines":false, "line":100} +invalid16 00:00:00.000 --> 00:00:01.000 line:1%- -{} +invalid17 00:00:00.000 --> 00:00:01.000 line:1- -{} +invalid18 00:00:00.000 --> 00:00:01.000 line:%1 -{} +invalid19 00:00:00.000 --> 00:00:01.000 line:1%% -{} - -00:00:00.000 --> 00:00:01.000 line:00% -{"snapToLines":false, "line":0} +invalid20 00:00:00.000 --> 00:00:01.000 line:0%0 -{} +invalid21 00:00:00.000 --> 00:00:01.000 line: 0% -{} +invalid22 00:00:00.000 --> 00:00:01.000 line:0%x -{} +invalid23 00:00:00.000 --> 00:00:01.000 line:- -{} +invalid24 00:00:00.000 --> 00:00:01.000 line:% -{} \ No newline at end of file +invalid25 + +00:00:00.000 --> 00:00:01.000 line:1..5 +invalid26 + +00:00:00.000 --> 00:00:01.000 line:.5 +invalid27 + +00:00:00.000 --> 00:00:01.000 line:5. +invalid28 + +NOTE extra + +00:00:00.000 --> 00:00:01.000 line:0% +text29 + +00:00:00.000 --> 00:00:01.000 line:00% +text30 + +00:00:00.000 --> 00:00:01.000 line:100% +text31 + +00:00:00.000 --> 00:00:01.000 line:100%,start +text32 + +00:00:00.000 --> 00:00:01.000 line:100%,center +text33 + +00:00:00.000 --> 00:00:01.000 line:100%,end +text34 + +00:00:00.000 --> 00:00:01.000 line:100%,middle +text35 diff --git a/testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/settings-multiple.vtt b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/support/settings-multiple.vtt similarity index 52% rename from testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/settings-multiple.vtt rename to testing/web-platform/tests/webvtt/parsing/file-parsing/tests/support/settings-multiple.vtt index 37338bb371b2..17035a2a4207 100644 --- a/testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/settings-multiple.vtt +++ b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/support/settings-multiple.vtt @@ -1,16 +1,9 @@ WEBVTT +id0 00:00:00.000 --> 00:00:01.000 align:start line:1% vertical:lr size:50% position:25% -{"align":"start", -"line":1, -"snapToLines":false, -"vertical":"lr", -"size":50, -"position":25} +text0 +id1 00:00:00.000 --> 00:00:01.000 align:center line:1 vertical:rl size:0% position:100% -{"align":"center", -"line":1, -"vertical":"rl", -"size":0, -"position":100} \ No newline at end of file +text1 diff --git a/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/support/settings-position.vtt b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/support/settings-position.vtt new file mode 100644 index 000000000000..58a7565f71aa --- /dev/null +++ b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/support/settings-position.vtt @@ -0,0 +1,71 @@ +WEBVTT + +NOTE valid + +00:00:00.000 --> 00:00:01.000 position:1% +text0 + +00:00:00.000 --> 00:00:01.000 position:100% +text1 + +00:00:00.000 --> 00:00:01.000 position:1% position:x +text2 + +00:00:00.000 --> 00:00:01.000 position:1.5% +text3 + +00:00:00.000 --> 00:00:01.000 position:1%,line-left +text4 + +00:00:00.000 --> 00:00:01.000 position:1%,center +text5 + +00:00:00.000 --> 00:00:01.000 position:1%,line-right +text6 + +00:00:00.000 --> 00:00:01.000 position:1%,middle +text7 + +00:00:00.000 --> 00:00:01.000 position:1% ,center +text8 + +00:00:00.000 --> 00:00:01.000 position:1%, center +text9 + +NOTE invalid + +00:00:00.000 --> 00:00:01.000 position:-1% +invalid10 + +00:00:00.000 --> 00:00:01.000 position:1 +invalid11 + +00:00:00.000 --> 00:00:01.000 position:1x +invalid12 + +00:00:00.000 --> 00:00:01.000 position:1%x +invalid13 + +00:00:00.000 --> 00:00:01.000 position: +invalid14 + +00:00:00.000 --> 00:00:01.000 position: 1% +invalid15 + +00:00:00.000 --> 00:00:01.000 position:101% +invalid16 + +00:00:00.000 --> 00:00:01.000 position:65536% +invalid17 + +00:00:00.000 --> 00:00:01.000 position:4294967296% +invalid18 + +00:00:00.000 --> 00:00:01.000 position:101%,line-left +invalid19 + +00:00:00.000 --> 00:00:01.000 position:101%,center +invalid20 + +00:00:00.000 --> 00:00:01.000 position:101%,line-right +invalid21 diff --git a/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/support/settings-region.vtt b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/support/settings-region.vtt new file mode 100644 index 000000000000..9116d3736701 --- /dev/null +++ b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/support/settings-region.vtt @@ -0,0 +1,40 @@ +WEBVTT + +REGION +id:foo + +REGION +id:bar + +REGION +id:foo + +REGION +width:10% + +00:00:00.000 --> 00:00:01.000 region:foo +text0 + +00:00:00.000 --> 00:00:01.000 region:bar +text1 + +00:00:00.000 --> 00:00:01.000 region:foo region:bar +text2 + +00:00:00.000 --> 00:00:01.000 region:invalid +text3 + +00:00:00.000 --> 00:00:01.000 region:invalid region:foo +text4 + +00:00:00.000 --> 00:00:01.000 region: +invalid5 + +00:00:00.000 --> 00:00:01.000 region: +invalid6 + +00:00:00.000 --> 00:00:01.000 region: foo +invalid7 + +00:00:00.000 --> 00:00:01.000 region :foo +invalid8 diff --git a/testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/settings-size.vtt b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/support/settings-size.vtt similarity index 62% rename from testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/settings-size.vtt rename to testing/web-platform/tests/webvtt/parsing/file-parsing/tests/support/settings-size.vtt index 5de885fd3f7d..9c2cb8a78c98 100644 --- a/testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/settings-size.vtt +++ b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/support/settings-size.vtt @@ -1,37 +1,53 @@ WEBVTT -00:00:00.000 --> 00:00:01.000 size: -{} +NOTE valid -00:00:00.000 --> 00:00:01.000 size:x -{} +00:00:00.000 --> 00:00:01.000 +text0 00:00:00.000 --> 00:00:01.000 size:1xx size:2% -{"size":2} - -00:00:00.000 --> 00:00:01.000 size:% -{} - -00:00:00.000 --> 00:00:01.000 size:%% -{} - -00:00:00.000 --> 00:00:01.000 size:1%% -{} - -00:00:00.000 --> 00:00:01.000 size:1%x -{} +text1 00:00:00.000 --> 00:00:01.000 size:0% -{"size":0} +text2 00:00:00.000 --> 00:00:01.000 size:00% -{"size":0} +text3 00:00:00.000 --> 00:00:01.000 size:50% size:100% -{"size":100} - -00:00:00.000 --> 00:00:01.000 size:101% -{} +text4 00:00:00.000 --> 00:00:01.000 size:50% size:101% -{"size":50} \ No newline at end of file +text5 + +00:00:00.000 --> 00:00:01.000 size:1.5% +text6 + +NOTE invalid + +00:00:00.000 --> 00:00:01.000 size: +invalid7 + +00:00:00.000 --> 00:00:01.000 size:x +invalid8 + +00:00:00.000 --> 00:00:01.000 size:% +invalid9 + +00:00:00.000 --> 00:00:01.000 size:%% +invalid10 + +00:00:00.000 --> 00:00:01.000 size:1%% +invalid11 + +00:00:00.000 --> 00:00:01.000 size:1%x +invalid12 + +00:00:00.000 --> 00:00:01.000 size:101% +invalid13 + +00:00:00.000 --> 00:00:01.000 size:-3% +invalid14 + +00:00:00.000 --> 00:00:01.000 size:200% +invalid15 diff --git a/testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/settings-vertical.vtt b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/support/settings-vertical.vtt similarity index 67% rename from testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/settings-vertical.vtt rename to testing/web-platform/tests/webvtt/parsing/file-parsing/tests/support/settings-vertical.vtt index cae64cbf85ee..f24c86eaa944 100644 --- a/testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/settings-vertical.vtt +++ b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/support/settings-vertical.vtt @@ -1,19 +1,25 @@ WEBVTT +00:00:00.000 --> 00:00:01.000 +text0 + 00:00:00.000 --> 00:00:01.000 vertical:lr -{"vertical":"lr"} +text1 00:00:00.000 --> 00:00:01.000 vertical:rl -{"vertical":"rl"} +text2 00:00:00.000 --> 00:00:01.000 vertical:rl vertical:lr -{"vertical":"lr"} +text3 00:00:00.000 --> 00:00:01.000 vertical: -{} +invalid4 00:00:00.000 --> 00:00:01.000 vertical:RL -{} +invalid5 + +00:00:00.000 --> 00:00:01.000 vertical: rl +invalid6 00:00:00.000 --> 00:00:01.000 vertical:vertical-rl -{} \ No newline at end of file +invalid7 diff --git a/testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/signature-bom.vtt b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/support/signature-bom.vtt similarity index 100% rename from testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/signature-bom.vtt rename to testing/web-platform/tests/webvtt/parsing/file-parsing/tests/support/signature-bom.vtt diff --git a/testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/signature-no-newline.vtt b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/support/signature-no-newline.vtt similarity index 100% rename from testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/signature-no-newline.vtt rename to testing/web-platform/tests/webvtt/parsing/file-parsing/tests/support/signature-no-newline.vtt diff --git a/testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/signature-space-no-newline.vtt b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/support/signature-space-no-newline.vtt similarity index 100% rename from testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/signature-space-no-newline.vtt rename to testing/web-platform/tests/webvtt/parsing/file-parsing/tests/support/signature-space-no-newline.vtt diff --git a/testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/signature-space.vtt b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/support/signature-space.vtt similarity index 100% rename from testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/signature-space.vtt rename to testing/web-platform/tests/webvtt/parsing/file-parsing/tests/support/signature-space.vtt diff --git a/testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/signature-tab-no-newline.vtt b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/support/signature-tab-no-newline.vtt similarity index 100% rename from testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/signature-tab-no-newline.vtt rename to testing/web-platform/tests/webvtt/parsing/file-parsing/tests/support/signature-tab-no-newline.vtt diff --git a/testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/signature-tab.vtt b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/support/signature-tab.vtt similarity index 100% rename from testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/signature-tab.vtt rename to testing/web-platform/tests/webvtt/parsing/file-parsing/tests/support/signature-tab.vtt diff --git a/testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/signature-timings.vtt b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/support/signature-timings.vtt similarity index 84% rename from testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/signature-timings.vtt rename to testing/web-platform/tests/webvtt/parsing/file-parsing/tests/support/signature-timings.vtt index 036788609ad6..067c284f9345 100644 --- a/testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/signature-timings.vtt +++ b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/support/signature-timings.vtt @@ -1,2 +1,2 @@ WEBVTT 00:00:00.000 --> 00:00:01.000 -"FAIL" +text diff --git a/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/support/stylesheets.vtt b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/support/stylesheets.vtt new file mode 100644 index 000000000000..409718af0788 --- /dev/null +++ b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/support/stylesheets.vtt @@ -0,0 +1,29 @@ +WEBVTT + +STYLE +::cue(#foo) { + width: 20px; +} /* +NOTE hello +00:00:00.000 -- > 00:00:01.000 +*/ +.foo { + width: 19px; +} + +.bar { + width: 18px; +} + +foo +00:00:00.000 --> 00:00:01.000 +text + +STYLE +::cue(::bar) { + width: 18px; +} + +bar +00:00:00.000 --> 00:00:01.000 +text diff --git a/testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/timings-60.vtt b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/support/timings-60.vtt similarity index 69% rename from testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/timings-60.vtt rename to testing/web-platform/tests/webvtt/parsing/file-parsing/tests/support/timings-60.vtt index 137a56e41cb8..68475fbbaabd 100644 --- a/testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/timings-60.vtt +++ b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/support/timings-60.vtt @@ -1,20 +1,19 @@ WEBVTT 00:00:60.000 --> 00:00:01.000 -"FAIL" +invalid 00:60:00.000 --> 00:00:01.000 -"FAIL" +invalid 00:00:00.000 --> 00:00:60.000 -"FAIL" +invalid 00:00:00.000 --> 00:60:00.000 -"FAIL" +invalid 00:00:00.000 --> 60:00:01.000 -{"endTime":216001} +text1 60:00:00.000 --> 60:00:01.000 -{"startTime":216000, -"endTime":216001} +text2 diff --git a/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/support/timings-eof.vtt b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/support/timings-eof.vtt new file mode 100644 index 000000000000..470221d29c20 --- /dev/null +++ b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/support/timings-eof.vtt @@ -0,0 +1,3 @@ +WEBVTT + +00:00:00.000 --> \ No newline at end of file diff --git a/testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/timings-garbage.vtt b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/support/timings-garbage.vtt similarity index 79% rename from testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/timings-garbage.vtt rename to testing/web-platform/tests/webvtt/parsing/file-parsing/tests/support/timings-garbage.vtt index 896986737146..16291237a2d6 100644 --- a/testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/timings-garbage.vtt +++ b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/support/timings-garbage.vtt @@ -1,190 +1,190 @@ WEBVTT x00:00:00.000 --> 00:00:01.000 -"FAIL" +invalid 0x0:00:00.000 --> 00:00:01.000 -"FAIL" +invalid 00x:00:00.000 --> 00:00:01.000 -"FAIL" +invalid 00:x00:00.000 --> 00:00:01.000 -"FAIL" +invalid 00:0x0:00.000 --> 00:00:01.000 -"FAIL" +invalid 00:00x:00.000 --> 00:00:01.000 -"FAIL" +invalid 00:00:x00.000 --> 00:00:01.000 -"FAIL" +invalid 00:00:0x0.000 --> 00:00:01.000 -"FAIL" +invalid 00:00:00x.000 --> 00:00:01.000 -"FAIL" +invalid 00:00:00.x000 --> 00:00:01.000 -"FAIL" +invalid 00:00:00.0x00 --> 00:00:01.000 -"FAIL" +invalid 00:00:00.00x0 --> 00:00:01.000 -"FAIL" +invalid 00:00:00.000x --> 00:00:01.000 -"FAIL" +invalid 00:00:00.000 x--> 00:00:01.000 -"FAIL" +invalid 00:00:00.000 -x-> 00:00:01.000 -"FAIL" +invalid 00:00:00.000 --x> 00:00:01.000 -"FAIL" +invalid 00:00:00.000 -->x 00:00:01.000 -"FAIL" +invalid 00:00:00.000 --> x00:00:01.000 -"FAIL" +invalid 00:00:00.000 --> 0x0:00:01.000 -"FAIL" +invalid 00:00:00.000 --> 00x:00:01.000 -"FAIL" +invalid 00:00:00.000 --> 00:x00:01.000 -"FAIL" +invalid 00:00:00.000 --> 00:0x0:01.000 -"FAIL" +invalid 00:00:00.000 --> 00:00x:01.000 -"FAIL" +invalid 00:00:00.000 --> 00:00:x01.000 -"FAIL" +invalid 00:00:00.000 --> 00:00:0x1.000 -"FAIL" +invalid 00:00:00.000 --> 00:00:01x.000 -"FAIL" +invalid 00:00:00.000 --> 00:00:01.x000 -"FAIL" +invalid 00:00:00.000 --> 00:00:01.0x00 -"FAIL" +invalid 00:00:00.000 --> 00:00:01.00x0 -"FAIL" +invalid x0:00:00.000 --> 00:00:01.000 -"FAIL" +invalid 0x:00:00.000 --> 00:00:01.000 -"FAIL" +invalid 00x00:00.000 --> 00:00:01.000 -"FAIL" +invalid 00:x0:00.000 --> 00:00:01.000 -"FAIL" +invalid 00:0x:00.000 --> 00:00:01.000 -"FAIL" +invalid 00:00x00.000 --> 00:00:01.000 -"FAIL" +invalid 00:00:x0.000 --> 00:00:01.000 -"FAIL" +invalid 00:00:0x.000 --> 00:00:01.000 -"FAIL" +invalid 00:00:00x000 --> 00:00:01.000 -"FAIL" +invalid 00:00:00.x00 --> 00:00:01.000 -"FAIL" +invalid 00:00:00.0x0 --> 00:00:01.000 -"FAIL" +invalid 00:00:00.00x --> 00:00:01.000 -"FAIL" +invalid 00:00:00.000x--> 00:00:01.000 -"FAIL" +invalid 00:00:00.000 x-> 00:00:01.000 -"FAIL" +invalid 00:00:00.000 -x> 00:00:01.000 -"FAIL" +invalid 00:00:00.000 --x 00:00:01.000 -"FAIL" +invalid 00:00:00.000 -->x00:00:01.000 -"FAIL" +invalid 00:00:00.000 --> x0:00:01.000 -"FAIL" +invalid 00:00:00.000 --> 0x:00:01.000 -"FAIL" +invalid 00:00:00.000 --> 00x00:01.000 -"FAIL" +invalid 00:00:00.000 --> 00:x0:01.000 -"FAIL" +invalid 00:00:00.000 --> 00:0x:01.000 -"FAIL" +invalid 00:00:00.000 --> 00:00x01.000 -"FAIL" +invalid 00:00:00.000 --> 00:00:x1.000 -"FAIL" +invalid 00:00:00.000 --> 00:00:0x.000 -"FAIL" +invalid 00:00:00.000 --> 00:00:01x000 -"FAIL" +invalid 00:00:00.000 --> 00:00:01.x00 -"FAIL" +invalid 00:00:00.000 --> 00:00:01.0x0 -"FAIL" +invalid 00:00:00.000 --> 00:00:01.00x -"FAIL" +invalid 00.00:00.000 --> 00:00:01.000 -"FAIL" +invalid 00:00.00.000 --> 00:00:01.000 -"FAIL" +invalid 00:00:00:000 --> 00:00:01.000 -"FAIL" +invalid 00:00.00:000 --> 00:00:01.000 -"FAIL" +invalid 00:00:00,000 --> 00:00:01,000 -"FAIL" \ No newline at end of file +invalid \ No newline at end of file diff --git a/testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/timings-negative.vtt b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/support/timings-negative.vtt similarity index 51% rename from testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/timings-negative.vtt rename to testing/web-platform/tests/webvtt/parsing/file-parsing/tests/support/timings-negative.vtt index e13f0f2544e4..fb3589d8a13d 100644 --- a/testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/timings-negative.vtt +++ b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/support/timings-negative.vtt @@ -1,13 +1,13 @@ WEBVTT 00:00:00.000 --> 00:00:00.000 -{"endTime":0} +text0 00:00:01.000 --> 00:00:00.999 -{"startTime":1, "endTime":0.999} +text1 00:01:00.000 --> 00:00:59.999 -{"startTime":60, "endTime":59.999} +text2 01:00:00.000 --> 00:59:59.999 -{"startTime":3600, "endTime":3599.999} +text3 diff --git a/testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/omitted-hours.vtt b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/support/timings-omitted-hours.vtt similarity index 83% rename from testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/omitted-hours.vtt rename to testing/web-platform/tests/webvtt/parsing/file-parsing/tests/support/timings-omitted-hours.vtt index 3222dea372ed..f581ae302539 100644 --- a/testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/omitted-hours.vtt +++ b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/support/timings-omitted-hours.vtt @@ -1,10 +1,10 @@ WEBVTT 00:00.000 --> 00:00:01.000 -{} +text0 00:00:00.000 --> 00:01.000 -{} +text1 00:00.000 --> 00:01.000 -{} +text2 diff --git a/testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/timings-too-long.vtt b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/support/timings-too-long.vtt similarity index 79% rename from testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/timings-too-long.vtt rename to testing/web-platform/tests/webvtt/parsing/file-parsing/tests/support/timings-too-long.vtt index 23b498b187dc..6357f8dccc6c 100644 --- a/testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/timings-too-long.vtt +++ b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/support/timings-too-long.vtt @@ -1,47 +1,46 @@ WEBVTT 000:00:00.000 --> 00:00:01.000 -{} +text0 00::00:00.000 --> 00:00:01.000 -"FAIL" +invalid 00:000:00.000 --> 00:00:01.000 -"FAIL" +invalid 00:00::00.000 --> 00:00:01.000 -"FAIL" +invalid 00:00:000.000 --> 00:00:01.000 -"FAIL" +invalid 00:00:00..000 --> 00:00:01.000 -"FAIL" +invalid 00:00:00.0000 --> 00:00:01.000 -"FAIL" +invalid 00:00.0000 --> 00:00:01.000 -"FAIL" +invalid 000:00.000 --> 00:01.000 -"FAIL" +invalid 00::00.000 --> 00:01.000 -"FAIL" +invalid 00:000.000 --> 00:01.000 -"FAIL" +invalid 00:00..000 --> 00:01.000 -"FAIL" +invalid 00:00.0000 --> 00:01.000 -"FAIL" +invalid 00:00.000 --> 000:01.000 -"FAIL" +invalid 00:00:00.000 --> 000:00:01.000 -{} - +text1 diff --git a/testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/timings-too-short.vtt b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/support/timings-too-short.vtt similarity index 75% rename from testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/timings-too-short.vtt rename to testing/web-platform/tests/webvtt/parsing/file-parsing/tests/support/timings-too-short.vtt index 864ad3832b89..78d190a7bca6 100644 --- a/testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/timings-too-short.vtt +++ b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/support/timings-too-short.vtt @@ -1,98 +1,97 @@ WEBVTT 0:00:00.000 --> 00:00:01.000 -{} +text0 0000:00.000 --> 00:00:01.000 -"FAIL" +invalid 00:0:00.000 --> 00:00:01.000 -"FAIL" +invalid 00:0000.000 --> 00:00:01.000 -"FAIL" +invalid 00:00:0.000 --> 00:00:01.000 -"FAIL" +invalid 00:00:00000 --> 00:00:01.000 -"FAIL" +invalid 00:00:00.00 --> 00:00:01.000 -"FAIL" +invalid 00:00:00.0 --> 00:00:01.000 -"FAIL" +invalid 00:00:00. --> 00:00:01.000 -"FAIL" +invalid 00:00:00 --> 00:00:01.000 -"FAIL" +invalid 00:00:0 --> 00:00:01.000 -"FAIL" +invalid 00:00: --> 00:00:01.000 -"FAIL" +invalid 00:00 --> 00:00:01.000 -"FAIL" +invalid 00:0 --> 00:00:01.000 -"FAIL" +invalid 00: --> 00:00:01.000 -"FAIL" +invalid 00 --> 00:00:01.000 -"FAIL" +invalid 0 --> 00:00:01.000 -"FAIL" +invalid --> 00:00:01.000 -"FAIL" +invalid 0:00.000 --> 00:01.000 -"FAIL" +invalid 0000.000 --> 00:01.000 -"FAIL" +invalid 00:0.000 --> 00:01.000 -"FAIL" +invalid 00:00000 --> 00:01.000 -"FAIL" +invalid 00:00.00 --> 00:01.000 -"FAIL" +invalid 00:00.0 --> 00:01.000 -"FAIL" +invalid 00:00. --> 00:01.000 -"FAIL" +invalid 0:00. --> 00:01.000 -"FAIL" +invalid :00. --> 00:01.000 -"FAIL" +invalid 00. --> 00:01.000 -"FAIL" +invalid 0. --> 00:01.000 -"FAIL" +invalid . --> 00:01.000 -"FAIL" +invalid 00:00.000 --> 0:01.000 -"FAIL" +invalid 00:00:00.000 --> 0:00:01.000 -{} - +text1 diff --git a/testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/space-chars.vtt b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/support/whitespace-chars.vtt similarity index 78% rename from testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/space-chars.vtt rename to testing/web-platform/tests/webvtt/parsing/file-parsing/tests/support/whitespace-chars.vtt index 012e94dea885..b26c93cd1984 100644 --- a/testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/space-chars.vtt +++ b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/support/whitespace-chars.vtt @@ -2,16 +2,16 @@ WEBVTT spaces 00:00:00.000 --> 00:00:01.000 -{"id":"spaces"} + text0 tabs 00:00:00.000 --> 00:00:01.000 -{"id":"tabs"} +text1 form feed 00:00:00.000 --> 00:00:01.000 -{"id":"form feed"} +text2 vertical tab 00:00:00.000 --> 00:00:01.000 -"FAIL" \ No newline at end of file +invalid diff --git a/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/timings-60.html b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/timings-60.html new file mode 100644 index 000000000000..4514d0b25f48 --- /dev/null +++ b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/timings-60.html @@ -0,0 +1,47 @@ + + + + +WebVTT parser test: timings, 60 + + + +
    + diff --git a/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/timings-eof.html b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/timings-eof.html new file mode 100644 index 000000000000..6d50cdf8ef7e --- /dev/null +++ b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/timings-eof.html @@ -0,0 +1,39 @@ + + + + +WebVTT parser test: timings, eof + + + +
    + diff --git a/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/timings-garbage.html b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/timings-garbage.html new file mode 100644 index 000000000000..54bb82e00873 --- /dev/null +++ b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/timings-garbage.html @@ -0,0 +1,40 @@ + + + + +WebVTT parser test: timings, garbage + + + + +
    + diff --git a/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/timings-negative.html b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/timings-negative.html new file mode 100644 index 000000000000..e55d0f3bb7f3 --- /dev/null +++ b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/timings-negative.html @@ -0,0 +1,53 @@ + + + + +WebVTT parser test: timings, negative + + + +
    + diff --git a/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/timings-omitted-hours.html b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/timings-omitted-hours.html new file mode 100644 index 000000000000..713ce04928e1 --- /dev/null +++ b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/timings-omitted-hours.html @@ -0,0 +1,45 @@ + + + + +WebVTT parser test: timings, omitted hours + + + +
    + diff --git a/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/timings-too-long.html b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/timings-too-long.html new file mode 100644 index 000000000000..f134c433947d --- /dev/null +++ b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/timings-too-long.html @@ -0,0 +1,47 @@ + + + + +WebVTT parser test: timings, too long + + + +
    + diff --git a/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/timings-too-short.html b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/timings-too-short.html new file mode 100644 index 000000000000..377400e5612d --- /dev/null +++ b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/timings-too-short.html @@ -0,0 +1,47 @@ + + + + +WebVTT parser test: timings, too short + + + +
    + diff --git a/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/whitespace-chars.html b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/whitespace-chars.html new file mode 100644 index 000000000000..15c6f26d09a6 --- /dev/null +++ b/testing/web-platform/tests/webvtt/parsing/file-parsing/tests/whitespace-chars.html @@ -0,0 +1,48 @@ + + + + +WebVTT parser test: whitespace chars + + + +
    + diff --git a/testing/web-platform/tests/webvtt/parsing/file-parsing/tools/build.py b/testing/web-platform/tests/webvtt/parsing/file-parsing/tools/build.py new file mode 100644 index 000000000000..df8dee39bf75 --- /dev/null +++ b/testing/web-platform/tests/webvtt/parsing/file-parsing/tools/build.py @@ -0,0 +1,120 @@ +import os +import glob +import shutil +from os import path + + +TEST_FILE_PATTERN = "support/**.test" +TEST_OUTPUT_PATH = "tests" + +TEMPLATE = """\ + + + + +WebVTT parser test: %test_name +%test_headers + + +
    + +""" + +def generate_test(test_path, output_dir): + # Read test file + test_filename = path.basename(test_path) + test_basefilename = path.splitext(test_filename)[0] + + with open(test_path, 'r') as test: + test_source = test.read() + + # Split test header + splits = test_source.split('\n\n', 1) + if len(splits) != 2: + raise ValueError("Leave an empty line between the test header and body") + + test_header, test_body = splits + + # Split header into name + html headers + splits = test_header.split('\n', 1) + + test_name = splits[0] + if len(splits) == 2: + test_headers = splits[1] + + # Split body into js + vtt + splits = test_body.split('\n===\n', 1) + if len(splits) != 2: + raise ValueError("Use === to separate the js and vtt parts") + + test_js, test_vtt = splits + + # Get output paths + os.makedirs(output_dir, exist_ok=True) + html_file_path = path.join(output_dir, test_basefilename + '.html') + + vtt_file_dir = path.join(output_dir, 'support') + os.makedirs(vtt_file_dir, exist_ok=True) + + vtt_file_name = test_basefilename + '.vtt' + vtt_file_path = path.join(vtt_file_dir, vtt_file_name) + vtt_file_rel_path = path.join('support', vtt_file_name) + + # Write html file + with open(html_file_path, 'w') as output: + html = (TEMPLATE.replace('%test_name', test_name) + .replace('%test_headers', test_headers) + .replace('%test_js', test_js) + .replace('%vtt_file_rel_path', vtt_file_rel_path)) + output.write(html) + + # Write vtt file + with open(vtt_file_path, 'w') as output: + encoded = bytes(test_vtt, "utf-8").decode("unicode_escape") + output.write(encoded) + +def main(): + file_parsing_path = path.normpath(path.join(path.dirname(__file__), "..")) + + test_output_path = path.join(file_parsing_path, TEST_OUTPUT_PATH) + + tests_pattern = path.join(file_parsing_path, TEST_FILE_PATTERN) + + # Clean test directory + shutil.rmtree(test_output_path) + + # Generate tests + for file in glob.glob(tests_pattern): + print('Building test files for: ' + file) + generate_test(file, test_output_path) + +if __name__ == '__main__': + main() diff --git a/testing/web-platform/tests/webvtt/parsing/file-parsing/tools/parser.py b/testing/web-platform/tests/webvtt/parsing/file-parsing/tools/parser.py new file mode 100644 index 000000000000..4ccd5153050d --- /dev/null +++ b/testing/web-platform/tests/webvtt/parsing/file-parsing/tools/parser.py @@ -0,0 +1,702 @@ +""" +A direct translation of the webvtt file parsing algorithm. + +See https://w3c.github.io/webvtt/#file-parsing for documentation +""" +import re +import string + +SPACE_CHARACTERS = [' ', '\t', '\n', '\f', '\r'] +SPACE_SPLIT_PATTERN = r"[{}]*".format(''.join(SPACE_CHARACTERS)) +DIGITS = string.digits + +class DictInit: + def __init__(self, **dict): + self.__dict__.update(dict) + +class VTTCue(DictInit): pass +class VTTRegion(DictInit): pass +class Stylesheet(DictInit): pass + +class W3CParser: + input = None + position = None + + def collect_characters(self, condition): + result = "" + while self.position < len(self.input) and condition(self.input[self.position]): + result += self.input[self.position] + self.position += 1 + return result + + def skip_whitespace(self): + self.collect_characters(lambda c: c in SPACE_CHARACTERS) + + def parse_percentage_string(self, input): + 'parse a percentage string' + + # 1. + input = input + + # 2. + if not re.match(r'^\d+(\.\d+)?%$', input): + return None + + # 3. + percentage = float(input[:-1]) + + # 4. + if percentage < 0 or percentage > 100: + return None + + # 5. + return percentage + +class VTTParser(W3CParser): + def __init__(self, input): + self.input = input + self.position = 0 + self.seen_cue = False + + self.text_tracks = [] + self.stylesheets = [] + self.regions = [] + self.errors = [] + + def parse(self): + 'WebVTT parser algorithm' + + # 1. + self.input = self.input.replace('\0', '\ufffd').replace('\r\n', '\n').replace('\r', '\n') + + # 2. + self.position = 0 + + # 3. + self.seen_cue = False + + # 4. + if len(self.input) < 6: + self.errors.append('input too small for webvtt') + return + + # 5. + if len(self.input) == 6 and self.input != 'WEBVTT': + self.errors.append('invalid webvtt header') + return + + # 6. + if len(self.input) > 6: + if not (self.input[0:6] == 'WEBVTT' and self.input[6] in ['\u0020', '\u0009', '\u000A']): + self.errors.append('invalid webvtt header') + return + + # 7. + self.collect_characters(lambda c: c != '\n') + + # 8. + if self.position >= len(self.input): + return + + # 9. + if self.input[self.position] == '\n': + self.position += 1 + + # 10. + if self.position >= len(self.input): + return + + # 11. + if self.input[self.position] != '\n': + self.collect_block(in_header = True) + else: + self.position += 1 + + # 12. + self.collect_characters(lambda c: c == '\n') + + # 13. + self.regions = [] + + # 14. + while self.position < len(self.input): + # 1. + block = self.collect_block() + + # 2. + if isinstance(block, VTTCue): + self.text_tracks.append(block) + + # 3. + elif isinstance(block, Stylesheet): + self.stylesheets.append(block) + + # 4. + elif isinstance(block, VTTRegion): + self.regions.append(block) + + # 5. + self.collect_characters(lambda c: c == '\n') + + # 15. + return + + def collect_block(self, in_header = False): + 'collect a WebVTT block' + + # 1. (done by class) + + line_count = 0 # 2. + previous_position = self.position # 3. + line = "" # 4. + buffer = "" # 5. + seen_eof = False # 6. + seen_arrow = False # 7. + cue = None # 8. + stylesheet = None # 9. + region = None # 10. + + # 11. + while True: + # 1. + line = self.collect_characters(lambda c: c != '\n') + + # 2. + line_count += 1 + + # 3. + if self.position >= len(self.input): + seen_eof = True + else: + self.position += 1 + + # 4. + if '-->' in line: + # 1. + if not in_header and (line_count == 1 or line_count == 2 and not seen_arrow): + # 1. + seen_arrow = True + + # 2. + previous_position = self.position + + # 3. + cue = VTTCue( + id = buffer, + pause_on_exit = False, + region = None, + writing_direction = 'horizontal', + snap_to_lines = True, + line = 'auto', + line_alignment = 'start alignment', + position = 'auto', + position_alignment = 'auto', + cue_size = 100, + text_alignment = 'center', + text = '', + ) + + # 4. + if not VTTCueParser(self, line, cue).collect_cue_timings_and_settings(): + cue = None + else: + buffer = '' + self.seen_cue = True # DIFFERENCE + + else: + self.errors.append('invalid webvtt cue block') + self.position = previous_position + break + + # 5. + elif line == '': + break + + # 6. + else: + # 1. + if not in_header and line_count == 2: + # 1. + if not self.seen_cue and re.match(r'^STYLE\s*$', buffer): + stylesheet = Stylesheet( + location = None, + parent = None, + owner_node = None, + owner_rule = None, + media = None, + title = None, + alternate = False, + origin_clean = True, + source = None, + ) + buffer = '' + # 2. + elif not self.seen_cue and re.match(r'^REGION\s*$', buffer): + region = VTTRegion( + id = '', + width = 100, + lines = 3, + anchor_point = (0, 100), + viewport_anchor_point = (0, 100), + scroll_value = None, + ) + buffer = '' + + # 2. + if buffer != '': + buffer += '\n' + + # 3. + buffer += line + + # 4. + previous_position = self.position + + # 7. + if seen_eof: + break + + # 12. + if cue is not None: + cue.text = buffer + return cue + + # 13. + elif stylesheet is not None: + stylesheet.source = buffer + return stylesheet + + # 14. + elif region is not None: + self.collect_region_settings(region, buffer) + return region + + # 15. + return None + + def collect_region_settings(self, region, input): + 'collect WebVTT region settings' + + # 1. + settings = re.split(SPACE_SPLIT_PATTERN, input) + + # 2. + for setting in settings: + # 1. + if ':' not in setting: + continue + + index = setting.index(':') + if index in [0, len(setting) - 1]: + continue + + # 2. + name = setting[:index] + + # 3. + value = setting[index + 1:] + + # 4. + if name == "id": + region.id = value + + elif name == "width": + percentage = self.parse_percentage_string(value) + if percentage is not None: + region.width = percentage + + elif name == "lines": + # 1. + if not re.match(r'^\d+$', value): + continue + + # 2. + number = int(value) + + # 3. + region.lines = number + + elif name == "regionanchor": + # 1. + if ',' not in value: + continue + + #. 2. + index = value.index(',') + anchorX = value[:index] + + # 3. + anchorY = value[index + 1:] + + # 4. + percentageX = self.parse_percentage_string(anchorX) + percentageY = self.parse_percentage_string(anchorY) + if None in [percentageX, percentageY]: + continue + + # 5. + region.anchor_point = (percentageX, percentageY) + + elif name == "viewportanchor": + # 1. + if ',' not in value: + continue + + #. 2. + index = value.index(',') + viewportanchorX = value[:index] + + # 3. + viewportanchorY = value[index + 1:] + + # 4. + percentageX = self.parse_percentage_string(viewportanchorX) + percentageY = self.parse_percentage_string(viewportanchorY) + if None in [percentageX, percentageY]: + continue + + # 5. + region.viewport_anchor_point = (percentageX, percentageY) + + elif name == "scroll": + # 1. + if value == "up": + region.scroll_value = "up" + + # 5. + continue + + +class VTTCueParser(W3CParser): + def __init__(self, parent, input, cue): + self.parent = parent + self.errors = self.parent.errors + self.input = input + self.position = 0 + self.cue = cue + + def collect_cue_timings_and_settings(self): + 'collect WebVTT cue timings and settings' + + # 1. (handled by class) + + # 2. + self.position = 0 + + # 3. + self.skip_whitespace() + + # 4. + timestamp = self.collect_timestamp() + if timestamp is None: + self.errors.append('invalid start time for VTTCue') + return False + self.cue.start_time = timestamp + + # 5. + self.skip_whitespace() + + # 6. + if self.input[self.position] != '-': + return False + self.position += 1 + + # 7. + if self.input[self.position] != '-': + return False + self.position += 1 + + # 8. + if self.input[self.position] != '>': + return False + self.position += 1 + + # 9. + self.skip_whitespace() + + # 10. + timestamp = self.collect_timestamp() + if timestamp is None: + self.errors.append('invalid end time for VTTCue') + return False + self.cue.end_time = timestamp + + # 11. + remainder = self.input[self.position:] + + # 12. + self.parse_settings(remainder) + + # Extra + return True + + def parse_settings(self, input): + 'parse the WebVTT cue settings' + + # 1. + + settings = re.split(SPACE_SPLIT_PATTERN, input) + + # 2. + for setting in settings: + # 1. + if ':' not in setting: + continue + + index = setting.index(':') + if index in [0, len(setting) - 1]: + continue + + # 2. + name = setting[:index] + + # 3. + value = setting[index + 1:] + + # 4. + if name == 'region': + # 1. + last_regions = (region for region in reversed(self.parent.regions) if region.id == value) + self.cue.region = next(last_regions, None) + + elif name == 'vertical': + # 1. and 2. + if value in ['rl', 'lr']: + self.cue.writing_direction = value + + elif name == 'line': + # 1. + if ',' in value: + index = value.index(',') + linepos = value[:index] + linealign = value[index + 1:] + + # 2. + else: + linepos = value + linealign = "" + + # 3. + if not re.search(r'\d', linepos): + continue + + # 4. + if linepos[-1] == '%': + number = self.parse_percentage_string(linepos) + if number is None: + continue + else: + # 1. + if not re.match(r'^[-\.\d]*$', linepos): + continue + + # 2. + if '-' in linepos[1:]: + continue + + # 3. + if linepos.count('.') > 1: + continue + + # 4. + if '.' in linepos: + if not re.search(r'\d\.\d', linepos): + continue + + # 5. + number = float(linepos) + + # 5. + self.cue.line = number + + # 6. + if linepos[-1] == '%': + self.cue.snap_to_lines = False + else: + self.cue.snap_to_lines = True + + # 7. + if linealign == "start": + self.cue.line_alignment = 'start' + + # 8. + if linealign == "center": + self.cue.line_alignment = 'center' + + # 9. + if linealign == "end": + self.cue.line_alignment = 'end' + + elif name == 'position': + # 1. + if ',' in value: + index = value.index(',') + colpos = value[:index] + colalign = value[index + 1:] + + # 2. + else: + colpos = value + colalign = "" + + # 3. + number = self.parse_percentage_string(colpos) + if number is None: + continue + + # 4. + self.cue.position = number + + # 5. + if colalign == "line-left": + self.cue.line_alignment = 'line-left' + + # 6. + if colalign == "center": + self.cue.line_alignment = 'center' + + # 7. + if colalign == "line-right": + self.cue.line_alignment = 'line-right' + + elif name == 'size': + # 1. + number = self.parse_percentage_string(value) + if number is None: + continue + + # 2. + self.cue.cue_size = number + + elif name == 'align': + # 1. + if value == 'start': + self.cue.text_alignment = 'start' + + # 2. + if value == 'center': + self.cue.text_alignment = 'center' + + # 3. + if value == 'end': + self.cue.text_alignment = 'end' + + # 4. + if value == 'left': + self.cue.text_alignment = 'left' + + # 5. + if value == 'right': + self.cue.text_alignment = 'right' + + # 5. + continue + + def collect_timestamp(self): + 'collect a WebVTT timestamp' + + # 1. (handled by class) + + # 2. + most_significant_units = 'minutes' + + # 3. + if self.position >= len(self.input): + return None + + # 4. + if self.input[self.position] not in DIGITS: + return None + + # 5. + string = self.collect_characters(lambda c: c in DIGITS) + + # 6. + value_1 = int(string) + + # 7. + if len(string) != 2 or value_1 > 59: + most_significant_units = 'hours' + + # 8. + if self.position >= len(self.input) or self.input[self.position] != ':': + return None + self.position += 1 + + # 9. + string = self.collect_characters(lambda c: c in DIGITS) + + # 10. + if len(string) != 2: + return None + + # 11. + value_2 = int(string) + + # 12. + if most_significant_units == 'hours' or self.position < len(self.input) and self.input[self.position] == ':': + # 1. + if self.position >= len(self.input) or self.input[self.position] != ':': + return None + self.position += 1 + + # 2. + string = self.collect_characters(lambda c: c in DIGITS) + + # 3. + if len(string) != 2: + return None + + # 4. + value_3 = int(string) + else: + value_3 = value_2 + value_2 = value_1 + value_1 = 0 + + # 13. + if self.position >= len(self.input) or self.input[self.position] != '.': + return None + self.position += 1 + + # 14. + string = self.collect_characters(lambda c: c in DIGITS) + + # 15. + if len(string) != 3: + return None + + # 16. + value_4 = int(string) + + # 17. + if value_2 >= 59 or value_3 >= 59: + return None + + # 18. + result = value_1 * 60 * 60 + value_2 * 60 + value_3 + value_4 / 1000 + + # 19. + return result + + +def main(argv): + files = [open(path, 'r') for path in argv[1:]] + + try: + for file in files: + parser = VTTParser(file.read()) + parser.parse() + + print("Results: {}".format(file)) + print(" Cues: {}".format(parser.text_tracks)) + print(" StyleSheets: {}".format(parser.stylesheets)) + print(" Regions: {}".format(parser.regions)) + print(" Errors: {}".format(parser.errors)) + finally: + for file in files: + file.close() + +if __name__ == '__main__': + import sys + main(sys.argv); diff --git a/testing/web-platform/tests/webvtt/parsing/file-parsing/tools/spec_report.py b/testing/web-platform/tests/webvtt/parsing/file-parsing/tools/spec_report.py new file mode 100644 index 000000000000..beb140eb8c14 --- /dev/null +++ b/testing/web-platform/tests/webvtt/parsing/file-parsing/tools/spec_report.py @@ -0,0 +1,99 @@ +import os +import sys +import glob +import html +import fnmatch +from os import path + +import coverage + +OUTPUT_TEMPLATE = """ + + + + + Spec Coverage + + + + + %head +
    +        %body
    +    
    + + +""" + +LINE_TEMPLATE = "%lineno| %source" + +def write_report(data, source_file, output_file): + module_name, executable_lines, excluded_lines, missing_lines, _ = data + missing_lines = set(missing_lines) + + with open(output_file, "w") as output, open(source_file, "r") as source: + lines = source.readlines() + + file_report = [] + padding = len(str(len(lines))) + + for index, line in enumerate(lines): + line = line[0:-1] + lineno = index + 1 + line_number = str(lineno).rjust(padding) + + covered = lineno not in missing_lines + line_class = 'covered' if covered else 'missed' + + formatted_line = (LINE_TEMPLATE.replace('%class', line_class) + .replace('%lineno', line_number) + .replace('%source', html.escape(line))) + file_report.append(formatted_line) + + report_body = ''.join(file_report) + + report_header = '' + + report = (OUTPUT_TEMPLATE.replace('%head', report_header) + .replace('%body', report_body)) + output.write(report) + +def main(argv): + parsing_path = path.normpath(path.join(path.dirname(__file__), "..")) + + files = argv[1:] + if not files: + files = [os.path.join(root, file) for root, _, files in os.walk(parsing_path) + for file in fnmatch.filter(files, '*.vtt')] + + cov = coverage.Coverage() + cov.start() + + for file_path in files: + with open(file_path, "r") as file: + source = file.read() + + import parser + p = parser.VTTParser(source) + p.parse() + + cov.stop() + + data = cov.analysis2(parser.__file__) + write_report(data, parser.__file__, "report.html") + +if __name__ == '__main__': + main(sys.argv) diff --git a/testing/web-platform/tests/webvtt/rendering/cues-with-video/processing-model/2_cues_overlapping_completely_move_up-ref.html b/testing/web-platform/tests/webvtt/rendering/cues-with-video/processing-model/2_cues_overlapping_completely_move_up-ref.html index f90f72343fc3..f73008f702a1 100644 --- a/testing/web-platform/tests/webvtt/rendering/cues-with-video/processing-model/2_cues_overlapping_completely_move_up-ref.html +++ b/testing/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/testing/web-platform/tests/webvtt/rendering/cues-with-video/processing-model/2_cues_overlapping_completely_move_up.html b/testing/web-platform/tests/webvtt/rendering/cues-with-video/processing-model/2_cues_overlapping_completely_move_up.html index 11ea59d9ac10..72e904f5e309 100644 --- a/testing/web-platform/tests/webvtt/rendering/cues-with-video/processing-model/2_cues_overlapping_completely_move_up.html +++ b/testing/web-platform/tests/webvtt/rendering/cues-with-video/processing-model/2_cues_overlapping_completely_move_up.html @@ -11,7 +11,7 @@ body { margin:0 } } -
    \ No newline at end of file diff --git a/layout/reftests/svg/pattern-big-image.html b/layout/reftests/svg/pattern-big-image.html deleted file mode 100644 index caa30a9b7b93..000000000000 --- a/layout/reftests/svg/pattern-big-image.html +++ /dev/null @@ -1,10 +0,0 @@ -
    - - - - - - - - -
    \ No newline at end of file diff --git a/layout/reftests/svg/reftest.list b/layout/reftests/svg/reftest.list index 747ec64b1f48..95ac1a4ec023 100644 --- a/layout/reftests/svg/reftest.list +++ b/layout/reftests/svg/reftest.list @@ -345,7 +345,6 @@ fuzzy-if(skiaContent,1,400) == path-06.svg path-06-ref.svg == pathLength-02.svg pass.svg == pattern-basic-01.svg pass.svg -fuzzy(1,5) skip-if(Android) HTTP == pattern-big-image.html pattern-big-image-ref.html == pattern-invalid-01.svg pattern-invalid-01-ref.svg fuzzy-if(skiaContent,1,5) == pattern-live-01a.svg pattern-live-01-ref.svg fuzzy-if(skiaContent,1,5) == pattern-live-01b.svg pattern-live-01-ref.svg From e35416592f8b9151b0b333d935f90071a39cda9d Mon Sep 17 00:00:00 2001 From: Sebastian Hengst Date: Fri, 17 Mar 2017 21:53:24 +0100 Subject: [PATCH 062/164] Backed out changeset a46f3da8aba6 (bug 1345853) --- layout/svg/SVGGeometryFrame.cpp | 2 +- layout/svg/SVGTextFrame.cpp | 2 +- layout/svg/nsSVGForeignObjectFrame.cpp | 2 +- layout/svg/nsSVGGradientFrame.cpp | 4 ++-- layout/svg/nsSVGMaskFrame.cpp | 2 +- layout/svg/nsSVGPatternFrame.cpp | 6 +++--- 6 files changed, 9 insertions(+), 9 deletions(-) diff --git a/layout/svg/SVGGeometryFrame.cpp b/layout/svg/SVGGeometryFrame.cpp index fd67c40f50d5..fcc417031868 100644 --- a/layout/svg/SVGGeometryFrame.cpp +++ b/layout/svg/SVGGeometryFrame.cpp @@ -289,7 +289,7 @@ SVGGeometryFrame::PaintSVG(gfxContext& aContext, gfxMatrix newMatrix = aContext.CurrentMatrix().PreMultiply(aTransform).NudgeToIntegers(); if (newMatrix.IsSingular()) { - return DrawResult::SUCCESS; + return DrawResult::BAD_ARGS; } uint32_t paintOrder = StyleSVG()->mPaintOrder; diff --git a/layout/svg/SVGTextFrame.cpp b/layout/svg/SVGTextFrame.cpp index bc1e02b99bfe..182657ce6a37 100644 --- a/layout/svg/SVGTextFrame.cpp +++ b/layout/svg/SVGTextFrame.cpp @@ -3595,7 +3595,7 @@ SVGTextFrame::PaintSVG(gfxContext& aContext, if (aTransform.IsSingular()) { NS_WARNING("Can't render text element!"); - return DrawResult::SUCCESS; + return DrawResult::BAD_ARGS; } gfxMatrix matrixForPaintServers = aTransform * initialMatrix; diff --git a/layout/svg/nsSVGForeignObjectFrame.cpp b/layout/svg/nsSVGForeignObjectFrame.cpp index ef50bb5da565..7ba3cf466a9e 100644 --- a/layout/svg/nsSVGForeignObjectFrame.cpp +++ b/layout/svg/nsSVGForeignObjectFrame.cpp @@ -221,7 +221,7 @@ nsSVGForeignObjectFrame::PaintSVG(gfxContext& aContext, if (aTransform.IsSingular()) { NS_WARNING("Can't render foreignObject element!"); - return DrawResult::SUCCESS; + return DrawResult::BAD_ARGS; } nsRect kidDirtyRect = kid->GetVisualOverflowRect(); diff --git a/layout/svg/nsSVGGradientFrame.cpp b/layout/svg/nsSVGGradientFrame.cpp index d36f54c8269d..32d109d1ba7a 100644 --- a/layout/svg/nsSVGGradientFrame.cpp +++ b/layout/svg/nsSVGGradientFrame.cpp @@ -256,7 +256,7 @@ nsSVGGradientFrame::GetPaintServerPattern(nsIFrame* aSource, gfxMatrix patternMatrix = GetGradientTransform(aSource, aOverrideBounds); if (patternMatrix.IsSingular()) { - return MakePair(DrawResult::SUCCESS, RefPtr()); + return MakePair(DrawResult::BAD_ARGS, RefPtr()); } // revert any vector effect transform so that the gradient appears unchanged @@ -268,7 +268,7 @@ nsSVGGradientFrame::GetPaintServerPattern(nsIFrame* aSource, } if (!patternMatrix.Invert()) { - return MakePair(DrawResult::SUCCESS, RefPtr()); + return MakePair(DrawResult::BAD_ARGS, RefPtr()); } RefPtr gradient = CreateGradient(); diff --git a/layout/svg/nsSVGMaskFrame.cpp b/layout/svg/nsSVGMaskFrame.cpp index 5b7a69cf27cf..c03755ba12cc 100644 --- a/layout/svg/nsSVGMaskFrame.cpp +++ b/layout/svg/nsSVGMaskFrame.cpp @@ -320,7 +320,7 @@ nsSVGMaskFrame::GetMaskForMaskedFrame(MaskParams& aParams) // Moz2D transforms in the opposite direction to Thebes if (!maskSurfaceMatrix.Invert()) { - return MakePair(DrawResult::SUCCESS, RefPtr()); + return MakePair(DrawResult::TEMPORARY_ERROR, RefPtr()); } *aParams.maskTransform = ToMatrix(maskSurfaceMatrix); diff --git a/layout/svg/nsSVGPatternFrame.cpp b/layout/svg/nsSVGPatternFrame.cpp index c73e372168b2..8bfc00382eb9 100644 --- a/layout/svg/nsSVGPatternFrame.cpp +++ b/layout/svg/nsSVGPatternFrame.cpp @@ -301,7 +301,7 @@ nsSVGPatternFrame::PaintPattern(const DrawTarget* aDrawTarget, gfxMatrix ctm = ConstructCTM(viewBox, patternContentUnits, patternUnits, callerBBox, aContextMatrix, aSource); if (ctm.IsSingular()) { - return MakePair(DrawResult::SUCCESS, RefPtr()); + return MakePair(DrawResult::BAD_ARGS, RefPtr()); } if (patternWithChildren->mCTM) { @@ -328,7 +328,7 @@ nsSVGPatternFrame::PaintPattern(const DrawTarget* aDrawTarget, patternTransform *= ToMatrix(userToOuterSVG); if (patternTransform.IsSingular()) { NS_WARNING("Singular matrix painting non-scaling-stroke"); - return MakePair(DrawResult::SUCCESS, RefPtr()); + return MakePair(DrawResult::BAD_ARGS, RefPtr()); } } } @@ -338,7 +338,7 @@ nsSVGPatternFrame::PaintPattern(const DrawTarget* aDrawTarget, *patternMatrix = GetPatternMatrix(patternUnits, patternTransform, bbox, callerBBox, aContextMatrix); if (patternMatrix->IsSingular()) { - return MakePair(DrawResult::SUCCESS, RefPtr()); + return MakePair(DrawResult::BAD_ARGS, RefPtr()); } // Now that we have all of the necessary geometries, we can From e4de847b3c06239cdc4b8b303eca0a577f91c141 Mon Sep 17 00:00:00 2001 From: Sebastian Hengst Date: Fri, 17 Mar 2017 21:54:01 +0100 Subject: [PATCH 063/164] Backed out changeset 836d16519edf (bug 1345853) for frequently failing its own test pattern-big-image.html. r=backout --- gfx/thebes/gfxFont.cpp | 14 ++--- gfx/thebes/gfxSVGGlyphs.h | 18 +++--- layout/svg/SVGContextPaint.cpp | 83 ++++++++++++---------------- layout/svg/SVGContextPaint.h | 83 +++++++++++----------------- layout/svg/SVGGeometryFrame.cpp | 32 ++++------- layout/svg/SVGGeometryFrame.h | 4 +- layout/svg/SVGTextFrame.cpp | 19 +++---- layout/svg/nsFilterInstance.cpp | 7 +-- layout/svg/nsSVGGradientFrame.cpp | 17 +++--- layout/svg/nsSVGGradientFrame.h | 2 +- layout/svg/nsSVGIntegrationUtils.cpp | 10 ++-- layout/svg/nsSVGMaskFrame.cpp | 9 ++- layout/svg/nsSVGPaintServerFrame.h | 3 +- layout/svg/nsSVGPatternFrame.cpp | 48 ++++++++-------- layout/svg/nsSVGPatternFrame.h | 4 +- layout/svg/nsSVGUtils.cpp | 48 ++++++---------- layout/svg/nsSVGUtils.h | 4 +- 17 files changed, 166 insertions(+), 239 deletions(-) diff --git a/gfx/thebes/gfxFont.cpp b/gfx/thebes/gfxFont.cpp index d34164e460ac..36f6d1b950de 100644 --- a/gfx/thebes/gfxFont.cpp +++ b/gfx/thebes/gfxFont.cpp @@ -1623,16 +1623,10 @@ private: Pattern *pat; RefPtr fillPattern; - if (mFontParams.contextPaint) { - mozilla::image::DrawResult result = mozilla::image::DrawResult::SUCCESS; - Tie(result, fillPattern) = - mFontParams.contextPaint->GetFillPattern( - mRunParams.context->GetDrawTarget(), - mRunParams.context->CurrentMatrix()); - // XXX cku Flush should return result to the caller? - Unused << result; - } - if (!fillPattern) { + if (!mFontParams.contextPaint || + !(fillPattern = mFontParams.contextPaint->GetFillPattern( + mRunParams.context->GetDrawTarget(), + mRunParams.context->CurrentMatrix()))) { if (state.pattern) { pat = state.pattern->GetPattern(mRunParams.dt, state.patternTransformChanged ? diff --git a/gfx/thebes/gfxSVGGlyphs.h b/gfx/thebes/gfxSVGGlyphs.h index 4a32e0e0cc75..8ebebb44bcb9 100644 --- a/gfx/thebes/gfxSVGGlyphs.h +++ b/gfx/thebes/gfxSVGGlyphs.h @@ -202,26 +202,24 @@ public: mStrokeMatrix = SetupDeviceToPatternMatrix(aStrokePattern, aCTM); } - mozilla::Pair> - GetFillPattern(const DrawTarget* aDrawTarget, - float aOpacity, - const gfxMatrix& aCTM) { + already_AddRefed GetFillPattern(const DrawTarget* aDrawTarget, + float aOpacity, + const gfxMatrix& aCTM) { if (mFillPattern) { mFillPattern->SetMatrix(aCTM * mFillMatrix); } RefPtr fillPattern = mFillPattern; - return MakePair(DrawResult::SUCCESS, Move(fillPattern)); + return fillPattern.forget(); } - mozilla::Pair> - GetStrokePattern(const DrawTarget* aDrawTarget, - float aOpacity, - const gfxMatrix& aCTM) { + already_AddRefed GetStrokePattern(const DrawTarget* aDrawTarget, + float aOpacity, + const gfxMatrix& aCTM) { if (mStrokePattern) { mStrokePattern->SetMatrix(aCTM * mStrokeMatrix); } RefPtr strokePattern = mStrokePattern; - return MakePair(DrawResult::SUCCESS, Move(strokePattern)); + return strokePattern.forget(); } float GetFillOpacity() const { diff --git a/layout/svg/SVGContextPaint.cpp b/layout/svg/SVGContextPaint.cpp index b18b7df83b79..b6d81a226961 100644 --- a/layout/svg/SVGContextPaint.cpp +++ b/layout/svg/SVGContextPaint.cpp @@ -13,7 +13,6 @@ #include "nsSVGPaintServerFrame.h" using namespace mozilla::gfx; -using namespace mozilla::image; namespace mozilla { @@ -27,7 +26,7 @@ namespace mozilla { * @param aProperty the frame property descriptor of the fill or stroke paint * server frame */ -static DrawResult +static void SetupInheritablePaint(const DrawTarget* aDrawTarget, const gfxMatrix& aContextMatrix, nsIFrame* aFrame, @@ -41,49 +40,40 @@ SetupInheritablePaint(const DrawTarget* aDrawTarget, nsSVGPaintServerFrame *ps = nsSVGEffects::GetPaintServer(aFrame, aFillOrStroke, aProperty); - DrawResult result = DrawResult::SUCCESS; if (ps) { - RefPtr pattern; - Tie(result, pattern) = + RefPtr pattern = ps->GetPaintServerPattern(aFrame, aDrawTarget, aContextMatrix, aFillOrStroke, aOpacity); - if (pattern) { aTargetPaint.SetPaintServer(aFrame, aContextMatrix, ps); - return result; + return; } } - if (aOuterContextPaint) { RefPtr pattern; switch ((style->*aFillOrStroke).Type()) { case eStyleSVGPaintType_ContextFill: - Tie(result, pattern) = - aOuterContextPaint->GetFillPattern(aDrawTarget, aOpacity, - aContextMatrix); + pattern = aOuterContextPaint->GetFillPattern(aDrawTarget, aOpacity, + aContextMatrix); break; case eStyleSVGPaintType_ContextStroke: - Tie(result, pattern) = - aOuterContextPaint->GetStrokePattern(aDrawTarget, aOpacity, - aContextMatrix); + pattern = aOuterContextPaint->GetStrokePattern(aDrawTarget, aOpacity, + aContextMatrix); break; default: ; } if (pattern) { aTargetPaint.SetContextPaint(aOuterContextPaint, (style->*aFillOrStroke).Type()); - return result; + return; } } - nscolor color = nsSVGUtils::GetFallbackOrPaintColor(aFrame->StyleContext(), aFillOrStroke); aTargetPaint.SetColor(color); - - return result; } -mozilla::Pair +DrawMode SVGContextPaintImpl::Init(const DrawTarget* aDrawTarget, const gfxMatrix& aContextMatrix, nsIFrame* aFrame, @@ -92,7 +82,6 @@ SVGContextPaintImpl::Init(const DrawTarget* aDrawTarget, DrawMode toDraw = DrawMode(0); const nsStyleSVG *style = aFrame->StyleSVG(); - DrawResult result = DrawResult::SUCCESS; // fill: if (style->mFill.Type() == eStyleSVGPaintType_None) { @@ -102,10 +91,10 @@ SVGContextPaintImpl::Init(const DrawTarget* aDrawTarget, style->mFillOpacity, aOuterContextPaint); - result &= SetupInheritablePaint(aDrawTarget, aContextMatrix, aFrame, - opacity, aOuterContextPaint, - mFillPaint, &nsStyleSVG::mFill, - nsSVGEffects::FillProperty()); + SetupInheritablePaint(aDrawTarget, aContextMatrix, aFrame, + opacity, aOuterContextPaint, + mFillPaint, &nsStyleSVG::mFill, + nsSVGEffects::FillProperty()); SetFillOpacity(opacity); @@ -120,17 +109,17 @@ SVGContextPaintImpl::Init(const DrawTarget* aDrawTarget, style->mStrokeOpacity, aOuterContextPaint); - result &= SetupInheritablePaint(aDrawTarget, aContextMatrix, aFrame, - opacity, aOuterContextPaint, - mStrokePaint, &nsStyleSVG::mStroke, - nsSVGEffects::StrokeProperty()); + SetupInheritablePaint(aDrawTarget, aContextMatrix, aFrame, + opacity, aOuterContextPaint, + mStrokePaint, &nsStyleSVG::mStroke, + nsSVGEffects::StrokeProperty()); SetStrokeOpacity(opacity); toDraw |= DrawMode::GLYPH_STROKE; } - return MakePair(result, toDraw); + return toDraw; } void @@ -169,7 +158,7 @@ SVGContextPaint::GetContextPaint(nsIContent* aContent) ownerDoc->GetProperty(nsGkAtoms::svgContextPaint)); } -mozilla::Pair> +already_AddRefed SVGContextPaintImpl::GetFillPattern(const DrawTarget* aDrawTarget, float aOpacity, const gfxMatrix& aCTM) @@ -177,7 +166,7 @@ SVGContextPaintImpl::GetFillPattern(const DrawTarget* aDrawTarget, return mFillPaint.GetPattern(aDrawTarget, aOpacity, &nsStyleSVG::mFill, aCTM); } -mozilla::Pair> +already_AddRefed SVGContextPaintImpl::GetStrokePattern(const DrawTarget* aDrawTarget, float aOpacity, const gfxMatrix& aCTM) @@ -185,7 +174,7 @@ SVGContextPaintImpl::GetStrokePattern(const DrawTarget* aDrawTarget, return mStrokePaint.GetPattern(aDrawTarget, aOpacity, &nsStyleSVG::mStroke, aCTM); } -mozilla::Pair> +already_AddRefed SVGContextPaintImpl::Paint::GetPattern(const DrawTarget* aDrawTarget, float aOpacity, nsStyleSVGPaint nsStyleSVG::*aFillOrStroke, @@ -197,10 +186,9 @@ SVGContextPaintImpl::Paint::GetPattern(const DrawTarget* aDrawTarget, // caller. We should get the same matrix each time a pattern is constructed // so this should be fine. pattern->SetMatrix(aCTM * mPatternMatrix); - return MakePair(DrawResult::SUCCESS, Move(pattern)); + return pattern.forget(); } - DrawResult result = DrawResult::SUCCESS; switch (mPaintType) { case eStyleSVGPaintType_None: pattern = new gfxPattern(Color()); @@ -214,18 +202,17 @@ SVGContextPaintImpl::Paint::GetPattern(const DrawTarget* aDrawTarget, break; } case eStyleSVGPaintType_Server: - Tie(result, pattern) = - mPaintDefinition.mPaintServerFrame->GetPaintServerPattern(mFrame, - aDrawTarget, - mContextMatrix, - aFillOrStroke, - aOpacity); + pattern = mPaintDefinition.mPaintServerFrame->GetPaintServerPattern(mFrame, + aDrawTarget, + mContextMatrix, + aFillOrStroke, + aOpacity); { // m maps original-user-space to pattern space gfxMatrix m = pattern->GetMatrix(); gfxMatrix deviceToOriginalUserSpace = mContextMatrix; if (!deviceToOriginalUserSpace.Invert()) { - return MakePair(DrawResult::SUCCESS, RefPtr()); + return nullptr; } // mPatternMatrix maps device space to pattern space via original user space mPatternMatrix = deviceToOriginalUserSpace * m; @@ -233,26 +220,24 @@ SVGContextPaintImpl::Paint::GetPattern(const DrawTarget* aDrawTarget, pattern->SetMatrix(aCTM * mPatternMatrix); break; case eStyleSVGPaintType_ContextFill: - Tie(result, pattern) = - mPaintDefinition.mContextPaint->GetFillPattern(aDrawTarget, + pattern = mPaintDefinition.mContextPaint->GetFillPattern(aDrawTarget, aOpacity, aCTM); // Don't cache this. mContextPaint will have cached it anyway. If we // cache it, we'll have to compute mPatternMatrix, which is annoying. - return MakePair(result, Move(pattern)); + return pattern.forget(); case eStyleSVGPaintType_ContextStroke: - Tie(result, pattern) = - mPaintDefinition.mContextPaint->GetStrokePattern(aDrawTarget, + pattern = mPaintDefinition.mContextPaint->GetStrokePattern(aDrawTarget, aOpacity, aCTM); // Don't cache this. mContextPaint will have cached it anyway. If we // cache it, we'll have to compute mPatternMatrix, which is annoying. - return MakePair(result, Move(pattern)); + return pattern.forget(); default: MOZ_ASSERT(false, "invalid paint type"); - return MakePair(DrawResult::SUCCESS, RefPtr()); + return nullptr; } mPatternCache.Put(aOpacity, pattern); - return MakePair(result, Move(pattern)); + return pattern.forget(); } AutoSetRestoreSVGContextPaint::AutoSetRestoreSVGContextPaint( diff --git a/layout/svg/SVGContextPaint.h b/layout/svg/SVGContextPaint.h index 2d001dafcdb6..f854f6176550 100644 --- a/layout/svg/SVGContextPaint.h +++ b/layout/svg/SVGContextPaint.h @@ -16,7 +16,6 @@ #include "nsColor.h" #include "nsStyleStruct.h" #include "nsTArray.h" -#include "DrawResult.h" class gfxContext; class nsIDocument; @@ -53,30 +52,26 @@ protected: SVGContextPaint() {} public: - typedef image::DrawResult DrawResult; - MOZ_DECLARE_REFCOUNTED_TYPENAME(SVGContextPaint) virtual ~SVGContextPaint() {} - virtual mozilla::Pair> - GetFillPattern(const DrawTarget* aDrawTarget, - float aOpacity, - const gfxMatrix& aCTM) = 0; - virtual mozilla::Pair> - GetStrokePattern(const DrawTarget* aDrawTarget, - float aOpacity, - const gfxMatrix& aCTM) = 0; + virtual already_AddRefed GetFillPattern(const DrawTarget* aDrawTarget, + float aOpacity, + const gfxMatrix& aCTM) = 0; + virtual already_AddRefed GetStrokePattern(const DrawTarget* aDrawTarget, + float aOpacity, + const gfxMatrix& aCTM) = 0; virtual float GetFillOpacity() const = 0; virtual float GetStrokeOpacity() const = 0; - mozilla::Pair> - GetFillPattern(const DrawTarget* aDrawTarget, const gfxMatrix& aCTM) { + already_AddRefed GetFillPattern(const DrawTarget* aDrawTarget, + const gfxMatrix& aCTM) { return GetFillPattern(aDrawTarget, GetFillOpacity(), aCTM); } - mozilla::Pair> - GetStrokePattern(const DrawTarget* aDrawTarget, const gfxMatrix& aCTM) { + already_AddRefed GetStrokePattern(const DrawTarget* aDrawTarget, + const gfxMatrix& aCTM) { return GetStrokePattern(aDrawTarget, GetStrokeOpacity(), aCTM); } @@ -142,24 +137,18 @@ struct SVGContextPaintImpl : public SVGContextPaint { protected: typedef mozilla::gfx::DrawTarget DrawTarget; - public: - typedef mozilla::image::DrawResult DrawResult; + DrawMode Init(const DrawTarget* aDrawTarget, + const gfxMatrix& aContextMatrix, + nsIFrame* aFrame, + SVGContextPaint* aOuterContextPaint); - mozilla::Pair - Init(const DrawTarget* aDrawTarget, - const gfxMatrix& aContextMatrix, - nsIFrame* aFrame, - SVGContextPaint* aOuterContextPaint); - - mozilla::Pair> - GetFillPattern(const DrawTarget* aDrawTarget, - float aOpacity, - const gfxMatrix& aCTM) override; - mozilla::Pair> - GetStrokePattern(const DrawTarget* aDrawTarget, - float aOpacity, - const gfxMatrix& aCTM) override; + already_AddRefed GetFillPattern(const DrawTarget* aDrawTarget, + float aOpacity, + const gfxMatrix& aCTM) override; + already_AddRefed GetStrokePattern(const DrawTarget* aDrawTarget, + float aOpacity, + const gfxMatrix& aCTM) override; void SetFillOpacity(float aOpacity) { mFillOpacity = aOpacity; } float GetFillOpacity() const override { return mFillOpacity; } @@ -209,11 +198,10 @@ public: gfxMatrix mPatternMatrix; nsRefPtrHashtable mPatternCache; - mozilla::Pair> - GetPattern(const DrawTarget* aDrawTarget, - float aOpacity, - nsStyleSVGPaint nsStyleSVG::*aFillOrStroke, - const gfxMatrix& aCTM); + already_AddRefed GetPattern(const DrawTarget* aDrawTarget, + float aOpacity, + nsStyleSVGPaint nsStyleSVG::*aFillOrStroke, + const gfxMatrix& aCTM); }; Paint mFillPaint; @@ -231,29 +219,22 @@ public: */ class SVGEmbeddingContextPaint : public SVGContextPaint { -protected: - typedef mozilla::image::DrawResult DrawResult; - public: SVGEmbeddingContextPaint() {} void SetFill(nscolor aFill); void SetStroke(nscolor aStroke); - mozilla::Pair> - GetFillPattern(const DrawTarget* aDrawTarget, - float aOpacity, - const gfxMatrix& aCTM) override { - RefPtr fill = mFill; - return MakePair(DrawResult::SUCCESS, Move(fill)); + already_AddRefed GetFillPattern(const DrawTarget* aDrawTarget, + float aOpacity, + const gfxMatrix& aCTM) override { + return do_AddRef(mFill); } - mozilla::Pair> - GetStrokePattern(const DrawTarget* aDrawTarget, - float aOpacity, - const gfxMatrix& aCTM) override { - RefPtr stroke = mStroke; - return MakePair(DrawResult::SUCCESS, Move(stroke)); + already_AddRefed GetStrokePattern(const DrawTarget* aDrawTarget, + float aOpacity, + const gfxMatrix& aCTM) override { + return do_AddRef(mStroke); } float GetFillOpacity() const override { diff --git a/layout/svg/SVGGeometryFrame.cpp b/layout/svg/SVGGeometryFrame.cpp index fcc417031868..6e653b7fd6e1 100644 --- a/layout/svg/SVGGeometryFrame.cpp +++ b/layout/svg/SVGGeometryFrame.cpp @@ -293,10 +293,8 @@ SVGGeometryFrame::PaintSVG(gfxContext& aContext, } uint32_t paintOrder = StyleSVG()->mPaintOrder; - DrawResult result = DrawResult::SUCCESS; - if (paintOrder == NS_STYLE_PAINT_ORDER_NORMAL) { - result = Render(&aContext, eRenderFill | eRenderStroke, newMatrix); + Render(&aContext, eRenderFill | eRenderStroke, newMatrix); PaintMarkers(aContext, aTransform); } else { while (paintOrder) { @@ -304,10 +302,10 @@ SVGGeometryFrame::PaintSVG(gfxContext& aContext, paintOrder & ((1 << NS_STYLE_PAINT_ORDER_BITWIDTH) - 1); switch (component) { case NS_STYLE_PAINT_ORDER_FILL: - result &= Render(&aContext, eRenderFill, newMatrix); + Render(&aContext, eRenderFill, newMatrix); break; case NS_STYLE_PAINT_ORDER_STROKE: - result &= Render(&aContext, eRenderStroke, newMatrix); + Render(&aContext, eRenderStroke, newMatrix); break; case NS_STYLE_PAINT_ORDER_MARKERS: PaintMarkers(aContext, aTransform); @@ -317,7 +315,7 @@ SVGGeometryFrame::PaintSVG(gfxContext& aContext, } } - return result; + return DrawResult::SUCCESS; } nsIFrame* @@ -766,7 +764,7 @@ SVGGeometryFrame::MarkerProperties::GetMarkerEndFrame() (mMarkerEnd->GetReferencedFrame(nsGkAtoms::svgMarkerFrame, nullptr)); } -DrawResult +void SVGGeometryFrame::Render(gfxContext* aContext, uint32_t aRenderComponents, const gfxMatrix& aNewTransform) @@ -802,7 +800,7 @@ SVGGeometryFrame::Render(gfxContext* aContext, drawTarget->Fill(path, white, DrawOptions(1.0f, CompositionOp::OP_OVER, aaMode)); } - return DrawResult::SUCCESS; + return; } SVGGeometryElement::SimplePath simplePath; @@ -812,18 +810,15 @@ SVGGeometryFrame::Render(gfxContext* aContext, if (!simplePath.IsPath()) { path = element->GetOrBuildPath(*drawTarget, fillRule); if (!path) { - return DrawResult::SUCCESS; + return; } } SVGContextPaint* contextPaint = SVGContextPaint::GetContextPaint(mContent); - DrawResult result = DrawResult::SUCCESS; if (aRenderComponents & eRenderFill) { GeneralPattern fillPattern; - result = nsSVGUtils::MakeFillPatternFor(this, aContext, &fillPattern, - contextPaint); - + nsSVGUtils::MakeFillPatternFor(this, aContext, &fillPattern, contextPaint); if (fillPattern.GetPattern()) { DrawOptions drawOptions(1.0f, CompositionOp::OP_OVER, aaMode); if (simplePath.IsRect()) { @@ -844,7 +839,7 @@ SVGGeometryFrame::Render(gfxContext* aContext, if (!path) { path = element->GetOrBuildPath(*drawTarget, fillRule); if (!path) { - return DrawResult::SUCCESS; + return; } simplePath.Reset(); } @@ -859,10 +854,7 @@ SVGGeometryFrame::Render(gfxContext* aContext, path = builder->Finish(); } GeneralPattern strokePattern; - result &= - nsSVGUtils::MakeStrokePatternFor(this, aContext, &strokePattern, - contextPaint); - + nsSVGUtils::MakeStrokePatternFor(this, aContext, &strokePattern, contextPaint); if (strokePattern.GetPattern()) { SVGContentUtils::AutoStrokeOptions strokeOptions; SVGContentUtils::GetStrokeOptions(&strokeOptions, @@ -870,7 +862,7 @@ SVGGeometryFrame::Render(gfxContext* aContext, StyleContext(), contextPaint); // GetStrokeOptions may set the line width to zero as an optimization if (strokeOptions.mLineWidth <= 0) { - return DrawResult::SUCCESS; + return; } DrawOptions drawOptions(1.0f, CompositionOp::OP_OVER, aaMode); if (simplePath.IsRect()) { @@ -884,8 +876,6 @@ SVGGeometryFrame::Render(gfxContext* aContext, } } } - - return result; } void diff --git a/layout/svg/SVGGeometryFrame.h b/layout/svg/SVGGeometryFrame.h index f6249e9e4e51..c7a4c55fcdff 100644 --- a/layout/svg/SVGGeometryFrame.h +++ b/layout/svg/SVGGeometryFrame.h @@ -121,8 +121,8 @@ protected: virtual uint16_t GetHitTestFlags(); private: enum { eRenderFill = 1, eRenderStroke = 2 }; - DrawResult Render(gfxContext* aContext, uint32_t aRenderComponents, - const gfxMatrix& aTransform); + void Render(gfxContext* aContext, uint32_t aRenderComponents, + const gfxMatrix& aTransform); /** * @param aMatrix The transform that must be multiplied onto aContext to diff --git a/layout/svg/SVGTextFrame.cpp b/layout/svg/SVGTextFrame.cpp index 182657ce6a37..ffad79820799 100644 --- a/layout/svg/SVGTextFrame.cpp +++ b/layout/svg/SVGTextFrame.cpp @@ -2929,7 +2929,7 @@ SVGTextDrawPathCallbacks::MakeFillPattern(GeneralPattern* aOutPattern) { if (mColor == NS_SAME_AS_FOREGROUND_COLOR || mColor == NS_40PERCENT_FOREGROUND_COLOR) { - Unused << nsSVGUtils::MakeFillPatternFor(mFrame, gfx, aOutPattern); + nsSVGUtils::MakeFillPatternFor(mFrame, gfx, aOutPattern); return; } @@ -3000,8 +3000,7 @@ SVGTextDrawPathCallbacks::StrokeGeometry() mColor == NS_40PERCENT_FOREGROUND_COLOR) { if (nsSVGUtils::HasStroke(mFrame, /*aContextPaint*/ nullptr)) { GeneralPattern strokePattern; - Unused << nsSVGUtils::MakeStrokePatternFor(mFrame, gfx, &strokePattern, - /*aContextPaint*/ nullptr); + nsSVGUtils::MakeStrokePatternFor(mFrame, gfx, &strokePattern, /*aContextPaint*/ nullptr); if (strokePattern.GetPattern()) { if (!mFrame->GetParent()->GetContent()->IsSVGElement()) { // The cast that follows would be unsafe @@ -3646,7 +3645,7 @@ SVGTextFrame::PaintSVG(gfxContext& aContext, SVGContextPaint::GetContextPaint(mContent); nsRenderingContext rendCtx(&aContext); - DrawResult finalResult = DrawResult::SUCCESS; + while (run.mFrame) { nsTextFrame* frame = run.mFrame; @@ -3659,12 +3658,10 @@ SVGTextFrame::PaintSVG(gfxContext& aContext, aContext.SetMatrix(initialMatrix); RefPtr contextPaint = new SVGContextPaintImpl(); - DrawMode drawMode; - DrawResult result = DrawResult::SUCCESS; - Tie(result, drawMode) = contextPaint->Init(&aDrawTarget, - aContext.CurrentMatrix(), - frame, outerContextPaint); - finalResult &= result; + DrawMode drawMode = contextPaint->Init(&aDrawTarget, + aContext.CurrentMatrix(), + frame, outerContextPaint); + if (drawMode & DrawMode::GLYPH_STROKE) { // This may change the gfxContext's transform (for non-scaling stroke), // in which case this needs to happen before we call SetMatrix() below. @@ -3706,7 +3703,7 @@ SVGTextFrame::PaintSVG(gfxContext& aContext, run = it.Next(); } - return finalResult; + return DrawResult::SUCCESS; } nsIFrame* diff --git a/layout/svg/nsFilterInstance.cpp b/layout/svg/nsFilterInstance.cpp index 508b7f008a7a..ef5abd862326 100644 --- a/layout/svg/nsFilterInstance.cpp +++ b/layout/svg/nsFilterInstance.cpp @@ -418,11 +418,10 @@ nsFilterInstance::BuildSourcePaint(SourceInfo *aSource) ctx->SetMatrix(mPaintTransform * gfxMatrix::Translation(-neededRect.TopLeft())); GeneralPattern pattern; - DrawResult result = DrawResult::SUCCESS; if (aSource == &mFillPaint) { - result = nsSVGUtils::MakeFillPatternFor(mTargetFrame, ctx, &pattern); + nsSVGUtils::MakeFillPatternFor(mTargetFrame, ctx, &pattern); } else if (aSource == &mStrokePaint) { - result = nsSVGUtils::MakeStrokePatternFor(mTargetFrame, ctx, &pattern); + nsSVGUtils::MakeStrokePatternFor(mTargetFrame, ctx, &pattern); } if (pattern.GetPattern()) { @@ -433,7 +432,7 @@ nsFilterInstance::BuildSourcePaint(SourceInfo *aSource) aSource->mSourceSurface = offscreenDT->Snapshot(); aSource->mSurfaceRect = neededRect; - return result; + return DrawResult::SUCCESS; } DrawResult diff --git a/layout/svg/nsSVGGradientFrame.cpp b/layout/svg/nsSVGGradientFrame.cpp index 32d109d1ba7a..217ab8c4a462 100644 --- a/layout/svg/nsSVGGradientFrame.cpp +++ b/layout/svg/nsSVGGradientFrame.cpp @@ -207,7 +207,7 @@ static void GetStopInformation(nsIFrame* aStopFrame, *aStopOpacity = aStopFrame->StyleSVGReset()->mStopOpacity; } -mozilla::Pair> +already_AddRefed nsSVGGradientFrame::GetPaintServerPattern(nsIFrame* aSource, const DrawTarget* aDrawTarget, const gfxMatrix& aContextMatrix, @@ -235,7 +235,7 @@ nsSVGGradientFrame::GetPaintServerPattern(nsIFrame* aSource, // the corresponding fill or stroke had "none" specified. if (nStops == 0) { RefPtr pattern = new gfxPattern(Color()); - return MakePair(DrawResult::SUCCESS, Move(pattern)); + return pattern.forget(); } if (nStops == 1 || GradientVectorLengthIsZero()) { @@ -247,7 +247,7 @@ nsSVGGradientFrame::GetPaintServerPattern(nsIFrame* aSource, Color stopColor2 = Color::FromABGR(stopColor); stopColor2.a *= stopOpacity * aGraphicOpacity; RefPtr pattern = new gfxPattern(stopColor2); - return MakePair(DrawResult::SUCCESS, Move(pattern)); + return pattern.forget(); } // Get the transform list (if there is one). We do this after the returns @@ -256,7 +256,7 @@ nsSVGGradientFrame::GetPaintServerPattern(nsIFrame* aSource, gfxMatrix patternMatrix = GetGradientTransform(aSource, aOverrideBounds); if (patternMatrix.IsSingular()) { - return MakePair(DrawResult::BAD_ARGS, RefPtr()); + return nullptr; } // revert any vector effect transform so that the gradient appears unchanged @@ -268,13 +268,12 @@ nsSVGGradientFrame::GetPaintServerPattern(nsIFrame* aSource, } if (!patternMatrix.Invert()) { - return MakePair(DrawResult::BAD_ARGS, RefPtr()); + return nullptr; } RefPtr gradient = CreateGradient(); - if (!gradient || gradient->CairoStatus()) { - return MakePair(DrawResult::TEMPORARY_ERROR, RefPtr()); - } + if (!gradient || gradient->CairoStatus()) + return nullptr; uint16_t aSpread = GetSpreadMethod(); if (aSpread == SVG_SPREADMETHOD_PAD) @@ -305,7 +304,7 @@ nsSVGGradientFrame::GetPaintServerPattern(nsIFrame* aSource, gradient->AddColorStop(offset, stopColor2); } - return MakePair(DrawResult::SUCCESS, Move(gradient)); + return gradient.forget(); } // Private (helper) methods diff --git a/layout/svg/nsSVGGradientFrame.h b/layout/svg/nsSVGGradientFrame.h index f23689d45135..f12b132533a3 100644 --- a/layout/svg/nsSVGGradientFrame.h +++ b/layout/svg/nsSVGGradientFrame.h @@ -46,7 +46,7 @@ public: NS_DECL_ABSTRACT_FRAME(nsSVGGradientFrame) // nsSVGPaintServerFrame methods: - virtual mozilla::Pair> + virtual already_AddRefed GetPaintServerPattern(nsIFrame* aSource, const DrawTarget* aDrawTarget, const gfxMatrix& aContextMatrix, diff --git a/layout/svg/nsSVGIntegrationUtils.cpp b/layout/svg/nsSVGIntegrationUtils.cpp index 2a13522b7924..beee17eff9b8 100644 --- a/layout/svg/nsSVGIntegrationUtils.cpp +++ b/layout/svg/nsSVGIntegrationUtils.cpp @@ -1230,12 +1230,10 @@ nsSVGIntegrationUtils::DrawableFromPaintServer(nsIFrame* aFrame, gfxRect overrideBounds(0, 0, aPaintServerSize.width, aPaintServerSize.height); overrideBounds.ScaleInverse(aFrame->PresContext()->AppUnitsPerDevPixel()); - DrawResult result = DrawResult::SUCCESS; - RefPtr pattern; - Tie(result, pattern) = - server->GetPaintServerPattern(aTarget, aDrawTarget, - aContextMatrix, &nsStyleSVG::mFill, 1.0, - &overrideBounds); + RefPtr pattern = + server->GetPaintServerPattern(aTarget, aDrawTarget, + aContextMatrix, &nsStyleSVG::mFill, 1.0, + &overrideBounds); if (!pattern) return nullptr; diff --git a/layout/svg/nsSVGMaskFrame.cpp b/layout/svg/nsSVGMaskFrame.cpp index c03755ba12cc..1775f352a952 100644 --- a/layout/svg/nsSVGMaskFrame.cpp +++ b/layout/svg/nsSVGMaskFrame.cpp @@ -252,7 +252,7 @@ nsSVGMaskFrame::GetMaskForMaskedFrame(MaskParams& aParams) mMatrixForChildren = GetMaskTransform(aParams.maskedFrame) * aParams.toUserSpace; - DrawResult result = DrawResult::SUCCESS; + DrawResult result; for (nsIFrame* kid = mFrames.FirstChild(); kid; kid = kid->GetNextSibling()) { @@ -266,7 +266,10 @@ nsSVGMaskFrame::GetMaskForMaskedFrame(MaskParams& aParams) m = static_cast(kid->GetContent())-> PrependLocalTransformsTo(m, eUserSpaceToParent); } - result &= nsSVGUtils::PaintFrameWithEffects(kid, *tmpCtx, m); + result = nsSVGUtils::PaintFrameWithEffects(kid, *tmpCtx, m); + if (result != DrawResult::SUCCESS) { + return MakePair(result, RefPtr()); + } } RefPtr maskSnapshot = maskDT->Snapshot(); @@ -325,7 +328,7 @@ nsSVGMaskFrame::GetMaskForMaskedFrame(MaskParams& aParams) *aParams.maskTransform = ToMatrix(maskSurfaceMatrix); RefPtr surface = destMaskSurface.forget(); - return MakePair(result, Move(surface)); + return MakePair(DrawResult::SUCCESS, Move(surface)); } gfxRect diff --git a/layout/svg/nsSVGPaintServerFrame.h b/layout/svg/nsSVGPaintServerFrame.h index 912c0a3f38f9..6b568f872742 100644 --- a/layout/svg/nsSVGPaintServerFrame.h +++ b/layout/svg/nsSVGPaintServerFrame.h @@ -30,7 +30,6 @@ class nsSVGPaintServerFrame : public nsSVGContainerFrame { protected: typedef mozilla::gfx::DrawTarget DrawTarget; - typedef mozilla::image::DrawResult DrawResult; explicit nsSVGPaintServerFrame(nsStyleContext* aContext) : nsSVGContainerFrame(aContext) @@ -49,7 +48,7 @@ public: * that surfaces of the correct size can be created. (SVG gradients are * vector based, so it's not used there.) */ - virtual mozilla::Pair> + virtual already_AddRefed GetPaintServerPattern(nsIFrame *aSource, const DrawTarget* aDrawTarget, const gfxMatrix& aContextMatrix, diff --git a/layout/svg/nsSVGPatternFrame.cpp b/layout/svg/nsSVGPatternFrame.cpp index 8bfc00382eb9..1b3fb43c0e39 100644 --- a/layout/svg/nsSVGPatternFrame.cpp +++ b/layout/svg/nsSVGPatternFrame.cpp @@ -230,7 +230,7 @@ GetTargetGeometry(gfxRect *aBBox, return NS_OK; } -mozilla::Pair> +already_AddRefed nsSVGPatternFrame::PaintPattern(const DrawTarget* aDrawTarget, Matrix* patternMatrix, const Matrix &aContextMatrix, @@ -253,8 +253,7 @@ nsSVGPatternFrame::PaintPattern(const DrawTarget* aDrawTarget, nsSVGPatternFrame* patternWithChildren = GetPatternWithChildren(); if (!patternWithChildren) { - // Either no kids or a bad reference - return MakePair(DrawResult::SUCCESS, RefPtr()); + return nullptr; // Either no kids or a bad reference } nsIFrame* firstKid = patternWithChildren->mFrames.FirstChild(); @@ -293,7 +292,7 @@ nsSVGPatternFrame::PaintPattern(const DrawTarget* aDrawTarget, aSource, aContextMatrix, aOverrideBounds))) { - return MakePair(DrawResult::SUCCESS, RefPtr()); + return nullptr; } // Construct the CTM that we will provide to our children when we @@ -301,7 +300,7 @@ nsSVGPatternFrame::PaintPattern(const DrawTarget* aDrawTarget, gfxMatrix ctm = ConstructCTM(viewBox, patternContentUnits, patternUnits, callerBBox, aContextMatrix, aSource); if (ctm.IsSingular()) { - return MakePair(DrawResult::BAD_ARGS, RefPtr()); + return nullptr; } if (patternWithChildren->mCTM) { @@ -315,7 +314,7 @@ nsSVGPatternFrame::PaintPattern(const DrawTarget* aDrawTarget, // box for the pattern tile. gfxRect bbox = GetPatternRect(patternUnits, callerBBox, aContextMatrix, aSource); if (bbox.Width() <= 0.0 || bbox.Height() <= 0.0) { - return MakePair(DrawResult::SUCCESS, RefPtr()); + return nullptr; } // Get the pattern transform @@ -328,7 +327,7 @@ nsSVGPatternFrame::PaintPattern(const DrawTarget* aDrawTarget, patternTransform *= ToMatrix(userToOuterSVG); if (patternTransform.IsSingular()) { NS_WARNING("Singular matrix painting non-scaling-stroke"); - return MakePair(DrawResult::BAD_ARGS, RefPtr()); + return nullptr; } } } @@ -338,7 +337,7 @@ nsSVGPatternFrame::PaintPattern(const DrawTarget* aDrawTarget, *patternMatrix = GetPatternMatrix(patternUnits, patternTransform, bbox, callerBBox, aContextMatrix); if (patternMatrix->IsSingular()) { - return MakePair(DrawResult::BAD_ARGS, RefPtr()); + return nullptr; } // Now that we have all of the necessary geometries, we can @@ -352,7 +351,7 @@ nsSVGPatternFrame::PaintPattern(const DrawTarget* aDrawTarget, // 0 disables rendering, < 0 is an error if (surfaceSize.width <= 0 || surfaceSize.height <= 0) { - return MakePair(DrawResult::SUCCESS, RefPtr()); + return nullptr; } gfxFloat patternWidth = bbox.Width(); @@ -376,7 +375,7 @@ nsSVGPatternFrame::PaintPattern(const DrawTarget* aDrawTarget, RefPtr dt = aDrawTarget->CreateSimilarDrawTarget(surfaceSize, SurfaceFormat::B8G8R8A8); if (!dt || !dt->IsValid()) { - return MakePair(DrawResult::TEMPORARY_ERROR, RefPtr()); + return nullptr; } dt->ClearRect(Rect(0, 0, surfaceSize.width, surfaceSize.height)); @@ -399,7 +398,6 @@ nsSVGPatternFrame::PaintPattern(const DrawTarget* aDrawTarget, // Delay checking NS_FRAME_DRAWING_AS_PAINTSERVER bit until here so we can // give back a clear surface if there's a loop - DrawResult result = DrawResult::SUCCESS; if (!(patternWithChildren->GetStateBits() & NS_FRAME_DRAWING_AS_PAINTSERVER)) { patternWithChildren->AddStateBits(NS_FRAME_DRAWING_AS_PAINTSERVER); for (nsIFrame* kid = firstKid; kid; @@ -414,10 +412,11 @@ nsSVGPatternFrame::PaintPattern(const DrawTarget* aDrawTarget, tm = static_cast(kid->GetContent())-> PrependLocalTransformsTo(tm, eUserSpaceToParent); } - - result &= nsSVGUtils::PaintFrameWithEffects(kid, *gfx, tm); + DrawResult result = nsSVGUtils::PaintFrameWithEffects(kid, *gfx, tm); + if (result != DrawResult::SUCCESS) { + return nullptr; + } } - patternWithChildren->RemoveStateBits(NS_FRAME_DRAWING_AS_PAINTSERVER); } @@ -429,8 +428,7 @@ nsSVGPatternFrame::PaintPattern(const DrawTarget* aDrawTarget, } // caller now owns the surface - RefPtr surf = dt->Snapshot(); - return MakePair(result, Move(surf)); + return dt->Snapshot(); } /* Will probably need something like this... */ @@ -709,7 +707,8 @@ nsSVGPatternFrame::ConstructCTM(const nsSVGViewBox& aViewBox, //---------------------------------------------------------------------- // nsSVGPaintServerFrame methods: -mozilla::Pair> + +already_AddRefed nsSVGPatternFrame::GetPaintServerPattern(nsIFrame *aSource, const DrawTarget* aDrawTarget, const gfxMatrix& aContextMatrix, @@ -719,29 +718,26 @@ nsSVGPatternFrame::GetPaintServerPattern(nsIFrame *aSource, { if (aGraphicOpacity == 0.0f) { RefPtr pattern = new gfxPattern(Color()); - return MakePair(DrawResult::SUCCESS, Move(pattern)); + return pattern.forget(); } // Paint it! Matrix pMatrix; - RefPtr surface; - DrawResult result = DrawResult::SUCCESS; - Tie(result, surface) = + RefPtr surface = PaintPattern(aDrawTarget, &pMatrix, ToMatrix(aContextMatrix), aSource, aFillOrStroke, aGraphicOpacity, aOverrideBounds); if (!surface) { - return MakePair(result, RefPtr()); + return nullptr; } RefPtr pattern = new gfxPattern(surface, pMatrix); - if (!pattern || pattern->CairoStatus()) { - return MakePair(DrawResult::TEMPORARY_ERROR, RefPtr()); - } + if (!pattern || pattern->CairoStatus()) + return nullptr; pattern->SetExtend(ExtendMode::REPEAT); - return MakePair(result, Move(pattern)); + return pattern.forget(); } // ------------------------------------------------------------------------- diff --git a/layout/svg/nsSVGPatternFrame.h b/layout/svg/nsSVGPatternFrame.h index 386378a6ae16..5182e55385eb 100644 --- a/layout/svg/nsSVGPatternFrame.h +++ b/layout/svg/nsSVGPatternFrame.h @@ -40,7 +40,7 @@ public: explicit nsSVGPatternFrame(nsStyleContext* aContext); // nsSVGPaintServerFrame methods: - virtual mozilla::Pair> + virtual already_AddRefed GetPaintServerPattern(nsIFrame *aSource, const DrawTarget* aDrawTarget, const gfxMatrix& aContextMatrix, @@ -108,7 +108,7 @@ protected: return GetLengthValue(aIndex, mContent); } - mozilla::Pair> + already_AddRefed PaintPattern(const DrawTarget* aDrawTarget, Matrix *patternMatrix, const Matrix &aContextMatrix, diff --git a/layout/svg/nsSVGUtils.cpp b/layout/svg/nsSVGUtils.cpp index 4240e08179bb..ba5b12836c0a 100644 --- a/layout/svg/nsSVGUtils.cpp +++ b/layout/svg/nsSVGUtils.cpp @@ -1450,7 +1450,7 @@ nsSVGUtils::GetFallbackOrPaintColor(nsStyleContext *aStyleContext, return color; } -/* static */ DrawResult +/* static */ void nsSVGUtils::MakeFillPatternFor(nsIFrame* aFrame, gfxContext* aContext, GeneralPattern* aOutPattern, @@ -1458,7 +1458,7 @@ nsSVGUtils::MakeFillPatternFor(nsIFrame* aFrame, { const nsStyleSVG* style = aFrame->StyleSVG(); if (style->mFill.Type() == eStyleSVGPaintType_None) { - return DrawResult::SUCCESS; + return; } const float opacity = aFrame->StyleEffects()->mOpacity; @@ -1478,16 +1478,14 @@ nsSVGUtils::MakeFillPatternFor(nsIFrame* aFrame, nsSVGPaintServerFrame *ps = nsSVGEffects::GetPaintServer(aFrame, &nsStyleSVG::mFill, nsSVGEffects::FillProperty()); - DrawResult result = DrawResult::SUCCESS; if (ps) { - RefPtr pattern; - Tie(result, pattern) = + RefPtr pattern = ps->GetPaintServerPattern(aFrame, dt, aContext->CurrentMatrix(), &nsStyleSVG::mFill, fillOpacity); if (pattern) { pattern->CacheColorStops(dt); aOutPattern->Init(*pattern->GetPattern(dt)); - return result; + return; } } @@ -1495,21 +1493,19 @@ nsSVGUtils::MakeFillPatternFor(nsIFrame* aFrame, RefPtr pattern; switch (style->mFill.Type()) { case eStyleSVGPaintType_ContextFill: - Tie(result, pattern) = - aContextPaint->GetFillPattern(dt, fillOpacity, - aContext->CurrentMatrix()); + pattern = aContextPaint->GetFillPattern(dt, fillOpacity, + aContext->CurrentMatrix()); break; case eStyleSVGPaintType_ContextStroke: - Tie(result, pattern) = - aContextPaint->GetStrokePattern(dt, fillOpacity, - aContext->CurrentMatrix()); + pattern = aContextPaint->GetStrokePattern(dt, fillOpacity, + aContext->CurrentMatrix()); break; default: ; } if (pattern) { aOutPattern->Init(*pattern->GetPattern(dt)); - return result; + return; } } @@ -1520,11 +1516,9 @@ nsSVGUtils::MakeFillPatternFor(nsIFrame* aFrame, &nsStyleSVG::mFill))); color.a *= fillOpacity; aOutPattern->InitColorPattern(ToDeviceColor(color)); - - return result; } -/* static */ DrawResult +/* static */ void nsSVGUtils::MakeStrokePatternFor(nsIFrame* aFrame, gfxContext* aContext, GeneralPattern* aOutPattern, @@ -1532,7 +1526,7 @@ nsSVGUtils::MakeStrokePatternFor(nsIFrame* aFrame, { const nsStyleSVG* style = aFrame->StyleSVG(); if (style->mStroke.Type() == eStyleSVGPaintType_None) { - return DrawResult::SUCCESS; + return; } const float opacity = aFrame->StyleEffects()->mOpacity; @@ -1552,16 +1546,14 @@ nsSVGUtils::MakeStrokePatternFor(nsIFrame* aFrame, nsSVGPaintServerFrame *ps = nsSVGEffects::GetPaintServer(aFrame, &nsStyleSVG::mStroke, nsSVGEffects::StrokeProperty()); - DrawResult result = DrawResult::SUCCESS; if (ps) { - RefPtr pattern; - Tie(result, pattern) = + RefPtr pattern = ps->GetPaintServerPattern(aFrame, dt, aContext->CurrentMatrix(), &nsStyleSVG::mStroke, strokeOpacity); if (pattern) { pattern->CacheColorStops(dt); aOutPattern->Init(*pattern->GetPattern(dt)); - return result; + return; } } @@ -1569,21 +1561,19 @@ nsSVGUtils::MakeStrokePatternFor(nsIFrame* aFrame, RefPtr pattern; switch (style->mStroke.Type()) { case eStyleSVGPaintType_ContextFill: - Tie(result, pattern) = - aContextPaint->GetFillPattern(dt, strokeOpacity, - aContext->CurrentMatrix()); + pattern = aContextPaint->GetFillPattern(dt, strokeOpacity, + aContext->CurrentMatrix()); break; case eStyleSVGPaintType_ContextStroke: - Tie(result, pattern) = - aContextPaint->GetStrokePattern(dt, strokeOpacity, - aContext->CurrentMatrix()); + pattern = aContextPaint->GetStrokePattern(dt, strokeOpacity, + aContext->CurrentMatrix()); break; default: ; } if (pattern) { aOutPattern->Init(*pattern->GetPattern(dt)); - return result; + return; } } @@ -1594,8 +1584,6 @@ nsSVGUtils::MakeStrokePatternFor(nsIFrame* aFrame, &nsStyleSVG::mStroke))); color.a *= strokeOpacity; aOutPattern->InitColorPattern(ToDeviceColor(color)); - - return DrawResult::SUCCESS; } /* static */ float diff --git a/layout/svg/nsSVGUtils.h b/layout/svg/nsSVGUtils.h index 94854d714633..5108a6d80a00 100644 --- a/layout/svg/nsSVGUtils.h +++ b/layout/svg/nsSVGUtils.h @@ -503,13 +503,13 @@ public: static nscolor GetFallbackOrPaintColor(nsStyleContext *aStyleContext, nsStyleSVGPaint nsStyleSVG::*aFillOrStroke); - static DrawResult + static void MakeFillPatternFor(nsIFrame *aFrame, gfxContext* aContext, GeneralPattern* aOutPattern, SVGContextPaint* aContextPaint = nullptr); - static DrawResult + static void MakeStrokePatternFor(nsIFrame* aFrame, gfxContext* aContext, GeneralPattern* aOutPattern, From eefe88f8e985fe463fc24928e8c4c69e6ca154f5 Mon Sep 17 00:00:00 2001 From: Shane Caraveo Date: Thu, 16 Mar 2017 15:02:28 -0700 Subject: [PATCH 064/164] Bug 1339440 use frameUrl to match context menus on frames r=kmag MozReview-Commit-ID: LIlAZIP4HNx --HG-- extra : rebase_source : 2272774352a8d1cfaf9a6b209891c9bfd94fff19 --- .../components/extensions/ext-contextMenus.js | 2 +- .../extensions/test/browser/browser-common.ini | 1 + .../browser_ext_contextMenus_urlPatterns.js | 16 +++++++++++++++- .../extensions/test/browser/context.html | 1 + .../extensions/test/browser/context_frame.html | 8 ++++++++ .../components/extensions/test/browser/head.js | 12 +++++++++++- 6 files changed, 37 insertions(+), 3 deletions(-) create mode 100644 browser/components/extensions/test/browser/context_frame.html diff --git a/browser/components/extensions/ext-contextMenus.js b/browser/components/extensions/ext-contextMenus.js index 9283e821688c..1f2a0fad23b5 100644 --- a/browser/components/extensions/ext-contextMenus.js +++ b/browser/components/extensions/ext-contextMenus.js @@ -517,7 +517,7 @@ MenuItem.prototype = { } let docPattern = this.documentUrlMatchPattern; - let pageURI = Services.io.newURI(contextData.pageUrl); + let pageURI = Services.io.newURI(contextData[contextData.inFrame ? "frameUrl" : "pageUrl"]); if (docPattern && !docPattern.matches(pageURI)) { return false; } diff --git a/browser/components/extensions/test/browser/browser-common.ini b/browser/components/extensions/test/browser/browser-common.ini index 868978cccff8..0f06aaf881fa 100644 --- a/browser/components/extensions/test/browser/browser-common.ini +++ b/browser/components/extensions/test/browser/browser-common.ini @@ -4,6 +4,7 @@ support-files = head_pageAction.js head_sessions.js context.html + context_frame.html ctxmenu-image.png context_tabs_onUpdated_page.html context_tabs_onUpdated_iframe.html diff --git a/browser/components/extensions/test/browser/browser_ext_contextMenus_urlPatterns.js b/browser/components/extensions/test/browser/browser_ext_contextMenus_urlPatterns.js index 7849b8778681..c29adb2bf844 100644 --- a/browser/components/extensions/test/browser/browser_ext_contextMenus_urlPatterns.js +++ b/browser/components/extensions/test/browser/browser_ext_contextMenus_urlPatterns.js @@ -52,10 +52,16 @@ add_task(function* () { // Test menu items using documentUrlPatterns. browser.contextMenus.create({ title: "documentUrlPatterns-patternMatches-contextAll", - documentUrlPatterns: ["*://*/*context.html"], + documentUrlPatterns: ["*://*/*context*.html"], contexts: ["all"], }); + browser.contextMenus.create({ + title: "documentUrlPatterns-patternMatches-contextFrame", + documentUrlPatterns: ["*://*/*context_frame.html"], + contexts: ["frame"], + }); + browser.contextMenus.create({ title: "documentUrlPatterns-patternMatches-contextImage", documentUrlPatterns: ["*://*/*context.html", "http://*/url-that-does-not-match"], @@ -249,6 +255,14 @@ add_task(function* () { yield confirmContextMenuItems(contextMenu, expected); yield closeContextMenu(); + contextMenu = yield openContextMenuInFrame("frame"); + expected = [ + ["documentUrlPatterns-patternMatches-contextAll", true], + ["documentUrlPatterns-patternMatches-contextFrame", true], + ]; + yield confirmContextMenuItems(contextMenu, expected); + yield closeContextMenu(); + yield extension.unload(); yield BrowserTestUtils.removeTab(tab1); }); diff --git a/browser/components/extensions/test/browser/context.html b/browser/components/extensions/test/browser/context.html index 1e25c6e851fd..95617ff54fbd 100644 --- a/browser/components/extensions/test/browser/context.html +++ b/browser/components/extensions/test/browser/context.html @@ -20,5 +20,6 @@

    +