aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--tests/wpt/metadata/MANIFEST.json971
-rw-r--r--tests/wpt/metadata/css/css-text/i18n/ja/css-text-line-break-ja-cpm-normal.html.ini12
-rw-r--r--tests/wpt/metadata/css/css-text/i18n/zh/css-text-line-break-zh-cpm-normal.html.ini12
-rw-r--r--tests/wpt/metadata/css/css-text/white-space/white-space-empty-text-sibling.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-transitions/transitions-animatable-properties-01.html.ini12
-rw-r--r--tests/wpt/metadata/fetch/cross-origin-resource-policy/fetch-in-iframe.html.ini1
-rw-r--r--tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini4
-rw-r--r--tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_2.html.ini4
-rw-r--r--tests/wpt/metadata/html/browsers/history/the-location-interface/location-protocol-setter-non-broken-weird.html.ini16
-rw-r--r--tests/wpt/metadata/html/rendering/non-replaced-elements/flow-content-0/form-margin-quirk.html.ini4
-rw-r--r--tests/wpt/metadata/html/semantics/embedded-content/the-img-element/decode/image-decode-with-quick-attach-svg.tentative.html.ini4
-rw-r--r--tests/wpt/metadata/html/semantics/embedded-content/the-img-element/environment-changes/viewport-change.html.ini2
-rw-r--r--tests/wpt/metadata/html/semantics/embedded-content/the-img-element/non-active-document.html.ini10
-rw-r--r--tests/wpt/metadata/html/semantics/interactive-elements/the-details-element/toggleEvent.html.ini7
-rw-r--r--tests/wpt/metadata/html/syntax/parsing/DOMContentLoaded-defer.html.ini4
-rw-r--r--tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/aborted-parser.window.js.ini4
-rw-r--r--tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/bailout-exception-vs-return-origin.sub.window.js.ini3
-rw-r--r--tests/wpt/metadata/quirks/unitless-length/quirks.html.ini283
-rw-r--r--tests/wpt/metadata/referrer-policy/generic/multiple-headers-and-values.html.ini5
-rw-r--r--tests/wpt/metadata/referrer-policy/generic/multiple-headers-combined.html.ini5
-rw-r--r--tests/wpt/metadata/referrer-policy/generic/multiple-headers-one-invalid.html.ini5
-rw-r--r--tests/wpt/metadata/referrer-policy/generic/multiple-headers-one-unknown-token.html.ini5
-rw-r--r--tests/wpt/metadata/referrer-policy/generic/multiple-headers.html.ini5
-rw-r--r--tests/wpt/metadata/url/urlencoded-parser.any.js.ini21
-rw-r--r--tests/wpt/metadata/webaudio/the-audio-api/the-analysernode-interface/realtimeanalyser-fft-scaling.html.ini1
-rw-r--r--tests/wpt/metadata/workers/baseurl/alpha/sharedworker-in-worker.html.ini1
-rw-r--r--tests/wpt/web-platform-tests/.taskcluster.yml2
-rw-r--r--tests/wpt/web-platform-tests/.travis.yml39
-rw-r--r--tests/wpt/web-platform-tests/2dcontext/drawing-images-to-the-canvas/drawimage_svg_image_1.html57
-rw-r--r--tests/wpt/web-platform-tests/css/css-masking/mask-svg-content/mask-negative-scale.svg40
-rw-r--r--tests/wpt/web-platform-tests/css/css-masking/mask-svg-content/mask-text-001.svg18
-rw-r--r--tests/wpt/web-platform-tests/css/css-masking/mask-svg-content/mask-type-001.svg19
-rw-r--r--tests/wpt/web-platform-tests/css/css-masking/mask-svg-content/mask-type-002.svg19
-rw-r--r--tests/wpt/web-platform-tests/css/css-masking/mask-svg-content/mask-type-003.svg19
-rw-r--r--tests/wpt/web-platform-tests/css/css-masking/mask-svg-content/reference/mask-green-square-001-ref.svg8
-rw-r--r--tests/wpt/web-platform-tests/css/css-masking/mask-svg-content/reference/mask-negative-scale-001-ref.svg15
-rw-r--r--tests/wpt/web-platform-tests/css/css-masking/mask-svg-content/reference/mask-text-001-ref.svg8
-rw-r--r--tests/wpt/web-platform-tests/css/css-scroll-snap/inheritance.html39
-rw-r--r--tests/wpt/web-platform-tests/css/css-shapes/shape-outside/values/shape-outside-inset-0010.html20
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/white-space/reference/white-space-empty-text-sibling-ref.html3
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/white-space/white-space-empty-text-sibling.html11
-rw-r--r--tests/wpt/web-platform-tests/css/motion/offset-path-serialization.html4
-rw-r--r--tests/wpt/web-platform-tests/css/selectors/floating-first-letter-05d0.html20
-rw-r--r--tests/wpt/web-platform-tests/css/selectors/floating-first-letter-feff.html17
-rw-r--r--tests/wpt/web-platform-tests/css/selectors/floating-first-letter-ref.html14
-rw-r--r--tests/wpt/web-platform-tests/docs/_admin/index.md76
-rw-r--r--tests/wpt/web-platform-tests/docs/_config.yml2
-rw-r--r--tests/wpt/web-platform-tests/docs/_includes/svg/octicons/key.svg3
-rw-r--r--tests/wpt/web-platform-tests/docs/index.html11
-rw-r--r--tests/wpt/web-platform-tests/fetch/api/redirect/redirect-count.any.js1
-rw-r--r--tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/flow-content-0/form-margin-quirk.html20
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/decode/image-decode-with-quick-attach-svg.tentative.html23
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/embedded-content/the-video-element/intrinsic_sizes.htm75
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/forms/the-legend-element/HTMLLegendElement.html37
-rw-r--r--tests/wpt/web-platform-tests/html/webappapis/system-state-and-capabilities/the-navigator-object/navigatorcookies-cookieenabled-false-manual.html17
-rw-r--r--tests/wpt/web-platform-tests/html/webappapis/system-state-and-capabilities/the-navigator-object/navigatorcookies-cookieenabled-true.html13
-rw-r--r--tests/wpt/web-platform-tests/infrastructure/assumptions/cookie.html18
-rw-r--r--tests/wpt/web-platform-tests/interfaces/speech-api.idl25
-rw-r--r--tests/wpt/web-platform-tests/orientation-event/ondeviceorientationabsolute.html43
-rw-r--r--tests/wpt/web-platform-tests/referrer-policy/generic/multiple-headers-and-values.html29
-rw-r--r--tests/wpt/web-platform-tests/referrer-policy/generic/multiple-headers-and-values.html.headers2
-rw-r--r--tests/wpt/web-platform-tests/referrer-policy/generic/multiple-headers-combined.html29
-rw-r--r--tests/wpt/web-platform-tests/referrer-policy/generic/multiple-headers-combined.html.headers1
-rw-r--r--tests/wpt/web-platform-tests/referrer-policy/generic/multiple-headers-one-invalid.html29
-rw-r--r--tests/wpt/web-platform-tests/referrer-policy/generic/multiple-headers-one-invalid.html.headers2
-rw-r--r--tests/wpt/web-platform-tests/referrer-policy/generic/multiple-headers-one-unknown-token.html29
-rw-r--r--tests/wpt/web-platform-tests/referrer-policy/generic/multiple-headers-one-unknown-token.html.headers2
-rw-r--r--tests/wpt/web-platform-tests/referrer-policy/generic/multiple-headers.html29
-rw-r--r--tests/wpt/web-platform-tests/referrer-policy/generic/multiple-headers.html.headers2
-rw-r--r--tests/wpt/web-platform-tests/resources/idlharness.js114
-rw-r--r--tests/wpt/web-platform-tests/service-workers/service-worker/claim-worker-fetch.https.html29
-rw-r--r--tests/wpt/web-platform-tests/service-workers/service-worker/import-module-scripts.https.html28
-rw-r--r--tests/wpt/web-platform-tests/shadow-dom/slots-outside-shadow-dom.html16
-rw-r--r--tests/wpt/web-platform-tests/speech-api/SpeechSynthesisUtterance-basics.https.html11
-rwxr-xr-xtests/wpt/web-platform-tests/tools/ci/ci_lint.sh2
-rwxr-xr-xtests/wpt/web-platform-tests/tools/ci/ci_wptrunner_infrastructure.sh4
-rw-r--r--tests/wpt/web-platform-tests/tools/wpt/browser.py7
-rw-r--r--tests/wpt/web-platform-tests/tools/wpt/run.py6
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/__init__.py1
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/chrome.py37
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/chrome_webdriver.py56
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorselenium.py10
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorwebdriver.py12
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/testrunner.py59
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/tests/base.py2
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptrunner.py4
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wpttest.py5
-rw-r--r--tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicyFactory-createPolicy-createXYZTests.tentative.html24
-rw-r--r--tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicyFactory-isXXX.tentative.html118
-rw-r--r--tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-Element-setAttribute.tentative.html10
-rw-r--r--tests/wpt/web-platform-tests/webaudio/the-audio-api/the-convolvernode-interface/convolver-setBuffer-already-has-value.html6
-rw-r--r--tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/align_center-ref.html (renamed from tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/align_middle-ref.html)2
-rw-r--r--tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/align_center.html (renamed from tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/align_middle.html)6
-rw-r--r--tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/align_center_position_50-ref.html (renamed from tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/align_middle_position_50-ref.html)2
-rw-r--r--tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/align_center_position_50.html (renamed from tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/align_middle_position_50.html)6
-rw-r--r--tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/align_center_position_gt_50-ref.html (renamed from tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/align_middle_position_gt_50-ref.html)2
-rw-r--r--tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/align_center_position_gt_50.html (renamed from tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/align_middle_position_gt_50.html)6
-rw-r--r--tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/align_center_position_lt_50-ref.html (renamed from tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/align_middle_position_lt_50-ref.html)2
-rw-r--r--tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/align_center_position_lt_50.html (renamed from tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/align_middle_position_lt_50.html)6
-rw-r--r--tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/align_center_position_lt_50_size_gt_maximum_size-ref.html (renamed from tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/align_middle_position_lt_50_size_gt_maximum_size-ref.html)2
-rw-r--r--tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/align_center_position_lt_50_size_gt_maximum_size.html (renamed from tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/align_middle_position_lt_50_size_gt_maximum_size.html)6
-rw-r--r--tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/align_center_wrapped-ref.html (renamed from tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/align_middle_wrapped-ref.html)2
-rw-r--r--tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/align_center_wrapped.html (renamed from tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/align_middle_wrapped.html)6
-rw-r--r--tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/basic-ref.html26
-rw-r--r--tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/basic.html22
-rw-r--r--tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/regionanchor_x_50_percent-ref.html26
-rw-r--r--tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/regionanchor_x_50_percent.html22
-rw-r--r--tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/regionanchor_y_50_percent-ref.html6
-rw-r--r--tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/regionanchor_y_50_percent.html22
-rw-r--r--tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/scroll_up-ref.html26
-rw-r--r--tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/scroll_up.html22
-rw-r--r--tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/single_line_top_left-ref.html26
-rw-r--r--tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/single_line_top_left.html22
-rw-r--r--tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/support/basic.vtt7
-rw-r--r--tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/support/regionanchor_x_50_percent.vtt8
-rw-r--r--tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/support/regionanchor_y_50_percent.vtt8
-rw-r--r--tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/support/scroll_up.vtt16
-rw-r--r--tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/support/single_line_top_left.vtt10
-rw-r--r--tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/support/viewportanchor_x_50_percent.vtt8
-rw-r--r--tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/support/viewportanchor_y_50_percent.vtt8
-rw-r--r--tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/support/width_50_percent.vtt8
-rw-r--r--tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/viewportanchor_x_50_percent-ref.html27
-rw-r--r--tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/viewportanchor_x_50_percent.html22
-rw-r--r--tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/viewportanchor_y_50_percent-ref.html26
-rw-r--r--tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/viewportanchor_y_50_percent.html22
-rw-r--r--tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/width_50_percent-ref.html26
-rw-r--r--tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/width_50_percent.html22
-rw-r--r--tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/support/align_center.vtt4
-rw-r--r--tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/support/align_center_long.vtt (renamed from tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/support/align_middle_long.vtt)2
-rw-r--r--tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/support/align_center_position_50.vtt4
-rw-r--r--tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/support/align_center_position_gt_50.vtt4
-rw-r--r--tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/support/align_center_position_lt_50.vtt4
-rw-r--r--tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/support/align_center_position_lt_50_size_gt_maximum_size.vtt4
-rw-r--r--tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/support/align_middle.vtt4
-rw-r--r--tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/support/align_middle_position_50.vtt4
-rw-r--r--tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/support/align_middle_position_gt_50.vtt4
-rw-r--r--tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/support/align_middle_position_lt_50.vtt4
-rw-r--r--tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/support/align_middle_position_lt_50_size_gt_maximum_size.vtt4
-rw-r--r--tests/wpt/web-platform-tests/webxr/resources/webxr_util.js1
-rw-r--r--tests/wpt/web-platform-tests/workers/modules/dedicated-worker-import-blob-url.any.js2
-rw-r--r--tests/wpt/web-platform-tests/workers/modules/dedicated-worker-import-data-url.any.js1
-rw-r--r--tests/wpt/web-platform-tests/workers/modules/dedicated-worker-import.any.js1
-rw-r--r--tests/wpt/web-platform-tests/workers/modules/resources/dynamic-import-and-then-static-import-worker.js22
-rw-r--r--tests/wpt/web-platform-tests/workers/modules/resources/dynamic-import-worker.js22
-rw-r--r--tests/wpt/web-platform-tests/workers/modules/resources/eval-dynamic-import-worker.js19
-rw-r--r--tests/wpt/web-platform-tests/workers/modules/resources/export-on-dynamic-import-script.js3
-rw-r--r--tests/wpt/web-platform-tests/workers/modules/resources/import-test-cases.js14
-rw-r--r--tests/wpt/web-platform-tests/workers/modules/resources/nested-dynamic-import-worker.js27
-rw-r--r--tests/wpt/web-platform-tests/workers/modules/resources/nested-static-import-worker.js9
-rw-r--r--tests/wpt/web-platform-tests/workers/modules/resources/static-import-and-then-dynamic-import-worker.js22
-rw-r--r--tests/wpt/web-platform-tests/workers/modules/resources/static-import-worker.js9
-rw-r--r--tests/wpt/web-platform-tests/xhr/overridemimetype-edge-cases.window.js14
-rw-r--r--tests/wpt/web-platform-tests/xhr/resources/inspect-headers.py8
153 files changed, 2956 insertions, 600 deletions
diff --git a/tests/wpt/metadata/MANIFEST.json b/tests/wpt/metadata/MANIFEST.json
index 1aa1a0ed3ca..29acda356da 100644
--- a/tests/wpt/metadata/MANIFEST.json
+++ b/tests/wpt/metadata/MANIFEST.json
@@ -13093,6 +13093,12 @@
{}
]
],
+ "html/webappapis/system-state-and-capabilities/the-navigator-object/navigatorcookies-cookieenabled-false-manual.html": [
+ [
+ "/html/webappapis/system-state-and-capabilities/the-navigator-object/navigatorcookies-cookieenabled-false-manual.html",
+ {}
+ ]
+ ],
"input-events/input-events-cut-paste-manual.html": [
[
"/input-events/input-events-cut-paste-manual.html",
@@ -126177,6 +126183,66 @@
{}
]
],
+ "css/css-masking/mask-svg-content/mask-negative-scale.svg": [
+ [
+ "/css/css-masking/mask-svg-content/mask-negative-scale.svg",
+ [
+ [
+ "/css/css-masking/mask-svg-content/reference/mask-negative-scale-001-ref.svg",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-masking/mask-svg-content/mask-text-001.svg": [
+ [
+ "/css/css-masking/mask-svg-content/mask-text-001.svg",
+ [
+ [
+ "/css/css-masking/mask-svg-content/reference/mask-text-001-ref.svg",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-masking/mask-svg-content/mask-type-001.svg": [
+ [
+ "/css/css-masking/mask-svg-content/mask-type-001.svg",
+ [
+ [
+ "/css/css-masking/mask-svg-content/reference/mask-green-square-001-ref.svg",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-masking/mask-svg-content/mask-type-002.svg": [
+ [
+ "/css/css-masking/mask-svg-content/mask-type-002.svg",
+ [
+ [
+ "/css/css-masking/mask-svg-content/reference/mask-green-square-001-ref.svg",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-masking/mask-svg-content/mask-type-003.svg": [
+ [
+ "/css/css-masking/mask-svg-content/mask-type-003.svg",
+ [
+ [
+ "/css/css-masking/mask-svg-content/reference/mask-green-square-001-ref.svg",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"css/css-masking/test-mask.html": [
[
"/css/css-masking/test-mask.html",
@@ -133813,6 +133879,18 @@
{}
]
],
+ "css/css-shapes/shape-outside/values/shape-outside-inset-0010.html": [
+ [
+ "/css/css-shapes/shape-outside/values/shape-outside-inset-0010.html",
+ [
+ [
+ "/css/reference/ref-filled-green-100px-square-only.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"css/css-shapes/spec-examples/shape-outside-001.html": [
[
"/css/css-shapes/spec-examples/shape-outside-001.html",
@@ -139357,6 +139435,18 @@
{}
]
],
+ "css/css-text/white-space/white-space-empty-text-sibling.html": [
+ [
+ "/css/css-text/white-space/white-space-empty-text-sibling.html",
+ [
+ [
+ "/css/css-text/white-space/reference/white-space-empty-text-sibling-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"css/css-text/word-break/word-break-break-all-000.html": [
[
"/css/css-text/word-break/word-break-break-all-000.html",
@@ -166465,6 +166555,30 @@
{}
]
],
+ "css/selectors/floating-first-letter-05d0.html": [
+ [
+ "/css/selectors/floating-first-letter-05d0.html",
+ [
+ [
+ "/css/selectors/floating-first-letter-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/selectors/floating-first-letter-feff.html": [
+ [
+ "/css/selectors/floating-first-letter-feff.html",
+ [
+ [
+ "/css/selectors/floating-first-letter-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"css/selectors/focus-within-001.html": [
[
"/css/selectors/focus-within-001.html",
@@ -189737,96 +189851,96 @@
{}
]
],
- "webvtt/rendering/cues-with-video/processing-model/align_end.html": [
+ "webvtt/rendering/cues-with-video/processing-model/align_center.html": [
[
- "/webvtt/rendering/cues-with-video/processing-model/align_end.html",
+ "/webvtt/rendering/cues-with-video/processing-model/align_center.html",
[
[
- "/webvtt/rendering/cues-with-video/processing-model/align_end-ref.html",
+ "/webvtt/rendering/cues-with-video/processing-model/align_center-ref.html",
"=="
]
],
{}
]
],
- "webvtt/rendering/cues-with-video/processing-model/align_end_wrapped.html": [
+ "webvtt/rendering/cues-with-video/processing-model/align_center_position_50.html": [
[
- "/webvtt/rendering/cues-with-video/processing-model/align_end_wrapped.html",
+ "/webvtt/rendering/cues-with-video/processing-model/align_center_position_50.html",
[
[
- "/webvtt/rendering/cues-with-video/processing-model/align_end_wrapped-ref.html",
+ "/webvtt/rendering/cues-with-video/processing-model/align_center_position_50-ref.html",
"=="
]
],
{}
]
],
- "webvtt/rendering/cues-with-video/processing-model/align_middle.html": [
+ "webvtt/rendering/cues-with-video/processing-model/align_center_position_gt_50.html": [
[
- "/webvtt/rendering/cues-with-video/processing-model/align_middle.html",
+ "/webvtt/rendering/cues-with-video/processing-model/align_center_position_gt_50.html",
[
[
- "/webvtt/rendering/cues-with-video/processing-model/align_middle-ref.html",
+ "/webvtt/rendering/cues-with-video/processing-model/align_center_position_gt_50-ref.html",
"=="
]
],
{}
]
],
- "webvtt/rendering/cues-with-video/processing-model/align_middle_position_50.html": [
+ "webvtt/rendering/cues-with-video/processing-model/align_center_position_lt_50.html": [
[
- "/webvtt/rendering/cues-with-video/processing-model/align_middle_position_50.html",
+ "/webvtt/rendering/cues-with-video/processing-model/align_center_position_lt_50.html",
[
[
- "/webvtt/rendering/cues-with-video/processing-model/align_middle_position_50-ref.html",
+ "/webvtt/rendering/cues-with-video/processing-model/align_center_position_lt_50-ref.html",
"=="
]
],
{}
]
],
- "webvtt/rendering/cues-with-video/processing-model/align_middle_position_gt_50.html": [
+ "webvtt/rendering/cues-with-video/processing-model/align_center_position_lt_50_size_gt_maximum_size.html": [
[
- "/webvtt/rendering/cues-with-video/processing-model/align_middle_position_gt_50.html",
+ "/webvtt/rendering/cues-with-video/processing-model/align_center_position_lt_50_size_gt_maximum_size.html",
[
[
- "/webvtt/rendering/cues-with-video/processing-model/align_middle_position_gt_50-ref.html",
+ "/webvtt/rendering/cues-with-video/processing-model/align_center_position_lt_50_size_gt_maximum_size-ref.html",
"=="
]
],
{}
]
],
- "webvtt/rendering/cues-with-video/processing-model/align_middle_position_lt_50.html": [
+ "webvtt/rendering/cues-with-video/processing-model/align_center_wrapped.html": [
[
- "/webvtt/rendering/cues-with-video/processing-model/align_middle_position_lt_50.html",
+ "/webvtt/rendering/cues-with-video/processing-model/align_center_wrapped.html",
[
[
- "/webvtt/rendering/cues-with-video/processing-model/align_middle_position_lt_50-ref.html",
+ "/webvtt/rendering/cues-with-video/processing-model/align_center_wrapped-ref.html",
"=="
]
],
{}
]
],
- "webvtt/rendering/cues-with-video/processing-model/align_middle_position_lt_50_size_gt_maximum_size.html": [
+ "webvtt/rendering/cues-with-video/processing-model/align_end.html": [
[
- "/webvtt/rendering/cues-with-video/processing-model/align_middle_position_lt_50_size_gt_maximum_size.html",
+ "/webvtt/rendering/cues-with-video/processing-model/align_end.html",
[
[
- "/webvtt/rendering/cues-with-video/processing-model/align_middle_position_lt_50_size_gt_maximum_size-ref.html",
+ "/webvtt/rendering/cues-with-video/processing-model/align_end-ref.html",
"=="
]
],
{}
]
],
- "webvtt/rendering/cues-with-video/processing-model/align_middle_wrapped.html": [
+ "webvtt/rendering/cues-with-video/processing-model/align_end_wrapped.html": [
[
- "/webvtt/rendering/cues-with-video/processing-model/align_middle_wrapped.html",
+ "/webvtt/rendering/cues-with-video/processing-model/align_end_wrapped.html",
[
[
- "/webvtt/rendering/cues-with-video/processing-model/align_middle_wrapped-ref.html",
+ "/webvtt/rendering/cues-with-video/processing-model/align_end_wrapped-ref.html",
"=="
]
],
@@ -190325,6 +190439,102 @@
{}
]
],
+ "webvtt/rendering/cues-with-video/processing-model/regions/basic.html": [
+ [
+ "/webvtt/rendering/cues-with-video/processing-model/regions/basic.html",
+ [
+ [
+ "/webvtt/rendering/cues-with-video/processing-model/regions/basic-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "webvtt/rendering/cues-with-video/processing-model/regions/regionanchor_x_50_percent.html": [
+ [
+ "/webvtt/rendering/cues-with-video/processing-model/regions/regionanchor_x_50_percent.html",
+ [
+ [
+ "/webvtt/rendering/cues-with-video/processing-model/regions/regionanchor_x_50_percent-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "webvtt/rendering/cues-with-video/processing-model/regions/regionanchor_y_50_percent.html": [
+ [
+ "/webvtt/rendering/cues-with-video/processing-model/regions/regionanchor_y_50_percent.html",
+ [
+ [
+ "/webvtt/rendering/cues-with-video/processing-model/regions/regionanchor_y_50_percent-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "webvtt/rendering/cues-with-video/processing-model/regions/scroll_up.html": [
+ [
+ "/webvtt/rendering/cues-with-video/processing-model/regions/scroll_up.html",
+ [
+ [
+ "/webvtt/rendering/cues-with-video/processing-model/regions/scroll_up-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "webvtt/rendering/cues-with-video/processing-model/regions/single_line_top_left.html": [
+ [
+ "/webvtt/rendering/cues-with-video/processing-model/regions/single_line_top_left.html",
+ [
+ [
+ "/webvtt/rendering/cues-with-video/processing-model/regions/single_line_top_left-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "webvtt/rendering/cues-with-video/processing-model/regions/viewportanchor_x_50_percent.html": [
+ [
+ "/webvtt/rendering/cues-with-video/processing-model/regions/viewportanchor_x_50_percent.html",
+ [
+ [
+ "/webvtt/rendering/cues-with-video/processing-model/regions/viewportanchor_x_50_percent-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "webvtt/rendering/cues-with-video/processing-model/regions/viewportanchor_y_50_percent.html": [
+ [
+ "/webvtt/rendering/cues-with-video/processing-model/regions/viewportanchor_y_50_percent.html",
+ [
+ [
+ "/webvtt/rendering/cues-with-video/processing-model/regions/viewportanchor_y_50_percent-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "webvtt/rendering/cues-with-video/processing-model/regions/width_50_percent.html": [
+ [
+ "/webvtt/rendering/cues-with-video/processing-model/regions/width_50_percent.html",
+ [
+ [
+ "/webvtt/rendering/cues-with-video/processing-model/regions/width_50_percent-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"webvtt/rendering/cues-with-video/processing-model/repaint.html": [
[
"/webvtt/rendering/cues-with-video/processing-model/repaint.html",
@@ -259862,6 +260072,21 @@
{}
]
],
+ "css/css-masking/mask-svg-content/reference/mask-green-square-001-ref.svg": [
+ [
+ {}
+ ]
+ ],
+ "css/css-masking/mask-svg-content/reference/mask-negative-scale-001-ref.svg": [
+ [
+ {}
+ ]
+ ],
+ "css/css-masking/mask-svg-content/reference/mask-text-001-ref.svg": [
+ [
+ {}
+ ]
+ ],
"css/css-masking/test-mask-ref.html": [
[
{}
@@ -265527,6 +265752,11 @@
{}
]
],
+ "css/css-text/white-space/reference/white-space-empty-text-sibling-ref.html": [
+ [
+ {}
+ ]
+ ],
"css/css-text/word-break/reference/word-break-break-all-009-ref.xht": [
[
{}
@@ -272932,6 +273162,11 @@
{}
]
],
+ "css/selectors/floating-first-letter-ref.html": [
+ [
+ {}
+ ]
+ ],
"css/selectors/focus-within-001-ref.html": [
[
{}
@@ -278027,6 +278262,11 @@
{}
]
],
+ "docs/_admin/index.md": [
+ [
+ {}
+ ]
+ ],
"docs/_appendix/github-intro.md": [
[
{}
@@ -278077,6 +278317,11 @@
{}
]
],
+ "docs/_includes/svg/octicons/key.svg": [
+ [
+ {}
+ ]
+ ],
"docs/_includes/svg/octicons/package.svg": [
[
{}
@@ -296732,6 +296977,31 @@
{}
]
],
+ "referrer-policy/generic/multiple-headers-and-values.html.headers": [
+ [
+ {}
+ ]
+ ],
+ "referrer-policy/generic/multiple-headers-combined.html.headers": [
+ [
+ {}
+ ]
+ ],
+ "referrer-policy/generic/multiple-headers-one-invalid.html.headers": [
+ [
+ {}
+ ]
+ ],
+ "referrer-policy/generic/multiple-headers-one-unknown-token.html.headers": [
+ [
+ {}
+ ]
+ ],
+ "referrer-policy/generic/multiple-headers.html.headers": [
+ [
+ {}
+ ]
+ ],
"referrer-policy/generic/referrer-policy-test-case.js": [
[
{}
@@ -311632,11 +311902,6 @@
{}
]
],
- "tools/wptrunner/wptrunner/browsers/chrome_webdriver.py": [
- [
- {}
- ]
- ],
"tools/wptrunner/wptrunner/browsers/edge.py": [
[
{}
@@ -315272,42 +315537,42 @@
{}
]
],
- "webvtt/rendering/cues-with-video/processing-model/align_end-ref.html": [
+ "webvtt/rendering/cues-with-video/processing-model/align_center-ref.html": [
[
{}
]
],
- "webvtt/rendering/cues-with-video/processing-model/align_end_wrapped-ref.html": [
+ "webvtt/rendering/cues-with-video/processing-model/align_center_position_50-ref.html": [
[
{}
]
],
- "webvtt/rendering/cues-with-video/processing-model/align_middle-ref.html": [
+ "webvtt/rendering/cues-with-video/processing-model/align_center_position_gt_50-ref.html": [
[
{}
]
],
- "webvtt/rendering/cues-with-video/processing-model/align_middle_position_50-ref.html": [
+ "webvtt/rendering/cues-with-video/processing-model/align_center_position_lt_50-ref.html": [
[
{}
]
],
- "webvtt/rendering/cues-with-video/processing-model/align_middle_position_gt_50-ref.html": [
+ "webvtt/rendering/cues-with-video/processing-model/align_center_position_lt_50_size_gt_maximum_size-ref.html": [
[
{}
]
],
- "webvtt/rendering/cues-with-video/processing-model/align_middle_position_lt_50-ref.html": [
+ "webvtt/rendering/cues-with-video/processing-model/align_center_wrapped-ref.html": [
[
{}
]
],
- "webvtt/rendering/cues-with-video/processing-model/align_middle_position_lt_50_size_gt_maximum_size-ref.html": [
+ "webvtt/rendering/cues-with-video/processing-model/align_end-ref.html": [
[
{}
]
],
- "webvtt/rendering/cues-with-video/processing-model/align_middle_wrapped-ref.html": [
+ "webvtt/rendering/cues-with-video/processing-model/align_end_wrapped-ref.html": [
[
{}
]
@@ -315562,6 +315827,86 @@
{}
]
],
+ "webvtt/rendering/cues-with-video/processing-model/regions/basic-ref.html": [
+ [
+ {}
+ ]
+ ],
+ "webvtt/rendering/cues-with-video/processing-model/regions/regionanchor_x_50_percent-ref.html": [
+ [
+ {}
+ ]
+ ],
+ "webvtt/rendering/cues-with-video/processing-model/regions/regionanchor_y_50_percent-ref.html": [
+ [
+ {}
+ ]
+ ],
+ "webvtt/rendering/cues-with-video/processing-model/regions/scroll_up-ref.html": [
+ [
+ {}
+ ]
+ ],
+ "webvtt/rendering/cues-with-video/processing-model/regions/single_line_top_left-ref.html": [
+ [
+ {}
+ ]
+ ],
+ "webvtt/rendering/cues-with-video/processing-model/regions/support/basic.vtt": [
+ [
+ {}
+ ]
+ ],
+ "webvtt/rendering/cues-with-video/processing-model/regions/support/regionanchor_x_50_percent.vtt": [
+ [
+ {}
+ ]
+ ],
+ "webvtt/rendering/cues-with-video/processing-model/regions/support/regionanchor_y_50_percent.vtt": [
+ [
+ {}
+ ]
+ ],
+ "webvtt/rendering/cues-with-video/processing-model/regions/support/scroll_up.vtt": [
+ [
+ {}
+ ]
+ ],
+ "webvtt/rendering/cues-with-video/processing-model/regions/support/single_line_top_left.vtt": [
+ [
+ {}
+ ]
+ ],
+ "webvtt/rendering/cues-with-video/processing-model/regions/support/viewportanchor_x_50_percent.vtt": [
+ [
+ {}
+ ]
+ ],
+ "webvtt/rendering/cues-with-video/processing-model/regions/support/viewportanchor_y_50_percent.vtt": [
+ [
+ {}
+ ]
+ ],
+ "webvtt/rendering/cues-with-video/processing-model/regions/support/width_50_percent.vtt": [
+ [
+ {}
+ ]
+ ],
+ "webvtt/rendering/cues-with-video/processing-model/regions/viewportanchor_x_50_percent-ref.html": [
+ [
+ {}
+ ]
+ ],
+ "webvtt/rendering/cues-with-video/processing-model/regions/viewportanchor_y_50_percent-ref.html": [
+ [
+ {}
+ ]
+ ],
+ "webvtt/rendering/cues-with-video/processing-model/regions/width_50_percent-ref.html": [
+ [
+ {}
+ ]
+ ],
"webvtt/rendering/cues-with-video/processing-model/repaint-ref.html": [
[
{}
@@ -316422,42 +316767,42 @@
{}
]
],
- "webvtt/rendering/cues-with-video/processing-model/support/align_end.vtt": [
+ "webvtt/rendering/cues-with-video/processing-model/support/align_center.vtt": [
[
{}
]
],
- "webvtt/rendering/cues-with-video/processing-model/support/align_end_long.vtt": [
+ "webvtt/rendering/cues-with-video/processing-model/support/align_center_long.vtt": [
[
{}
]
],
- "webvtt/rendering/cues-with-video/processing-model/support/align_middle.vtt": [
+ "webvtt/rendering/cues-with-video/processing-model/support/align_center_position_50.vtt": [
[
{}
]
],
- "webvtt/rendering/cues-with-video/processing-model/support/align_middle_long.vtt": [
+ "webvtt/rendering/cues-with-video/processing-model/support/align_center_position_gt_50.vtt": [
[
{}
]
],
- "webvtt/rendering/cues-with-video/processing-model/support/align_middle_position_50.vtt": [
+ "webvtt/rendering/cues-with-video/processing-model/support/align_center_position_lt_50.vtt": [
[
{}
]
],
- "webvtt/rendering/cues-with-video/processing-model/support/align_middle_position_gt_50.vtt": [
+ "webvtt/rendering/cues-with-video/processing-model/support/align_center_position_lt_50_size_gt_maximum_size.vtt": [
[
{}
]
],
- "webvtt/rendering/cues-with-video/processing-model/support/align_middle_position_lt_50.vtt": [
+ "webvtt/rendering/cues-with-video/processing-model/support/align_end.vtt": [
[
{}
]
],
- "webvtt/rendering/cues-with-video/processing-model/support/align_middle_position_lt_50_size_gt_maximum_size.vtt": [
+ "webvtt/rendering/cues-with-video/processing-model/support/align_end_long.vtt": [
[
{}
]
@@ -336138,6 +336483,12 @@
{}
]
],
+ "css/css-scroll-snap/inheritance.html": [
+ [
+ "/css/css-scroll-snap/inheritance.html",
+ {}
+ ]
+ ],
"css/css-scroll-snap/overflowing-snap-areas.html": [
[
"/css/css-scroll-snap/overflowing-snap-areas.html",
@@ -356529,11 +356880,15 @@
"fetch/api/redirect/redirect-count.any.js": [
[
"/fetch/api/redirect/redirect-count.any.html",
- {}
+ {
+ "timeout": "long"
+ }
],
[
"/fetch/api/redirect/redirect-count.any.worker.html",
- {}
+ {
+ "timeout": "long"
+ }
]
],
"fetch/api/redirect/redirect-empty-location.any.js": [
@@ -360860,6 +361215,12 @@
{}
]
],
+ "html/rendering/non-replaced-elements/flow-content-0/form-margin-quirk.html": [
+ [
+ "/html/rendering/non-replaced-elements/flow-content-0/form-margin-quirk.html",
+ {}
+ ]
+ ],
"html/rendering/non-replaced-elements/margin-collapsing-quirks/multicol-quirks-mode.html": [
[
"/html/rendering/non-replaced-elements/margin-collapsing-quirks/multicol-quirks-mode.html",
@@ -364384,6 +364745,14 @@
}
]
],
+ "html/semantics/embedded-content/the-img-element/decode/image-decode-with-quick-attach-svg.tentative.html": [
+ [
+ "/html/semantics/embedded-content/the-img-element/decode/image-decode-with-quick-attach-svg.tentative.html",
+ {
+ "timeout": "long"
+ }
+ ]
+ ],
"html/semantics/embedded-content/the-img-element/decode/image-decode-with-quick-attach.html": [
[
"/html/semantics/embedded-content/the-img-element/decode/image-decode-with-quick-attach.html",
@@ -364598,6 +364967,12 @@
{}
]
],
+ "html/semantics/embedded-content/the-video-element/intrinsic_sizes.htm": [
+ [
+ "/html/semantics/embedded-content/the-video-element/intrinsic_sizes.htm",
+ {}
+ ]
+ ],
"html/semantics/embedded-content/the-video-element/intrinsicsize/intrinsicsize-without-unsized-media.tentative.https.sub.html": [
[
"/html/semantics/embedded-content/the-video-element/intrinsicsize/intrinsicsize-without-unsized-media.tentative.https.sub.html",
@@ -365498,6 +365873,12 @@
{}
]
],
+ "html/semantics/forms/the-legend-element/HTMLLegendElement.html": [
+ [
+ "/html/semantics/forms/the-legend-element/HTMLLegendElement.html",
+ {}
+ ]
+ ],
"html/semantics/forms/the-legend-element/legend-form.html": [
[
"/html/semantics/forms/the-legend-element/legend-form.html",
@@ -370930,6 +371311,12 @@
{}
]
],
+ "html/webappapis/system-state-and-capabilities/the-navigator-object/navigatorcookies-cookieenabled-true.html": [
+ [
+ "/html/webappapis/system-state-and-capabilities/the-navigator-object/navigatorcookies-cookieenabled-true.html",
+ {}
+ ]
+ ],
"html/webappapis/system-state-and-capabilities/the-navigator-object/navigatorlanguage.html": [
[
"/html/webappapis/system-state-and-capabilities/the-navigator-object/navigatorlanguage.html",
@@ -371070,6 +371457,12 @@
{}
]
],
+ "infrastructure/assumptions/cookie.html": [
+ [
+ "/infrastructure/assumptions/cookie.html",
+ {}
+ ]
+ ],
"infrastructure/assumptions/html-elements.html": [
[
"/infrastructure/assumptions/html-elements.html",
@@ -385212,6 +385605,12 @@
{}
]
],
+ "orientation-event/ondeviceorientationabsolute.html": [
+ [
+ "/orientation-event/ondeviceorientationabsolute.html",
+ {}
+ ]
+ ],
"orientation-sensor/AbsoluteOrientationSensor-disabled-by-feature-policy.https.html": [
[
"/orientation-sensor/AbsoluteOrientationSensor-disabled-by-feature-policy.https.html",
@@ -386576,6 +386975,36 @@
{}
]
],
+ "referrer-policy/generic/multiple-headers-and-values.html": [
+ [
+ "/referrer-policy/generic/multiple-headers-and-values.html",
+ {}
+ ]
+ ],
+ "referrer-policy/generic/multiple-headers-combined.html": [
+ [
+ "/referrer-policy/generic/multiple-headers-combined.html",
+ {}
+ ]
+ ],
+ "referrer-policy/generic/multiple-headers-one-invalid.html": [
+ [
+ "/referrer-policy/generic/multiple-headers-one-invalid.html",
+ {}
+ ]
+ ],
+ "referrer-policy/generic/multiple-headers-one-unknown-token.html": [
+ [
+ "/referrer-policy/generic/multiple-headers-one-unknown-token.html",
+ {}
+ ]
+ ],
+ "referrer-policy/generic/multiple-headers.html": [
+ [
+ "/referrer-policy/generic/multiple-headers.html",
+ {}
+ ]
+ ],
"referrer-policy/generic/sandboxed-iframe-with-opaque-origin.html": [
[
"/referrer-policy/generic/sandboxed-iframe-with-opaque-origin.html",
@@ -396884,6 +397313,12 @@
{}
]
],
+ "service-workers/service-worker/import-module-scripts.https.html": [
+ [
+ "/service-workers/service-worker/import-module-scripts.https.html",
+ {}
+ ]
+ ],
"service-workers/service-worker/import-scripts-redirect.https.html": [
[
"/service-workers/service-worker/import-scripts-redirect.https.html",
@@ -397722,6 +398157,12 @@
{}
]
],
+ "shadow-dom/slots-outside-shadow-dom.html": [
+ [
+ "/shadow-dom/slots-outside-shadow-dom.html",
+ {}
+ ]
+ ],
"shadow-dom/slots.html": [
[
"/shadow-dom/slots.html",
@@ -400240,6 +400681,12 @@
{}
]
],
+ "trusted-types/TrustedTypePolicyFactory-isXXX.tentative.html": [
+ [
+ "/trusted-types/TrustedTypePolicyFactory-isXXX.tentative.html",
+ {}
+ ]
+ ],
"trusted-types/Window-TrustedTypes.tentative.html": [
[
"/trusted-types/Window-TrustedTypes.tentative.html",
@@ -432176,11 +432623,11 @@
"support"
],
".taskcluster.yml": [
- "f36523ed301c505bc3f9b1fa5979f866008cde36",
+ "92e8d89d3af3442b3363ae43b20659676e0ffccb",
"support"
],
".travis.yml": [
- "6f06b671f0ccfd33377b93cb8ddc519160631e17",
+ "e0abc3cb953a49eb7018bda4bf118be5be5f22e0",
"support"
],
".well-known/README.md": [
@@ -433064,7 +433511,7 @@
"testharness"
],
"2dcontext/drawing-images-to-the-canvas/drawimage_svg_image_1.html": [
- "385f1a5568eebe953663232ee745462f20bfda94",
+ "6208b8dc05629208ee3d68b233e1b6c107d1d12b",
"testharness"
],
"2dcontext/drawing-paths-to-the-canvas/canvas_complexshapes_ispointInpath_001.htm": [
@@ -549119,6 +549566,38 @@
"cab55923d32ddb9525cb81a12d8035b1bf51bb4c",
"support"
],
+ "css/css-masking/mask-svg-content/mask-negative-scale.svg": [
+ "36b7abb42eb157b9feff158c6dfb399249ee437c",
+ "reftest"
+ ],
+ "css/css-masking/mask-svg-content/mask-text-001.svg": [
+ "1dd5c546af3f90ad4ea97e9df7c8f19f70473f86",
+ "reftest"
+ ],
+ "css/css-masking/mask-svg-content/mask-type-001.svg": [
+ "9bcc40d55b1eba6d2811a3529f33a8f1a7ecdd03",
+ "reftest"
+ ],
+ "css/css-masking/mask-svg-content/mask-type-002.svg": [
+ "c298297329cf2d04bb53ae7cf8dbbb42551dfe4c",
+ "reftest"
+ ],
+ "css/css-masking/mask-svg-content/mask-type-003.svg": [
+ "891405dc46a5d200873d94608ea6de71e77adf38",
+ "reftest"
+ ],
+ "css/css-masking/mask-svg-content/reference/mask-green-square-001-ref.svg": [
+ "c83ec87e7bd06b73983b6c80c9712b8b924e9375",
+ "support"
+ ],
+ "css/css-masking/mask-svg-content/reference/mask-negative-scale-001-ref.svg": [
+ "1ed0513327d4ac3735c81104834f68afe80e607d",
+ "support"
+ ],
+ "css/css-masking/mask-svg-content/reference/mask-text-001-ref.svg": [
+ "48737c03d1e9d8be22b67c990be0d3ff9b420160",
+ "support"
+ ],
"css/css-masking/parsing/clip-invalid.html": [
"852612027840e24673432bcdcf6abaa33f422631",
"testharness"
@@ -554183,6 +554662,10 @@
"df776353a31f1cef3abe9bc9d195da9be5da2510",
"support"
],
+ "css/css-scroll-snap/inheritance.html": [
+ "40600d460c4f6a05f6df0a1d8ddb7ad3c3fee53d",
+ "testharness"
+ ],
"css/css-scroll-snap/overflowing-snap-areas.html": [
"6d3c1865fe7b1e05ea7897db4118abeabb73d02f",
"testharness"
@@ -555203,6 +555686,10 @@
"3724971363b1fb563427c9abe7e5177b381a118c",
"testharness"
],
+ "css/css-shapes/shape-outside/values/shape-outside-inset-0010.html": [
+ "b82abea82a603f9a523fd8ee0a4d61cd0b7349c6",
+ "reftest"
+ ],
"css/css-shapes/shape-outside/values/shape-outside-inset-002.html": [
"559738f71d8c19d0ab752be891c585a2b8a1479d",
"testharness"
@@ -560507,6 +560994,10 @@
"01ce8eae718170c4eb65e9629f6618e9458a1aca",
"support"
],
+ "css/css-text/white-space/reference/white-space-empty-text-sibling-ref.html": [
+ "3837f7f62f4686226ef4dff3318c2b6961dac85b",
+ "support"
+ ],
"css/css-text/white-space/seg-break-transformation-000.html": [
"cb7b0f30b566320c1022f61fde44bc09695badb1",
"testharness"
@@ -560659,6 +561150,10 @@
"f524c821a59a3712616e8ebaf75591e7e744731a",
"reftest"
],
+ "css/css-text/white-space/white-space-empty-text-sibling.html": [
+ "56a5cad875dbb7f3225e7ae382d9417e5cc6bae4",
+ "reftest"
+ ],
"css/css-text/word-break/reference/word-break-break-all-009-ref.xht": [
"0768b857d96624a63129f002d317019674d1ef0d",
"support"
@@ -580136,7 +580631,7 @@
"reftest"
],
"css/motion/offset-path-serialization.html": [
- "1c000919518e4052d1c9546580c9b9cca89883c7",
+ "7c835c7371f3d78a53c2bff3f6da626dba0bab87",
"testharness"
],
"css/motion/offset-path-string-001.html": [
@@ -580347,6 +580842,18 @@
"2e496d854184796be55d66566af8739fd4a7f776",
"testharness"
],
+ "css/selectors/floating-first-letter-05d0.html": [
+ "6848070e6dfecae8083a8676bf5e063633e191fd",
+ "reftest"
+ ],
+ "css/selectors/floating-first-letter-feff.html": [
+ "02d256ab7dce8b8754fc31668a3a894379eb6bd0",
+ "reftest"
+ ],
+ "css/selectors/floating-first-letter-ref.html": [
+ "3c3141a862df19ad62f343e00b37f248fbd845b1",
+ "support"
+ ],
"css/selectors/focus-display-none-001.html": [
"fe5716cc41c4a622159395ba26da3a7598cfcec8",
"testharness"
@@ -591811,6 +592318,10 @@
"190b4576a106f15d35bd1543ab4f2178f29ca931",
"support"
],
+ "docs/_admin/index.md": [
+ "5088b47cd00a89d749580aeb4bce4c79e0230f12",
+ "support"
+ ],
"docs/_appendix/github-intro.md": [
"9b7144840a9e6b37b832b188391d6d9b7197039a",
"support"
@@ -591828,7 +592339,7 @@
"support"
],
"docs/_config.yml": [
- "760c991820bee4d403f6a33d769430f92ac13628",
+ "8a793ae19d5ad94889af30127486d9bc61aeeab9",
"support"
],
"docs/_includes/footer.html": [
@@ -591851,6 +592362,10 @@
"55753dd0d41d6b11080203e60facc8480a79c7cc",
"support"
],
+ "docs/_includes/svg/octicons/key.svg": [
+ "c5bfda0a4dcd6e31e4a34d7eb7b86c16c0897d8e",
+ "support"
+ ],
"docs/_includes/svg/octicons/package.svg": [
"3bc3e504ae58bf8a48a73d9006c9cbec82dce549",
"support"
@@ -592028,7 +592543,7 @@
"support"
],
"docs/index.html": [
- "e8aa2e92e97d23628a6cc85395d8f1dcb37154ff",
+ "ffef230a74af772e31428a1a7624b5c86b07270c",
"support"
],
"docs/introduction.md": [
@@ -597544,7 +598059,7 @@
"testharness"
],
"fetch/api/redirect/redirect-count.any.js": [
- "7fa6dd1d0ed5579cc66c16297a61a57cbadd1c74",
+ "0c45d8d87ce44e0ebdde4d10d974681384d47c09",
"testharness"
],
"fetch/api/redirect/redirect-empty-location.any.js": [
@@ -608111,6 +608626,10 @@
"943f38c3e03e0c654d1105c2f42d49cca3f1432a",
"reftest"
],
+ "html/rendering/non-replaced-elements/flow-content-0/form-margin-quirk.html": [
+ "7f6618bb782a0460d286930f05866ea9b432a1cd",
+ "testharness"
+ ],
"html/rendering/non-replaced-elements/flow-content-0/support/dialog-framed.html": [
"f9c414c246d1f89e697536f458e08ae33359e457",
"support"
@@ -612259,6 +612778,10 @@
"633b6a87d9da7784610769bb0041f0e10c27525e",
"testharness"
],
+ "html/semantics/embedded-content/the-img-element/decode/image-decode-with-quick-attach-svg.tentative.html": [
+ "0fc49e603606e9233d0b3ae59757aec149c8aaf2",
+ "testharness"
+ ],
"html/semantics/embedded-content/the-img-element/decode/image-decode-with-quick-attach.html": [
"be680da619e8dd75f57d454268a528eba7d0d6c2",
"testharness"
@@ -612479,6 +613002,10 @@
"cac7d470aedd15e9087f20ba23947d59d0595dfb",
"testharness"
],
+ "html/semantics/embedded-content/the-video-element/intrinsic_sizes.htm": [
+ "7819ee1c1891887aadec9bb600bcb18e6cc562e3",
+ "testharness"
+ ],
"html/semantics/embedded-content/the-video-element/intrinsicsize/intrinsicsize-without-unsized-media.tentative.https.sub.html": [
"d749d5576e6881ea900f7cd26e0ff6adad2610f3",
"testharness"
@@ -613275,6 +613802,10 @@
"fbfeda8a5114c3a24c767a04ecc290f93761a013",
"testharness"
],
+ "html/semantics/forms/the-legend-element/HTMLLegendElement.html": [
+ "8600e5437a5ab96eee23662f875e2f0751139610",
+ "testharness"
+ ],
"html/semantics/forms/the-legend-element/legend-form.html": [
"b127164aed07ddc45c4e71b42807265a78db3b80",
"testharness"
@@ -618227,6 +618758,14 @@
"07bccb788052e7ce2cb722558e416b5c017ed9f0",
"testharness"
],
+ "html/webappapis/system-state-and-capabilities/the-navigator-object/navigatorcookies-cookieenabled-false-manual.html": [
+ "adcea90a363af504c33738da53a979b9bd9479e7",
+ "manual"
+ ],
+ "html/webappapis/system-state-and-capabilities/the-navigator-object/navigatorcookies-cookieenabled-true.html": [
+ "fc7f49d143d687b1aa47cc2a52fdf1a2f35d0fb7",
+ "testharness"
+ ],
"html/webappapis/system-state-and-capabilities/the-navigator-object/navigatorlanguage.html": [
"d56df8a3d857504ebeff29d87339893a8ce78a51",
"testharness"
@@ -618563,6 +619102,10 @@
"962edf5e8b43c085d6b8a58379be7e587be85c16",
"reftest"
],
+ "infrastructure/assumptions/cookie.html": [
+ "5d5b0dc0e108a823ef16614e9c2c91f5ea142543",
+ "testharness"
+ ],
"infrastructure/assumptions/html-elements.html": [
"3fe3d201ff649aca36e49b6b78cd48a94db26806",
"testharness"
@@ -619296,7 +619839,7 @@
"support"
],
"interfaces/speech-api.idl": [
- "0b5c866b35c28d8e10261205fb6cbaa6962e480a",
+ "f94637a8d21eb8a5940ce5ddfb6f6ca1af52f289",
"support"
],
"interfaces/storage.idl": [
@@ -630727,6 +631270,10 @@
"ed8309d6480eaaec45e986a3391854d67b01ba2d",
"testharness"
],
+ "orientation-event/ondeviceorientationabsolute.html": [
+ "73ce97ab5c1fd7220fb65e53fb51e0bfa86beb28",
+ "testharness"
+ ],
"orientation-event/screen-upmost-manual.html": [
"87ad62c58633768262144ed582931b7167948605",
"manual"
@@ -632747,6 +633294,46 @@
"54963141b1916688fba7c8c1269a6f310efbb13a",
"testharness"
],
+ "referrer-policy/generic/multiple-headers-and-values.html": [
+ "682199b917c37b9b11ef0eaa9897ebbfb50f5eb7",
+ "testharness"
+ ],
+ "referrer-policy/generic/multiple-headers-and-values.html.headers": [
+ "d1acc2f1d3cbce700865d96937e612c56e075166",
+ "support"
+ ],
+ "referrer-policy/generic/multiple-headers-combined.html": [
+ "ad02ae84bd7458c13e7621db7eadbd19a82ffbb5",
+ "testharness"
+ ],
+ "referrer-policy/generic/multiple-headers-combined.html.headers": [
+ "fc30a2a18627cf0cb485836f8d44f45beca510f2",
+ "support"
+ ],
+ "referrer-policy/generic/multiple-headers-one-invalid.html": [
+ "b1384b14a0e859d8fba0f564e6b9c51333339fc4",
+ "testharness"
+ ],
+ "referrer-policy/generic/multiple-headers-one-invalid.html.headers": [
+ "075219380414598f4535faa973fe69468fc7d37e",
+ "support"
+ ],
+ "referrer-policy/generic/multiple-headers-one-unknown-token.html": [
+ "3273c0dbedfea3c3917ff0e16f29ff2273f32352",
+ "testharness"
+ ],
+ "referrer-policy/generic/multiple-headers-one-unknown-token.html.headers": [
+ "46feffd705fe0e559b6f80a4a6b7f7bc46b26121",
+ "support"
+ ],
+ "referrer-policy/generic/multiple-headers.html": [
+ "5f6a749b4bd2003b1b434b070d436ac1a2d8d6e5",
+ "testharness"
+ ],
+ "referrer-policy/generic/multiple-headers.html.headers": [
+ "dd1dd853f2030bac5c036f693a7cf0eca6daba1a",
+ "support"
+ ],
"referrer-policy/generic/referrer-policy-test-case.js": [
"14ccd4e2de171e5c8b284e2ced552024b28d345d",
"support"
@@ -641204,7 +641791,7 @@
"support"
],
"resources/idlharness.js": [
- "00c59eda8adfeb8a1b5b8ab1ef60186517161ea4",
+ "950df6fa34b82a3f4afe2ab925d90a72ddcf3872",
"support"
],
"resources/idlharness.js.headers": [
@@ -643844,7 +644431,7 @@
"testharness"
],
"service-workers/service-worker/claim-worker-fetch.https.html": [
- "c2c254ca65c36aea942a8a77bd630f2a66dcf982",
+ "4b49a8152a42c9e45104139b46b9fa56762de6bb",
"testharness"
],
"service-workers/service-worker/client-id.https.html": [
@@ -644131,6 +644718,10 @@
"e63f6b348a861345101670b9c3d87aaa4977b0c4",
"testharness"
],
+ "service-workers/service-worker/import-module-scripts.https.html": [
+ "e82911a1bd002d1039ba5a5ae31b51a3a90e1905",
+ "testharness"
+ ],
"service-workers/service-worker/import-scripts-redirect.https.html": [
"e52adfa37800853a86da9f5f30bc0dd41e4afcb6",
"testharness"
@@ -646131,6 +646722,10 @@
"e705e18f4a9747d0ffffe0909bfa4d85bd8f7ad4",
"testharness"
],
+ "shadow-dom/slots-outside-shadow-dom.html": [
+ "a6fa2b27f760d1daf6e7390c6e582108b035e57e",
+ "testharness"
+ ],
"shadow-dom/slots.html": [
"948d389298f46cc906fa998c8b495ad55bd50a1a",
"testharness"
@@ -646476,7 +647071,7 @@
"testharness"
],
"speech-api/SpeechSynthesisUtterance-basics.https.html": [
- "9a90f086ac451d09922f05b55144818e787a5ded",
+ "2fd394150e941ccbeb8d63b99e598cc53e55446d",
"testharness"
],
"speech-api/historical.html": [
@@ -651212,7 +651807,7 @@
"support"
],
"tools/ci/ci_lint.sh": [
- "46b317e1a193b57161c524b2c10b3d42fd3beada",
+ "aae38e5c769c53d77c02d8108731ad10db13317b",
"support"
],
"tools/ci/ci_manifest.sh": [
@@ -651236,7 +651831,7 @@
"support"
],
"tools/ci/ci_wptrunner_infrastructure.sh": [
- "c32c943870366223ca42cf76b11853946e847b6a",
+ "3147164ac886cacca862890fac4466fe882a8886",
"support"
],
"tools/ci/commands.json": [
@@ -655988,7 +656583,7 @@
"support"
],
"tools/wpt/browser.py": [
- "052ec66a091cf6dde0573006490f19a9cc45afbe",
+ "3b3074a985607abfdb1bd125f3803e25acf7822d",
"support"
],
"tools/wpt/commands.json": [
@@ -656012,7 +656607,7 @@
"support"
],
"tools/wpt/run.py": [
- "d08b0f9380712d618ae96593634c84458fc25621",
+ "d9a44fd3711563a0134ad2fbfc2ee90ac73c6fbd",
"support"
],
"tools/wpt/testfiles.py": [
@@ -656268,7 +656863,7 @@
"support"
],
"tools/wptrunner/wptrunner/browsers/__init__.py": [
- "08949f794834fd9e163a6b60bdcef6b9722316b5",
+ "9fbbec4d58511ae0bcecedc89fd2d1c4c7acc591",
"support"
],
"tools/wptrunner/wptrunner/browsers/base.py": [
@@ -656276,17 +656871,13 @@
"support"
],
"tools/wptrunner/wptrunner/browsers/chrome.py": [
- "d41df8dec0ed004b517df5cc245c44e3d8188fd2",
+ "d7c21cddfd60a4077b4fe803379ca89f0109dcde",
"support"
],
"tools/wptrunner/wptrunner/browsers/chrome_android.py": [
"c96cf5634f3d76a79b4cfd20429f6622e496d6a0",
"support"
],
- "tools/wptrunner/wptrunner/browsers/chrome_webdriver.py": [
- "2ee8ec41ed668a3ac6130908e0c1dce1fbca4a90",
- "support"
- ],
"tools/wptrunner/wptrunner/browsers/edge.py": [
"ad2bb513a6a801b29a791a6d65b7b730b86e9a64",
"support"
@@ -656384,7 +656975,7 @@
"support"
],
"tools/wptrunner/wptrunner/executors/executorselenium.py": [
- "0675461d5d8758260a02a20b40698255a7dcd048",
+ "0792774d65cfc4cd27dedcd6c2eb63bab8bfce07",
"support"
],
"tools/wptrunner/wptrunner/executors/executorservo.py": [
@@ -656396,7 +656987,7 @@
"support"
],
"tools/wptrunner/wptrunner/executors/executorwebdriver.py": [
- "6dde7191ec6059e80a9ad15f96a0eba0573d9b56",
+ "be6ed8d9d070bb717bca1c6fae82225957b10cff",
"support"
],
"tools/wptrunner/wptrunner/executors/executorwebkit.py": [
@@ -656508,7 +657099,7 @@
"support"
],
"tools/wptrunner/wptrunner/testrunner.py": [
- "353e2ada1eb7cc27e0b70590743a8a3bb5bcc2b8",
+ "931a7822d0b2ba5dad26e28326f3c817be15cc8c",
"support"
],
"tools/wptrunner/wptrunner/tests/__init__.py": [
@@ -656516,7 +657107,7 @@
"support"
],
"tools/wptrunner/wptrunner/tests/base.py": [
- "84dc4f2e7f82ee2e3a2aa6f4d8bdda76b1581da1",
+ "db518e7b6724659c5ffe6bedce7db0a020cec976",
"support"
],
"tools/wptrunner/wptrunner/tests/browsers/__init__.py": [
@@ -656652,11 +657243,11 @@
"support"
],
"tools/wptrunner/wptrunner/wptrunner.py": [
- "6bd1db9927cb738202ace43541c25a44923afe8c",
+ "92ee971975316637b21a5af404d090aabdc7ec22",
"support"
],
"tools/wptrunner/wptrunner/wpttest.py": [
- "4086a89e4cfd4a246c19722e9a86f7c8a2896af3",
+ "8c2934e27eb5fca81d8620414430a13ce891116d",
"support"
],
"tools/wptserve/.coveragerc": [
@@ -657068,7 +657659,7 @@
"testharness"
],
"trusted-types/TrustedTypePolicyFactory-createPolicy-createXYZTests.tentative.html": [
- "b20fcf2436eac17f9f558cab0c80d1eced6bb1be",
+ "a162d84cd820051d6c5868c35b58cd347b0026e5",
"testharness"
],
"trusted-types/TrustedTypePolicyFactory-createPolicy-cspTests-noNamesGiven.tentative.html": [
@@ -657087,6 +657678,10 @@
"6d43e0bafc61f34c17d7d7b751bf69f12d035adf",
"testharness"
],
+ "trusted-types/TrustedTypePolicyFactory-isXXX.tentative.html": [
+ "9b48fa7fede81b5d2e2c79d9fc115b56c759cb00",
+ "testharness"
+ ],
"trusted-types/Window-TrustedTypes.tentative.html": [
"8e20e492e6a8484e386d1a08f854bd9b162bd6be",
"testharness"
@@ -657116,7 +657711,7 @@
"testharness"
],
"trusted-types/block-string-assignment-to-Element-setAttribute.tentative.html": [
- "52e317083316435ec4b1dcc7331f1216c2a32d9a",
+ "3553f2b07685907a78368fced352867a1b3cc428",
"testharness"
],
"trusted-types/block-string-assignment-to-Element-setAttributeNS.tentative.html": [
@@ -660684,7 +661279,7 @@
"testharness"
],
"webaudio/the-audio-api/the-convolvernode-interface/convolver-setBuffer-already-has-value.html": [
- "c8dbeb941bc48f4f3a92907cb140a29f96567057",
+ "ce2d5fcfe940b89b4ed04bc62a7be5f15131b64b",
"testharness"
],
"webaudio/the-audio-api/the-convolvernode-interface/convolver-setBuffer-null.html": [
@@ -664983,68 +665578,68 @@
"809e173b46db0f2c3c65a708ad841703602c40f9",
"reftest"
],
- "webvtt/rendering/cues-with-video/processing-model/align_end-ref.html": [
- "247e6e24bf3aa2fd5de4614ee954114f8136b8f6",
+ "webvtt/rendering/cues-with-video/processing-model/align_center-ref.html": [
+ "3663d925d958097ba80341aed86d87d3b264ca4a",
"support"
],
- "webvtt/rendering/cues-with-video/processing-model/align_end.html": [
- "9da66bf4a76326e876af7c83748e143f0853c06a",
+ "webvtt/rendering/cues-with-video/processing-model/align_center.html": [
+ "9a339a64bad79df520c1e343a7f9e2ad6dcc372e",
"reftest"
],
- "webvtt/rendering/cues-with-video/processing-model/align_end_wrapped-ref.html": [
- "f26b3a0761f2aaeadcbde9d0181f6d4e7db30160",
+ "webvtt/rendering/cues-with-video/processing-model/align_center_position_50-ref.html": [
+ "65c7dee75aa073056bbb2c0df2f628bd9ed329d0",
"support"
],
- "webvtt/rendering/cues-with-video/processing-model/align_end_wrapped.html": [
- "5c85a55082d3cc3cec73caaa9947f10a0c6c0df7",
+ "webvtt/rendering/cues-with-video/processing-model/align_center_position_50.html": [
+ "40cc8c4bbe1011aaf711751ead69d29824dc8933",
"reftest"
],
- "webvtt/rendering/cues-with-video/processing-model/align_middle-ref.html": [
- "fab75c8e0a5a6db1fb16552e66052200ae5d9a87",
+ "webvtt/rendering/cues-with-video/processing-model/align_center_position_gt_50-ref.html": [
+ "b8d30a73801b33f5dab57d2722179c93643ac588",
"support"
],
- "webvtt/rendering/cues-with-video/processing-model/align_middle.html": [
- "43732a549b8167aa673e35b9c9332d945f755ed5",
+ "webvtt/rendering/cues-with-video/processing-model/align_center_position_gt_50.html": [
+ "05167743c0f67b95dad06f2b6e85641f51d6f4cb",
"reftest"
],
- "webvtt/rendering/cues-with-video/processing-model/align_middle_position_50-ref.html": [
- "88718e5ba5573ee0d87063bd491668744ab2dbc2",
+ "webvtt/rendering/cues-with-video/processing-model/align_center_position_lt_50-ref.html": [
+ "37217da49721d267208790b5fb773458cb2a64ed",
"support"
],
- "webvtt/rendering/cues-with-video/processing-model/align_middle_position_50.html": [
- "6be073fff84cec571c5028a13718bfd93f23fa99",
+ "webvtt/rendering/cues-with-video/processing-model/align_center_position_lt_50.html": [
+ "32b3e3a6c4de905f85922bd887bde83914217b0f",
"reftest"
],
- "webvtt/rendering/cues-with-video/processing-model/align_middle_position_gt_50-ref.html": [
- "b9b6d2936da0f31b355a75c05141584665cc30ce",
+ "webvtt/rendering/cues-with-video/processing-model/align_center_position_lt_50_size_gt_maximum_size-ref.html": [
+ "7241376f825d650722cad59582c188f2d2d2d1be",
"support"
],
- "webvtt/rendering/cues-with-video/processing-model/align_middle_position_gt_50.html": [
- "4f725f55572becf5c5d9ee302bf71b6f436a95e8",
+ "webvtt/rendering/cues-with-video/processing-model/align_center_position_lt_50_size_gt_maximum_size.html": [
+ "2f62c4500ed91086c49fff6b5b476edd1010b14e",
"reftest"
],
- "webvtt/rendering/cues-with-video/processing-model/align_middle_position_lt_50-ref.html": [
- "9fa1f28ea895b69f27b815e189247fe6d0b33efe",
+ "webvtt/rendering/cues-with-video/processing-model/align_center_wrapped-ref.html": [
+ "a9e583d66f0cd4fa459c19bb4c922fd468cd9ce4",
"support"
],
- "webvtt/rendering/cues-with-video/processing-model/align_middle_position_lt_50.html": [
- "7d09fd9889640a56e5b0035c45de637223f3a583",
+ "webvtt/rendering/cues-with-video/processing-model/align_center_wrapped.html": [
+ "9292a8cc30141f9fab2add1151f265852cfa4491",
"reftest"
],
- "webvtt/rendering/cues-with-video/processing-model/align_middle_position_lt_50_size_gt_maximum_size-ref.html": [
- "ddbdf1604deed32f65620d1484c1f4d27b411644",
+ "webvtt/rendering/cues-with-video/processing-model/align_end-ref.html": [
+ "247e6e24bf3aa2fd5de4614ee954114f8136b8f6",
"support"
],
- "webvtt/rendering/cues-with-video/processing-model/align_middle_position_lt_50_size_gt_maximum_size.html": [
- "590db24c5fe5e1e6f5447ee595cf33a785ce3513",
+ "webvtt/rendering/cues-with-video/processing-model/align_end.html": [
+ "9da66bf4a76326e876af7c83748e143f0853c06a",
"reftest"
],
- "webvtt/rendering/cues-with-video/processing-model/align_middle_wrapped-ref.html": [
- "d9852d86004bdc2f295694af117dfc20cf53f33b",
+ "webvtt/rendering/cues-with-video/processing-model/align_end_wrapped-ref.html": [
+ "f26b3a0761f2aaeadcbde9d0181f6d4e7db30160",
"support"
],
- "webvtt/rendering/cues-with-video/processing-model/align_middle_wrapped.html": [
- "2ef93c4b01a5f52cc0a0346495a87a9198325153",
+ "webvtt/rendering/cues-with-video/processing-model/align_end_wrapped.html": [
+ "5c85a55082d3cc3cec73caaa9947f10a0c6c0df7",
"reftest"
],
"webvtt/rendering/cues-with-video/processing-model/align_start-ref.html": [
@@ -665411,6 +666006,102 @@
"68c44beaefb4983903abe366971a401f53dbaeb0",
"reftest"
],
+ "webvtt/rendering/cues-with-video/processing-model/regions/basic-ref.html": [
+ "ff90d4829c4d23ece39cc473ac6d21b672557772",
+ "support"
+ ],
+ "webvtt/rendering/cues-with-video/processing-model/regions/basic.html": [
+ "4ffed9193b9abedd04b76c8f4848c4d0d93f1fab",
+ "reftest"
+ ],
+ "webvtt/rendering/cues-with-video/processing-model/regions/regionanchor_x_50_percent-ref.html": [
+ "251a04687f9ec5b4cb761fd5c0962ea8e7a0e5ef",
+ "support"
+ ],
+ "webvtt/rendering/cues-with-video/processing-model/regions/regionanchor_x_50_percent.html": [
+ "b9ef28212a4f80e67378247c75afc30c70228281",
+ "reftest"
+ ],
+ "webvtt/rendering/cues-with-video/processing-model/regions/regionanchor_y_50_percent-ref.html": [
+ "db1031093c7a118962a6928ba85e51974a2af71f",
+ "support"
+ ],
+ "webvtt/rendering/cues-with-video/processing-model/regions/regionanchor_y_50_percent.html": [
+ "5067d12e6f40b40e7bcc75f809c1afb5000fbf2d",
+ "reftest"
+ ],
+ "webvtt/rendering/cues-with-video/processing-model/regions/scroll_up-ref.html": [
+ "6a68c722e4dbb7a119577583054daf2bf4f8b2a7",
+ "support"
+ ],
+ "webvtt/rendering/cues-with-video/processing-model/regions/scroll_up.html": [
+ "e1619af932a5bef76c5fb72ef7a97e11c8851bcc",
+ "reftest"
+ ],
+ "webvtt/rendering/cues-with-video/processing-model/regions/single_line_top_left-ref.html": [
+ "a183448cb1b3b03f10a0a48fb81a26ec9c72a8c8",
+ "support"
+ ],
+ "webvtt/rendering/cues-with-video/processing-model/regions/single_line_top_left.html": [
+ "c2edcb9f626a0096f8cd5d95408caa8a3da0c201",
+ "reftest"
+ ],
+ "webvtt/rendering/cues-with-video/processing-model/regions/support/basic.vtt": [
+ "ed978274793480111586d0ef6e85156d142d3d03",
+ "support"
+ ],
+ "webvtt/rendering/cues-with-video/processing-model/regions/support/regionanchor_x_50_percent.vtt": [
+ "eafea7fff94ec49caead41b412c323cf4ce84774",
+ "support"
+ ],
+ "webvtt/rendering/cues-with-video/processing-model/regions/support/regionanchor_y_50_percent.vtt": [
+ "d51ad26769bfb6eb3b5595c4440e28ba5cbac2bb",
+ "support"
+ ],
+ "webvtt/rendering/cues-with-video/processing-model/regions/support/scroll_up.vtt": [
+ "0b88020d29f680718e95d80a99babd926d40c039",
+ "support"
+ ],
+ "webvtt/rendering/cues-with-video/processing-model/regions/support/single_line_top_left.vtt": [
+ "efe9d8793eda051aad5e2c800690cd15ae97e53f",
+ "support"
+ ],
+ "webvtt/rendering/cues-with-video/processing-model/regions/support/viewportanchor_x_50_percent.vtt": [
+ "afd9876c06d296b2b1ca43691c9355dacc370099",
+ "support"
+ ],
+ "webvtt/rendering/cues-with-video/processing-model/regions/support/viewportanchor_y_50_percent.vtt": [
+ "62e8a796877fddc9aec5ecc78717941081c92424",
+ "support"
+ ],
+ "webvtt/rendering/cues-with-video/processing-model/regions/support/width_50_percent.vtt": [
+ "9fce99b03b3b9ca1108c3267ba3d981e288f9369",
+ "support"
+ ],
+ "webvtt/rendering/cues-with-video/processing-model/regions/viewportanchor_x_50_percent-ref.html": [
+ "c216838a6948b22bcde51993ab32f04731ba5e83",
+ "support"
+ ],
+ "webvtt/rendering/cues-with-video/processing-model/regions/viewportanchor_x_50_percent.html": [
+ "85e699a262b8e03fc8592a22e6acc6dabf73b29a",
+ "reftest"
+ ],
+ "webvtt/rendering/cues-with-video/processing-model/regions/viewportanchor_y_50_percent-ref.html": [
+ "f432047c5a6b8ffb785273fc7b3d92351e77c839",
+ "support"
+ ],
+ "webvtt/rendering/cues-with-video/processing-model/regions/viewportanchor_y_50_percent.html": [
+ "0641b176e6f617359b8f93912dfe88eff56d1032",
+ "reftest"
+ ],
+ "webvtt/rendering/cues-with-video/processing-model/regions/width_50_percent-ref.html": [
+ "fd69b643f5693d8b24cbcb8deac4fac601a3cce9",
+ "support"
+ ],
+ "webvtt/rendering/cues-with-video/processing-model/regions/width_50_percent.html": [
+ "4377e9b4c03b224d60d1fcd029804118346daf47",
+ "reftest"
+ ],
"webvtt/rendering/cues-with-video/processing-model/repaint-ref.html": [
"49f385b079dc5a1422a9984db4db1cced68c8abe",
"support"
@@ -666767,36 +667458,36 @@
"6c99ce3b1fe1ab60d41e1afdfb79bd689cba62f7",
"support"
],
- "webvtt/rendering/cues-with-video/processing-model/support/align_end.vtt": [
- "83f691e6ffa274df619fe49275c63472890821fb",
+ "webvtt/rendering/cues-with-video/processing-model/support/align_center.vtt": [
+ "4b8e14b28b7c7257437fea9ba747dcb8e37a15bf",
"support"
],
- "webvtt/rendering/cues-with-video/processing-model/support/align_end_long.vtt": [
- "09ace0d227843dd26505ca06ad062bcb1a9dc067",
+ "webvtt/rendering/cues-with-video/processing-model/support/align_center_long.vtt": [
+ "57c896d04b75d09454271b5a1d489331673d9f64",
"support"
],
- "webvtt/rendering/cues-with-video/processing-model/support/align_middle.vtt": [
- "cdee051d77778ef6517ab6603cc215b28a8e0925",
+ "webvtt/rendering/cues-with-video/processing-model/support/align_center_position_50.vtt": [
+ "21ab82bb08439e6bf570e44b0f8c0bc4a7700fc1",
"support"
],
- "webvtt/rendering/cues-with-video/processing-model/support/align_middle_long.vtt": [
- "8c89441a974ba2c98bf09e9eeed81ea06ecb75fd",
+ "webvtt/rendering/cues-with-video/processing-model/support/align_center_position_gt_50.vtt": [
+ "4d8538a2be773fc7a9277044a6713622b6262bb6",
"support"
],
- "webvtt/rendering/cues-with-video/processing-model/support/align_middle_position_50.vtt": [
- "c443773984e98555f45afe4876e19986fd90ef54",
+ "webvtt/rendering/cues-with-video/processing-model/support/align_center_position_lt_50.vtt": [
+ "4ea1e656077b63830b9032517113d781dadbc95d",
"support"
],
- "webvtt/rendering/cues-with-video/processing-model/support/align_middle_position_gt_50.vtt": [
- "186ae1ecd2319046c39aa668e97be58b92db8720",
+ "webvtt/rendering/cues-with-video/processing-model/support/align_center_position_lt_50_size_gt_maximum_size.vtt": [
+ "a2e307c9cba59fef12598a0924e55d49a370a53f",
"support"
],
- "webvtt/rendering/cues-with-video/processing-model/support/align_middle_position_lt_50.vtt": [
- "6928c5dc21880374058057f43537fa67607bc1ba",
+ "webvtt/rendering/cues-with-video/processing-model/support/align_end.vtt": [
+ "83f691e6ffa274df619fe49275c63472890821fb",
"support"
],
- "webvtt/rendering/cues-with-video/processing-model/support/align_middle_position_lt_50_size_gt_maximum_size.vtt": [
- "32bc4ed3fc8593274a1d9e574289401b6ab65d1c",
+ "webvtt/rendering/cues-with-video/processing-model/support/align_end_long.vtt": [
+ "09ace0d227843dd26505ca06ad062bcb1a9dc067",
"support"
],
"webvtt/rendering/cues-with-video/processing-model/support/align_start.vtt": [
@@ -667076,7 +667767,7 @@
"support"
],
"webxr/resources/webxr_util.js": [
- "d73cf8d44e902b57d4b79fd8d8f68251be7f88a4",
+ "5437513b304cb517a67c8e13f6137759d87156be",
"support"
],
"webxr/webGLCanvasContext_create_with_xrdevice.https.html": [
@@ -667916,7 +668607,7 @@
"testharness"
],
"workers/modules/dedicated-worker-import-blob-url.any.js": [
- "e3f61867c5b9e4ef23f19477d66222bb9ce7579e",
+ "f51a821d1813df81187e8c78d6251f9f29cf45eb",
"testharness"
],
"workers/modules/dedicated-worker-import-csp.html": [
@@ -667924,7 +668615,7 @@
"testharness"
],
"workers/modules/dedicated-worker-import-data-url.any.js": [
- "10bac0dfbf7567579f682908cbcde2ef45733447",
+ "0d8510da0c24ad378d1215157a70b4fd615a3d94",
"testharness"
],
"workers/modules/dedicated-worker-import-failure.html": [
@@ -667940,7 +668631,7 @@
"testharness"
],
"workers/modules/dedicated-worker-import.any.js": [
- "805dbf3288c0644415203b3670b7827a9981a2b8",
+ "308c5e74c157da005257fd03fa9bc714c6d0eee7",
"testharness"
],
"workers/modules/dedicated-worker-options-credentials.html": [
@@ -667960,7 +668651,7 @@
"support"
],
"workers/modules/resources/dynamic-import-and-then-static-import-worker.js": [
- "39ab5c237e2ab54423dd32945afa3ae902087763",
+ "9a386e63be51dcdae988de99bdd76709bf49d1b6",
"support"
],
"workers/modules/resources/dynamic-import-given-url-worker.js": [
@@ -667980,7 +668671,7 @@
"support"
],
"workers/modules/resources/dynamic-import-worker.js": [
- "cd321fe24606bb55f3be570e31740b99d6fbff47",
+ "07f4df9db3ebd94dbc5ffd56fa7df36635a93857",
"support"
],
"workers/modules/resources/empty-worker.js": [
@@ -667988,11 +668679,11 @@
"support"
],
"workers/modules/resources/eval-dynamic-import-worker.js": [
- "e92aff21a885536713141bd23a37733d5a66bfe2",
+ "af57b19f98ddcae391c4a55eb7ad1f51a4a0acf5",
"support"
],
"workers/modules/resources/export-on-dynamic-import-script.js": [
- "8d172c324d306d8e0792e3637be3fdfcdc354927",
+ "bab7cb48d24931a82df5c1fd5b195f9eecbc9123",
"support"
],
"workers/modules/resources/export-on-dynamic-import-script.js.headers": [
@@ -668024,15 +668715,15 @@
"support"
],
"workers/modules/resources/import-test-cases.js": [
- "919c20e0d4c78c8f90447c01252a34727df967bb",
+ "c5830e97eebc88b12a5ed1f600e810df443204f8",
"support"
],
"workers/modules/resources/nested-dynamic-import-worker.js": [
- "5ae82f8aa054f8f3a61475994c4e658ba282c890",
+ "cb37f6e20f67c13f77582de19a1d4bd852537aa7",
"support"
],
"workers/modules/resources/nested-static-import-worker.js": [
- "72ab31cb1c6ef1b77f4de3610cde2e58e094669d",
+ "7599faaa099f594a05d71f628d548f6732b2b193",
"support"
],
"workers/modules/resources/new-worker-window.html": [
@@ -668048,7 +668739,7 @@
"support"
],
"workers/modules/resources/static-import-and-then-dynamic-import-worker.js": [
- "89125e0af7b0af62823628cb248a02c9b1d24343",
+ "cd98d8c17df652d367b0720492c432851f10f66a",
"support"
],
"workers/modules/resources/static-import-non-existent-script-worker.js": [
@@ -668068,7 +668759,7 @@
"support"
],
"workers/modules/resources/static-import-worker.js": [
- "f0639153a94feaef8efa30feabf26752ba058853",
+ "48751dbe03bb0f7de23e26911ac7af5733c7d5f1",
"support"
],
"workers/name-property.html": [
@@ -669348,7 +670039,7 @@
"testharness"
],
"xhr/overridemimetype-edge-cases.window.js": [
- "192a696759c4b82852eee753f417fb8a4cf2718d",
+ "3f57e9a48f00206b60b1912e1544aec39f07ced8",
"testharness"
],
"xhr/overridemimetype-headers-received-state-force-shiftjis.htm": [
@@ -669628,7 +670319,7 @@
"support"
],
"xhr/resources/inspect-headers.py": [
- "12dd33595f07c632cbe58780714e66fac15e4a6c",
+ "e71f671ced34ff3d447467ea4098e6e000ffd8f7",
"support"
],
"xhr/resources/invalid-utf8-html.py": [
diff --git a/tests/wpt/metadata/css/css-text/i18n/ja/css-text-line-break-ja-cpm-normal.html.ini b/tests/wpt/metadata/css/css-text/i18n/ja/css-text-line-break-ja-cpm-normal.html.ini
index b480ed7298a..f2635b9d358 100644
--- a/tests/wpt/metadata/css/css-text/i18n/ja/css-text-line-break-ja-cpm-normal.html.ini
+++ b/tests/wpt/metadata/css/css-text/i18n/ja/css-text-line-break-ja-cpm-normal.html.ini
@@ -23,3 +23,15 @@
expected:
if os == "linux": FAIL
+ [2049 EXCLAMATION QUESTION MARK may NOT appear at line start if ja and normal]
+ expected: FAIL
+
+ [203C DOUBLE EXCLAMATION MARK may NOT appear at line start if ja and normal]
+ expected: FAIL
+
+ [2047 DOUBLE QUESTION MARK may NOT appear at line start if ja and normal]
+ expected: FAIL
+
+ [2048 QUESTION EXCLAMATION MARK may NOT appear at line start if ja and normal]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-text/i18n/zh/css-text-line-break-zh-cpm-normal.html.ini b/tests/wpt/metadata/css/css-text/i18n/zh/css-text-line-break-zh-cpm-normal.html.ini
index 27e695ead3c..0242c7dc48c 100644
--- a/tests/wpt/metadata/css/css-text/i18n/zh/css-text-line-break-zh-cpm-normal.html.ini
+++ b/tests/wpt/metadata/css/css-text/i18n/zh/css-text-line-break-zh-cpm-normal.html.ini
@@ -23,3 +23,15 @@
expected:
if os == "linux": FAIL
+ [203C DOUBLE EXCLAMATION MARK may NOT appear at line start if zh and normal]
+ expected: FAIL
+
+ [2049 EXCLAMATION QUESTION MARK may NOT appear at line start if zh and normal]
+ expected: FAIL
+
+ [2048 QUESTION EXCLAMATION MARK may NOT appear at line start if zh and normal]
+ expected: FAIL
+
+ [2047 DOUBLE QUESTION MARK may NOT appear at line start if zh and normal]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-text/white-space/white-space-empty-text-sibling.html.ini b/tests/wpt/metadata/css/css-text/white-space/white-space-empty-text-sibling.html.ini
new file mode 100644
index 00000000000..2800266d857
--- /dev/null
+++ b/tests/wpt/metadata/css/css-text/white-space/white-space-empty-text-sibling.html.ini
@@ -0,0 +1,2 @@
+[white-space-empty-text-sibling.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/css-transitions/transitions-animatable-properties-01.html.ini b/tests/wpt/metadata/css/css-transitions/transitions-animatable-properties-01.html.ini
index 2bd915cc0b9..834487d446f 100644
--- a/tests/wpt/metadata/css/css-transitions/transitions-animatable-properties-01.html.ini
+++ b/tests/wpt/metadata/css/css-transitions/transitions-animatable-properties-01.html.ini
@@ -5,9 +5,6 @@
[z-index intermediate]
expected: FAIL
- [text-indent intermediate]
- expected: FAIL
-
[border-color end]
expected: FAIL
@@ -47,9 +44,6 @@
[outline-width end]
expected: FAIL
- [font-weight end]
- expected: FAIL
-
[min-width intermediate]
expected: FAIL
@@ -77,3 +71,9 @@
[bottom intermediate]
expected: FAIL
+ [right end]
+ expected: FAIL
+
+ [padding-left intermediate]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/fetch/cross-origin-resource-policy/fetch-in-iframe.html.ini b/tests/wpt/metadata/fetch/cross-origin-resource-policy/fetch-in-iframe.html.ini
index 0d630fb814a..3951cd266d5 100644
--- a/tests/wpt/metadata/fetch/cross-origin-resource-policy/fetch-in-iframe.html.ini
+++ b/tests/wpt/metadata/fetch/cross-origin-resource-policy/fetch-in-iframe.html.ini
@@ -1,5 +1,4 @@
[fetch-in-iframe.html]
- expected: CRASH
[Untitled]
expected: FAIL
diff --git a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini
deleted file mode 100644
index 87b07c3e670..00000000000
--- a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[traverse_the_history_1.html]
- [Multiple history traversals from the same task]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_2.html.ini b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_2.html.ini
deleted file mode 100644
index 75d75b4cda2..00000000000
--- a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_2.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[traverse_the_history_2.html]
- [Multiple history traversals, last would be aborted]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/browsers/history/the-location-interface/location-protocol-setter-non-broken-weird.html.ini b/tests/wpt/metadata/html/browsers/history/the-location-interface/location-protocol-setter-non-broken-weird.html.ini
deleted file mode 100644
index a30c51097ab..00000000000
--- a/tests/wpt/metadata/html/browsers/history/the-location-interface/location-protocol-setter-non-broken-weird.html.ini
+++ /dev/null
@@ -1,16 +0,0 @@
-[location-protocol-setter-non-broken-weird.html]
- [Set location.protocol to data]
- expected: FAIL
-
- [Set location.protocol to ftp]
- expected: FAIL
-
- [Set location.protocol to gopher]
- expected: FAIL
-
- [Set location.protocol to x]
- expected: FAIL
-
- [Set location.protocol to http+x]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/rendering/non-replaced-elements/flow-content-0/form-margin-quirk.html.ini b/tests/wpt/metadata/html/rendering/non-replaced-elements/flow-content-0/form-margin-quirk.html.ini
new file mode 100644
index 00000000000..f244f89b7f6
--- /dev/null
+++ b/tests/wpt/metadata/html/rendering/non-replaced-elements/flow-content-0/form-margin-quirk.html.ini
@@ -0,0 +1,4 @@
+[form-margin-quirk.html]
+ [form margin quirk]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/decode/image-decode-with-quick-attach-svg.tentative.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/decode/image-decode-with-quick-attach-svg.tentative.html.ini
new file mode 100644
index 00000000000..07344310126
--- /dev/null
+++ b/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/decode/image-decode-with-quick-attach-svg.tentative.html.ini
@@ -0,0 +1,4 @@
+[image-decode-with-quick-attach-svg.tentative.html]
+ [SVGImageElement.prototype.decode(), attach to DOM before promise resolves.]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/environment-changes/viewport-change.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/environment-changes/viewport-change.html.ini
index bed3bccce25..29b0025a2ae 100644
--- a/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/environment-changes/viewport-change.html.ini
+++ b/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/environment-changes/viewport-change.html.ini
@@ -11,5 +11,5 @@
expected: TIMEOUT
[picture: source (max-width:500px) valid image, img valid image, resize to narrow]
- expected: FAIL
+ expected: TIMEOUT
diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/non-active-document.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/non-active-document.html.ini
deleted file mode 100644
index 8cc42056d34..00000000000
--- a/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/non-active-document.html.ini
+++ /dev/null
@@ -1,10 +0,0 @@
-[non-active-document.html]
- [DOMParser]
- expected: FAIL
-
- [createHTMLDocument]
- expected: FAIL
-
- [<template>]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/semantics/interactive-elements/the-details-element/toggleEvent.html.ini b/tests/wpt/metadata/html/semantics/interactive-elements/the-details-element/toggleEvent.html.ini
deleted file mode 100644
index 9e522297c94..00000000000
--- a/tests/wpt/metadata/html/semantics/interactive-elements/the-details-element/toggleEvent.html.ini
+++ /dev/null
@@ -1,7 +0,0 @@
-[toggleEvent.html]
- [Calling open twice on 'details' fires only one toggle event]
- expected: FAIL
-
- [Setting open=true to opened 'details' element should not fire a toggle event at the 'details' element]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/syntax/parsing/DOMContentLoaded-defer.html.ini b/tests/wpt/metadata/html/syntax/parsing/DOMContentLoaded-defer.html.ini
deleted file mode 100644
index a9677391662..00000000000
--- a/tests/wpt/metadata/html/syntax/parsing/DOMContentLoaded-defer.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[DOMContentLoaded-defer.html]
- [The end: DOMContentLoaded and defer scripts]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/aborted-parser.window.js.ini b/tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/aborted-parser.window.js.ini
deleted file mode 100644
index c6d49957c4a..00000000000
--- a/tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/aborted-parser.window.js.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[aborted-parser.window.html]
- [document.open() after parser is aborted]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/bailout-exception-vs-return-origin.sub.window.js.ini b/tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/bailout-exception-vs-return-origin.sub.window.js.ini
index 7de8bd3de79..da4c074ea0a 100644
--- a/tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/bailout-exception-vs-return-origin.sub.window.js.ini
+++ b/tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/bailout-exception-vs-return-origin.sub.window.js.ini
@@ -9,9 +9,6 @@
[document.open should throw a SecurityError with cross-origin document even when the ignore-opens-during-unload counter is greater than 0 (during beforeunload event)]
expected: TIMEOUT
- [document.open should throw a SecurityError with cross-origin document even when there is an active parser executing script]
- expected: FAIL
-
[document.open should throw a SecurityError with cross-origin document even when the ignore-opens-during-unload counter is greater than 0 (during pagehide event)]
expected: FAIL
diff --git a/tests/wpt/metadata/quirks/unitless-length/quirks.html.ini b/tests/wpt/metadata/quirks/unitless-length/quirks.html.ini
new file mode 100644
index 00000000000..2ed601c6ff4
--- /dev/null
+++ b/tests/wpt/metadata/quirks/unitless-length/quirks.html.ini
@@ -0,0 +1,283 @@
+[quirks.html]
+ [top: -\\31 .5]
+ expected: FAIL
+
+ [bottom: -1A]
+ expected: FAIL
+
+ [bottom: -1a]
+ expected: FAIL
+
+ [top: @1]
+ expected: FAIL
+
+ [top: "1a"]
+ expected: FAIL
+
+ [top: @a]
+ expected: FAIL
+
+ [bottom: "1"]
+ expected: FAIL
+
+ [bottom: -/**/1]
+ expected: FAIL
+
+ [top: +/**/1]
+ expected: FAIL
+
+ [bottom: @1a]
+ expected: FAIL
+
+ [top: 1\\31 ]
+ expected: FAIL
+
+ [top: url('1')]
+ expected: FAIL
+
+ [bottom: -\\31 ]
+ expected: FAIL
+
+ [top: calc(1)]
+ expected: FAIL
+
+ [top: \\31 ]
+ expected: FAIL
+
+ [bottom: +1\\31 ]
+ expected: FAIL
+
+ [bottom: 1\\31 .5]
+ expected: FAIL
+
+ [bottom: #0001]
+ expected: FAIL
+
+ [top: calc(2 * 2px)]
+ expected: FAIL
+
+ [bottom: 1a]
+ expected: FAIL
+
+ [bottom: A]
+ expected: FAIL
+
+ [bottom: #01]
+ expected: FAIL
+
+ [top: +\\31 .5]
+ expected: FAIL
+
+ [bottom: #1]
+ expected: FAIL
+
+ [top: -/**/1]
+ expected: FAIL
+
+ [bottom: +\\31 .5]
+ expected: FAIL
+
+ [bottom: \\31 ]
+ expected: FAIL
+
+ [bottom: calc(1)]
+ expected: FAIL
+
+ [top: #001]
+ expected: FAIL
+
+ [top: +\\31 ]
+ expected: FAIL
+
+ [bottom: +\\31 ]
+ expected: FAIL
+
+ [top: +1.5]
+ expected: FAIL
+
+ [top: +1\\31 ]
+ expected: FAIL
+
+ [bottom: @a]
+ expected: FAIL
+
+ [bottom: @1]
+ expected: FAIL
+
+ [top: #1]
+ expected: FAIL
+
+ [top: 1a]
+ expected: FAIL
+
+ [bottom: +1a]
+ expected: FAIL
+
+ [bottom: +1A]
+ expected: FAIL
+
+ [bottom: "a"]
+ expected: FAIL
+
+ [top: #00001]
+ expected: FAIL
+
+ [bottom: -1\\31 .5]
+ expected: FAIL
+
+ [top: "1"]
+ expected: FAIL
+
+ [bottom: 1.5]
+ expected: FAIL
+
+ [bottom: -\\31 .5]
+ expected: FAIL
+
+ [bottom: url('1')]
+ expected: FAIL
+
+ [bottom: -1.5]
+ expected: FAIL
+
+ [top: \\31 .5]
+ expected: FAIL
+
+ [bottom: "1a"]
+ expected: FAIL
+
+ [bottom: calc(2 * 2px)]
+ expected: FAIL
+
+ [bottom: +1\\31 .5]
+ expected: FAIL
+
+ [bottom: 1\\31 ]
+ expected: FAIL
+
+ [bottom: +/**/1]
+ expected: FAIL
+
+ [bottom: #00001]
+ expected: FAIL
+
+ [top: url(1)]
+ expected: FAIL
+
+ [bottom: #001]
+ expected: FAIL
+
+ [top: +1\\31 .5]
+ expected: FAIL
+
+ [top: -1a]
+ expected: FAIL
+
+ [top: -1A]
+ expected: FAIL
+
+ [bottom: url(1)]
+ expected: FAIL
+
+ [top: a]
+ expected: FAIL
+
+ [top: A]
+ expected: FAIL
+
+ [top: #000001]
+ expected: FAIL
+
+ [top: 1]
+ expected: FAIL
+
+ [top: 1\\31 .5]
+ expected: FAIL
+
+ [bottom: a]
+ expected: FAIL
+
+ [bottom: 1]
+ expected: FAIL
+
+ [bottom: +1]
+ expected: FAIL
+
+ [bottom: #000001]
+ expected: FAIL
+
+ [bottom: +a]
+ expected: FAIL
+
+ [bottom: +A]
+ expected: FAIL
+
+ [top: 1.5]
+ expected: FAIL
+
+ [top: +A]
+ expected: FAIL
+
+ [top: +a]
+ expected: FAIL
+
+ [top: +1]
+ expected: FAIL
+
+ [top: -1.5]
+ expected: FAIL
+
+ [top: -1\\31 .5]
+ expected: FAIL
+
+ [top: +1a]
+ expected: FAIL
+
+ [top: +1A]
+ expected: FAIL
+
+ [top: @1a]
+ expected: FAIL
+
+ [bottom: \\31 .5]
+ expected: FAIL
+
+ [top: "a"]
+ expected: FAIL
+
+ [top: #01]
+ expected: FAIL
+
+ [bottom: +1.5]
+ expected: FAIL
+
+ [bottom: -A]
+ expected: FAIL
+
+ [bottom: -a]
+ expected: FAIL
+
+ [bottom: -1\\31 ]
+ expected: FAIL
+
+ [top: #0001]
+ expected: FAIL
+
+ [bottom: -1]
+ expected: FAIL
+
+ [top: -\\31 ]
+ expected: FAIL
+
+ [top: -A]
+ expected: FAIL
+
+ [top: -a]
+ expected: FAIL
+
+ [top: -1]
+ expected: FAIL
+
+ [top: -1\\31 ]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/referrer-policy/generic/multiple-headers-and-values.html.ini b/tests/wpt/metadata/referrer-policy/generic/multiple-headers-and-values.html.ini
new file mode 100644
index 00000000000..4df9a4d0412
--- /dev/null
+++ b/tests/wpt/metadata/referrer-policy/generic/multiple-headers-and-values.html.ini
@@ -0,0 +1,5 @@
+[multiple-headers-and-values.html]
+ expected: ERROR
+ [Image uses the last recognized Referrer-Policy header value]
+ expected: NOTRUN
+
diff --git a/tests/wpt/metadata/referrer-policy/generic/multiple-headers-combined.html.ini b/tests/wpt/metadata/referrer-policy/generic/multiple-headers-combined.html.ini
new file mode 100644
index 00000000000..0e47f489cad
--- /dev/null
+++ b/tests/wpt/metadata/referrer-policy/generic/multiple-headers-combined.html.ini
@@ -0,0 +1,5 @@
+[multiple-headers-combined.html]
+ expected: ERROR
+ [Image uses the last recognized Referrer-Policy header value]
+ expected: NOTRUN
+
diff --git a/tests/wpt/metadata/referrer-policy/generic/multiple-headers-one-invalid.html.ini b/tests/wpt/metadata/referrer-policy/generic/multiple-headers-one-invalid.html.ini
new file mode 100644
index 00000000000..91c79957193
--- /dev/null
+++ b/tests/wpt/metadata/referrer-policy/generic/multiple-headers-one-invalid.html.ini
@@ -0,0 +1,5 @@
+[multiple-headers-one-invalid.html]
+ expected: ERROR
+ [Referrer policy header parsing fails if one header is invalid]
+ expected: NOTRUN
+
diff --git a/tests/wpt/metadata/referrer-policy/generic/multiple-headers-one-unknown-token.html.ini b/tests/wpt/metadata/referrer-policy/generic/multiple-headers-one-unknown-token.html.ini
new file mode 100644
index 00000000000..76a07734079
--- /dev/null
+++ b/tests/wpt/metadata/referrer-policy/generic/multiple-headers-one-unknown-token.html.ini
@@ -0,0 +1,5 @@
+[multiple-headers-one-unknown-token.html]
+ expected: ERROR
+ [Image uses last recognized referrer policy token from Referrer-Policy headers]
+ expected: NOTRUN
+
diff --git a/tests/wpt/metadata/referrer-policy/generic/multiple-headers.html.ini b/tests/wpt/metadata/referrer-policy/generic/multiple-headers.html.ini
new file mode 100644
index 00000000000..afc2a5814b8
--- /dev/null
+++ b/tests/wpt/metadata/referrer-policy/generic/multiple-headers.html.ini
@@ -0,0 +1,5 @@
+[multiple-headers.html]
+ expected: ERROR
+ [Image uses the last recognized Referrer-Policy header]
+ expected: NOTRUN
+
diff --git a/tests/wpt/metadata/url/urlencoded-parser.any.js.ini b/tests/wpt/metadata/url/urlencoded-parser.any.js.ini
index f3a2aaf504d..f6c2f3cdc99 100644
--- a/tests/wpt/metadata/url/urlencoded-parser.any.js.ini
+++ b/tests/wpt/metadata/url/urlencoded-parser.any.js.ini
@@ -2,9 +2,6 @@
[request.formData() with input: &&&a=b&&&&c=d&]
expected: FAIL
- [request.formData() with input: a=b&c=d]
- expected: FAIL
-
[response.formData() with input: a&b&c]
expected: FAIL
@@ -14,6 +11,18 @@
[response.formData() with input: a=b&c=d&]
expected: FAIL
+ [request.formData() with input: _charset_=windows-1252&test=%C2x]
+ expected: FAIL
+
+ [response.formData() with input: _charset_=windows-1252&test=%C2x]
+ expected: FAIL
+
+ [response.formData() with input: &&&a=b&&&&c=d&]
+ expected: FAIL
+
+ [response.formData() with input: a=b&c=d]
+ expected: FAIL
+
[urlencoded-parser.any.worker.html]
[request.formData() with input: a&b&c]
@@ -22,12 +31,12 @@
[response.formData() with input: a&b&c]
expected: FAIL
- [response.formData() with input: a=b&c=d&]
+ [request.formData() with input: a=b&c=d&]
expected: FAIL
- [response.formData() with input: &&&a=b&&&&c=d&]
+ [request.formData() with input: _charset_=windows-1252&test=%C2x]
expected: FAIL
- [request.formData() with input: a=b&c=d&]
+ [response.formData() with input: _charset_=windows-1252&test=%C2x]
expected: FAIL
diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-analysernode-interface/realtimeanalyser-fft-scaling.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-analysernode-interface/realtimeanalyser-fft-scaling.html.ini
index 66bd350083b..a56bad443a2 100644
--- a/tests/wpt/metadata/webaudio/the-audio-api/the-analysernode-interface/realtimeanalyser-fft-scaling.html.ini
+++ b/tests/wpt/metadata/webaudio/the-audio-api/the-analysernode-interface/realtimeanalyser-fft-scaling.html.ini
@@ -1,4 +1,5 @@
[realtimeanalyser-fft-scaling.html]
+ expected: TIMEOUT
[X 2048-point FFT peak position is not equal to 64. Got 0.]
expected: FAIL
diff --git a/tests/wpt/metadata/workers/baseurl/alpha/sharedworker-in-worker.html.ini b/tests/wpt/metadata/workers/baseurl/alpha/sharedworker-in-worker.html.ini
index 333edb3a26e..650c91da4a6 100644
--- a/tests/wpt/metadata/workers/baseurl/alpha/sharedworker-in-worker.html.ini
+++ b/tests/wpt/metadata/workers/baseurl/alpha/sharedworker-in-worker.html.ini
@@ -1,4 +1,5 @@
[sharedworker-in-worker.html]
+ expected: ERROR
[Base URL in workers: new SharedWorker()]
expected: FAIL
diff --git a/tests/wpt/web-platform-tests/.taskcluster.yml b/tests/wpt/web-platform-tests/.taskcluster.yml
index f36523ed301..92e8d89d3af 100644
--- a/tests/wpt/web-platform-tests/.taskcluster.yml
+++ b/tests/wpt/web-platform-tests/.taskcluster.yml
@@ -1,6 +1,6 @@
version: 1
policy:
- pullRequests: collaborators
+ pullRequests: public
tasks:
$flattenDeep:
- $if: tasks_for == "github-push"
diff --git a/tests/wpt/web-platform-tests/.travis.yml b/tests/wpt/web-platform-tests/.travis.yml
index 6f06b671f0c..e0abc3cb953 100644
--- a/tests/wpt/web-platform-tests/.travis.yml
+++ b/tests/wpt/web-platform-tests/.travis.yml
@@ -20,7 +20,8 @@ install:
matrix:
fast_finish: true
include:
- - os: linux
+ - name: "tag master + upload manifest"
+ os: linux
python: "2.7"
env:
- JOB=manifest_upload SCRIPT=tools/ci/ci_manifest.sh
@@ -31,16 +32,20 @@ matrix:
secure: "EljDx50oNpDLs7rzwIv+z1PxIgB5KMnx1W0OQkpNvltR0rBW9g/aQaE+Z/c8M/sPqN1bkvKPybKzGKjb6j9Dw3/EJhah4SskH78r3yMAe2DU/ngxqqjjfXcCc2t5MKxzHAILTAxqScPj2z+lG1jeK1Z+K5hTbSP9lk+AvS0D16w="
file: $WPT_MANIFEST_FILE.gz
skip_cleanup: true
- - os: linux
+ - name: "lint"
+ os: linux
python: "2.7"
env: JOB=lint SCRIPT=tools/ci/ci_lint.sh
- - os: linux
+ - name: "update-built-tests.sh"
+ os: linux
python: "2.7"
env: JOB=update_built SCRIPT=tools/ci/ci_built_diff.sh
- - os: linux
+ - name: "build-css-testsuites.sh"
+ os: linux
python: "2.7"
env: JOB=build_css SCRIPT=css/build-css-testsuites.sh
- - os: linux
+ - name: "stability (Firefox Nightly)"
+ os: linux
python: "2.7"
addons:
apt:
@@ -48,7 +53,8 @@ matrix:
- libnss3-tools
env:
- JOB=stability SCRIPT=tools/ci/ci_stability.sh PRODUCT=firefox:nightly
- - os: linux
+ - name: "stability (Chrome Dev)"
+ os: linux
sudo: required
python: "2.7"
addons:
@@ -58,19 +64,28 @@ matrix:
- fonts-liberation
env:
- JOB=stability SCRIPT=tools/ci/ci_stability.sh PRODUCT=chrome:dev
- - python: 2.7
+ - name: "tools/ unittests (Python 2)"
+ os: linux
+ python: "2.7"
env: JOB=tools_unittest TOXENV=py27 HYPOTHESIS_PROFILE=ci SCRIPT=tools/ci/ci_tools_unittest.sh
- - python: 3.6
+ - name: "tools/ unittests (Python 3)"
+ os: linux
+ python: "3.6"
env: JOB=tools_unittest TOXENV=py36 HYPOTHESIS_PROFILE=ci SCRIPT=tools/ci/ci_tools_unittest.sh
- - python: 2.7
- env: JOB=resources_unittest TOXENV=py27 SCRIPT=tools/ci/ci_resources_unittest.sh
- - python: 2.7
+ - name: "tools/wpt/ unittests"
+ os: linux
+ python: "2.7"
addons:
apt:
packages:
- libnss3-tools
env: JOB=wpt_integration TOXENV=py27,py27-flake8 SCRIPT=tools/ci/ci_wpt.sh
- - os: linux
+ - name: "resources/ tests"
+ os: linux
+ python: "2.7"
+ env: JOB=resources_unittest TOXENV=py27 SCRIPT=tools/ci/ci_resources_unittest.sh
+ - name: "infrastructure/ tests"
+ os: linux
python: "2.7"
env: JOB=wptrunner_infrastructure SCRIPT=tools/ci/ci_wptrunner_infrastructure.sh
addons:
diff --git a/tests/wpt/web-platform-tests/2dcontext/drawing-images-to-the-canvas/drawimage_svg_image_1.html b/tests/wpt/web-platform-tests/2dcontext/drawing-images-to-the-canvas/drawimage_svg_image_1.html
index 385f1a5568e..6208b8dc056 100644
--- a/tests/wpt/web-platform-tests/2dcontext/drawing-images-to-the-canvas/drawimage_svg_image_1.html
+++ b/tests/wpt/web-platform-tests/2dcontext/drawing-images-to-the-canvas/drawimage_svg_image_1.html
@@ -1,46 +1,31 @@
+<!doctype html>
+<meta charset=utf-8>
+<title>Load a 100x100 image to a SVG image and draw it to a 100x100 canvas.</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
+<script src="/common/canvas-tests.js"></script>
+<div id="log"></div>
<canvas id="dest" height="100" width="100"></canvas>
-
<script>
-var sourceWidth = 100;
-var sourceHeight = 100;
-var smoothingEnabled = false;
-var destCanvas = document.getElementById('dest');
-var sourceImg = document.createElementNS('http://www.w3.org/2000/svg', 'image');
-sourceImg.setAttributeNS('http://www.w3.org/1999/xlink', 'href', '../2x2.png');
-sourceImg.width = sourceWidth;
-sourceImg.height = sourceHeight;
-var destCtx = destCanvas.getContext('2d');
-
-function checkPixel(x, y, expected, epsilon) {
- var actual = destCtx.getImageData(x, y, 1, 1).data;
- assert_true(actual.length === expected.length);
- for (var i=0; i < actual.length; i++)
- assert_approx_equals(actual[i], expected[i], epsilon);
-}
-
-var pixelTests = [
- ['Pixel Top Left Image', 0, 0, [253, 140, 245, 255], 1],
- ['Pixel Top Right Image', 0, 99, [253, 140, 245, 255], 1],
- ['Pixel Bottom Left Image', 99, 0, [253, 140, 245, 255], 1],
- ['Pixel Bottom Right Image', 99, 99, [253, 140, 245, 255], 1],
-];
+async_test(t => {
+ var sourceImg = document.createElementNS('http://www.w3.org/2000/svg', 'image');
+ sourceImg.setAttributeNS('http://www.w3.org/1999/xlink', 'href', '../2x2.png');
+ sourceImg.width = 100;
+ sourceImg.height = 100;
-function runTest() {
+ window.onload = t.step_func_done(() => {
+ var destCanvas = document.getElementById('dest');
+ var destCtx = destCanvas.getContext('2d');
destCtx.fillStyle = "#FF0000";
destCtx.fillRect(0, 0, destCanvas.width, destCanvas.height);
- destCtx.imageSmoothingEnabled = smoothingEnabled;
+ destCtx.imageSmoothingEnabled = false;
// 2 arguments, the dest origin is 0,0
// The source canvas will copied to the 0,0 position of the destination canvas
destCtx.drawImage(sourceImg, 0, 0);
- generate_tests(checkPixel, pixelTests);
-}
-
-async_test(t => {
- window.onload = function() {
- t.step(runTest);
- t.done();
- }
-}, 'Load a 100x100 image to a SVG image and draw it to a 100x100 canvas.');
-</script> \ No newline at end of file
+ _assertPixel(destCanvas, 0, 0, 253, 140, 245, 255);
+ _assertPixel(destCanvas, 0, 99, 253, 140, 245, 255);
+ _assertPixel(destCanvas, 99, 0, 253, 140, 245, 255);
+ _assertPixel(destCanvas, 99, 99, 253, 140, 245, 255);
+ });
+});
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-masking/mask-svg-content/mask-negative-scale.svg b/tests/wpt/web-platform-tests/css/css-masking/mask-svg-content/mask-negative-scale.svg
new file mode 100644
index 00000000000..36b7abb42eb
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-masking/mask-svg-content/mask-negative-scale.svg
@@ -0,0 +1,40 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:html="http://www.w3.org/1999/xhtml"
+ xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="testmeta">
+ <title>CSS Masking: mask with negative scale target</title>
+ <html:link rel="author" title="Dirk Schulze" href="mailto:dschulze@adobe.com"/>
+ <html:link rel="help" href="http://www.w3.org/TR/css-masking-1/#svg-masks"/>
+ <html:link rel="help" href="http://www.w3.org/TR/css-masking-1/#MaskElement"/>
+ <html:link rel="match" href="reference/mask-negative-scale-001-ref.svg"/>
+ <metadata class="flags">svg</metadata>
+ <desc class="assert">The masked target elements get scaled with negative
+ factors. Check if that influences masking. You should see 4 green
+ rectangles with smaller blue rectangles in it in various rotations.</desc>
+</g>
+<defs>
+<g id="img" transform="translate(10,10)">
+ <rect width="200" height="200" fill="red"/>
+ <rect width="100" height="100" fill="green"/>
+ <rect width="50" height="50" fill="blue"/>
+</g>
+</defs>
+
+<mask id="mask">
+ <rect x="10" y="10" width="90" height="90" fill="white"/>
+</mask>
+
+<g transform="translate(200, 200)">
+<g transform="matrix(1 0 0 1 -100 -100)" mask="url(#mask)">
+ <use xlink:href="#img"/>
+</g>
+<g transform="matrix(-1 0 0 -1 -100 -100)" mask="url(#mask)">
+ <use xlink:href="#img"/>
+</g>
+<g transform="matrix(-1 0 0 1 -100 -100)" mask="url(#mask)">
+ <use xlink:href="#img"/>
+</g>
+<g transform="matrix(1 0 0 -1 -100 -100)" mask="url(#mask)">
+ <use xlink:href="#img"/>
+</g>
+</g>
+</svg>
diff --git a/tests/wpt/web-platform-tests/css/css-masking/mask-svg-content/mask-text-001.svg b/tests/wpt/web-platform-tests/css/css-masking/mask-svg-content/mask-text-001.svg
new file mode 100644
index 00000000000..1dd5c546af3
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-masking/mask-svg-content/mask-text-001.svg
@@ -0,0 +1,18 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:html="http://www.w3.org/1999/xhtml"
+ xmlns:xlink="http://www.w3.org/1999/xlink" width="100px" height="100px">
+<g id="testmeta">
+ <title>CSS Masking: mask with transformed text content</title>
+ <html:link rel="author" title="Dirk Schulze" href="mailto:dschulze@adobe.com"/>
+ <html:link rel="help" href="http://www.w3.org/TR/css-masking-1/#svg-masks"/>
+ <html:link rel="help" href="http://www.w3.org/TR/css-masking-1/#MaskElement"/>
+ <html:link rel="match" href="reference/mask-text-001-ref.svg"/>
+ <metadata class="flags">svg</metadata>
+ <desc class="assert">The masked target elements get scaled with negative
+ factors. Check if that influences masking. You should see 4 green
+ rectangles with smaller blue rectangles in it in various rotations.</desc>
+</g>
+<mask id="mask">
+ <text fill="#fff" font-family="Ahem" font-size="12px" transform="rotate(90 50 50)" x="50%" y="50%">foobar</text>
+</mask>
+<rect width="100%" height="100%" x="0" y="0" mask="url(#mask)"/>
+</svg> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/css/css-masking/mask-svg-content/mask-type-001.svg b/tests/wpt/web-platform-tests/css/css-masking/mask-svg-content/mask-type-001.svg
new file mode 100644
index 00000000000..9bcc40d55b1
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-masking/mask-svg-content/mask-type-001.svg
@@ -0,0 +1,19 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:html="http://www.w3.org/1999/xhtml">
+<g id="testmeta">
+ <title>CSS Masking: mask without mask-type alpha</title>
+ <html:link rel="author" title="Dirk Schulze" href="mailto:dschulze@adobe.com"/>
+ <html:link rel="help" href="http://www.w3.org/TR/css-masking-1/#svg-masks"/>
+ <html:link rel="help" href="http://www.w3.org/TR/css-masking-1/#MaskElement"/>
+ <html:link rel="help" href="http://www.w3.org/TR/css-masking-1/#the-mask-type"/>
+ <html:link rel="match" href="reference/mask-green-square-001-ref.svg"/>
+ <metadata class="flags">svg</metadata>
+ <desc class="assert">The mask type "alpha" is applied to the mask element.
+ The mask should take the alpha channel of the content to mask. You should
+ see a green square.</desc>
+</g>
+<mask id="mask" mask-type="alpha">
+ <rect width="200" height="200" fill="black" opacity="0"/>
+ <rect x="50" y="50" width="100" height="100" fill="black"/>
+</mask>
+<rect width="200" height="200" fill="green" mask="url(#mask)"/>
+</svg>
diff --git a/tests/wpt/web-platform-tests/css/css-masking/mask-svg-content/mask-type-002.svg b/tests/wpt/web-platform-tests/css/css-masking/mask-svg-content/mask-type-002.svg
new file mode 100644
index 00000000000..c298297329c
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-masking/mask-svg-content/mask-type-002.svg
@@ -0,0 +1,19 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:html="http://www.w3.org/1999/xhtml">
+<g id="testmeta">
+ <title>CSS Masking: mask without mask-type luminance</title>
+ <html:link rel="author" title="Dirk Schulze" href="mailto:dschulze@adobe.com"/>
+ <html:link rel="help" href="http://www.w3.org/TR/css-masking-1/#svg-masks"/>
+ <html:link rel="help" href="http://www.w3.org/TR/css-masking-1/#MaskElement"/>
+ <html:link rel="help" href="http://www.w3.org/TR/css-masking-1/#the-mask-type"/>
+ <html:link rel="match" href="reference/mask-green-square-001-ref.svg"/>
+ <metadata class="flags">svg</metadata>
+ <desc class="assert">The mask type "alpha" is applied to the mask element.
+ The mask should take the luminocity of the content to mask. You should
+ see a green square.</desc>
+</g>
+<mask id="mask" mask-type="luminance">
+ <rect width="200" height="200" fill="black"/>
+ <rect x="50" y="50" width="100" height="100" fill="white"/>
+</mask>
+<rect width="200" height="200" fill="green" mask="url(#mask)"/>
+</svg>
diff --git a/tests/wpt/web-platform-tests/css/css-masking/mask-svg-content/mask-type-003.svg b/tests/wpt/web-platform-tests/css/css-masking/mask-svg-content/mask-type-003.svg
new file mode 100644
index 00000000000..891405dc46a
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-masking/mask-svg-content/mask-type-003.svg
@@ -0,0 +1,19 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:html="http://www.w3.org/1999/xhtml">
+<g id="testmeta">
+ <title>CSS Masking: mask without specified mask-type</title>
+ <html:link rel="author" title="Dirk Schulze" href="mailto:dschulze@adobe.com"/>
+ <html:link rel="help" href="http://www.w3.org/TR/css-masking-1/#svg-masks"/>
+ <html:link rel="help" href="http://www.w3.org/TR/css-masking-1/#MaskElement"/>
+ <html:link rel="help" href="http://www.w3.org/TR/css-masking-1/#the-mask-type"/>
+ <html:link rel="match" href="reference/mask-green-square-001-ref.svg"/>
+ <metadata class="flags">svg</metadata>
+ <desc class="assert">No mask type was specified the mask element should
+ take the luminocity of the content to mask. You should see a green square.
+ </desc>
+</g>
+<mask id="mask">
+ <rect width="200" height="200" fill="black"/>
+ <rect x="50" y="50" width="100" height="100" fill="white"/>
+</mask>
+<rect width="200" height="200" fill="green" mask="url(#mask)"/>
+</svg>
diff --git a/tests/wpt/web-platform-tests/css/css-masking/mask-svg-content/reference/mask-green-square-001-ref.svg b/tests/wpt/web-platform-tests/css/css-masking/mask-svg-content/reference/mask-green-square-001-ref.svg
new file mode 100644
index 00000000000..c83ec87e7bd
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-masking/mask-svg-content/reference/mask-green-square-001-ref.svg
@@ -0,0 +1,8 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:html="http://www.w3.org/1999/xhtml">
+<g id="testmeta">
+ <title>CSS Masking: Reftest reference</title>
+ <html:link rel="author" title="Dirk Schulze" href="mailto:dschulze@adobe.com"/>
+ <metadata class="flags">svg</metadata>
+</g>
+<rect x="50" y="50" width="100" height="100" fill="green"/>
+</svg>
diff --git a/tests/wpt/web-platform-tests/css/css-masking/mask-svg-content/reference/mask-negative-scale-001-ref.svg b/tests/wpt/web-platform-tests/css/css-masking/mask-svg-content/reference/mask-negative-scale-001-ref.svg
new file mode 100644
index 00000000000..1ed0513327d
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-masking/mask-svg-content/reference/mask-negative-scale-001-ref.svg
@@ -0,0 +1,15 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:html="http://www.w3.org/1999/xhtml">
+<g id="testmeta">
+ <title>CSS Masking: Reftest reference</title>
+ <html:link rel="author" title="Dirk Schulze" href="mailto:dschulze@adobe.com"/>
+ <metadata class="flags">svg</metadata>
+</g>
+<rect width="90" height="90" fill="green"/>
+<rect x="40" y="40" width="50" height="50" fill="blue"/>
+<rect x="110" width="90" height="90" fill="green"/>
+<rect x="110" y="40" width="50" height="50" fill="blue"/>
+<rect y="110" width="90" height="90" fill="green"/>
+<rect x="40" y="110" width="50" height="50" fill="blue"/>
+<rect x="110" y="110" width="90" height="90" fill="green"/>
+<rect x="110" y="110" width="50" height="50" fill="blue"/>
+</svg>
diff --git a/tests/wpt/web-platform-tests/css/css-masking/mask-svg-content/reference/mask-text-001-ref.svg b/tests/wpt/web-platform-tests/css/css-masking/mask-svg-content/reference/mask-text-001-ref.svg
new file mode 100644
index 00000000000..48737c03d1e
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-masking/mask-svg-content/reference/mask-text-001-ref.svg
@@ -0,0 +1,8 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:html="http://www.w3.org/1999/xhtml">
+<g id="testmeta">
+ <title>CSS Masking: Reftest reference</title>
+ <html:link rel="author" title="Dirk Schulze" href="mailto:dschulze@adobe.com"/>
+ <metadata class="flags">svg</metadata>
+</g>
+<text fill="#000" font-family="Ahem" font-size="12px" transform="rotate(90 50 50)" x="50" y="50">foobar</text>
+</svg> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/css/css-scroll-snap/inheritance.html b/tests/wpt/web-platform-tests/css/css-scroll-snap/inheritance.html
new file mode 100644
index 00000000000..40600d460c4
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-scroll-snap/inheritance.html
@@ -0,0 +1,39 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>Inheritance of CSS Scroll Snap properties</title>
+<link rel="help" href="https://drafts.csswg.org/css-scroll-snap-1/#property-index">
+<meta name="assert" content="Properties inherit or not according to the spec.">
+<meta name="assert" content="Properties have initial values according to the spec.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/inheritance-testcommon.js"></script>
+</head>
+<body>
+<div id="container">
+<div id="target"></div>
+</div>
+<script>
+assert_not_inherited('scroll-margin-block-end', '0px', '10px');
+assert_not_inherited('scroll-margin-block-start', '0px', '10px');
+assert_not_inherited('scroll-margin-bottom', '0px', '10px');
+assert_not_inherited('scroll-margin-inline-end', '0px', '10px');
+assert_not_inherited('scroll-margin-inline-start', '0px', '10px');
+assert_not_inherited('scroll-margin-left', '0px', '10px');
+assert_not_inherited('scroll-margin-right', '0px', '10px');
+assert_not_inherited('scroll-margin-top', '0px', '10px');
+assert_not_inherited('scroll-padding-block-end', 'auto', '10px');
+assert_not_inherited('scroll-padding-block-start', 'auto', '10px');
+assert_not_inherited('scroll-padding-bottom', '0px', '10px');
+assert_not_inherited('scroll-padding-inline-end', 'auto', '10px');
+assert_not_inherited('scroll-padding-inline-start', 'auto', '10px');
+assert_not_inherited('scroll-padding-left', '0px', '10px');
+assert_not_inherited('scroll-padding-right', '0px', '10px');
+assert_not_inherited('scroll-padding-top', '0px', '10px');
+assert_not_inherited('scroll-snap-align', 'none', 'start end');
+assert_not_inherited('scroll-snap-stop', 'normal', 'always');
+assert_not_inherited('scroll-snap-type', 'none', 'inline proximity');
+</script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-shapes/shape-outside/values/shape-outside-inset-0010.html b/tests/wpt/web-platform-tests/css/css-shapes/shape-outside/values/shape-outside-inset-0010.html
new file mode 100644
index 00000000000..b82abea82a6
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-shapes/shape-outside/values/shape-outside-inset-0010.html
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<link rel="help" href="http://www.w3.org/TR/css-shapes-1/#shape-outside-property">
+<link rel="match" href="../../../reference/ref-filled-green-100px-square-only.html">
+<meta name="assert" content="This checks that a float 'shadowing' a shape-outside float works as expected.">
+<style>
+#container { width: 100px; line-height: 0; }
+#float_1 { float: right; width: 30px; height: 30px; background: green; }
+#float_2 { float: left; width: 20px; height: 100px; background: green; shape-outside: inset(0 20px 0 0); }
+#float_3 { float: left; width: 30px; height: 50px; background: green; }
+.atomic { display: inline-block; background: green; }
+</style>
+<p>Test passes if there is a filled green square.</p>
+<div id="container">
+ <div id="float_1"></div>
+ <div id="float_2"></div>
+ <div id="float_3"></div>
+ <div class="atomic" style="width: 20px; height: 30px;"></div>
+ <div class="atomic" style="width: 50px; height: 20px;"></div>
+ <div class="atomic" style="width: 80px; height: 50px;"></div><div class="atomic" style="width: 20px; height: 50px;"></div>
+</div>
diff --git a/tests/wpt/web-platform-tests/css/css-text/white-space/reference/white-space-empty-text-sibling-ref.html b/tests/wpt/web-platform-tests/css/css-text/white-space/reference/white-space-empty-text-sibling-ref.html
new file mode 100644
index 00000000000..3837f7f62f4
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/white-space/reference/white-space-empty-text-sibling-ref.html
@@ -0,0 +1,3 @@
+<!DOCTYPE html>
+<p>There should be a space between "Two" and "words".</p>
+Two words
diff --git a/tests/wpt/web-platform-tests/css/css-text/white-space/white-space-empty-text-sibling.html b/tests/wpt/web-platform-tests/css/css-text/white-space/white-space-empty-text-sibling.html
new file mode 100644
index 00000000000..56a5cad875d
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/white-space/white-space-empty-text-sibling.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<link rel="help" href="https://drafts.csswg.org/css-text-3/#white-space-rules">
+<link rel="match" href="reference/white-space-empty-text-sibling-ref.html">
+<p>There should be a space between "Two" and "words".</p>
+<div id="block"> <span>words</span></div>
+<script>
+ block.insertBefore(document.createTextNode(""), block.firstChild);
+ block.insertBefore(document.createTextNode(""), block.firstChild);
+ block.offsetTop;
+ block.firstChild.data = "Two";
+</script>
diff --git a/tests/wpt/web-platform-tests/css/motion/offset-path-serialization.html b/tests/wpt/web-platform-tests/css/motion/offset-path-serialization.html
index 1c000919518..7c835c7371f 100644
--- a/tests/wpt/web-platform-tests/css/motion/offset-path-serialization.html
+++ b/tests/wpt/web-platform-tests/css/motion/offset-path-serialization.html
@@ -36,6 +36,10 @@ test(function() {
target.style.offsetPath = ' path( "m 10 20 a 10 20 30 1 0 40 50 a 110 120 30 1 1 140 50" ) ';
assert_equals(target.style.offsetPath, 'path("m 10 20 a 10 20 30 1 0 40 50 a 110 120 30 1 1 140 50")');
assert_equals(getComputedStyle(target).offsetPath, 'path("M 10 20 A 10 20 30 1 0 50 70 A 110 120 30 1 1 190 120")');
+
+ target.style.offsetPath = 'path("M 1 2 H 3 v 4 h 5 V 6 h 7 v 8")';
+ assert_equals(target.style.offsetPath, 'path("M 1 2 H 3 v 4 h 5 V 6 h 7 v 8")');
+ assert_equals(getComputedStyle(target).offsetPath, 'path("M 1 2 H 3 V 6 H 8 V 6 H 15 V 14")');
});
</script>
</body>
diff --git a/tests/wpt/web-platform-tests/css/selectors/floating-first-letter-05d0.html b/tests/wpt/web-platform-tests/css/selectors/floating-first-letter-05d0.html
new file mode 100644
index 00000000000..6848070e6df
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/selectors/floating-first-letter-05d0.html
@@ -0,0 +1,20 @@
+<!doctype html>
+<meta charset=utf-8>
+<title>Drop cap with U+05D0 in the document</title>
+<meta name="assert" content="The text placement within :first-line should not be affected by later presence of a right-to-left character.">
+<link rel=help href=https://drafts.csswg.org/css-pseudo-4/#first-line-styling>
+<link rel=match href=/css/selectors/floating-first-letter-ref.html>
+<style>
+ p:first-line {
+ background: lightblue;
+ }
+
+ p::first-letter {
+ float: left;
+ font-size: 4rem;
+ }
+ div {
+ color: transparent;
+ }
+</style>
+<p>Ab</p><div>&#x05D0;</div> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/css/selectors/floating-first-letter-feff.html b/tests/wpt/web-platform-tests/css/selectors/floating-first-letter-feff.html
new file mode 100644
index 00000000000..02d256ab7dc
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/selectors/floating-first-letter-feff.html
@@ -0,0 +1,17 @@
+<!doctype html>
+<meta charset=utf-8>
+<title>Drop cap with U+FEFF in the document</title>
+<meta name="assert" content="The text placement within :first-line should not be affected by later presence of U+FEFF.">
+<link rel=help href=https://drafts.csswg.org/css-pseudo-4/#first-line-styling>
+<link rel=match href=/css/selectors/floating-first-letter-ref.html>
+<style>
+ p:first-line {
+ background: lightblue;
+ }
+
+ p::first-letter {
+ float: left;
+ font-size: 4rem;
+ }
+</style>
+<p>Ab</p>&#xFEFF; \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/css/selectors/floating-first-letter-ref.html b/tests/wpt/web-platform-tests/css/selectors/floating-first-letter-ref.html
new file mode 100644
index 00000000000..3c3141a862d
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/selectors/floating-first-letter-ref.html
@@ -0,0 +1,14 @@
+<!doctype html>
+<meta charset=utf-8>
+<title>Drop cap with no bidi in the document</title>
+<style>
+ p:first-line {
+ background: lightblue;
+ }
+
+ p::first-letter {
+ float: left;
+ font-size: 4rem;
+ }
+</style>
+<p>Ab</p> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/docs/_admin/index.md b/tests/wpt/web-platform-tests/docs/_admin/index.md
new file mode 100644
index 00000000000..5088b47cd00
--- /dev/null
+++ b/tests/wpt/web-platform-tests/docs/_admin/index.md
@@ -0,0 +1,76 @@
+---
+layout: page
+title: Project Administration
+order: -1
+---
+
+This section documents all the information necessary to administer the
+infrastructure which makes the project possible.
+
+## Secrets
+
+Some aspects of the infrastructure are only accessible to administrators.
+
+Project | Secret | Owners
+--------------------------|--------------------------|-------------
+[results-collection] | root SSH keys | boaz@bocoup.com, mike@bocoup.com, rick@bocoup.com
+[results-collection] | Password for app secrets | boaz@bocoup.com, mike@bocoup.com, rick@bocoup.com
+
+SSL certificates for all HTTPS-enabled domains are retrieved via [Let's
+Encrypt](https://letsencrypt.org/), so that data does not represent an
+explicitly-managed secret.
+
+## Third-party account owners
+
+- (unknown registrar): https://web-platform-tests.org
+ - jgraham@hoppipolla.co.uk
+- (unknown registrar): https://w3c-test.org
+ - mike@w3.org
+- (unknown registrar): http://testthewebforward.org
+ - web-human@w3.org
+- [Google Domains](https://domains.google/): https://wpt.fyi
+ - foolip@google.com
+ - jeffcarp@google.com
+ - lukebjerring@google.com
+ - mike@bocoup.com
+- [GitHub](https://github.com/): web-platform-tests
+ - [@foolip](https://github.com/foolip)
+ - [@Hexcles](https://github.com/Hexcles)
+ - [@jgraham](https://github.com/jgraham)
+ - [@plehegar](https://github.com/plehegar)
+ - [@thejohnjansen](https://github.com/thejohnjansen)
+ - [@youennf](https://github.com/youennf)
+ - [@zcorpan](https://github.com/zcorpan)
+- [GitHub](https://github.com/): w3c
+ - [@plehegar](https://github.com/plehegar)
+ - [@sideshowbarker](https://github.com/sideshowbarker)
+- [Google Cloud Platform](https://cloud.google.com/): wptdashboard
+ - boaz@bocoup.com
+ - foolip@google.com
+ - geoffers@gmail.com
+ - jeffcarp@google.com
+ - kereliuk@google.com
+ - lukebjerring@google.com
+ - markdittmer@google.com
+ - mike@bocoup.com
+ - rick@bocoup.com
+- [Amazon AWS](https://aws.amazon.com/): results-collection infrastructure
+ - boaz@bocoup.com
+ - mike@bocoup.com
+ - rick@bocoup.com
+- E-mail address: wpt.pr.bot@gmail.com
+ - boaz@bocoup.com
+ - mike@bocoup.com
+ - simon@bocoup.com
+- [Heroku](https://heroku.com/): wpt.pr.bot@gmail.com
+ - boaz@bocoup.com
+ - mike@bocoup.com
+ - simon@bocoup.com
+- [GitHub](https://github.com/): @wpt-pr-bot account
+ - boaz@bocoup.com
+ - mike@bocoup.com
+ - simon@bocoup.com
+
+[results-collection]: https://github.com/web-platform-tests/results-collection
+[web-platform-tests]: https://github.com/e3c/web-platform-tests
+[wpt.fyi]: https://github.com/web-platform-tests/wpt.fyi
diff --git a/tests/wpt/web-platform-tests/docs/_config.yml b/tests/wpt/web-platform-tests/docs/_config.yml
index 760c991820b..8a793ae19d5 100644
--- a/tests/wpt/web-platform-tests/docs/_config.yml
+++ b/tests/wpt/web-platform-tests/docs/_config.yml
@@ -18,6 +18,8 @@ baseurl: "" # the subpath of your site, e.g. /blog
url: "" # the base hostname & protocol for your site, e.g. http://example.com
collections:
+ admin:
+ output: true
appendix:
output: true
reviewing-tests:
diff --git a/tests/wpt/web-platform-tests/docs/_includes/svg/octicons/key.svg b/tests/wpt/web-platform-tests/docs/_includes/svg/octicons/key.svg
new file mode 100644
index 00000000000..c5bfda0a4dc
--- /dev/null
+++ b/tests/wpt/web-platform-tests/docs/_includes/svg/octicons/key.svg
@@ -0,0 +1,3 @@
+<svg width="256" height="256" class="octicon octicon-key" viewBox="0 0 14 16" version="1.1" aria-hidden="true">
+ <path fill-rule="evenodd" d="M12.83 2.17C12.08 1.42 11.14 1.03 10 1c-1.13.03-2.08.42-2.83 1.17S6.04 3.86 6.01 5c0 .3.03.59.09.89L0 12v1l1 1h2l1-1v-1h1v-1h1v-1h2l1.09-1.11c.3.08.59.11.91.11 1.14-.03 2.08-.42 2.83-1.17S13.97 6.14 14 5c-.03-1.14-.42-2.08-1.17-2.83zM11 5.38c-.77 0-1.38-.61-1.38-1.38 0-.77.61-1.38 1.38-1.38.77 0 1.38.61 1.38 1.38 0 .77-.61 1.38-1.38 1.38z"></path>
+</svg>
diff --git a/tests/wpt/web-platform-tests/docs/index.html b/tests/wpt/web-platform-tests/docs/index.html
index e8aa2e92e97..ffef230a74a 100644
--- a/tests/wpt/web-platform-tests/docs/index.html
+++ b/tests/wpt/web-platform-tests/docs/index.html
@@ -51,6 +51,17 @@ layout: page
<p>Some hints and tips for those reviewing tests.</p>
</li>
<li>
+ <a href="{{ site.baseurl }}{% link _admin/index.md %}">
+ <div>
+ {% include svg/octicons/key.svg %}
+ </div>
+ <h2>
+ Administration
+ </h2>
+ </a>
+ <p>Instruction for project administrators.</p>
+ </li>
+ <li>
<a href="{{ site.baseurl }}{% link _appendix/index.md %}">
<div>
{% include svg/octicons/package.svg %}
diff --git a/tests/wpt/web-platform-tests/fetch/api/redirect/redirect-count.any.js b/tests/wpt/web-platform-tests/fetch/api/redirect/redirect-count.any.js
index 7fa6dd1d0ed..0c45d8d87ce 100644
--- a/tests/wpt/web-platform-tests/fetch/api/redirect/redirect-count.any.js
+++ b/tests/wpt/web-platform-tests/fetch/api/redirect/redirect-count.any.js
@@ -1,5 +1,6 @@
// META: script=../resources/utils.js
// META: script=/common/utils.js
+// META: timeout=long
function redirectCount(desc, redirectUrl, redirectLocation, redirectStatus, maxCount, shouldPass) {
var uuid_token = token();
diff --git a/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/flow-content-0/form-margin-quirk.html b/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/flow-content-0/form-margin-quirk.html
new file mode 100644
index 00000000000..7f6618bb782
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/flow-content-0/form-margin-quirk.html
@@ -0,0 +1,20 @@
+<!-- quirks -->
+<title>form margin quirk</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<style>
+form { writing-mode: vertical-lr; }
+#ref { margin: 0 1em 0 0; }
+</style>
+<form id=form></form>
+<div id=ref></div>
+<script>
+test(() => {
+ const formStyle = getComputedStyle(document.getElementById('form'));
+ const refStyle = getComputedStyle(document.getElementById('ref'));
+ assert_equals(formStyle.marginTop, refStyle.marginTop, 'marginTop');
+ assert_equals(formStyle.marginRight, refStyle.marginRight, 'marginRight');
+ assert_equals(formStyle.marginBottom, refStyle.marginBottom, 'marginBottom');
+ assert_equals(formStyle.marginLeft, refStyle.marginLeft, 'marginLeft');
+});
+</script>
diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/decode/image-decode-with-quick-attach-svg.tentative.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/decode/image-decode-with-quick-attach-svg.tentative.html
new file mode 100644
index 00000000000..0fc49e60360
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/decode/image-decode-with-quick-attach-svg.tentative.html
@@ -0,0 +1,23 @@
+<!DOCTYPE html>
+<meta charset=utf-8>
+<meta name="timeout" content="long">
+<title>SVGImageElement.prototype.decode(), attach to DOM before promise resolves.</title>
+<link rel=help href="https://html.spec.whatwg.org/multipage/embedded-content.html#dom-img-decode">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<svg></svg>
+<script>
+"use strict";
+
+promise_test(function() {
+ var img = document.createElementNS('http://www.w3.org/2000/svg', 'image');
+ img.setAttributeNS('http://www.w3.org/1999/xlink', 'xlink:href', "/images/green.png");
+ const promise = img.decode().then(function(arg) {
+ assert_equals(arg, undefined);
+ });
+ // Don't wait for the promise to resolve before attaching the image.
+ // The promise should still resolve successfully.
+ document.querySelector('svg').appendChild(img);
+ return promise;
+}, document.title);
+</script>
diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-video-element/intrinsic_sizes.htm b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-video-element/intrinsic_sizes.htm
new file mode 100644
index 00000000000..7819ee1c189
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-video-element/intrinsic_sizes.htm
@@ -0,0 +1,75 @@
+<!doctype html>
+<html>
+<head>
+<title>video element - intrinsic sizes</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/common/media.js"></script>
+</head>
+<body>
+<p><a href="https://html.spec.whatwg.org/multipage/#the-video-element">spec reference</a></p>
+<video id="v1"></video>
+<video id="v2" width="400"></video>
+<video id="v3" height="100"></video>
+<video id="v4"></video>
+<video id="v5" poster="/media/poster.png"></video>
+<div id="log"></div>
+<script>
+test(function() {
+ var s = getComputedStyle(document.getElementById("v1"));
+ assert_equals(s.width, "300px");
+ assert_equals(s.height, "150px");
+}, "default object size is 300x150");
+
+test(function() {
+ var s = getComputedStyle(document.getElementById("v2"));
+ assert_equals(s.width, "400px");
+ assert_equals(s.height, "200px");
+}, "default height is half the width");
+
+test(function() {
+ var s = getComputedStyle(document.getElementById("v3"));
+ assert_equals(s.width, "200px");
+ assert_equals(s.height, "100px");
+}, "default width is twice the height");
+
+async_test(function(t) {
+ var v = document.getElementById("v4");
+ var s = getComputedStyle(v);
+ v.src = getVideoURI("/media/movie_5") + "?" + new Date() + Math.random();
+ v.onerror = t.unreached_func();
+ v.onloadedmetadata = t.step_func(function() {
+ assert_equals(s.width, '320px');
+ assert_equals(s.height, '240px');
+ v.removeAttribute("src");
+ v.load();
+ // Dimensions should be updated only on next layout.
+ assert_equals(s.width, '320px');
+ assert_equals(s.height, '240px');
+ requestAnimationFrame(t.step_func_done(function() {
+ assert_equals(s.width, "300px");
+ assert_equals(s.height, "150px");
+ }));
+ });
+}, "default object size after src is removed");
+
+async_test(function(t) {
+ var v = document.getElementById("v5");
+ var s = getComputedStyle(v);
+ v.onerror = t.unreached_func();
+ onload = t.step_func(function() {
+ assert_equals(s.width, '102px');
+ assert_equals(s.height, '77px');
+ v.removeAttribute("poster");
+ // Dimensions should be updated only on next layout.
+ assert_equals(s.width, '102px');
+ assert_equals(s.height, '77px');
+ requestAnimationFrame(t.step_func_done(function() {
+ assert_equals(s.width, "300px");
+ assert_equals(s.height, "150px");
+ }));
+ });
+}, "default object size after poster is removed");
+</script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/html/semantics/forms/the-legend-element/HTMLLegendElement.html b/tests/wpt/web-platform-tests/html/semantics/forms/the-legend-element/HTMLLegendElement.html
new file mode 100644
index 00000000000..8600e5437a5
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/semantics/forms/the-legend-element/HTMLLegendElement.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>HTML Test: HTMLLegendElement</title>
+<link rel="author" title="Intel" href="http://www.intel.com/">
+<link rel="help" title="4.10.17 The legend element" href="http://www.whatwg.org/specs/web-apps/current-work/multipage/the-button-element.html#the-legend-element">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<div id="log"></div>
+<div style="display:none">
+ <form>
+ <legend id="lgd1">test</legend>
+ </form>
+ <form id="fm">
+ <fieldset id="fs">
+ <legend id="lgd2">test</legend>
+ </fieldset>
+ </form>
+</div>
+<script>
+ test(function() {
+ assert_equals(document.getElementById("lgd1").form, null,
+ "The legend.form return null if it has no fieldset parent.");
+ }, "The legend.form return null when it has no fieldset parent");
+
+ test(function() {
+ assert_equals(document.getElementById("lgd2").form, document.getElementById("fs").form,
+ "The legend.form should be same as fieldset.form.");
+ assert_equals(document.getElementById("lgd2").form, document.getElementById("fm"),
+ "The legend.form should be the correct form.");
+ }, "The legend.form must be same value as fieldset.form");
+
+ test(function() {
+ assert_true(document.getElementById("lgd1") instanceof HTMLLegendElement, "legend should be a HTMLLegendElement");
+ assert_readonly(document.getElementById("lgd1"), "form", "The form is not readonly");
+ }, "Interface HTMLLegendElement");
+</script>
+
diff --git a/tests/wpt/web-platform-tests/html/webappapis/system-state-and-capabilities/the-navigator-object/navigatorcookies-cookieenabled-false-manual.html b/tests/wpt/web-platform-tests/html/webappapis/system-state-and-capabilities/the-navigator-object/navigatorcookies-cookieenabled-false-manual.html
new file mode 100644
index 00000000000..adcea90a363
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/webappapis/system-state-and-capabilities/the-navigator-object/navigatorcookies-cookieenabled-false-manual.html
@@ -0,0 +1,17 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>navigator.cookieEnabled false</title>
+<link rel="author" title="Intel" href="http://www.intel.com">
+<link rel="help" href="https://html.spec.whatwg.org/#dom-navigator-cookieenabled">
+<meta name="flags" content="interact">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+
+<h2>Preconditions</h2>
+<p>Disable cookies in browser settings.</p>
+
+<script>
+ test(() => {
+ assert_false(navigator.cookieEnabled);
+ }, "navigator.cookieEnabled is false when cookies are disabled");
+</script>
diff --git a/tests/wpt/web-platform-tests/html/webappapis/system-state-and-capabilities/the-navigator-object/navigatorcookies-cookieenabled-true.html b/tests/wpt/web-platform-tests/html/webappapis/system-state-and-capabilities/the-navigator-object/navigatorcookies-cookieenabled-true.html
new file mode 100644
index 00000000000..fc7f49d143d
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/webappapis/system-state-and-capabilities/the-navigator-object/navigatorcookies-cookieenabled-true.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>navigator.cookieEnabled true</title>
+<link rel="author" title="Intel" href="http://www.intel.com">
+<link rel="help" href="https://html.spec.whatwg.org/#dom-navigator-cookieenabled">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+
+<script>
+ test(() => {
+ assert_true(navigator.cookieEnabled);
+ }, "navigator.cookieEnabled is true when cookies are enabled");
+</script>
diff --git a/tests/wpt/web-platform-tests/infrastructure/assumptions/cookie.html b/tests/wpt/web-platform-tests/infrastructure/assumptions/cookie.html
new file mode 100644
index 00000000000..5d5b0dc0e10
--- /dev/null
+++ b/tests/wpt/web-platform-tests/infrastructure/assumptions/cookie.html
@@ -0,0 +1,18 @@
+<!doctype html>
+<title>cookies work in default browse settings</title>
+<link rel="author" title="Intel" href="http://www.intel.com">
+<link rel="help" href="https://html.spec.whatwg.org/#dom-document-cookie">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+
+<script>
+ test(t => {
+ t.add_cleanup(() => {
+ let date = new Date();
+ date.setTime(date.getTime() - 10000);
+ document.cookie = "name=''; expires=" + date.toGMTString();
+ });
+ document.cookie = "name=test_cookie";
+ assert_not_equals(document.cookie.match(/name=test_cookie/), null);
+ });
+</script>
diff --git a/tests/wpt/web-platform-tests/interfaces/speech-api.idl b/tests/wpt/web-platform-tests/interfaces/speech-api.idl
index 0b5c866b35c..f94637a8d21 100644
--- a/tests/wpt/web-platform-tests/interfaces/speech-api.idl
+++ b/tests/wpt/web-platform-tests/interfaces/speech-api.idl
@@ -43,12 +43,18 @@ enum SpeechRecognitionErrorCode {
"language-not-supported"
};
-[Exposed=Window]
+[Exposed=Window,
+ Constructor(DOMString type, SpeechRecognitionErrorEventInit eventInitDict)]
interface SpeechRecognitionErrorEvent : Event {
readonly attribute SpeechRecognitionErrorCode error;
readonly attribute DOMString message;
};
+dictionary SpeechRecognitionErrorEventInit : EventInit {
+ required SpeechRecognitionErrorCode error;
+ DOMString message = "";
+};
+
// Item in N-best list
[Exposed=Window]
interface SpeechRecognitionAlternative {
@@ -72,7 +78,8 @@ interface SpeechRecognitionResultList {
};
// A full response, which could be interim or final, part of a continuous response or not
-[Exposed=Window]
+[Exposed=Window,
+ Constructor(DOMString type, SpeechRecognitionEventInit eventInitDict)]
interface SpeechRecognitionEvent : Event {
readonly attribute unsigned long resultIndex;
readonly attribute SpeechRecognitionResultList results;
@@ -80,6 +87,13 @@ interface SpeechRecognitionEvent : Event {
readonly attribute Document? emma;
};
+dictionary SpeechRecognitionEventInit : EventInit {
+ unsigned long resultIndex = 0;
+ required SpeechRecognitionResultList results;
+ any interpretation = null;
+ Document? emma = null;
+};
+
// The object representing a speech grammar
[Exposed=Window, Constructor]
interface SpeechGrammar {
@@ -118,8 +132,7 @@ partial interface Window {
};
[Exposed=Window,
- Constructor,
- Constructor(DOMString text)]
+ Constructor(optional DOMString text)]
interface SpeechSynthesisUtterance : EventTarget {
attribute DOMString text;
attribute DOMString lang;
@@ -138,7 +151,7 @@ interface SpeechSynthesisUtterance : EventTarget {
};
[Exposed=Window,
- Constructor(DOMString type, SpeechSynthesisEventInit eventInitDict)]
+ Constructor(DOMString type, SpeechSynthesisEventInit eventInitDict)]
interface SpeechSynthesisEvent : Event {
readonly attribute SpeechSynthesisUtterance utterance;
readonly attribute unsigned long charIndex;
@@ -169,7 +182,7 @@ enum SpeechSynthesisErrorCode {
};
[Exposed=Window,
- Constructor(DOMString type, SpeechSynthesisErrorEventInit eventInitDict)]
+ Constructor(DOMString type, SpeechSynthesisErrorEventInit eventInitDict)]
interface SpeechSynthesisErrorEvent : SpeechSynthesisEvent {
readonly attribute SpeechSynthesisErrorCode error;
};
diff --git a/tests/wpt/web-platform-tests/orientation-event/ondeviceorientationabsolute.html b/tests/wpt/web-platform-tests/orientation-event/ondeviceorientationabsolute.html
new file mode 100644
index 00000000000..73ce97ab5c1
--- /dev/null
+++ b/tests/wpt/web-platform-tests/orientation-event/ondeviceorientationabsolute.html
@@ -0,0 +1,43 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <title>User agents must also provide an event handler IDL attribute named ondeviceorientationabsolute on the window object</title>
+ <meta name=viewport content="width=device-width, maximum-scale=1.0">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ </head>
+ <body>
+ <p>Rotate the device to run the tests.</p>
+ <div id="log"></div>
+ <script>
+ var t1 = async_test("Provide an event handler IDL attribute named ondeviceorientationabsolute");
+ var t2 = async_test("The type of this event handler must be 'DeviceOrientationEvent'");
+ var t3 = async_test("The absolute property must be set to true.");
+ var run = false;
+ if (window.ondeviceorientationabsolute === undefined) {
+ t1.step(t1.unreached_func("ondeviceorientationabsolute not supported"));
+ t2.step(t2.unreached_func("ondeviceorientationabsolute not supported"));
+ t3.step(t3.unreached_func("ondeviceorientationabsolute not supported"));
+ } else {
+ window.ondeviceorientationabsolute = function(e) {
+ if (!run) {
+ run = true;
+ t1.step(function() {
+ assert_equals(e.type, "deviceorientationabsolute");
+ });
+ t1.done();
+ t2.step(function() {
+ assert_true(e instanceof DeviceOrientationEvent);
+ });
+ t2.done();
+ t3.step(function() {
+ assert_true(e.absolute);
+ });
+ t3.done();
+ }
+ };
+ }
+ </script>
+ </body>
+</html>
+
diff --git a/tests/wpt/web-platform-tests/referrer-policy/generic/multiple-headers-and-values.html b/tests/wpt/web-platform-tests/referrer-policy/generic/multiple-headers-and-values.html
new file mode 100644
index 00000000000..682199b917c
--- /dev/null
+++ b/tests/wpt/web-platform-tests/referrer-policy/generic/multiple-headers-and-values.html
@@ -0,0 +1,29 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <title>Referrer Policy: multiple Referrer-Policy header and header values are allowed</title>
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+
+ <script src="/referrer-policy/generic/common.js"></script>
+ </head>
+ <body>
+ <h1>Referrer Policy: multiple Referrer-Policy header and header values are allowed</h1>
+ <p></p>
+
+ <pre id="received_message">Running...</pre>
+
+ <script>
+ var test = async_test("Image uses the last recognized Referrer-Policy header value");
+ var urlPath = '/referrer-policy/generic/subresource/image.py?cache_destroyer=' + (new Date()).getTime();
+ var url = location.protocol + "//www1." + location.hostname + ":" + location.port +
+ urlPath;
+ queryImage(url, test.step_func(function(message) {
+ assert_equals(message.referrer, document.location.origin + "/");
+ test.done();
+ }), null, 'no-referrer', test);
+ </script>
+
+ <div id="log"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/referrer-policy/generic/multiple-headers-and-values.html.headers b/tests/wpt/web-platform-tests/referrer-policy/generic/multiple-headers-and-values.html.headers
new file mode 100644
index 00000000000..d1acc2f1d3c
--- /dev/null
+++ b/tests/wpt/web-platform-tests/referrer-policy/generic/multiple-headers-and-values.html.headers
@@ -0,0 +1,2 @@
+Referrer-Policy: no-referrer
+Referrer-Policy: no-referrer,origin
diff --git a/tests/wpt/web-platform-tests/referrer-policy/generic/multiple-headers-combined.html b/tests/wpt/web-platform-tests/referrer-policy/generic/multiple-headers-combined.html
new file mode 100644
index 00000000000..ad02ae84bd7
--- /dev/null
+++ b/tests/wpt/web-platform-tests/referrer-policy/generic/multiple-headers-combined.html
@@ -0,0 +1,29 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <title>Referrer Policy: multiple Referrer-Policy header values are allowed</title>
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+
+ <script src="/referrer-policy/generic/common.js"></script>
+ </head>
+ <body>
+ <h1>Referrer Policy: multiple Referrer-Policy header values are allowed</h1>
+ <p></p>
+
+ <pre id="received_message">Running...</pre>
+
+ <script>
+ var test = async_test("Image uses the last recognized Referrer-Policy header value");
+ var urlPath = '/referrer-policy/generic/subresource/image.py?cache_destroyer=' + (new Date()).getTime();
+ var url = location.protocol + "//www1." + location.hostname + ":" + location.port +
+ urlPath;
+ queryImage(url, test.step_func(function(message) {
+ assert_equals(message.referrer, document.location.origin + "/");
+ test.done();
+ }), null, 'no-referrer', test);
+ </script>
+
+ <div id="log"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/referrer-policy/generic/multiple-headers-combined.html.headers b/tests/wpt/web-platform-tests/referrer-policy/generic/multiple-headers-combined.html.headers
new file mode 100644
index 00000000000..fc30a2a1862
--- /dev/null
+++ b/tests/wpt/web-platform-tests/referrer-policy/generic/multiple-headers-combined.html.headers
@@ -0,0 +1 @@
+Referrer-Policy: no-referrer, origin
diff --git a/tests/wpt/web-platform-tests/referrer-policy/generic/multiple-headers-one-invalid.html b/tests/wpt/web-platform-tests/referrer-policy/generic/multiple-headers-one-invalid.html
new file mode 100644
index 00000000000..b1384b14a0e
--- /dev/null
+++ b/tests/wpt/web-platform-tests/referrer-policy/generic/multiple-headers-one-invalid.html
@@ -0,0 +1,29 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <title>Referrer Policy: multiple Referrer-Policy headers with one invalid</title>
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+
+ <script src="/referrer-policy/generic/common.js"></script>
+ </head>
+ <body>
+ <h1>Referrer Policy: multiple Referrer-Policy headers with one invalid</h1>
+ <p></p>
+
+ <pre id="received_message">Running...</pre>
+
+ <script>
+ var test = async_test("Referrer policy header parsing fails if one header is invalid");
+ var urlPath = '/referrer-policy/generic/subresource/image.py?cache_destroyer=' + (new Date()).getTime();
+ var url = location.protocol + "//www1." + location.hostname + ":" + location.port +
+ urlPath;
+ queryImage(url, test.step_func(function(message) {
+ assert_equals(message.referrer, document.location.href);
+ test.done();
+ }), null, 'no-referrer', test);
+ </script>
+
+ <div id="log"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/referrer-policy/generic/multiple-headers-one-invalid.html.headers b/tests/wpt/web-platform-tests/referrer-policy/generic/multiple-headers-one-invalid.html.headers
new file mode 100644
index 00000000000..07521938041
--- /dev/null
+++ b/tests/wpt/web-platform-tests/referrer-policy/generic/multiple-headers-one-invalid.html.headers
@@ -0,0 +1,2 @@
+Referrer-Policy: origin
+Referrer-Policy: origin no-referrer
diff --git a/tests/wpt/web-platform-tests/referrer-policy/generic/multiple-headers-one-unknown-token.html b/tests/wpt/web-platform-tests/referrer-policy/generic/multiple-headers-one-unknown-token.html
new file mode 100644
index 00000000000..3273c0dbedf
--- /dev/null
+++ b/tests/wpt/web-platform-tests/referrer-policy/generic/multiple-headers-one-unknown-token.html
@@ -0,0 +1,29 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <title>Referrer Policy: multiple Referrer-Policy headers with one invalid</title>
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+
+ <script src="/referrer-policy/generic/common.js"></script>
+ </head>
+ <body>
+ <h1>Referrer Policy: multiple Referrer-Policy headers with one invalid</h1>
+ <p></p>
+
+ <pre id="received_message">Running...</pre>
+
+ <script>
+ var test = async_test("Image uses last recognized referrer policy token from Referrer-Policy headers");
+ var urlPath = '/referrer-policy/generic/subresource/image.py?cache_destroyer=' + (new Date()).getTime();
+ var url = location.protocol + "//www1." + location.hostname + ":" + location.port +
+ urlPath;
+ queryImage(url, test.step_func(function(message) {
+ assert_equals(message.referrer, document.location.origin + "/");
+ test.done();
+ }), null, 'no-referrer', test);
+ </script>
+
+ <div id="log"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/referrer-policy/generic/multiple-headers-one-unknown-token.html.headers b/tests/wpt/web-platform-tests/referrer-policy/generic/multiple-headers-one-unknown-token.html.headers
new file mode 100644
index 00000000000..46feffd705f
--- /dev/null
+++ b/tests/wpt/web-platform-tests/referrer-policy/generic/multiple-headers-one-unknown-token.html.headers
@@ -0,0 +1,2 @@
+Referrer-Policy: no-referrer
+Referrer-Policy: origin,not-a-valid-token
diff --git a/tests/wpt/web-platform-tests/referrer-policy/generic/multiple-headers.html b/tests/wpt/web-platform-tests/referrer-policy/generic/multiple-headers.html
new file mode 100644
index 00000000000..5f6a749b4bd
--- /dev/null
+++ b/tests/wpt/web-platform-tests/referrer-policy/generic/multiple-headers.html
@@ -0,0 +1,29 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <title>Referrer Policy: multiple Referrer-Policy headers are allowed</title>
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+
+ <script src="/referrer-policy/generic/common.js"></script>
+ </head>
+ <body>
+ <h1>Referrer Policy: multiple Referrer-Policy headers are allowed</h1>
+ <p></p>
+
+ <pre id="received_message">Running...</pre>
+
+ <script>
+ var test = async_test("Image uses the last recognized Referrer-Policy header");
+ var urlPath = '/referrer-policy/generic/subresource/image.py?cache_destroyer=' + (new Date()).getTime();
+ var url = location.protocol + "//www1." + location.hostname + ":" + location.port +
+ urlPath;
+ queryImage(url, test.step_func(function(message) {
+ assert_equals(message.referrer, document.location.origin + "/");
+ test.done();
+ }), null, 'no-referrer', test);
+ </script>
+
+ <div id="log"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/referrer-policy/generic/multiple-headers.html.headers b/tests/wpt/web-platform-tests/referrer-policy/generic/multiple-headers.html.headers
new file mode 100644
index 00000000000..dd1dd853f20
--- /dev/null
+++ b/tests/wpt/web-platform-tests/referrer-policy/generic/multiple-headers.html.headers
@@ -0,0 +1,2 @@
+Referrer-Policy: no-referrer
+Referrer-Policy: origin
diff --git a/tests/wpt/web-platform-tests/resources/idlharness.js b/tests/wpt/web-platform-tests/resources/idlharness.js
index 00c59eda8ad..950df6fa34b 100644
--- a/tests/wpt/web-platform-tests/resources/idlharness.js
+++ b/tests/wpt/web-platform-tests/resources/idlharness.js
@@ -57,7 +57,6 @@ if (!('subsetTestByKey' in self)) {
}
/// Helpers ///
function constValue (cnt)
-//@{
{
if (cnt.type === "null") return null;
if (cnt.type === "NaN") return NaN;
@@ -66,9 +65,7 @@ function constValue (cnt)
return cnt.value;
}
-//@}
function minOverloadLength(overloads)
-//@{
{
// "The value of the Function object’s “length” property is
// a Number determined as follows:
@@ -87,9 +84,7 @@ function minOverloadLength(overloads)
.reduce(function(m, n) { return Math.min(m, n); });
}
-//@}
function throwOrReject(a_test, operation, fn, obj, args, message, cb)
-//@{
{
if (operation.idlType.generic !== "Promise") {
assert_throws(new TypeError(), function() {
@@ -108,9 +103,7 @@ function throwOrReject(a_test, operation, fn, obj, args, message, cb)
}
}
-//@}
function awaitNCallbacks(n, cb, ctx)
-//@{
{
var counter = 0;
return function() {
@@ -121,9 +114,7 @@ function awaitNCallbacks(n, cb, ctx)
};
}
-//@}
var fround =
-//@{
(function(){
if (Math.fround) return Math.fround;
@@ -133,12 +124,10 @@ var fround =
return arr[0];
};
})();
-//@}
/// IdlHarnessError ///
// Entry point
self.IdlHarnessError = function(message)
-//@{
{
/**
* Message to be printed as the error's toString invocation.
@@ -148,19 +137,15 @@ self.IdlHarnessError = function(message)
IdlHarnessError.prototype = Object.create(Error.prototype);
-//@}
IdlHarnessError.prototype.toString = function()
-//@{
{
return this.message;
};
-//@}
/// IdlArray ///
// Entry point
self.IdlArray = function()
-//@{
{
/**
* A map from strings to the corresponding named IdlObject, such as
@@ -210,17 +195,13 @@ self.IdlArray = function()
this["inheritance"] = {};
};
-//@}
IdlArray.prototype.add_idls = function(raw_idls, options)
-//@{
{
/** Entry point. See documentation at beginning of file. */
this.internal_add_idls(WebIDL2.parse(raw_idls), options);
};
-//@}
IdlArray.prototype.add_untested_idls = function(raw_idls, options)
-//@{
{
/** Entry point. See documentation at beginning of file. */
var parsed_idls = WebIDL2.parse(raw_idls);
@@ -228,9 +209,7 @@ IdlArray.prototype.add_untested_idls = function(raw_idls, options)
this.internal_add_idls(parsed_idls, options);
};
-//@}
IdlArray.prototype.mark_as_untested = function (parsed_idls)
-//@{
{
for (var i = 0; i < parsed_idls.length; i++) {
parsed_idls[i].untested = true;
@@ -241,21 +220,15 @@ IdlArray.prototype.mark_as_untested = function (parsed_idls)
}
}
};
-//@}
-//@}
IdlArray.prototype.is_excluded_by_options = function (name, options)
-//@{
{
return options &&
(options.except && options.except.includes(name)
|| options.only && !options.only.includes(name));
};
-//@}
-//@}
IdlArray.prototype.add_dependency_idls = function(raw_idls, options)
-//@{
{
const parsed_idls = WebIDL2.parse(raw_idls);
const new_options = { only: [] }
@@ -361,9 +334,7 @@ IdlArray.prototype.add_dependency_idls = function(raw_idls, options)
}
}
-//@}
IdlArray.prototype.internal_add_idls = function(parsed_idls, options)
-//@{
{
/**
* Internal helper called by add_idls() and add_untested_idls().
@@ -501,9 +472,7 @@ IdlArray.prototype.internal_add_idls = function(parsed_idls, options)
}.bind(this));
};
-//@}
IdlArray.prototype.add_objects = function(dict)
-//@{
{
/** Entry point. See documentation at beginning of file. */
for (var k in dict)
@@ -519,17 +488,13 @@ IdlArray.prototype.add_objects = function(dict)
}
};
-//@}
IdlArray.prototype.prevent_multiple_testing = function(name)
-//@{
{
/** Entry point. See documentation at beginning of file. */
this.members[name].prevent_multiple_testing = true;
};
-//@}
IdlArray.prototype.recursively_get_implements = function(interface_name)
-//@{
{
/**
* Helper function for test(). Returns an array of things that implement
@@ -557,9 +522,7 @@ IdlArray.prototype.recursively_get_implements = function(interface_name)
return ret;
};
-//@}
IdlArray.prototype.recursively_get_includes = function(interface_name)
-//@{
{
/**
* Helper function for test(). Returns an array of things that implement
@@ -587,9 +550,7 @@ IdlArray.prototype.recursively_get_includes = function(interface_name)
return ret;
};
-//@}
IdlArray.prototype.is_json_type = function(type)
-//@{
{
/**
* Checks whether type is a JSON type as per
@@ -754,14 +715,12 @@ function exposed_in(globals) {
throw new IdlHarnessError("Unexpected global object");
}
-//@}
/**
* Asserts that the given error message is thrown for the given function.
* @param {string|IdlHarnessError} error Expected Error message.
* @param {Function} idlArrayFunc Function operating on an IdlArray that should throw.
*/
IdlArray.prototype.assert_throws = function(error, idlArrayFunc)
-//@{
{
try {
idlArrayFunc.call(this, this);
@@ -781,9 +740,7 @@ IdlArray.prototype.assert_throws = function(error, idlArrayFunc)
throw new IdlHarnessError(`${idlArrayFunc} did not throw the expected IdlHarnessError`);
}
-//@}
IdlArray.prototype.test = function()
-//@{
{
/** Entry point. See documentation at beginning of file. */
@@ -872,9 +829,7 @@ IdlArray.prototype.test = function()
}
};
-//@}
IdlArray.prototype.collapse_partials = function()
-//@{
{
const testedPartials = new Map();
this.partials.forEach(function(parsed_idl)
@@ -955,9 +910,7 @@ IdlArray.prototype.collapse_partials = function()
this.partials = [];
}
-//@}
IdlArray.prototype.assert_type_is = function(value, type)
-//@{
{
if (type.idlType in this.members
&& this.members[type.idlType] instanceof IdlTypedef) {
@@ -1176,12 +1129,10 @@ IdlArray.prototype.assert_type_is = function(value, type)
throw new IdlHarnessError("Type " + type + " isn't an interface or dictionary");
}
};
-//@}
/// IdlObject ///
function IdlObject() {}
IdlObject.prototype.test = function()
-//@{
{
/**
* By default, this does nothing, so no actual tests are run for IdlObjects
@@ -1189,9 +1140,7 @@ IdlObject.prototype.test = function()
*/
};
-//@}
IdlObject.prototype.has_extended_attribute = function(name)
-//@{
{
/**
* This is only meaningful for things that support extended attributes,
@@ -1203,12 +1152,10 @@ IdlObject.prototype.has_extended_attribute = function(name)
});
};
-//@}
/// IdlDictionary ///
// Used for IdlArray.prototype.assert_type_is
function IdlDictionary(obj)
-//@{
{
/**
* obj is an object produced by the WebIDLParser.js "dictionary"
@@ -1231,7 +1178,6 @@ function IdlDictionary(obj)
this.base = obj.inheritance;
}
-//@}
IdlDictionary.prototype = Object.create(IdlObject.prototype);
IdlDictionary.prototype.get_inheritance_stack = function() {
@@ -1240,7 +1186,6 @@ IdlDictionary.prototype.get_inheritance_stack = function() {
/// IdlInterface ///
function IdlInterface(obj, is_callback, is_mixin)
-//@{
{
/**
* obj is an object produced by the WebIDLParser.js "interface" production.
@@ -1279,30 +1224,23 @@ function IdlInterface(obj, is_callback, is_mixin)
this._is_callback = is_callback;
this._is_mixin = is_mixin;
}
-//@}
IdlInterface.prototype = Object.create(IdlObject.prototype);
IdlInterface.prototype.is_callback = function()
-//@{
{
return this._is_callback;
};
-//@}
IdlInterface.prototype.is_mixin = function()
-//@{
{
return this._is_mixin;
};
-//@}
IdlInterface.prototype.has_constants = function()
-//@{
{
return this.members.some(function(member) {
return member.type === "const";
});
};
-//@}
IdlInterface.prototype.get_unscopables = function()
{
@@ -1312,13 +1250,11 @@ IdlInterface.prototype.get_unscopables = function()
};
IdlInterface.prototype.is_global = function()
-//@{
{
return this.extAttrs.some(function(attribute) {
return attribute.name === "Global";
});
};
-//@}
IdlInterface.prototype.has_to_json_regular_operation = function() {
return this.members.some(function(m) {
@@ -1446,7 +1382,6 @@ function _traverse_inherited_and_consequential_interfaces(stack, callback) {
}
IdlInterface.prototype.test = function()
-//@{
{
if (this.has_extended_attribute("NoInterfaceObject") || this.is_mixin())
{
@@ -1478,10 +1413,8 @@ IdlInterface.prototype.test = function()
// interface are still tested.
this.test_members();
};
-//@}
IdlInterface.prototype.test_self = function()
-//@{
{
subsetTestByKey(this.name, test, function()
{
@@ -1919,9 +1852,7 @@ IdlInterface.prototype.test_self = function()
}.bind(this), this.name + ' interface: existence and properties of interface prototype object\'s @@unscopables property');
};
-//@}
IdlInterface.prototype.test_immutable_prototype = function(type, obj)
-//@{
{
if (typeof Object.setPrototypeOf !== "function") {
return;
@@ -2023,9 +1954,7 @@ IdlInterface.prototype.test_immutable_prototype = function(type, obj)
"should return true");
};
-//@}
IdlInterface.prototype.test_member_const = function(member)
-//@{
{
if (!this.has_constants()) {
throw new IdlHarnessError("Internal error: test_member_const called without any constants");
@@ -2084,9 +2013,7 @@ IdlInterface.prototype.test_member_const = function(member)
};
-//@}
IdlInterface.prototype.test_member_attribute = function(member)
-//@{
{
if (!shouldRunSubTest(this.name)) {
return;
@@ -2179,9 +2106,7 @@ IdlInterface.prototype.test_member_attribute = function(member)
}.bind(this));
};
-//@}
IdlInterface.prototype.test_member_operation = function(member)
-//@{
{
if (!shouldRunSubTest(this.name)) {
return;
@@ -2274,9 +2199,7 @@ IdlInterface.prototype.do_member_unscopable_asserts = function(member)
this.name + '.prototype[Symbol.unscopables].' + prop + ' must have the value `true`');
};
-//@}
IdlInterface.prototype.do_member_operation_asserts = function(memberHolderObject, member, a_test)
-//@{
{
var done = a_test.done.bind(a_test);
var operationUnforgeable = member.isUnforgeable;
@@ -2343,9 +2266,7 @@ IdlInterface.prototype.do_member_operation_asserts = function(memberHolderObject
}
}
-//@}
IdlInterface.prototype.add_iterable_members = function(member)
-//@{
{
this.members.push(new IdlInterfaceMember(
{ type: "operation", name: "entries", idlType: "iterator", arguments: []}));
@@ -2385,9 +2306,7 @@ IdlInterface.prototype.test_to_json_operation = function(memberHolderObject, mem
}
};
-//@}
IdlInterface.prototype.test_member_iterable = function(member)
-//@{
{
var interfaceName = this.name;
var isPairIterator = member.idlType.length === 2;
@@ -2413,9 +2332,7 @@ IdlInterface.prototype.test_member_iterable = function(member)
}
};
-//@}
IdlInterface.prototype.test_member_stringifier = function(member)
-//@{
{
subsetTestByKey(this.name, test, function()
{
@@ -2477,9 +2394,7 @@ IdlInterface.prototype.test_member_stringifier = function(member)
}.bind(this), this.name + " interface: stringifier");
};
-//@}
IdlInterface.prototype.test_members = function()
-//@{
{
for (var i = 0; i < this.members.length; i++)
{
@@ -2556,9 +2471,7 @@ IdlInterface.prototype.test_members = function()
}
};
-//@}
IdlInterface.prototype.test_object = function(desc)
-//@{
{
var obj, exception = null;
try
@@ -2593,9 +2506,7 @@ IdlInterface.prototype.test_object = function(desc)
}
};
-//@}
IdlInterface.prototype.test_primary_interface_of = function(desc, obj, exception, expected_typeof)
-//@{
{
// Only the object itself, not its members, are tested here, so if the
// interface is untested, there is nothing to do.
@@ -2657,9 +2568,7 @@ IdlInterface.prototype.test_primary_interface_of = function(desc, obj, exception
}.bind(this), "Stringification of " + desc);
};
-//@}
IdlInterface.prototype.test_interface_of = function(desc, obj, exception, expected_typeof)
-//@{
{
// TODO: Indexed and named properties, more checks on interface members
this.already_tested = true;
@@ -2804,9 +2713,7 @@ IdlInterface.prototype.test_interface_of = function(desc, obj, exception, expect
}
};
-//@}
IdlInterface.prototype.has_stringifier = function()
-//@{
{
if (this.name === "DOMException") {
// toString is inherited from Error, so don't assume we have the
@@ -2823,9 +2730,7 @@ IdlInterface.prototype.has_stringifier = function()
return false;
};
-//@}
IdlInterface.prototype.do_interface_attribute_asserts = function(obj, member, a_test)
-//@{
{
// This function tests WebIDL as of 2015-01-27.
// TODO: Consider [Exposed].
@@ -2948,11 +2853,9 @@ IdlInterface.prototype.do_interface_attribute_asserts = function(obj, member, a_
Promise.all(pendingPromises).then(a_test.done.bind(a_test));
}
-//@}
/// IdlInterfaceMember ///
function IdlInterfaceMember(obj)
-//@{
{
/**
* obj is an object produced by the WebIDLParser.js "ifMember" production.
@@ -2972,7 +2875,6 @@ function IdlInterfaceMember(obj)
this.isUnscopable = this.has_extended_attribute("Unscopable");
}
-//@}
IdlInterfaceMember.prototype = Object.create(IdlObject.prototype);
IdlInterfaceMember.prototype.is_to_json_regular_operation = function() {
@@ -2981,7 +2883,6 @@ IdlInterfaceMember.prototype.is_to_json_regular_operation = function() {
/// Internal helper functions ///
function create_suitable_object(type)
-//@{
{
/**
* type is an object produced by the WebIDLParser.js "type" production. We
@@ -3017,12 +2918,10 @@ function create_suitable_object(type)
}
return null;
}
-//@}
/// IdlEnum ///
// Used for IdlArray.prototype.assert_type_is
function IdlEnum(obj)
-//@{
{
/**
* obj is an object produced by the WebIDLParser.js "dictionary"
@@ -3036,14 +2935,12 @@ function IdlEnum(obj)
this.values = obj.values;
}
-//@}
IdlEnum.prototype = Object.create(IdlObject.prototype);
/// IdlTypedef ///
// Used for IdlArray.prototype.assert_type_is
function IdlTypedef(obj)
-//@{
{
/**
* obj is an object produced by the WebIDLParser.js "typedef"
@@ -3057,13 +2954,11 @@ function IdlTypedef(obj)
this.idlType = obj.idlType;
}
-//@}
IdlTypedef.prototype = Object.create(IdlObject.prototype);
/// IdlNamespace ///
function IdlNamespace(obj)
-//@{
{
this.name = obj.name;
this.extAttrs = obj.extAttrs;
@@ -3074,12 +2969,10 @@ function IdlNamespace(obj)
/** An array of IdlInterfaceMembers. */
this.members = obj.members.map(m => new IdlInterfaceMember(m));
}
-//@}
IdlNamespace.prototype = Object.create(IdlObject.prototype);
IdlNamespace.prototype.do_member_operation_asserts = function (memberHolderObject, member, a_test)
-//@{
{
var desc = Object.getOwnPropertyDescriptor(memberHolderObject, member.name);
@@ -3108,10 +3001,8 @@ IdlNamespace.prototype.do_member_operation_asserts = function (memberHolderObjec
"operation has wrong .length");
a_test.done();
}
-//@}
IdlNamespace.prototype.test_member_operation = function(member)
-//@{
{
if (!shouldRunSubTest(this.name)) {
return;
@@ -3136,10 +3027,8 @@ IdlNamespace.prototype.test_member_operation = function(member)
this.do_member_operation_asserts(self[this.name], member, a_test);
}.bind(this));
};
-//@}
IdlNamespace.prototype.test_member_attribute = function (member)
-//@{
{
if (!shouldRunSubTest(this.name)) {
return;
@@ -3160,10 +3049,8 @@ IdlNamespace.prototype.test_member_attribute = function (member)
a_test.done();
}.bind(this));
};
-//@}
IdlNamespace.prototype.test = function ()
-//@{
{
/**
* TODO(lukebjerring): Assert:
@@ -3189,7 +3076,6 @@ IdlNamespace.prototype.test = function ()
}
};
};
-//@}
}());
diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/claim-worker-fetch.https.html b/tests/wpt/web-platform-tests/service-workers/service-worker/claim-worker-fetch.https.html
index c2c254ca65c..4b49a8152a4 100644
--- a/tests/wpt/web-platform-tests/service-workers/service-worker/claim-worker-fetch.https.html
+++ b/tests/wpt/web-platform-tests/service-workers/service-worker/claim-worker-fetch.https.html
@@ -15,20 +15,22 @@ promise_test(function(t) {
return runTest(t, 'resources/claim-nested-worker-fetch-iframe.html');
}, 'fetch() in nested Worker should be intercepted after the client is claimed.');
-var frame;
-var registration;
-
function runTest(t, iframe_url) {
var resource = 'simple.txt';
+ var frame;
+ var registration;
var worker;
var scope = 'resources/';
var script = 'resources/claim-worker.js';
- const test_result = Promise.resolve()
+ return Promise.resolve()
// Create the test iframe with a dedicated worker.
.then(() => with_iframe(iframe_url))
- .then(f => frame = f)
+ .then(f => {
+ t.add_cleanup(() => f.remove());
+ frame = f;
+ })
// Check the controller and test with fetch in the worker.
.then(() => assert_equals(frame.contentWindow.navigator.controller,
@@ -40,7 +42,10 @@ function runTest(t, iframe_url) {
'fetch() should not be intercepted.'))
// Register a service worker.
.then(() => service_worker_unregister_and_register(t, script, scope))
- .then(r => worker = r.installing)
+ .then(r => {
+ t.add_cleanup(() => r.unregister());
+ worker = r.installing;
+ })
.then(() => wait_for_state(t, worker, 'activated'))
// Let the service worker claim the iframe and the worker.
@@ -69,18 +74,6 @@ function runTest(t, iframe_url) {
assert_equals(response_text,
'Intercepted!',
'fetch() in the worker should be intercepted.'));
-
- // Cleanup this testcase.
- return Promise.resolve()
- .then(cleanup, cleanup)
- .then(() => { return test_result; });
-}
-
-const cleanup = async () => {
- if (registration)
- await registration.unregister();
- if (frame)
- frame.remove();
}
</script>
diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/import-module-scripts.https.html b/tests/wpt/web-platform-tests/service-workers/service-worker/import-module-scripts.https.html
new file mode 100644
index 00000000000..e82911a1bd0
--- /dev/null
+++ b/tests/wpt/web-platform-tests/service-workers/service-worker/import-module-scripts.https.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Tests for module import: ServiceWorker</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="resources/test-helpers.sub.js"></script>
+<script src="/workers/modules/resources/import-test-cases.js"></script>
+<body>
+<script>
+function import_test(testCase) {
+ promise_test(async t => {
+ const msgPromise = new Promise(resolve => {
+ navigator.serviceWorker.onmessage = resolve;
+ });
+ await service_worker_unregister(t, testCase.scriptURL);
+ const registration = await navigator.serviceWorker.register(
+ testCase.scriptURL,
+ { scope: testCase.scriptURL, type: 'module' });
+ registration.installing.postMessage(
+ 'Send message for tests from main script.');
+ const msgEvent = await msgPromise;
+ assert_array_equals(msgEvent.data, testCase.expectation);
+ }, testCase.description);
+}
+
+testCases.forEach(import_test);
+</script>
+</body>
diff --git a/tests/wpt/web-platform-tests/shadow-dom/slots-outside-shadow-dom.html b/tests/wpt/web-platform-tests/shadow-dom/slots-outside-shadow-dom.html
new file mode 100644
index 00000000000..a6fa2b27f76
--- /dev/null
+++ b/tests/wpt/web-platform-tests/shadow-dom/slots-outside-shadow-dom.html
@@ -0,0 +1,16 @@
+<!doctype html>
+<meta charset=utf-8>
+<title></title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<div id="host1"><slot>foo</slot></div>
+<script>
+
+test(() => {
+ var host1 = document.getElementById("host1");
+ var sr = host1.attachShadow({mode: "open"});
+ sr.innerHTML = "<slot></slot>";
+ assert_array_equals(sr.firstChild.assignedNodes({ flatten: true }), [host1.firstChild]);
+}, "Light DOM slot element should be in flattened assignedNodes");
+
+</script>
diff --git a/tests/wpt/web-platform-tests/speech-api/SpeechSynthesisUtterance-basics.https.html b/tests/wpt/web-platform-tests/speech-api/SpeechSynthesisUtterance-basics.https.html
index 9a90f086ac4..2fd394150e9 100644
--- a/tests/wpt/web-platform-tests/speech-api/SpeechSynthesisUtterance-basics.https.html
+++ b/tests/wpt/web-platform-tests/speech-api/SpeechSynthesisUtterance-basics.https.html
@@ -31,6 +31,17 @@ test(function() {
}, 'new SpeechSynthesisUtterance("hello") text and defaults');
test(function() {
+ const utt = new SpeechSynthesisUtterance(null);
+ assert_equals(utt.text, 'null');
+}, 'new SpeechSynthesisUtterance(null)');
+
+test(function() {
+ const utt = new SpeechSynthesisUtterance(undefined);
+ // See https://github.com/w3c/speech-api/pull/48.
+ assert_equals(utt.text, '');
+}, 'new SpeechSynthesisUtterance(undefined)');
+
+test(function() {
const utt = new SpeechSynthesisUtterance();
utt.text = 'word';
assert_equals(utt.text, 'word');
diff --git a/tests/wpt/web-platform-tests/tools/ci/ci_lint.sh b/tests/wpt/web-platform-tests/tools/ci/ci_lint.sh
index 46b317e1a19..aae38e5c769 100755
--- a/tests/wpt/web-platform-tests/tools/ci/ci_lint.sh
+++ b/tests/wpt/web-platform-tests/tools/ci/ci_lint.sh
@@ -6,4 +6,4 @@ cd $WPT_ROOT
mkdir -p ~/meta
./wpt manifest -p ~/meta/MANIFEST.json
-./wpt lint
+./wpt lint --all
diff --git a/tests/wpt/web-platform-tests/tools/ci/ci_wptrunner_infrastructure.sh b/tests/wpt/web-platform-tests/tools/ci/ci_wptrunner_infrastructure.sh
index c32c9438703..3147164ac88 100755
--- a/tests/wpt/web-platform-tests/tools/ci/ci_wptrunner_infrastructure.sh
+++ b/tests/wpt/web-platform-tests/tools/ci/ci_wptrunner_infrastructure.sh
@@ -18,14 +18,14 @@ test_infrastructure() {
}
main() {
- PRODUCTS=( "firefox" "chrome" "chrome_webdriver" )
+ PRODUCTS=( "firefox" "chrome" )
for PRODUCT in "${PRODUCTS[@]}"; do
if [ "$PRODUCT" != "firefox" ]; then
# Firefox is expected to work using pref settings for DNS
# Don't adjust the hostnames in that case to ensure this keeps working
hosts_fixup
fi
- if [[ "$PRODUCT" == "chrome"* ]]; then
+ if [[ "$PRODUCT" == "chrome" ]]; then
install_chrome unstable
test_infrastructure "--binary=$(which google-chrome-unstable)"
else
diff --git a/tests/wpt/web-platform-tests/tools/wpt/browser.py b/tests/wpt/web-platform-tests/tools/wpt/browser.py
index 052ec66a091..3b3074a9856 100644
--- a/tests/wpt/web-platform-tests/tools/wpt/browser.py
+++ b/tests/wpt/web-platform-tests/tools/wpt/browser.py
@@ -499,13 +499,6 @@ class ChromeAndroid(Browser):
def version(self, binary):
return None
-class ChromeWebDriver(Chrome):
- """Chrome-specific interface for chrome without using selenium.
-
- Includes webdriver installation.
- """
- product = "chrome_webdriver"
-
class Opera(Browser):
"""Opera-specific interface.
diff --git a/tests/wpt/web-platform-tests/tools/wpt/run.py b/tests/wpt/web-platform-tests/tools/wpt/run.py
index d08b0f93807..d9a44fd3711 100644
--- a/tests/wpt/web-platform-tests/tools/wpt/run.py
+++ b/tests/wpt/web-platform-tests/tools/wpt/run.py
@@ -292,11 +292,6 @@ class ChromeAndroid(BrowserSetup):
raise WptrunError("Unable to locate or install chromedriver binary")
-class ChromeWebDriver(Chrome):
- name = "chrome_webdriver"
- browser_cls = browser.ChromeWebDriver
-
-
class Opera(BrowserSetup):
name = "opera"
browser_cls = browser.Opera
@@ -435,7 +430,6 @@ product_setup = {
"firefox": Firefox,
"chrome": Chrome,
"chrome_android": ChromeAndroid,
- "chrome_webdriver": ChromeWebDriver,
"edge": Edge,
"edge_webdriver": EdgeWebDriver,
"ie": InternetExplorer,
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/__init__.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/__init__.py
index 08949f79483..9fbbec4d585 100644
--- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/__init__.py
+++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/__init__.py
@@ -24,7 +24,6 @@ module global scope.
product_list = ["chrome",
"chrome_android",
- "chrome_webdriver",
"edge",
"edge_webdriver",
"fennec",
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/chrome.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/chrome.py
index d41df8dec0e..d7c21cddfd6 100644
--- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/chrome.py
+++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/chrome.py
@@ -1,16 +1,16 @@
from .base import Browser, ExecutorBrowser, require_arg
from ..webdriver_server import ChromeDriverServer
from ..executors import executor_kwargs as base_executor_kwargs
-from ..executors.executorselenium import (SeleniumTestharnessExecutor, # noqa: F401
- SeleniumRefTestExecutor) # noqa: F401
+from ..executors.executorwebdriver import (WebDriverTestharnessExecutor, # noqa: F401
+ WebDriverRefTestExecutor) # noqa: F401
from ..executors.executorchrome import ChromeDriverWdspecExecutor # noqa: F401
__wptrunner__ = {"product": "chrome",
"check_args": "check_args",
"browser": "ChromeBrowser",
- "executor": {"testharness": "SeleniumTestharnessExecutor",
- "reftest": "SeleniumRefTestExecutor",
+ "executor": {"testharness": "WebDriverTestharnessExecutor",
+ "reftest": "WebDriverRefTestExecutor",
"wdspec": "ChromeDriverWdspecExecutor"},
"browser_kwargs": "browser_kwargs",
"executor_kwargs": "executor_kwargs",
@@ -30,34 +30,43 @@ def browser_kwargs(test_type, run_info_data, config, **kwargs):
def executor_kwargs(test_type, server_config, cache_manager, run_info_data,
**kwargs):
- from selenium.webdriver import DesiredCapabilities
-
executor_kwargs = base_executor_kwargs(test_type, server_config,
cache_manager, run_info_data,
**kwargs)
executor_kwargs["close_after_done"] = True
- capabilities = dict(DesiredCapabilities.CHROME.items())
- capabilities.setdefault("goog:chromeOptions", {})["prefs"] = {
- "profile": {
- "default_content_setting_values": {
- "popups": 1
- }
+
+ capabilities = {
+ "browserName": "chrome",
+ "platform": "ANY",
+ "version": "",
+ "goog:chromeOptions": {
+ "prefs": {
+ "profile": {
+ "default_content_setting_values": {
+ "popups": 1
+ }
+ }
+ },
+ "w3c": True
}
}
+
for (kwarg, capability) in [("binary", "binary"), ("binary_args", "args")]:
if kwargs[kwarg] is not None:
capabilities["goog:chromeOptions"][capability] = kwargs[kwarg]
+
if kwargs["headless"]:
if "args" not in capabilities["goog:chromeOptions"]:
capabilities["goog:chromeOptions"]["args"] = []
if "--headless" not in capabilities["goog:chromeOptions"]["args"]:
capabilities["goog:chromeOptions"]["args"].append("--headless")
+
if test_type == "testharness":
capabilities["goog:chromeOptions"]["useAutomationExtension"] = False
capabilities["goog:chromeOptions"]["excludeSwitches"] = ["enable-automation"]
- if test_type == "wdspec":
- capabilities["goog:chromeOptions"]["w3c"] = True
+
executor_kwargs["capabilities"] = capabilities
+
return executor_kwargs
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/chrome_webdriver.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/chrome_webdriver.py
deleted file mode 100644
index 2ee8ec41ed6..00000000000
--- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/chrome_webdriver.py
+++ /dev/null
@@ -1,56 +0,0 @@
-from .base import inherit
-from . import chrome
-
-from ..executors import executor_kwargs as base_executor_kwargs
-from ..executors.executorwebdriver import (WebDriverTestharnessExecutor, # noqa: F401
- WebDriverRefTestExecutor) # noqa: F401
-
-
-inherit(chrome, globals(), "chrome_webdriver")
-
-# __wptrunner__ magically appears from inherit, F821 is undefined name
-__wptrunner__["executor_kwargs"] = "executor_kwargs" # noqa: F821
-__wptrunner__["executor"]["testharness"] = "WebDriverTestharnessExecutor" # noqa: F821
-__wptrunner__["executor"]["reftest"] = "WebDriverRefTestExecutor" # noqa: F821
-
-
-def executor_kwargs(test_type, server_config, cache_manager, run_info_data,
- **kwargs):
- executor_kwargs = base_executor_kwargs(test_type, server_config,
- cache_manager, run_info_data,
- **kwargs)
- executor_kwargs["close_after_done"] = True
-
- capabilities = {
- "browserName": "chrome",
- "platform": "ANY",
- "version": "",
- "goog:chromeOptions": {
- "prefs": {
- "profile": {
- "default_content_setting_values": {
- "popups": 1
- }
- }
- },
- "w3c": True
- }
- }
-
- for (kwarg, capability) in [("binary", "binary"), ("binary_args", "args")]:
- if kwargs[kwarg] is not None:
- capabilities["goog:chromeOptions"][capability] = kwargs[kwarg]
-
- if kwargs["headless"]:
- if "args" not in capabilities["goog:chromeOptions"]:
- capabilities["goog:chromeOptions"]["args"] = []
- if "--headless" not in capabilities["goog:chromeOptions"]["args"]:
- capabilities["goog:chromeOptions"]["args"].append("--headless")
-
- if test_type == "testharness":
- capabilities["goog:chromeOptions"]["useAutomationExtension"] = False
- capabilities["goog:chromeOptions"]["excludeSwitches"] = ["enable-automation"]
-
- executor_kwargs["capabilities"] = capabilities
-
- return executor_kwargs
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorselenium.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorselenium.py
index 0675461d5d8..0792774d65c 100644
--- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorselenium.py
+++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorselenium.py
@@ -226,8 +226,12 @@ class SeleniumRun(object):
flag = self.result_flag.wait(timeout + 2 * extra_timeout)
if self.result is None:
- assert not flag
- self.result = False, ("EXTERNAL-TIMEOUT", None)
+ if flag:
+ # flag is True unless we timeout; this *shouldn't* happen, but
+ # it can if self._run fails to set self.result due to raising
+ self.result = False, ("INTERNAL-ERROR", "self._run didn't set a result")
+ else:
+ self.result = False, ("EXTERNAL-TIMEOUT", None)
return self.result
@@ -239,7 +243,7 @@ class SeleniumRun(object):
except (socket.timeout, exceptions.ErrorInResponseException):
self.result = False, ("CRASH", None)
except Exception as e:
- message = getattr(e, "message", "")
+ message = str(getattr(e, "message", ""))
if message:
message += "\n"
message += traceback.format_exc(e)
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorwebdriver.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorwebdriver.py
index 6dde7191ec6..be6ed8d9d07 100644
--- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorwebdriver.py
+++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorwebdriver.py
@@ -228,8 +228,12 @@ class WebDriverRun(object):
flag = self.result_flag.wait(timeout + 2 * extra_timeout)
if self.result is None:
- assert not flag
- self.result = False, ("EXTERNAL-TIMEOUT", None)
+ if flag:
+ # flag is True unless we timeout; this *shouldn't* happen, but
+ # it can if self._run fails to set self.result due to raising
+ self.result = False, ("INTERNAL-ERROR", "self._run didn't set a result")
+ else:
+ self.result = False, ("EXTERNAL-TIMEOUT", None)
return self.result
@@ -247,11 +251,11 @@ class WebDriverRun(object):
# workaround for https://bugs.chromium.org/p/chromedriver/issues/detail?id=2001
self.result = False, ("EXTERNAL-TIMEOUT", None)
else:
- message = getattr(e, "message", "")
+ message = str(getattr(e, "message", ""))
if message:
message += "\n"
message += traceback.format_exc(e)
- self.result = False, ("ERROR", message)
+ self.result = False, ("INTERNAL-ERROR", message)
finally:
self.result_flag.set()
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/testrunner.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/testrunner.py
index 353e2ada1eb..931a7822d0b 100644
--- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/testrunner.py
+++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/testrunner.py
@@ -9,6 +9,8 @@ from multiprocessing import Process, current_process, Queue
from mozlog import structuredlog
+import wptlogging
+
# Special value used as a sentinal in various commands
Stop = object()
@@ -40,12 +42,13 @@ for level_name in structuredlog.log_levels:
class TestRunner(object):
- def __init__(self, command_queue, result_queue, executor):
+ def __init__(self, logger, command_queue, result_queue, executor):
"""Class implementing the main loop for running tests.
This class delegates the job of actually running a test to the executor
that is passed in.
+ :param logger: Structured logger
:param command_queue: subprocess.Queue used to send commands to the
process
:param result_queue: subprocess.Queue used to send results to the
@@ -57,7 +60,7 @@ class TestRunner(object):
self.executor = executor
self.name = current_process().name
- self.logger = MessageLogger(self.send_message)
+ self.logger = logger
def __enter__(self):
return self
@@ -117,30 +120,31 @@ class TestRunner(object):
def start_runner(runner_command_queue, runner_result_queue,
executor_cls, executor_kwargs,
executor_browser_cls, executor_browser_kwargs,
- stop_flag):
+ capture_stdio, stop_flag):
"""Launch a TestRunner in a new process"""
- def log(level, msg):
- runner_result_queue.put(("log", (level, {"message": msg})))
+
+ def send_message(command, *args):
+ runner_result_queue.put((command, args))
def handle_error(e):
- log("critical", traceback.format_exc())
+ logger.critical(traceback.format_exc())
stop_flag.set()
- try:
- browser = executor_browser_cls(**executor_browser_kwargs)
- executor = executor_cls(browser, **executor_kwargs)
- with TestRunner(runner_command_queue, runner_result_queue, executor) as runner:
- try:
- runner.run()
- except KeyboardInterrupt:
- stop_flag.set()
- except Exception as e:
- handle_error(e)
- except Exception as e:
- handle_error(e)
- finally:
- runner_command_queue = None
- runner_result_queue = None
+ logger = MessageLogger(send_message)
+
+ with wptlogging.CaptureIO(logger, capture_stdio):
+ try:
+ browser = executor_browser_cls(**executor_browser_kwargs)
+ executor = executor_cls(browser, **executor_kwargs)
+ with TestRunner(logger, runner_command_queue, runner_result_queue, executor) as runner:
+ try:
+ runner.run()
+ except KeyboardInterrupt:
+ stop_flag.set()
+ except Exception as e:
+ handle_error(e)
+ except Exception as e:
+ handle_error(e)
manager_count = 0
@@ -255,7 +259,8 @@ RunnerManagerState = _RunnerManagerState()
class TestRunnerManager(threading.Thread):
def __init__(self, suite_name, test_queue, test_source_cls, browser_cls, browser_kwargs,
executor_cls, executor_kwargs, stop_flag, rerun=1, pause_after_test=False,
- pause_on_unexpected=False, restart_on_unexpected=True, debug_info=None):
+ pause_on_unexpected=False, restart_on_unexpected=True, debug_info=None,
+ capture_stdio=True):
"""Thread that owns a single TestRunner process and any processes required
by the TestRunner (e.g. the Firefox binary).
@@ -313,6 +318,8 @@ class TestRunnerManager(threading.Thread):
self.browser = None
+ self.capture_stdio = capture_stdio
+
def run(self):
"""Main loop for the TestManager.
@@ -479,6 +486,7 @@ class TestRunnerManager(threading.Thread):
self.executor_kwargs,
executor_browser_cls,
executor_browser_kwargs,
+ self.capture_stdio,
self.child_stop_flag)
self.test_runner_proc = Process(target=start_runner,
args=args,
@@ -737,7 +745,8 @@ class ManagerGroup(object):
pause_after_test=False,
pause_on_unexpected=False,
restart_on_unexpected=True,
- debug_info=None):
+ debug_info=None,
+ capture_stdio=True):
"""Main thread object that owns all the TestManager threads."""
self.suite_name = suite_name
self.size = size
@@ -752,6 +761,7 @@ class ManagerGroup(object):
self.restart_on_unexpected = restart_on_unexpected
self.debug_info = debug_info
self.rerun = rerun
+ self.capture_stdio = capture_stdio
self.pool = set()
# Event that is polled by threads so that they can gracefully exit in the face
@@ -788,7 +798,8 @@ class ManagerGroup(object):
self.pause_after_test,
self.pause_on_unexpected,
self.restart_on_unexpected,
- self.debug_info)
+ self.debug_info,
+ self.capture_stdio)
manager.start()
self.pool.add(manager)
self.wait()
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/tests/base.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/tests/base.py
index 84dc4f2e7f8..db518e7b672 100644
--- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/tests/base.py
+++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/tests/base.py
@@ -17,7 +17,7 @@ if "CURRENT_TOX_ENV" in os.environ:
current_tox_env_split = os.environ["CURRENT_TOX_ENV"].split("-")
tox_env_extra_browsers = {
- "chrome": {"chrome_android", "chrome_webdriver"},
+ "chrome": {"chrome_android"},
"edge": {"edge_webdriver"},
"safari": {"safari_webdriver"},
"servo": {"servodriver"},
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptrunner.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptrunner.py
index 6bd1db9927c..92ee9719753 100644
--- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptrunner.py
+++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptrunner.py
@@ -48,6 +48,7 @@ def get_loader(test_paths, product, debug=None, run_info_extras=None, **kwargs):
run_info = wpttest.get_run_info(kwargs["run_info"], product,
browser_version=kwargs.get("browser_version"),
browser_channel=kwargs.get("browser_channel"),
+ verify=kwargs.get("verify"),
debug=debug,
extras=run_info_extras)
@@ -265,7 +266,8 @@ def run_tests(config, test_paths, product, **kwargs):
kwargs["pause_after_test"],
kwargs["pause_on_unexpected"],
kwargs["restart_on_unexpected"],
- kwargs["debug_info"]) as manager_group:
+ kwargs["debug_info"],
+ not kwargs["no_capture_stdio"]) as manager_group:
try:
manager_group.run(test_type, run_tests)
except KeyboardInterrupt:
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wpttest.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wpttest.py
index 4086a89e4cf..8c2934e27eb 100644
--- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wpttest.py
+++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wpttest.py
@@ -70,6 +70,7 @@ class RunInfo(dict):
def __init__(self, metadata_root, product, debug,
browser_version=None,
browser_channel=None,
+ verify=None,
extras=None):
import mozinfo
self._update_mozinfo(metadata_root)
@@ -94,6 +95,10 @@ class RunInfo(dict):
self["browser_version"] = browser_version
if browser_channel:
self["browser_channel"] = browser_channel
+
+ self["verify"] = verify
+ if "wasm" not in self:
+ self["wasm"] = False
if extras is not None:
self.update(extras)
diff --git a/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicyFactory-createPolicy-createXYZTests.tentative.html b/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicyFactory-createPolicy-createXYZTests.tentative.html
index b20fcf2436e..a162d84cd82 100644
--- a/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicyFactory-createPolicy-createXYZTests.tentative.html
+++ b/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicyFactory-createPolicy-createXYZTests.tentative.html
@@ -7,8 +7,10 @@
//HTML tests
function createHTMLTest(policyName, policy, expectedHTML, t) {
let p = window.TrustedTypes.createPolicy(policyName, policy);
- assert_true(p.createHTML('whatever') instanceof TrustedHTML);
- assert_equals(p.createHTML('whatever') + "", expectedHTML);
+ let html = p.createHTML('whatever');
+ assert_true(html instanceof TrustedHTML);
+ assert_true(TrustedTypes.isHTML(html));
+ assert_equals(html + "", expectedHTML);
}
test(t => {
@@ -77,8 +79,10 @@
//Script tests
function createScriptTest(policyName, policy, expectedScript, t) {
let p = window.TrustedTypes.createPolicy(policyName, policy);
- assert_true(p.createScript('whatever') instanceof TrustedScript);
- assert_equals(p.createScript('whatever') + "", expectedScript);
+ let script = p.createScript('whatever');
+ assert_true(script instanceof TrustedScript);
+ assert_true(TrustedTypes.isScript(script));
+ assert_equals(script + "", expectedScript);
}
test(t => {
@@ -150,8 +154,10 @@
//ScriptURL tests
function createScriptURLTest(policyName, policy, expectedScriptURL, t) {
let p = window.TrustedTypes.createPolicy(policyName, policy);
- assert_true(p.createScriptURL(INPUTS.SCRIPTURL) instanceof TrustedScriptURL);
- assert_equals(p.createScriptURL(INPUTS.SCRIPTURL) + "", expectedScriptURL);
+ let scriptUrl = p.createScriptURL(INPUTS.SCRIPTURL);
+ assert_true(scriptUrl instanceof TrustedScriptURL);
+ assert_true(TrustedTypes.isScriptURL(scriptUrl));
+ assert_equals(scriptUrl + "", expectedScriptURL);
}
test(t => {
@@ -223,8 +229,10 @@
//URL tests
function createURLTest(policyName, policy, expectedURL, t) {
let p = window.TrustedTypes.createPolicy(policyName, policy);
- assert_true(p.createURL(INPUTS.URL) instanceof TrustedURL);
- assert_equals(p.createURL(INPUTS.URL) + "", expectedURL);
+ let url = p.createURL(INPUTS.URL);
+ assert_true(url instanceof TrustedURL);
+ assert_true(TrustedTypes.isURL(url));
+ assert_equals(url + "", expectedURL);
}
test(t => {
diff --git a/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicyFactory-isXXX.tentative.html b/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicyFactory-isXXX.tentative.html
new file mode 100644
index 00000000000..9b48fa7fede
--- /dev/null
+++ b/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicyFactory-isXXX.tentative.html
@@ -0,0 +1,118 @@
+<!DOCTYPE html>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="support/helper.sub.js"></script>
+
+<meta http-equiv="Content-Security-Policy" content="trusted-types">
+<body>
+<script>
+ // Policy settings for all tests
+ const noopPolicy = {
+ 'createHTML': (s) => s,
+ 'createScriptURL': (s) => s,
+ 'createURL': (s) => s,
+ 'createScript': (s) => s,
+ };
+
+ // isHTML tests
+ test(t => {
+ const p = TrustedTypes.createPolicy('html', noopPolicy);
+ let html = p.createHTML(INPUTS.HTML);
+
+ assert_true(TrustedTypes.isHTML(html));
+ let html2 = Object.create(html);
+
+ // instanceof can pass, but we rely on isHTML
+ assert_true(html2 instanceof TrustedHTML);
+ assert_false(TrustedTypes.isHTML(html2));
+
+ let html3 = Object.assign({}, html, {toString: () => 'fake'});
+
+ assert_false(TrustedTypes.isHTML(html3));
+ }, 'TrustedTypePolicyFactory.isHTML requires the object to be created via policy.');
+
+ // isScript tests
+ test(t => {
+ const p = TrustedTypes.createPolicy('script', noopPolicy);
+ let script = p.createScript(INPUTS.SCRIPT);
+
+ assert_true(TrustedTypes.isScript(script));
+ let script2 = Object.create(script);
+
+ // instanceof can pass, but we rely on isScript
+ assert_true(script2 instanceof TrustedScript);
+ assert_false(TrustedTypes.isScript(script2));
+
+ let script3 = Object.assign({}, script, {toString: () => 'fake'});
+
+ assert_false(TrustedTypes.isScript(script3));
+ }, 'TrustedTypePolicyFactory.isScript requires the object to be created via policy.');
+
+ // isScriptURL tests
+ test(t => {
+ const p = TrustedTypes.createPolicy('script_url', noopPolicy);
+ let script = p.createScriptURL(INPUTS.SCRIPTURL);
+
+ assert_true(TrustedTypes.isScriptURL(script));
+ let script2 = Object.create(script);
+
+ // instanceof can pass, but we rely on isScript
+ assert_true(script2 instanceof TrustedScriptURL);
+ assert_false(TrustedTypes.isScriptURL(script2));
+
+ let script3 = Object.assign({}, script, {toString: () => 'fake'});
+
+ assert_false(TrustedTypes.isScriptURL(script3));
+ }, 'TrustedTypePolicyFactory.isScriptURL requires the object to be created via policy.');
+
+ // isURL tests
+ test(t => {
+ const p = TrustedTypes.createPolicy('url', noopPolicy);
+ let url = p.createURL(INPUTS.URL);
+
+ assert_true(TrustedTypes.isURL(url));
+ let url2 = Object.create(url);
+
+ // instanceof can pass, but we rely on isScript
+ assert_true(url2 instanceof TrustedURL);
+ assert_false(TrustedTypes.isURL(url2));
+
+ let url3 = Object.assign({}, url, {toString: () => 'fake'});
+
+ assert_false(TrustedTypes.isURL(url3));
+ }, 'TrustedTypePolicyFactory.isURL requires the object to be created via policy.');
+
+ // Redefinition tests
+ // TODO(vogelheim): Implement TrustedTypes (& policy objects) as 'frozen'.
+/* test(t => {
+ assert_throws(new TypeError(), _ => {
+ TrustedTypes.isHTML = () => true;
+ });
+
+ assert_false(TrustedTypes.isHTML({}));
+ }, 'TrustedTypePolicyFactory.IsHTML cannot be redefined.');
+
+ test(t => {
+ assert_throws(new TypeError(), _ => {
+ TrustedTypes.isScript = () => true;
+ });
+
+ assert_false(TrustedTypes.isScript({}));
+ }, 'TrustedTypePolicyFactory.isScript cannot be redefined.');
+
+ test(t => {
+ assert_throws(new TypeError(), _ => {
+ TrustedTypes.isScriptURL = () => true;
+ });
+
+ assert_false(TrustedTypes.isScriptURL({}));
+ }, 'TrustedTypePolicyFactory.isScriptURL cannot be redefined.');
+
+ test(t => {
+ assert_throws(new TypeError(), _ => {
+ TrustedTypes.isURL = () => true;
+ });
+
+ assert_false(TrustedTypes.isURL({}));
+ }, 'TrustedTypePolicyFactory.isURL cannot be redefined.');*/
+</script>
diff --git a/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-Element-setAttribute.tentative.html b/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-Element-setAttribute.tentative.html
index 52e31708331..3553f2b0768 100644
--- a/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-Element-setAttribute.tentative.html
+++ b/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-Element-setAttribute.tentative.html
@@ -73,4 +73,14 @@
test(t => {
assert_element_accepts_non_trusted_type_explicit_set('a', 'rel', null, 'null');
}, "a.rel accepts null");
+
+ test(t => {
+ let el = document.createElement('iframe');
+
+ assert_throws(new TypeError(), _ => {
+ el.setAttribute('SrC', INPUTS.URL);
+ });
+
+ assert_equals(el.src, '');
+ }, "`Element.prototype.setAttribute.SrC = string` throws.");
</script>
diff --git a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-convolvernode-interface/convolver-setBuffer-already-has-value.html b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-convolvernode-interface/convolver-setBuffer-already-has-value.html
index c8dbeb941bc..ce2d5fcfe94 100644
--- a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-convolvernode-interface/convolver-setBuffer-already-has-value.html
+++ b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-convolvernode-interface/convolver-setBuffer-already-has-value.html
@@ -27,7 +27,7 @@
should(() => {
convolver.buffer = audioBuffer;
- }, 'Set buffer a second time').throw(DOMException, 'InvalidStateError');
+ }, 'Set buffer a second time').notThrow();
should(() => {
convolver.buffer = null;
@@ -39,8 +39,8 @@
should(() => {
convolver.buffer = audioBuffer;
- }, 'Set buffer to non-null to verify to throw an error')
- .throw(DOMException, 'InvalidStateError');
+ }, 'Set buffer to non-null to verify it is set')
+ .notThrow();
task.done();
});
diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/align_middle-ref.html b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/align_center-ref.html
index fab75c8e0a5..3663d925d95 100644
--- a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/align_middle-ref.html
+++ b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/align_center-ref.html
@@ -1,5 +1,5 @@
<!DOCTYPE html>
-<title>Reference for WebVTT rendering, align:middle</title>
+<title>Reference for WebVTT rendering, align:center</title>
<style>
html { overflow:hidden }
body { margin:0 }
diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/align_middle.html b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/align_center.html
index 43732a549b8..9a339a64bad 100644
--- a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/align_middle.html
+++ b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/align_center.html
@@ -1,7 +1,7 @@
<!DOCTYPE html>
<html class="reftest-wait">
-<title>WebVTT rendering, align:middle</title>
-<link rel="match" href="align_middle-ref.html">
+<title>WebVTT rendering, align:center</title>
+<link rel="match" href="align_center-ref.html">
<style>
html { overflow:hidden }
body { margin:0 }
@@ -14,7 +14,7 @@ body { margin:0 }
<video width="320" height="180" autoplay onplaying="this.onplaying = null; this.pause(); takeScreenshot();">
<source src="/media/white.webm" type="video/webm">
<source src="/media/white.mp4" type="video/mp4">
- <track src="support/align_middle.vtt">
+ <track src="support/align_center.vtt">
<script>
document.getElementsByTagName('track')[0].track.mode = 'showing';
</script>
diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/align_middle_position_50-ref.html b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/align_center_position_50-ref.html
index 88718e5ba55..65c7dee75aa 100644
--- a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/align_middle_position_50-ref.html
+++ b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/align_center_position_50-ref.html
@@ -1,5 +1,5 @@
<!DOCTYPE html>
-<title>Reference for WebVTT rendering, align:middle, position:50%</title>
+<title>Reference for WebVTT rendering, align:center, position:50%</title>
<style>
html { overflow:hidden }
body { margin:0 }
diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/align_middle_position_50.html b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/align_center_position_50.html
index 6be073fff84..40cc8c4bbe1 100644
--- a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/align_middle_position_50.html
+++ b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/align_center_position_50.html
@@ -1,7 +1,7 @@
<!DOCTYPE html>
<html class="reftest-wait">
-<title>WebVTT rendering, align:middle, position:50%</title>
-<link rel="match" href="align_middle_position_50-ref.html">
+<title>WebVTT rendering, align:center, position:50%</title>
+<link rel="match" href="align_center_position_50-ref.html">
<style>
html { overflow:hidden }
body { margin:0 }
@@ -14,7 +14,7 @@ body { margin:0 }
<video width="320" height="180" autoplay onplaying="this.onplaying = null; this.pause(); takeScreenshot();">
<source src="/media/white.webm" type="video/webm">
<source src="/media/white.mp4" type="video/mp4">
- <track src="support/align_middle_position_50.vtt">
+ <track src="support/align_center_position_50.vtt">
<script>
document.getElementsByTagName('track')[0].track.mode = 'showing';
</script>
diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/align_middle_position_gt_50-ref.html b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/align_center_position_gt_50-ref.html
index b9b6d2936da..b8d30a73801 100644
--- a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/align_middle_position_gt_50-ref.html
+++ b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/align_center_position_gt_50-ref.html
@@ -1,5 +1,5 @@
<!DOCTYPE html>
-<title>Reference for WebVTT rendering, align:middle, position greater than 50%</title>
+<title>Reference for WebVTT rendering, align:center, position greater than 50%</title>
<style>
html { overflow:hidden }
body { margin:0 }
diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/align_middle_position_gt_50.html b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/align_center_position_gt_50.html
index 4f725f55572..05167743c0f 100644
--- a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/align_middle_position_gt_50.html
+++ b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/align_center_position_gt_50.html
@@ -1,7 +1,7 @@
<!DOCTYPE html>
<html class="reftest-wait">
-<title>WebVTT rendering, align:middle, position greater than 50%</title>
-<link rel="match" href="align_middle_position_gt_50-ref.html">
+<title>WebVTT rendering, align:center, position greater than 50%</title>
+<link rel="match" href="align_center_position_gt_50-ref.html">
<style>
html { overflow:hidden }
body { margin:0 }
@@ -14,7 +14,7 @@ body { margin:0 }
<video width="320" height="180" autoplay onplaying="this.onplaying = null; this.pause(); takeScreenshot();">
<source src="/media/white.webm" type="video/webm">
<source src="/media/white.mp4" type="video/mp4">
- <track src="support/align_middle_position_gt_50.vtt">
+ <track src="support/align_center_position_gt_50.vtt">
<script>
document.getElementsByTagName('track')[0].track.mode = 'showing';
</script>
diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/align_middle_position_lt_50-ref.html b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/align_center_position_lt_50-ref.html
index 9fa1f28ea89..37217da4972 100644
--- a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/align_middle_position_lt_50-ref.html
+++ b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/align_center_position_lt_50-ref.html
@@ -1,5 +1,5 @@
<!DOCTYPE html>
-<title>Reference for WebVTT rendering, align:middle, position less than 50%</title>
+<title>Reference for WebVTT rendering, align:center, position less than 50%</title>
<style>
html { overflow:hidden }
body { margin:0 }
diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/align_middle_position_lt_50.html b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/align_center_position_lt_50.html
index 7d09fd98896..32b3e3a6c4d 100644
--- a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/align_middle_position_lt_50.html
+++ b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/align_center_position_lt_50.html
@@ -1,7 +1,7 @@
<!DOCTYPE html>
<html class="reftest-wait">
-<title>WebVTT rendering, align:middle, position less than 50%</title>
-<link rel="match" href="align_middle_position_lt_50-ref.html">
+<title>WebVTT rendering, align:center, position less than 50%</title>
+<link rel="match" href="align_center_position_lt_50-ref.html">
<style>
html { overflow:hidden }
body { margin:0 }
@@ -14,7 +14,7 @@ body { margin:0 }
<video width="320" height="180" autoplay onplaying="this.onplaying = null; this.pause(); takeScreenshot();">
<source src="/media/white.webm" type="video/webm">
<source src="/media/white.mp4" type="video/mp4">
- <track src="support/align_middle_position_lt_50.vtt">
+ <track src="support/align_center_position_lt_50.vtt">
<script>
document.getElementsByTagName('track')[0].track.mode = 'showing';
</script>
diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/align_middle_position_lt_50_size_gt_maximum_size-ref.html b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/align_center_position_lt_50_size_gt_maximum_size-ref.html
index ddbdf1604de..7241376f825 100644
--- a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/align_middle_position_lt_50_size_gt_maximum_size-ref.html
+++ b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/align_center_position_lt_50_size_gt_maximum_size-ref.html
@@ -1,5 +1,5 @@
<!DOCTYPE html>
-<title>Reference for WebVTT rendering, align:middle, position less than 50%, size greater than maximum size</title>
+<title>Reference for WebVTT rendering, align:center, position less than 50%, size greater than maximum size</title>
<style>
html { overflow:hidden }
body { margin:0 }
diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/align_middle_position_lt_50_size_gt_maximum_size.html b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/align_center_position_lt_50_size_gt_maximum_size.html
index 590db24c5fe..2f62c4500ed 100644
--- a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/align_middle_position_lt_50_size_gt_maximum_size.html
+++ b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/align_center_position_lt_50_size_gt_maximum_size.html
@@ -1,7 +1,7 @@
<!DOCTYPE html>
<html class="reftest-wait">
-<title>WebVTT rendering, align:middle, position less than 50%, size greater than maximum size</title>
-<link rel="match" href="align_middle_position_lt_50_size_gt_maximum_size-ref.html">
+<title>WebVTT rendering, align:center, position less than 50%, size greater than maximum size</title>
+<link rel="match" href="align_center_position_lt_50_size_gt_maximum_size-ref.html">
<style>
html { overflow:hidden }
body { margin:0 }
@@ -14,7 +14,7 @@ body { margin:0 }
<video width="320" height="180" autoplay onplaying="this.onplaying = null; this.pause(); takeScreenshot();">
<source src="/media/white.webm" type="video/webm">
<source src="/media/white.mp4" type="video/mp4">
- <track src="support/align_middle_position_lt_50_size_gt_maximum_size.vtt">
+ <track src="support/align_center_position_lt_50_size_gt_maximum_size.vtt">
</video>
<script>
document.getElementsByTagName('track')[0].track.mode = 'showing';
diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/align_middle_wrapped-ref.html b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/align_center_wrapped-ref.html
index d9852d86004..a9e583d66f0 100644
--- a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/align_middle_wrapped-ref.html
+++ b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/align_center_wrapped-ref.html
@@ -1,5 +1,5 @@
<!DOCTYPE html>
-<title>Reference for WebVTT rendering, align:middle with long cues</title>
+<title>Reference for WebVTT rendering, align:center with long cues</title>
<style>
html { overflow:hidden }
body { margin:0 }
diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/align_middle_wrapped.html b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/align_center_wrapped.html
index 2ef93c4b01a..9292a8cc301 100644
--- a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/align_middle_wrapped.html
+++ b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/align_center_wrapped.html
@@ -1,7 +1,7 @@
<!DOCTYPE html>
<html class="reftest-wait">
-<title>WebVTT rendering, align:middle with long cues</title>
-<link rel="match" href="align_middle_wrapped-ref.html">
+<title>WebVTT rendering, align:center with long cues</title>
+<link rel="match" href="align_center_wrapped-ref.html">
<style>
html { overflow:hidden }
body { margin:0 }
@@ -14,7 +14,7 @@ body { margin:0 }
<video width="320" height="180" autoplay onplaying="this.onplaying = null; this.pause(); takeScreenshot();">
<source src="/media/white.webm" type="video/webm">
<source src="/media/white.mp4" type="video/mp4">
- <track src="support/align_middle_long.vtt">
+ <track src="support/align_center_long.vtt">
<script>
document.getElementsByTagName('track')[0].track.mode = 'showing';
</script>
diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/basic-ref.html b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/basic-ref.html
new file mode 100644
index 00000000000..ff90d4829c4
--- /dev/null
+++ b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/basic-ref.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html>
+<title>Reference for WebVTT rendering regions, default</title>
+<style>
+html { overflow:hidden }
+body { margin:0 }
+.video {
+ display: inline-block;
+ width: 320px;
+ height: 180px;
+ position: relative;
+ font-size: 9px;
+}
+.cue {
+ position: absolute;
+ bottom: 0;
+ left: 0;
+ right: 0;
+ text-align: center
+}
+.cue > span {
+ font-family: Ahem, sans-serif;
+ background: rgba(0,0,0,0.8);
+ color: green;
+}
+</style>
+<div class="video"><span class="cue"><span>This is a test subtitle</span></span></div>
diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/basic.html b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/basic.html
new file mode 100644
index 00000000000..4ffed9193b9
--- /dev/null
+++ b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/basic.html
@@ -0,0 +1,22 @@
+<!DOCTYPE html>
+<html class="reftest-wait">
+<title>WebVTT rendering regions, default</title>
+<link rel="match" href="basic-ref.html">
+<style>
+html { overflow:hidden }
+body { margin:0 }
+::cue {
+ font-family: Ahem, sans-serif;
+ color: green
+}
+</style>
+<script src="/common/reftest-wait.js"></script>
+<video width="320" height="180" autoplay onplaying="this.onplaying = null; this.pause(); takeScreenshot();">
+ <source src="../media/white.webm" type="video/webm">
+ <source src="../media/white.mp4" type="video/mp4">
+ <track src="support/basic.vtt">
+ <script>
+ document.getElementsByTagName('track')[0].track.mode = 'showing';
+ </script>
+</video>
+</html>
diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/regionanchor_x_50_percent-ref.html b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/regionanchor_x_50_percent-ref.html
new file mode 100644
index 00000000000..251a04687f9
--- /dev/null
+++ b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/regionanchor_x_50_percent-ref.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html>
+<title>Reference for WebVTT rendering regions, regionanchor x 50%</title>
+<style>
+html { overflow:hidden }
+body { margin:0 }
+.video {
+ display: inline-block;
+ width: 320px;
+ height: 180px;
+ position: relative;
+ font-size: 9px;
+}
+.cue {
+ position: absolute;
+ bottom: 0;
+ left: -50%;
+ right: 50%;
+ text-align: center
+}
+.cue > span {
+ font-family: Ahem, sans-serif;
+ background: rgba(0,0,0,0.8);
+ color: green;
+}
+</style>
+<div class="video"><span class="cue"><span>This is a test subtitle</span></span></div>
diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/regionanchor_x_50_percent.html b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/regionanchor_x_50_percent.html
new file mode 100644
index 00000000000..b9ef28212a4
--- /dev/null
+++ b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/regionanchor_x_50_percent.html
@@ -0,0 +1,22 @@
+<!DOCTYPE html>
+<html class="reftest-wait">
+<title>WebVTT rendering regions, regionanchor x 50%</title>
+<link rel="match" href="regionanchor_x_50_percent-ref.html">
+<style>
+html { overflow:hidden }
+body { margin:0 }
+::cue {
+ font-family: Ahem, sans-serif;
+ color: green
+}
+</style>
+<script src="/common/reftest-wait.js"></script>
+<video width="320" height="180" autoplay onplaying="this.onplaying = null; this.pause(); takeScreenshot();">
+ <source src="../media/white.webm" type="video/webm">
+ <source src="../media/white.mp4" type="video/mp4">
+ <track src="support/regionanchor_x_50_percent.vtt">
+ <script>
+ document.getElementsByTagName('track')[0].track.mode = 'showing';
+ </script>
+</video>
+</html>
diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/regionanchor_y_50_percent-ref.html b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/regionanchor_y_50_percent-ref.html
new file mode 100644
index 00000000000..db1031093c7
--- /dev/null
+++ b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/regionanchor_y_50_percent-ref.html
@@ -0,0 +1,6 @@
+<!DOCTYPE html>
+<title>Reference for WebVTT rendering regions, regionanchor y 50%</title>
+<style>
+html { overflow:hidden }
+body { margin:0 }
+</style> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/regionanchor_y_50_percent.html b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/regionanchor_y_50_percent.html
new file mode 100644
index 00000000000..5067d12e6f4
--- /dev/null
+++ b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/regionanchor_y_50_percent.html
@@ -0,0 +1,22 @@
+<!DOCTYPE html>
+<html class="reftest-wait">
+<title>WebVTT rendering regions, regionanchor y 50%</title>
+<link rel="match" href="regionanchor_y_50_percent-ref.html">
+<style>
+html { overflow:hidden }
+body { margin:0 }
+::cue {
+ font-family: Ahem, sans-serif;
+ color: green
+}
+</style>
+<script src="/common/reftest-wait.js"></script>
+<video width="320" height="180" autoplay onplaying="this.onplaying = null; this.pause(); takeScreenshot();">
+ <source src="../media/white.webm" type="video/webm">
+ <source src="../media/white.mp4" type="video/mp4">
+ <track src="support/regionanchor_y_50_percent.vtt">
+ <script>
+ document.getElementsByTagName('track')[0].track.mode = 'showing';
+ </script>
+</video>
+</html>
diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/scroll_up-ref.html b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/scroll_up-ref.html
new file mode 100644
index 00000000000..6a68c722e4d
--- /dev/null
+++ b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/scroll_up-ref.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html>
+<title>Reference for WebVTT rendering regions, scroll up</title>
+<style>
+html { overflow:hidden }
+body { margin:0 }
+.video {
+ display: inline-block;
+ width: 320px;
+ height: 180px;
+ position: relative;
+ font-size: 9px;
+}
+.cue {
+ position: absolute;
+ top: 0;
+ left: 0;
+ right: 0;
+ text-align: center
+}
+.cue > span {
+ font-family: Ahem, sans-serif;
+ background: rgba(0,0,0,0.8);
+ color: green;
+}
+</style>
+<div class="video"><span class="cue"><span>This is a second test subtitle<br/>This is a third test subtitle</span></span></div>
diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/scroll_up.html b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/scroll_up.html
new file mode 100644
index 00000000000..e1619af932a
--- /dev/null
+++ b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/scroll_up.html
@@ -0,0 +1,22 @@
+<!DOCTYPE html>
+<html class="reftest-wait">
+<title>WebVTT rendering regions, scroll up</title>
+<link rel="match" href="scroll_up-ref.html">
+<style>
+html { overflow:hidden }
+body { margin:0 }
+::cue {
+ font-family: Ahem, sans-serif;
+ color: green
+}
+</style>
+<script src="/common/reftest-wait.js"></script>
+<video width="320" height="180" autoplay onplaying="this.onplaying = null; this.pause(); takeScreenshotDelayed(3000);">
+ <source src="../media/white.webm" type="video/webm">
+ <source src="../media/white.mp4" type="video/mp4">
+ <track src="support/scroll_up.vtt">
+ <script>
+ document.getElementsByTagName('track')[0].track.mode = 'showing';
+ </script>
+</video>
+</html>
diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/single_line_top_left-ref.html b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/single_line_top_left-ref.html
new file mode 100644
index 00000000000..a183448cb1b
--- /dev/null
+++ b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/single_line_top_left-ref.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html>
+<title>Reference for WebVTT rendering regions, single line top left</title>
+<style>
+html { overflow:hidden }
+body { margin:0 }
+.video {
+ display: inline-block;
+ width: 320px;
+ height: 180px;
+ position: relative;
+ font-size: 9px;
+}
+.cue {
+ position: absolute;
+ top: 0;
+ left: 0;
+ right: 0;
+ text-align: left
+}
+.cue > span {
+ font-family: Ahem, sans-serif;
+ background: rgba(0,0,0,0.8);
+ color: green;
+}
+</style>
+<div class="video"><span class="cue"><span>This is a test subtitle</span></span></div>
diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/single_line_top_left.html b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/single_line_top_left.html
new file mode 100644
index 00000000000..c2edcb9f626
--- /dev/null
+++ b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/single_line_top_left.html
@@ -0,0 +1,22 @@
+<!DOCTYPE html>
+<html class="reftest-wait">
+<title>WebVTT rendering regions, single line top left</title>
+<link rel="match" href="single_line_top_left-ref.html">
+<style>
+html { overflow:hidden }
+body { margin:0 }
+::cue {
+ font-family: Ahem, sans-serif;
+ color: green
+}
+</style>
+<script src="/common/reftest-wait.js"></script>
+<video width="320" height="180" autoplay onplaying="this.onplaying = null; this.pause(); takeScreenshot();">
+ <source src="../media/white.webm" type="video/webm">
+ <source src="../media/white.mp4" type="video/mp4">
+ <track src="support/single_line_top_left.vtt">
+ <script>
+ document.getElementsByTagName('track')[0].track.mode = 'showing';
+ </script>
+</video>
+</html>
diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/support/basic.vtt b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/support/basic.vtt
new file mode 100644
index 00000000000..ed978274793
--- /dev/null
+++ b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/support/basic.vtt
@@ -0,0 +1,7 @@
+WEBVTT
+
+REGION
+id:1
+
+00:00:00.000 --> 00:00:05.000 region:1
+This is a test subtitle
diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/support/regionanchor_x_50_percent.vtt b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/support/regionanchor_x_50_percent.vtt
new file mode 100644
index 00000000000..eafea7fff94
--- /dev/null
+++ b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/support/regionanchor_x_50_percent.vtt
@@ -0,0 +1,8 @@
+WEBVTT
+
+REGION
+id:1
+regionanchor:50%,100%
+
+00:00:00.000 --> 00:00:05.000 region:1
+This is a test subtitle
diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/support/regionanchor_y_50_percent.vtt b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/support/regionanchor_y_50_percent.vtt
new file mode 100644
index 00000000000..d51ad26769b
--- /dev/null
+++ b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/support/regionanchor_y_50_percent.vtt
@@ -0,0 +1,8 @@
+WEBVTT
+
+REGION
+id:1
+regionanchor:0%,50%
+
+00:00:00.000 --> 00:00:05.000 region:1
+This is a test subtitle
diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/support/scroll_up.vtt b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/support/scroll_up.vtt
new file mode 100644
index 00000000000..0b88020d29f
--- /dev/null
+++ b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/support/scroll_up.vtt
@@ -0,0 +1,16 @@
+WEVTT
+
+REGION
+id:1
+lines:2
+regionanchor:0%,0%
+scroll:up
+
+00:00:00.000 --> 00:00:05.000 region:1
+This is a first test subtitle
+
+00:00:01.000 --> 00:00:05.000 region:1
+This is a second test subtitle
+
+00:00:01.000 --> 00:00:05.000 region:1
+This is a third test subtitle
diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/support/single_line_top_left.vtt b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/support/single_line_top_left.vtt
new file mode 100644
index 00000000000..efe9d8793ed
--- /dev/null
+++ b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/support/single_line_top_left.vtt
@@ -0,0 +1,10 @@
+WEBVTT
+
+REGION
+id:1
+viewportanchor:0%,0%
+regionanchor:0%,0%
+lines:1
+
+00:00:00.000 --> 00:00:05.000 region:1 align:left
+This is a test subtitle
diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/support/viewportanchor_x_50_percent.vtt b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/support/viewportanchor_x_50_percent.vtt
new file mode 100644
index 00000000000..afd9876c06d
--- /dev/null
+++ b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/support/viewportanchor_x_50_percent.vtt
@@ -0,0 +1,8 @@
+WEBVTT
+
+REGION
+id:1
+viewportanchor:50%,100%
+
+00:00:00.000 --> 00:00:05.000 region:1
+This is a test subtitle
diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/support/viewportanchor_y_50_percent.vtt b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/support/viewportanchor_y_50_percent.vtt
new file mode 100644
index 00000000000..62e8a796877
--- /dev/null
+++ b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/support/viewportanchor_y_50_percent.vtt
@@ -0,0 +1,8 @@
+WEBVTT
+
+REGION
+id:1
+viewportanchor:0%,50%
+
+00:00:00.000 --> 00:00:05.000 region:1
+This is a test subtitle
diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/support/width_50_percent.vtt b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/support/width_50_percent.vtt
new file mode 100644
index 00000000000..9fce99b03b3
--- /dev/null
+++ b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/support/width_50_percent.vtt
@@ -0,0 +1,8 @@
+WEBVTT
+
+REGION
+id:1
+width:50%
+
+00:00:00.000 --> 00:00:05.000 region:1
+This is a test subtitle
diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/viewportanchor_x_50_percent-ref.html b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/viewportanchor_x_50_percent-ref.html
new file mode 100644
index 00000000000..c216838a694
--- /dev/null
+++ b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/viewportanchor_x_50_percent-ref.html
@@ -0,0 +1,27 @@
+<!DOCTYPE html>
+<title>Reference for WebVTT rendering regions, viewportanchor x 50%</title>
+<style>
+html { overflow:hidden }
+body { margin:0 }
+.video {
+ display: inline-block;
+ width: 320px;
+ height: 180px;
+ position: relative;
+ font-size: 9px;
+ overflow: hidden;
+}
+.cue {
+ position: absolute;
+ bottom: 0;
+ left: 50%;
+ right: -50%;
+ text-align: center
+}
+.cue > span {
+ font-family: Ahem, sans-serif;
+ background: rgba(0,0,0,0.8);
+ color: green;
+}
+</style>
+<div class="video"><span class="cue"><span>This is a test subtitle</span></span></div>
diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/viewportanchor_x_50_percent.html b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/viewportanchor_x_50_percent.html
new file mode 100644
index 00000000000..85e699a262b
--- /dev/null
+++ b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/viewportanchor_x_50_percent.html
@@ -0,0 +1,22 @@
+<!DOCTYPE html>
+<html class="reftest-wait">
+<title>WebVTT rendering regions, viewportanchor x 50%</title>
+<link rel="match" href="viewportanchor_x_50_percent-ref.html">
+<style>
+html { overflow:hidden }
+body { margin:0 }
+::cue {
+ font-family: Ahem, sans-serif;
+ color: green
+}
+</style>
+<script src="/common/reftest-wait.js"></script>
+<video width="320" height="180" autoplay onplaying="this.onplaying = null; this.pause(); takeScreenshot();">
+ <source src="../media/white.webm" type="video/webm">
+ <source src="../media/white.mp4" type="video/mp4">
+ <track src="support/viewportanchor_x_50_percent.vtt">
+ <script>
+ document.getElementsByTagName('track')[0].track.mode = 'showing';
+ </script>
+</video>
+</html>
diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/viewportanchor_y_50_percent-ref.html b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/viewportanchor_y_50_percent-ref.html
new file mode 100644
index 00000000000..f432047c5a6
--- /dev/null
+++ b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/viewportanchor_y_50_percent-ref.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html>
+<title>Reference for WebVTT rendering regions, viewportanchor y 50%</title>
+<style>
+html { overflow:hidden }
+body { margin:0 }
+.video {
+ display: inline-block;
+ width: 320px;
+ height: 180px;
+ position: relative;
+ font-size: 9px;
+}
+.cue {
+ position: absolute;
+ bottom: 50%;
+ left: 0;
+ right: 0;
+ text-align: center
+}
+.cue > span {
+ font-family: Ahem, sans-serif;
+ background: rgba(0,0,0,0.8);
+ color: green;
+}
+</style>
+<div class="video"><span class="cue"><span>This is a test subtitle</span></span></div>
diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/viewportanchor_y_50_percent.html b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/viewportanchor_y_50_percent.html
new file mode 100644
index 00000000000..0641b176e6f
--- /dev/null
+++ b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/viewportanchor_y_50_percent.html
@@ -0,0 +1,22 @@
+<!DOCTYPE html>
+<html class="reftest-wait">
+<title>WebVTT rendering regions, viewportanchor y 50%</title>
+<link rel="match" href="viewportanchor_y_50_percent-ref.html">
+<style>
+html { overflow:hidden }
+body { margin:0 }
+::cue {
+ font-family: Ahem, sans-serif;
+ color: green
+}
+</style>
+<script src="/common/reftest-wait.js"></script>
+<video width="320" height="180" autoplay onplaying="this.onplaying = null; this.pause(); takeScreenshot();">
+ <source src="../media/white.webm" type="video/webm">
+ <source src="../media/white.mp4" type="video/mp4">
+ <track src="support/viewportanchor_y_50_percent.vtt">
+ <script>
+ document.getElementsByTagName('track')[0].track.mode = 'showing';
+ </script>
+</video>
+</html>
diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/width_50_percent-ref.html b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/width_50_percent-ref.html
new file mode 100644
index 00000000000..fd69b643f56
--- /dev/null
+++ b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/width_50_percent-ref.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html>
+<title>Reference for WebVTT rendering regions, width 50%</title>
+<style>
+html { overflow:hidden }
+body { margin:0 }
+.video {
+ display: inline-block;
+ width: 320px;
+ height: 180px;
+ position: relative;
+ font-size: 9px;
+}
+.cue {
+ position: absolute;
+ bottom: 0;
+ left: 0;
+ right: 50%;
+ text-align: center
+}
+.cue > span {
+ font-family: Ahem, sans-serif;
+ background: rgba(0,0,0,0.8);
+ color: green;
+}
+</style>
+<div class="video"><span class="cue"><span>This is a test subtitle</span></span></div>
diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/width_50_percent.html b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/width_50_percent.html
new file mode 100644
index 00000000000..4377e9b4c03
--- /dev/null
+++ b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/width_50_percent.html
@@ -0,0 +1,22 @@
+<!DOCTYPE html>
+<html class="reftest-wait">
+<title>WebVTT rendering regions, width 50%</title>
+<link rel="match" href="width_50_percent-ref.html">
+<style>
+html { overflow:hidden }
+body { margin:0 }
+::cue {
+ font-family: Ahem, sans-serif;
+ color: green
+}
+</style>
+<script src="/common/reftest-wait.js"></script>
+<video width="320" height="180" autoplay onplaying="this.onplaying = null; this.pause(); takeScreenshot();">
+ <source src="../media/white.webm" type="video/webm">
+ <source src="../media/white.mp4" type="video/mp4">
+ <track src="support/width_50_percent.vtt">
+ <script>
+ document.getElementsByTagName('track')[0].track.mode = 'showing';
+ </script>
+</video>
+</html>
diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/support/align_center.vtt b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/support/align_center.vtt
new file mode 100644
index 00000000000..4b8e14b28b7
--- /dev/null
+++ b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/support/align_center.vtt
@@ -0,0 +1,4 @@
+WEBVTT
+
+00:00:00.000 --> 00:00:05.000 align:center
+This is a test
diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/support/align_middle_long.vtt b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/support/align_center_long.vtt
index 8c89441a974..57c896d04b7 100644
--- a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/support/align_middle_long.vtt
+++ b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/support/align_center_long.vtt
@@ -1,4 +1,4 @@
WEBVTT
-00:00:00.000 --> 00:00:05.000 align:middle
+00:00:00.000 --> 00:00:05.000 align:center
This is a test subtitle that most likely will span over several rows since it is a pretty long cue with a lot of text.
diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/support/align_center_position_50.vtt b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/support/align_center_position_50.vtt
new file mode 100644
index 00000000000..21ab82bb084
--- /dev/null
+++ b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/support/align_center_position_50.vtt
@@ -0,0 +1,4 @@
+WEBVTT
+
+00:00:00.000 --> 00:00:05.000 align:center position:50%
+This is a test
diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/support/align_center_position_gt_50.vtt b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/support/align_center_position_gt_50.vtt
new file mode 100644
index 00000000000..4d8538a2be7
--- /dev/null
+++ b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/support/align_center_position_gt_50.vtt
@@ -0,0 +1,4 @@
+WEBVTT
+
+00:00:00.000 --> 00:00:05.000 align:center position:90%
+Awesome!!!
diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/support/align_center_position_lt_50.vtt b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/support/align_center_position_lt_50.vtt
new file mode 100644
index 00000000000..4ea1e656077
--- /dev/null
+++ b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/support/align_center_position_lt_50.vtt
@@ -0,0 +1,4 @@
+WEBVTT
+
+00:00:00.000 --> 00:00:05.000 align:center position:10%
+Awesome!!!
diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/support/align_center_position_lt_50_size_gt_maximum_size.vtt b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/support/align_center_position_lt_50_size_gt_maximum_size.vtt
new file mode 100644
index 00000000000..a2e307c9cba
--- /dev/null
+++ b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/support/align_center_position_lt_50_size_gt_maximum_size.vtt
@@ -0,0 +1,4 @@
+WEBVTT
+
+00:00:00.000 --> 00:00:05.000 align:center position:10% size:75%
+Awesome!!!
diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/support/align_middle.vtt b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/support/align_middle.vtt
deleted file mode 100644
index cdee051d777..00000000000
--- a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/support/align_middle.vtt
+++ /dev/null
@@ -1,4 +0,0 @@
-WEBVTT
-
-00:00:00.000 --> 00:00:05.000 align:middle
-This is a test
diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/support/align_middle_position_50.vtt b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/support/align_middle_position_50.vtt
deleted file mode 100644
index c443773984e..00000000000
--- a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/support/align_middle_position_50.vtt
+++ /dev/null
@@ -1,4 +0,0 @@
-WEBVTT
-
-00:00:00.000 --> 00:00:05.000 align:middle position:50%
-This is a test
diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/support/align_middle_position_gt_50.vtt b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/support/align_middle_position_gt_50.vtt
deleted file mode 100644
index 186ae1ecd23..00000000000
--- a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/support/align_middle_position_gt_50.vtt
+++ /dev/null
@@ -1,4 +0,0 @@
-WEBVTT
-
-00:00:00.000 --> 00:00:05.000 align:middle position:90%
-Awesome!!!
diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/support/align_middle_position_lt_50.vtt b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/support/align_middle_position_lt_50.vtt
deleted file mode 100644
index 6928c5dc218..00000000000
--- a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/support/align_middle_position_lt_50.vtt
+++ /dev/null
@@ -1,4 +0,0 @@
-WEBVTT
-
-00:00:00.000 --> 00:00:05.000 align:middle position:10%
-Awesome!!!
diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/support/align_middle_position_lt_50_size_gt_maximum_size.vtt b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/support/align_middle_position_lt_50_size_gt_maximum_size.vtt
deleted file mode 100644
index 32bc4ed3fc8..00000000000
--- a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/support/align_middle_position_lt_50_size_gt_maximum_size.vtt
+++ /dev/null
@@ -1,4 +0,0 @@
-WEBVTT
-
-00:00:00.000 --> 00:00:05.000 align:middle position:10% size:75%
-Awesome!!!
diff --git a/tests/wpt/web-platform-tests/webxr/resources/webxr_util.js b/tests/wpt/web-platform-tests/webxr/resources/webxr_util.js
index d73cf8d44e9..5437513b304 100644
--- a/tests/wpt/web-platform-tests/webxr/resources/webxr_util.js
+++ b/tests/wpt/web-platform-tests/webxr/resources/webxr_util.js
@@ -112,7 +112,6 @@ function forEachWebxrObject(callback) {
callback(window.XRCoordinateSystem, 'XRCoordinateSystem');
callback(window.XRFrameOfReference, 'XRFrameOfReference');
callback(window.XRStageBounds, 'XRStageBounds');
- callback(window.XRStageBoundsPoint, 'XRStageBoundsPoint');
callback(window.XRSessionEvent, 'XRSessionEvent');
callback(window.XRCoordinateSystemEvent, 'XRCoordinateSystemEvent');
}
diff --git a/tests/wpt/web-platform-tests/workers/modules/dedicated-worker-import-blob-url.any.js b/tests/wpt/web-platform-tests/workers/modules/dedicated-worker-import-blob-url.any.js
index e3f61867c5b..f51a821d181 100644
--- a/tests/wpt/web-platform-tests/workers/modules/dedicated-worker-import-blob-url.any.js
+++ b/tests/wpt/web-platform-tests/workers/modules/dedicated-worker-import-blob-url.any.js
@@ -9,8 +9,8 @@ function import_blob_url_test(testCase) {
const blob = new Blob([`import "${importURL}";`],
{ type: 'text/javascript' });
const blobURL = URL.createObjectURL(blob);
-
const worker = new Worker(blobURL, { type: 'module'});
+ worker.postMessage('Send message for tests from main script.');
const msgEvent = await new Promise((resolve, reject) => {
worker.onmessage = resolve;
worker.onerror = (error) => reject(error && error.message);
diff --git a/tests/wpt/web-platform-tests/workers/modules/dedicated-worker-import-data-url.any.js b/tests/wpt/web-platform-tests/workers/modules/dedicated-worker-import-data-url.any.js
index 10bac0dfbf7..0d8510da0c2 100644
--- a/tests/wpt/web-platform-tests/workers/modules/dedicated-worker-import-data-url.any.js
+++ b/tests/wpt/web-platform-tests/workers/modules/dedicated-worker-import-data-url.any.js
@@ -13,6 +13,7 @@ function import_data_url_test(testCase) {
const dataURL = `data:text/javascript,import "${importURL}";`;
const worker = new Worker(dataURL, { type: 'module'});
+ worker.postMessage('Send message for tests from main script.');
const msgEvent = await new Promise(resolve => worker.onmessage = resolve);
assert_array_equals(msgEvent.data, testCase.expectation);
}, testCase.description);
diff --git a/tests/wpt/web-platform-tests/workers/modules/dedicated-worker-import.any.js b/tests/wpt/web-platform-tests/workers/modules/dedicated-worker-import.any.js
index 805dbf3288c..308c5e74c15 100644
--- a/tests/wpt/web-platform-tests/workers/modules/dedicated-worker-import.any.js
+++ b/tests/wpt/web-platform-tests/workers/modules/dedicated-worker-import.any.js
@@ -6,6 +6,7 @@
function import_test(testCase) {
promise_test(async () => {
const worker = new Worker(testCase.scriptURL, { type: 'module' });
+ worker.postMessage('Send message for tests from main script.');
const msgEvent = await new Promise((resolve, reject) => {
worker.onmessage = resolve;
worker.onerror = (error) => reject(error && error.message);
diff --git a/tests/wpt/web-platform-tests/workers/modules/resources/dynamic-import-and-then-static-import-worker.js b/tests/wpt/web-platform-tests/workers/modules/resources/dynamic-import-and-then-static-import-worker.js
index 39ab5c237e2..9a386e63be5 100644
--- a/tests/wpt/web-platform-tests/workers/modules/resources/dynamic-import-and-then-static-import-worker.js
+++ b/tests/wpt/web-platform-tests/workers/modules/resources/dynamic-import-and-then-static-import-worker.js
@@ -1,2 +1,20 @@
-import('./export-on-static-import-script.js')
- .then(module => postMessage(module.importedModules));
+// This script is meant to be imported by a module worker. It receives a
+// message from the worker and responds with the list of imported modules.
+const sourcePromise = new Promise(resolve => {
+ self.onmessage = e => {
+ // DedicatedWorkerGlobalScope doesn't fill in e.source,
+ // so use e.target instead.
+ const source = e.source ? e.source : e.target;
+ resolve(source);
+ };
+});
+
+const importedModulesPromise =
+ import('./export-on-static-import-script.js')
+ .then(module => module.importedModules)
+ .catch(error => `Failed to do dynamic import: ${error}`);
+
+Promise.all([sourcePromise, importedModulesPromise]).then(results => {
+ const [source, importedModules] = results;
+ source.postMessage(importedModules);
+});
diff --git a/tests/wpt/web-platform-tests/workers/modules/resources/dynamic-import-worker.js b/tests/wpt/web-platform-tests/workers/modules/resources/dynamic-import-worker.js
index cd321fe2460..07f4df9db3e 100644
--- a/tests/wpt/web-platform-tests/workers/modules/resources/dynamic-import-worker.js
+++ b/tests/wpt/web-platform-tests/workers/modules/resources/dynamic-import-worker.js
@@ -1,2 +1,20 @@
-import('./export-on-load-script.js')
- .then(module => postMessage(module.importedModules));
+// This script is meant to be imported by a module worker. It receives a
+// message from the worker and responds with the list of imported modules.
+const sourcePromise = new Promise(resolve => {
+ self.onmessage = e => {
+ // DedicatedWorkerGlobalScope doesn't fill in e.source,
+ // so use e.target instead.
+ const source = e.source ? e.source : e.target;
+ resolve(source);
+ };
+});
+
+const importedModulesPromise =
+ import('./export-on-load-script.js')
+ .then(module => module.importedModules)
+ .catch(error => `Failed to do dynamic import: ${error}`);
+
+Promise.all([sourcePromise, importedModulesPromise]).then(results => {
+ const [source, importedModules] = results;
+ source.postMessage(importedModules);
+});
diff --git a/tests/wpt/web-platform-tests/workers/modules/resources/eval-dynamic-import-worker.js b/tests/wpt/web-platform-tests/workers/modules/resources/eval-dynamic-import-worker.js
index e92aff21a88..af57b19f98d 100644
--- a/tests/wpt/web-platform-tests/workers/modules/resources/eval-dynamic-import-worker.js
+++ b/tests/wpt/web-platform-tests/workers/modules/resources/eval-dynamic-import-worker.js
@@ -1,3 +1,18 @@
-const code = "import('./export-on-load-script.js')" +
- " .then(module => postMessage(module.importedModules));"
+// This script is meant to be imported by a module worker. It receives a
+// message from the worker and responds with the list of imported modules.
+const code =
+ "const sourcePromise = new Promise(resolve => {" +
+ " self.onmessage = e => {" +
+ " const source = e.source ? e.source : e.target;" +
+ " resolve(source);" +
+ " };" +
+ "});" +
+ "const importedModulesPromise =" +
+ " import('./export-on-load-script.js')" +
+ " .then(module => module.importedModules)" +
+ " .catch(error => `Failed to do dynamic import: ${error}`);" +
+ "Promise.all([sourcePromise, importedModulesPromise]).then(results => {" +
+ " const [source, importedModules] = results;" +
+ " source.postMessage(importedModules);" +
+ "});";
eval(code);
diff --git a/tests/wpt/web-platform-tests/workers/modules/resources/export-on-dynamic-import-script.js b/tests/wpt/web-platform-tests/workers/modules/resources/export-on-dynamic-import-script.js
index 8d172c324d3..bab7cb48d24 100644
--- a/tests/wpt/web-platform-tests/workers/modules/resources/export-on-dynamic-import-script.js
+++ b/tests/wpt/web-platform-tests/workers/modules/resources/export-on-dynamic-import-script.js
@@ -3,5 +3,6 @@
export let importedModules = ['export-on-dynamic-import-script.js'];
export let ready = import('./export-on-load-script.js')
.then(module => {
- Array.prototype.push.apply(importedModules, module.importedModules);
+ Array.prototype.push.apply(importedModules, module.importedModules);
+ return importedModules;
});
diff --git a/tests/wpt/web-platform-tests/workers/modules/resources/import-test-cases.js b/tests/wpt/web-platform-tests/workers/modules/resources/import-test-cases.js
index 919c20e0d4c..c5830e97eeb 100644
--- a/tests/wpt/web-platform-tests/workers/modules/resources/import-test-cases.js
+++ b/tests/wpt/web-platform-tests/workers/modules/resources/import-test-cases.js
@@ -1,11 +1,11 @@
const testCases = [
{
- scriptURL: 'resources/static-import-worker.js',
+ scriptURL: '/workers/modules/resources/static-import-worker.js',
expectation: ['export-on-load-script.js'],
description: 'Static import.'
},
{
- scriptURL: 'resources/nested-static-import-worker.js',
+ scriptURL: '/workers/modules/resources/nested-static-import-worker.js',
expectation: [
'export-on-static-import-script.js',
'export-on-load-script.js'
@@ -13,7 +13,7 @@ const testCases = [
description: 'Nested static import.'
},
{
- scriptURL: 'resources/static-import-and-then-dynamic-import-worker.js',
+ scriptURL: '/workers/modules/resources/static-import-and-then-dynamic-import-worker.js',
expectation: [
'export-on-dynamic-import-script.js',
'export-on-load-script.js'
@@ -21,12 +21,12 @@ const testCases = [
description: 'Static import and then dynamic import.'
},
{
- scriptURL: 'resources/dynamic-import-worker.js',
+ scriptURL: '/workers/modules/resources/dynamic-import-worker.js',
expectation: ['export-on-load-script.js'],
description: 'Dynamic import.'
},
{
- scriptURL: 'resources/nested-dynamic-import-worker.js',
+ scriptURL: '/workers/modules/resources/nested-dynamic-import-worker.js',
expectation: [
'export-on-dynamic-import-script.js',
'export-on-load-script.js'
@@ -34,7 +34,7 @@ const testCases = [
description: 'Nested dynamic import.'
},
{
- scriptURL: 'resources/dynamic-import-and-then-static-import-worker.js',
+ scriptURL: '/workers/modules/resources/dynamic-import-and-then-static-import-worker.js',
expectation: [
'export-on-static-import-script.js',
'export-on-load-script.js'
@@ -42,7 +42,7 @@ const testCases = [
description: 'Dynamic import and then static import.'
},
{
- scriptURL: 'resources/eval-dynamic-import-worker.js',
+ scriptURL: '/workers/modules/resources/eval-dynamic-import-worker.js',
expectation: ['export-on-load-script.js'],
description: 'eval(import()).'
}
diff --git a/tests/wpt/web-platform-tests/workers/modules/resources/nested-dynamic-import-worker.js b/tests/wpt/web-platform-tests/workers/modules/resources/nested-dynamic-import-worker.js
index 5ae82f8aa05..cb37f6e20f6 100644
--- a/tests/wpt/web-platform-tests/workers/modules/resources/nested-dynamic-import-worker.js
+++ b/tests/wpt/web-platform-tests/workers/modules/resources/nested-dynamic-import-worker.js
@@ -1,5 +1,22 @@
-import('./export-on-dynamic-import-script.js')
- .then(async module => {
- await module.ready;
- postMessage(module.importedModules);
- });
+// This script is meant to be imported by a module worker. It receives a
+// message from the worker and responds with the list of imported modules.
+
+const sourcePromise = new Promise(resolve => {
+ self.onmessage = e => {
+ // DedicatedWorkerGlobalScope doesn't fill in e.source,
+ // so use e.target instead.
+ const source = e.source ? e.source : e.target;
+ resolve(source);
+ };
+});
+
+const importedModulesPromise =
+ import('./export-on-dynamic-import-script.js')
+ .then(module => module.ready)
+ .then(importedModules => importedModules)
+ .catch(error => `Failed to do dynamic import: ${error}`);
+
+Promise.all([sourcePromise, importedModulesPromise]).then(results => {
+ const [source, importedModules] = results;
+ source.postMessage(importedModules);
+});
diff --git a/tests/wpt/web-platform-tests/workers/modules/resources/nested-static-import-worker.js b/tests/wpt/web-platform-tests/workers/modules/resources/nested-static-import-worker.js
index 72ab31cb1c6..7599faaa099 100644
--- a/tests/wpt/web-platform-tests/workers/modules/resources/nested-static-import-worker.js
+++ b/tests/wpt/web-platform-tests/workers/modules/resources/nested-static-import-worker.js
@@ -1,2 +1,9 @@
+// This script is meant to be imported by a module worker. It receives a
+// message from the worker and responds with the list of imported modules.
import * as module from './export-on-static-import-script.js';
-postMessage(module.importedModules);
+self.onmessage = e => {
+ // DedicatedWorkerGlobalScope doesn't fill in e.source,
+ // so use e.target instead.
+ const source = e.source ? e.source : e.target;
+ source.postMessage(module.importedModules);
+};
diff --git a/tests/wpt/web-platform-tests/workers/modules/resources/static-import-and-then-dynamic-import-worker.js b/tests/wpt/web-platform-tests/workers/modules/resources/static-import-and-then-dynamic-import-worker.js
index 89125e0af7b..cd98d8c17df 100644
--- a/tests/wpt/web-platform-tests/workers/modules/resources/static-import-and-then-dynamic-import-worker.js
+++ b/tests/wpt/web-platform-tests/workers/modules/resources/static-import-and-then-dynamic-import-worker.js
@@ -1,2 +1,22 @@
+// This script is meant to be imported by a module worker. It receives a
+// message from the worker and responds with the list of imported modules.
import * as module from './export-on-dynamic-import-script.js';
-module.ready.then(() => postMessage(module.importedModules));
+
+const sourcePromise = new Promise(resolve => {
+ self.onmessage = e => {
+ // DedicatedWorkerGlobalScope doesn't fill in e.source,
+ // so use e.target instead.
+ const source = e.source ? e.source : e.target;
+ resolve(source);
+ };
+});
+
+export let importedModules = ['export-on-dynamic-import-script.js'];
+const importedModulesPromise = module.ready
+ .then(importedModules => importedModules)
+ .catch(error => `Failed to do dynamic import: ${error}`);
+
+Promise.all([sourcePromise, importedModulesPromise]).then(results => {
+ const [source, importedModules] = results;
+ source.postMessage(importedModules);
+});
diff --git a/tests/wpt/web-platform-tests/workers/modules/resources/static-import-worker.js b/tests/wpt/web-platform-tests/workers/modules/resources/static-import-worker.js
index f0639153a94..48751dbe03b 100644
--- a/tests/wpt/web-platform-tests/workers/modules/resources/static-import-worker.js
+++ b/tests/wpt/web-platform-tests/workers/modules/resources/static-import-worker.js
@@ -1,2 +1,9 @@
+// This script is meant to be imported by a module worker. It receives a
+// message from the worker and responds with the list of imported modules.
import * as module from './export-on-load-script.js';
-postMessage(module.importedModules);
+self.onmessage = e => {
+ // DedicatedWorkerGlobalScope doesn't fill in e.source,
+ // so use e.target instead.
+ const source = e.source ? e.source : e.target;
+ source.postMessage(module.importedModules);
+};
diff --git a/tests/wpt/web-platform-tests/xhr/overridemimetype-edge-cases.window.js b/tests/wpt/web-platform-tests/xhr/overridemimetype-edge-cases.window.js
index 192a696759c..3f57e9a48f0 100644
--- a/tests/wpt/web-platform-tests/xhr/overridemimetype-edge-cases.window.js
+++ b/tests/wpt/web-platform-tests/xhr/overridemimetype-edge-cases.window.js
@@ -2,6 +2,16 @@ const testURL = "resources/status.py?type=" + encodeURIComponent("text/plain;cha
async_test(t => {
const client = new XMLHttpRequest();
+ client.onload = t.step_func_done(() => {
+ assert_equals(client.responseText, "\uFFFD\uFFFD");
+ });
+ client.overrideMimeType("text/plain;charset=UTF-8");
+ client.open("GET", testURL);
+ client.send();
+}, "overrideMimeType() is not reset by open(), basic");
+
+async_test(t => {
+ const client = new XMLHttpRequest();
let secondTime = false;
client.onload = t.step_func(() => {
if(!secondTime) {
@@ -10,14 +20,14 @@ async_test(t => {
client.open("GET", testURL);
client.send();
} else {
- assert_equals(client.responseText, "Âð");
+ assert_equals(client.responseText, "\uFFFD\uFFFD");
t.done();
}
});
client.open("GET", testURL);
client.overrideMimeType("text/plain;charset=UTF-8")
client.send();
-}, "overrideMimeType() state needs to be reset across requests");
+}, "overrideMimeType() is not reset by open()");
async_test(t => {
const client = new XMLHttpRequest();
diff --git a/tests/wpt/web-platform-tests/xhr/resources/inspect-headers.py b/tests/wpt/web-platform-tests/xhr/resources/inspect-headers.py
index 12dd33595f0..e71f671ced3 100644
--- a/tests/wpt/web-platform-tests/xhr/resources/inspect-headers.py
+++ b/tests/wpt/web-platform-tests/xhr/resources/inspect-headers.py
@@ -5,11 +5,9 @@ def get_response(raw_headers, filter_value, filter_name):
return "Syntax error: missing CRLF: " + line
line = line[:-2]
- if ':' not in line:
- return "Syntax error: no colon found: " + line
- name, value = line.split(':', 1)
- if len(value) > 1 and value[0] == ' ':
- value = value[1:]
+ if ': ' not in line:
+ return "Syntax error: no colon and space found: " + line
+ name, value = line.split(': ', 1)
if filter_value:
if value == filter_value: