aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/wpt/metadata/FileAPI/url/url-with-fetch.any.js.ini6
-rw-r--r--tests/wpt/metadata/MANIFEST.json776
-rw-r--r--tests/wpt/metadata/css/css-align/parsing/align-content-valid.html.ini28
-rw-r--r--tests/wpt/metadata/css/css-align/parsing/align-items-valid.html.ini28
-rw-r--r--tests/wpt/metadata/css/css-align/parsing/align-self-valid.html.ini28
-rw-r--r--tests/wpt/metadata/css/css-align/parsing/justify-content-valid.html.ini25
-rw-r--r--tests/wpt/metadata/css/css-align/parsing/justify-items-valid.html.ini61
-rw-r--r--tests/wpt/metadata/css/css-align/parsing/justify-self-valid.html.ini52
-rw-r--r--tests/wpt/metadata/css/css-transitions/properties-value-inherit-001.html.ini3
-rw-r--r--tests/wpt/metadata/css/css-transitions/properties-value-inherit-002.html.ini36
-rw-r--r--tests/wpt/metadata/css/cssom-view/matchMedia-display-none-iframe.html.ini2
-rw-r--r--tests/wpt/metadata/css/cssom-view/scroll-behavior-smooth.html.ini6
-rw-r--r--tests/wpt/metadata/fetch/content-type/response.window.js.ini19
-rw-r--r--tests/wpt/metadata/fetch/content-type/script.window.js.ini6
-rw-r--r--tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini3
-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_3.html.ini4
-rw-r--r--tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini4
-rw-r--r--tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-innerwidth-innerheight.html.ini19
-rw-r--r--tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-screenx-screeny.html.ini19
-rw-r--r--tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-top-left.html.ini19
-rw-r--r--tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-width-height.html.ini19
-rw-r--r--tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-height.html.ini34
-rw-r--r--tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-innerheight.html.ini28
-rw-r--r--tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-innerwidth.html.ini28
-rw-r--r--tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-left.html.ini28
-rw-r--r--tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-screenx.html.ini28
-rw-r--r--tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-screeny.html.ini28
-rw-r--r--tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-top.html.ini28
-rw-r--r--tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-width.html.ini34
-rw-r--r--tests/wpt/metadata/html/rendering/dimension-attributes.html.ini2331
-rw-r--r--tests/wpt/metadata/html/rendering/pixel-length-attributes.html.ini4
-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/document-write/iframe_005.html.ini4
-rw-r--r--tests/wpt/metadata/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-agent-formalism/requires-failure.https.any.js.ini6
-rw-r--r--tests/wpt/metadata/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-agent-formalism/requires-success.any.js.ini9
-rw-r--r--tests/wpt/metadata/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.html.ini4
-rw-r--r--tests/wpt/metadata/resource-timing/resource_TAO_zero.htm.ini3
-rw-r--r--tests/wpt/metadata/webaudio/the-audio-api/the-audiobuffersourcenode-interface/sub-sample-buffer-stitching.html.ini6
-rw-r--r--tests/wpt/metadata/webaudio/the-audio-api/the-mediastreamaudiosourcenode-interface/mediastreamaudiosourcenode-ctor.html.ini4
-rw-r--r--tests/wpt/metadata/webaudio/the-audio-api/the-mediastreamaudiosourcenode-interface/mediastreamaudiosourcenode-routing.html.ini5
-rw-r--r--tests/wpt/metadata/xhr/responsexml-document-properties.htm.ini3
-rw-r--r--tests/wpt/mozilla/meta/css/transition_calc_implicit.html.ini2
-rw-r--r--tests/wpt/web-platform-tests/clipboard-apis/async-write-image-read-image-manual.https.html8
-rw-r--r--tests/wpt/web-platform-tests/css/css-align/parsing/align-content-invalid.html35
-rw-r--r--tests/wpt/web-platform-tests/css/css-align/parsing/align-content-valid.html39
-rw-r--r--tests/wpt/web-platform-tests/css/css-align/parsing/align-items-invalid.html36
-rw-r--r--tests/wpt/web-platform-tests/css/css-align/parsing/align-items-valid.html36
-rw-r--r--tests/wpt/web-platform-tests/css/css-align/parsing/align-self-invalid.html35
-rw-r--r--tests/wpt/web-platform-tests/css/css-align/parsing/align-self-valid.html37
-rw-r--r--tests/wpt/web-platform-tests/css/css-align/parsing/justify-content-invalid.html36
-rw-r--r--tests/wpt/web-platform-tests/css/css-align/parsing/justify-content-valid.html36
-rw-r--r--tests/wpt/web-platform-tests/css/css-align/parsing/justify-items-invalid.html30
-rw-r--r--tests/wpt/web-platform-tests/css/css-align/parsing/justify-items-valid.html44
-rw-r--r--tests/wpt/web-platform-tests/css/css-align/parsing/justify-self-invalid.html33
-rw-r--r--tests/wpt/web-platform-tests/css/css-align/parsing/justify-self-valid.html39
-rw-r--r--tests/wpt/web-platform-tests/css/css-fonts/inheritance.html4
-rw-r--r--tests/wpt/web-platform-tests/css/css-overscroll-behavior/overscroll-behavior-logical.html49
-rw-r--r--tests/wpt/web-platform-tests/css/css-overscroll-behavior/parsing/overscroll-behavior-computed.html4
-rw-r--r--tests/wpt/web-platform-tests/css/css-overscroll-behavior/parsing/overscroll-behavior-invalid.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-overscroll-behavior/parsing/overscroll-behavior-valid.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-position/static-position/inline-level-absolute-in-block-level-context-013.html11
-rw-r--r--tests/wpt/web-platform-tests/css/css-position/static-position/inline-level-absolute-in-block-level-context-014.html12
-rw-r--r--tests/wpt/web-platform-tests/css/css-scroll-snap/snap-at-user-scroll-end-manual.html13
-rw-r--r--tests/wpt/web-platform-tests/css/css-tables/absolute-tables-006.html36
-rw-r--r--tests/wpt/web-platform-tests/css/css-text-decor/reference/text-underline-offset-scroll-001-notref.html23
-rw-r--r--tests/wpt/web-platform-tests/css/css-text-decor/reference/text-underline-offset-scroll-001-ref.html20
-rw-r--r--tests/wpt/web-platform-tests/css/css-text-decor/reference/text-underline-offset-vertical-001-ref.html21
-rw-r--r--tests/wpt/web-platform-tests/css/css-text-decor/reference/text-underline-offset-vertical-002-ref.html28
-rw-r--r--tests/wpt/web-platform-tests/css/css-text-decor/text-underline-offset-scroll-001.html38
-rw-r--r--tests/wpt/web-platform-tests/css/css-text-decor/text-underline-offset-vertical-001.html27
-rw-r--r--tests/wpt/web-platform-tests/css/css-text-decor/text-underline-offset-vertical-002.html32
-rw-r--r--tests/wpt/web-platform-tests/css/support/inheritance-testcommon.js3
-rw-r--r--tests/wpt/web-platform-tests/element-timing/image-TAO-wildcard.sub.html54
-rw-r--r--tests/wpt/web-platform-tests/element-timing/image-TAO.sub.html56
-rw-r--r--tests/wpt/web-platform-tests/element-timing/resources/TAOImage.py2
-rw-r--r--tests/wpt/web-platform-tests/html/browsers/browsing-the-web/history-traversal/contains.json6
-rw-r--r--tests/wpt/web-platform-tests/html/browsers/browsing-the-web/unloading-documents/contains.json6
-rw-r--r--tests/wpt/web-platform-tests/html/browsers/history/the-location-interface/contains.json6
-rw-r--r--tests/wpt/web-platform-tests/html/browsers/offline/introduction-4/contains.json10
-rw-r--r--tests/wpt/web-platform-tests/html/browsers/offline/manifests/contains.json14
-rw-r--r--tests/wpt/web-platform-tests/html/browsers/windows/auxiliary-browsing-contexts/contains.json6
-rw-r--r--tests/wpt/web-platform-tests/html/browsers/windows/nested-browsing-contexts/contains.json6
-rw-r--r--tests/wpt/web-platform-tests/html/dom/elements/content-models/contains.json48
-rw-r--r--tests/wpt/web-platform-tests/html/dom/elements/element-definitions/contains.json6
-rw-r--r--tests/wpt/web-platform-tests/html/dom/elements/global-attributes/contains.json38
-rw-r--r--tests/wpt/web-platform-tests/html/dom/elements/wai-aria/contains.json18
-rw-r--r--tests/wpt/web-platform-tests/html/infrastructure/common-dom-interfaces/collections/contains.json14
-rw-r--r--tests/wpt/web-platform-tests/html/infrastructure/common-microsyntaxes/dates-and-times/contains.json42
-rw-r--r--tests/wpt/web-platform-tests/html/infrastructure/common-microsyntaxes/numbers/contains.json26
-rw-r--r--tests/wpt/web-platform-tests/html/rendering/dimension-attributes.html80
-rw-r--r--tests/wpt/web-platform-tests/html/rendering/pixel-length-attributes.html47
-rw-r--r--tests/wpt/web-platform-tests/html/rendering/unmapped-attributes.html91
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/document-metadata/the-meta-element/contains.json22
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/embedded-content/image-maps/contains.json10
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/embedded-content/media-elements/contains.json132
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/contains.json10
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/contains.json60
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/forms/attributes-common-to-form-controls/contains.json38
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/forms/constraints/contains.json18
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/forms/form-control-infrastructure/contains.json14
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/forms/form-submission-0/contains.json30
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/forms/introduction-1/contains.json34
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/forms/the-input-element/contains.json154
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/interactive-elements/commands/contains.json38
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/contains.json6
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/links/downloading-resources/contains.json6
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/links/linktypes/contains.json68
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/contains.json18
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/sections/headings-and-sections/contains.json6
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/tabular-data/processing-model-1/contains.json10
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/tabular-data/the-table-element/contains.json10
-rw-r--r--tests/wpt/web-platform-tests/html/syntax/parsing/contains.json490
-rw-r--r--tests/wpt/web-platform-tests/html/syntax/writing/elements-0/contains.json26
-rw-r--r--tests/wpt/web-platform-tests/html/syntax/writing/text/contains.json6
-rw-r--r--tests/wpt/web-platform-tests/html/webappapis/scripting/event-loops/contains.json14
-rw-r--r--tests/wpt/web-platform-tests/html/webappapis/scripting/events/contains.json18
-rw-r--r--tests/wpt/web-platform-tests/html/webappapis/scripting/processing-model-2/contains.json28
-rw-r--r--tests/wpt/web-platform-tests/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-agent-formalism/canblock-dedicatedworker.html13
-rw-r--r--tests/wpt/web-platform-tests/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-agent-formalism/canblock-serviceworker.https.html14
-rw-r--r--tests/wpt/web-platform-tests/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-agent-formalism/canblock-sharedworker.html13
-rw-r--r--tests/wpt/web-platform-tests/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-agent-formalism/canblock-window.html21
-rw-r--r--tests/wpt/web-platform-tests/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-agent-formalism/requires-failure.https.any.js (renamed from tests/wpt/web-platform-tests/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-agent-formalism/worker-that-requires-failure.js)5
-rw-r--r--tests/wpt/web-platform-tests/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-agent-formalism/requires-success.any.js (renamed from tests/wpt/web-platform-tests/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-agent-formalism/worker-that-requires-success.js)5
-rw-r--r--tests/wpt/web-platform-tests/html/webappapis/system-state-and-capabilities/the-navigator-object/contains.json22
-rw-r--r--tests/wpt/web-platform-tests/resource-timing/TAO-case-insensitive-null-opaque-origin.sub.html2
-rw-r--r--tests/wpt/web-platform-tests/resource-timing/TAO-null-opaque-origin.sub.html2
-rw-r--r--tests/wpt/web-platform-tests/resource-timing/buffer-full-add-after-full-event.html2
-rw-r--r--tests/wpt/web-platform-tests/resource-timing/resources/iframe-TAO-crossorigin-port.sub.html2
-rw-r--r--tests/wpt/web-platform-tests/resources/chromium/webxr-test.js134
-rw-r--r--tests/wpt/web-platform-tests/std-toast/actions.html105
-rw-r--r--tests/wpt/web-platform-tests/std-toast/attributes.html2
-rw-r--r--tests/wpt/web-platform-tests/std-toast/events-open.html6
-rw-r--r--tests/wpt/web-platform-tests/std-toast/events-showhide.html2
-rw-r--r--tests/wpt/web-platform-tests/std-toast/options.html2
-rw-r--r--tests/wpt/web-platform-tests/std-toast/resources/helpers.js6
-rw-r--r--tests/wpt/web-platform-tests/tools/wptserve/wptserve/constants.py2
-rw-r--r--tests/wpt/web-platform-tests/user-timing/measure-with-dict.html10
-rw-r--r--tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audionode-interface/audionode-connect-method-chaining.html2
-rw-r--r--tests/wpt/web-platform-tests/webaudio/the-audio-api/the-mediastreamaudiosourcenode-interface/mediastreamaudiosourcenode-ctor.html73
-rw-r--r--tests/wpt/web-platform-tests/webaudio/the-audio-api/the-mediastreamaudiosourcenode-interface/mediastreamaudiosourcenode-routing.html135
-rw-r--r--tests/wpt/web-platform-tests/webdriver/tests/get_current_url/get.py2
-rw-r--r--tests/wpt/web-platform-tests/webdriver/tests/set_window_rect/set.py24
-rw-r--r--tests/wpt/web-platform-tests/webrtc/RTCDataChannel-bufferedAmount.html1
-rw-r--r--tests/wpt/web-platform-tests/webxr/events_referenceSpace_reset.https.html43
-rw-r--r--tests/wpt/web-platform-tests/webxr/resources/webxr_test_constants.js25
-rw-r--r--tests/wpt/web-platform-tests/webxr/xrBoundedReferenceSpace_updates.https.html63
-rw-r--r--tests/wpt/web-platform-tests/webxr/xrDevice_disconnect_ends.https.html39
-rw-r--r--tests/wpt/web-platform-tests/webxr/xrStationaryReferenceSpace_floorlevel_updates.https.html70
-rw-r--r--tests/wpt/web-platform-tests/xhr/responsexml-document-properties.htm8
151 files changed, 4856 insertions, 2405 deletions
diff --git a/tests/wpt/metadata/FileAPI/url/url-with-fetch.any.js.ini b/tests/wpt/metadata/FileAPI/url/url-with-fetch.any.js.ini
index 6a3af4e2ece..3b874fc1748 100644
--- a/tests/wpt/metadata/FileAPI/url/url-with-fetch.any.js.ini
+++ b/tests/wpt/metadata/FileAPI/url/url-with-fetch.any.js.ini
@@ -14,9 +14,6 @@
[Revoke blob URL after creating Request, will fetch]
expected: FAIL
- [Revoke blob URL after calling fetch, fetch should succeed]
- expected: FAIL
-
[url-with-fetch.any.html]
[Untitled]
@@ -37,3 +34,6 @@
[Revoke blob URL after creating Request, will fetch]
expected: FAIL
+ [Revoke blob URL after calling fetch, fetch should succeed]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/MANIFEST.json b/tests/wpt/metadata/MANIFEST.json
index b0f6034ebf7..e65808e9038 100644
--- a/tests/wpt/metadata/MANIFEST.json
+++ b/tests/wpt/metadata/MANIFEST.json
@@ -135835,6 +135835,30 @@
{}
]
],
+ "css/css-position/static-position/inline-level-absolute-in-block-level-context-013.html": [
+ [
+ "css/css-position/static-position/inline-level-absolute-in-block-level-context-013.html",
+ [
+ [
+ "/css/reference/ref-filled-green-100px-square.xht",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-position/static-position/inline-level-absolute-in-block-level-context-014.html": [
+ [
+ "css/css-position/static-position/inline-level-absolute-in-block-level-context-014.html",
+ [
+ [
+ "/css/reference/ref-filled-green-100px-square.xht",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"css/css-position/static-position/vlr-ltr-ltr.html": [
[
"css/css-position/static-position/vlr-ltr-ltr.html",
@@ -141611,6 +141635,18 @@
{}
]
],
+ "css/css-tables/absolute-tables-006.html": [
+ [
+ "css/css-tables/absolute-tables-006.html",
+ [
+ [
+ "/css/reference/ref-filled-green-100px-square-only.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"css/css-tables/anonymous-table-cell-margin-collapsing.html": [
[
"css/css-tables/anonymous-table-cell-margin-collapsing.html",
@@ -142619,6 +142655,46 @@
{}
]
],
+ "css/css-text-decor/text-underline-offset-scroll-001.html": [
+ [
+ "css/css-text-decor/text-underline-offset-scroll-001.html",
+ [
+ [
+ "/css/css-text-decor/reference/text-underline-offset-scroll-001-ref.html",
+ "=="
+ ],
+ [
+ "/css/css-text-decor/reference/text-underline-offset-scroll-001-notref.html",
+ "!="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-text-decor/text-underline-offset-vertical-001.html": [
+ [
+ "css/css-text-decor/text-underline-offset-vertical-001.html",
+ [
+ [
+ "/css/css-text-decor/reference/text-underline-offset-vertical-001-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-text-decor/text-underline-offset-vertical-002.html": [
+ [
+ "css/css-text-decor/text-underline-offset-vertical-002.html",
+ [
+ [
+ "/css/css-text-decor/reference/text-underline-offset-vertical-002-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"css/css-text/boundary-shaping/boundary-shaping-001.html": [
[
"css/css-text/boundary-shaping/boundary-shaping-001.html",
@@ -252790,6 +252866,18 @@
"css/css-text-decor/reference/text-underline-offset-002-ref.html": [
[]
],
+ "css/css-text-decor/reference/text-underline-offset-scroll-001-notref.html": [
+ []
+ ],
+ "css/css-text-decor/reference/text-underline-offset-scroll-001-ref.html": [
+ []
+ ],
+ "css/css-text-decor/reference/text-underline-offset-vertical-001-ref.html": [
+ []
+ ],
+ "css/css-text-decor/reference/text-underline-offset-vertical-002-ref.html": [
+ []
+ ],
"css/css-text/META.yml": [
[]
],
@@ -265315,9 +265403,6 @@
"html/browsers/browsing-the-web/history-traversal/browsing_context_name_cross_origin-0.html": [
[]
],
- "html/browsers/browsing-the-web/history-traversal/contains.json": [
- []
- ],
"html/browsers/browsing-the-web/history-traversal/persisted-user-state-restoration/resources/blank1.html": [
[]
],
@@ -265486,9 +265571,6 @@
"html/browsers/browsing-the-web/unloading-documents/beforeunload-on-navigation-of-parent-2.html": [
[]
],
- "html/browsers/browsing-the-web/unloading-documents/contains.json": [
- []
- ],
"html/browsers/browsing-the-web/unloading-documents/navigation-within-beforeunload-1.html": [
[]
],
@@ -265762,9 +265844,6 @@
"html/browsers/history/the-location-interface/assign_before_load-2.html": [
[]
],
- "html/browsers/history/the-location-interface/contains.json": [
- []
- ],
"html/browsers/history/the-location-interface/cross_origin_joined_frame.sub.html": [
[]
],
@@ -265876,12 +265955,6 @@
"html/browsers/offline/changestonetworkingmodel/original-id.json": [
[]
],
- "html/browsers/offline/introduction-4/contains.json": [
- []
- ],
- "html/browsers/offline/manifests/contains.json": [
- []
- ],
"html/browsers/offline/no-appcache-in-shared-workers-historical.js": [
[]
],
@@ -266053,9 +266126,6 @@
"html/browsers/the-window-object/support/sizing-target.html": [
[]
],
- "html/browsers/windows/auxiliary-browsing-contexts/contains.json": [
- []
- ],
"html/browsers/windows/auxiliary-browsing-contexts/resources/close-opener.html": [
[]
],
@@ -266134,9 +266204,6 @@
"html/browsers/windows/browsing-context-names/resources/report-is-top.html": [
[]
],
- "html/browsers/windows/nested-browsing-contexts/contains.json": [
- []
- ],
"html/browsers/windows/nested-browsing-contexts/resources/frameElement-nested-frame.html": [
[]
],
@@ -266281,18 +266348,9 @@
"html/dom/elements-text.js": [
[]
],
- "html/dom/elements/content-models/contains.json": [
- []
- ],
- "html/dom/elements/element-definitions/contains.json": [
- []
- ],
"html/dom/elements/global-attributes/.htaccess": [
[]
],
- "html/dom/elements/global-attributes/contains.json": [
- []
- ],
"html/dom/elements/global-attributes/dir_auto-EN-L-ref.html": [
[]
],
@@ -266515,9 +266573,6 @@
"html/dom/elements/wai-aria/README.md": [
[]
],
- "html/dom/elements/wai-aria/contains.json": [
- []
- ],
"html/dom/new-harness.js": [
[]
],
@@ -269176,15 +269231,6 @@
"html/iana/web-scheme-prefix/original-id.json": [
[]
],
- "html/infrastructure/common-dom-interfaces/collections/contains.json": [
- []
- ],
- "html/infrastructure/common-microsyntaxes/dates-and-times/contains.json": [
- []
- ],
- "html/infrastructure/common-microsyntaxes/numbers/contains.json": [
- []
- ],
"html/infrastructure/safe-passing-of-structured-data/resources/echo-iframe.html": [
[]
],
@@ -269632,9 +269678,6 @@
"html/semantics/document-metadata/the-link-element/stylesheet.py": [
[]
],
- "html/semantics/document-metadata/the-meta-element/contains.json": [
- []
- ],
"html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/support/;url=foo": [
[]
],
@@ -269674,9 +269717,6 @@
"html/semantics/embedded-content/META.yml": [
[]
],
- "html/semantics/embedded-content/image-maps/contains.json": [
- []
- ],
"html/semantics/embedded-content/image-maps/image-map-processing-model/hash-name-reference-test-data.html": [
[]
],
@@ -269686,9 +269726,6 @@
"html/semantics/embedded-content/media-elements/autoplay-disabled-by-feature-policy.https.sub.html.headers": [
[]
],
- "html/semantics/embedded-content/media-elements/contains.json": [
- []
- ],
"html/semantics/embedded-content/media-elements/loading-the-media-resource/resources/delayed-broken-video.py": [
[]
],
@@ -269971,9 +270008,6 @@
"html/semantics/embedded-content/the-canvas-element/2d.scaled.png": [
[]
],
- "html/semantics/embedded-content/the-canvas-element/contains.json": [
- []
- ],
"html/semantics/embedded-content/the-canvas-element/initial.colour.png": [
[]
],
@@ -270292,9 +270326,6 @@
"html/semantics/embedded-content/the-img-element/brokenimg.jpg": [
[]
],
- "html/semantics/embedded-content/the-img-element/contains.json": [
- []
- ],
"html/semantics/embedded-content/the-img-element/document-base-url-ref.html": [
[]
],
@@ -270367,27 +270398,15 @@
"html/semantics/forms/META.yml": [
[]
],
- "html/semantics/forms/attributes-common-to-form-controls/contains.json": [
- []
- ],
"html/semantics/forms/attributes-common-to-form-controls/dirname-ltr-iframe.html": [
[]
],
"html/semantics/forms/autofocus/resources/child-autofocus.html": [
[]
],
- "html/semantics/forms/constraints/contains.json": [
- []
- ],
"html/semantics/forms/constraints/support/validator.js": [
[]
],
- "html/semantics/forms/form-control-infrastructure/contains.json": [
- []
- ],
- "html/semantics/forms/form-submission-0/contains.json": [
- []
- ],
"html/semantics/forms/form-submission-0/form-data-set-usv-form.html": [
[]
],
@@ -270409,9 +270428,6 @@
"html/semantics/forms/form-submission-target/resources/reltester.js": [
[]
],
- "html/semantics/forms/introduction-1/contains.json": [
- []
- ],
"html/semantics/forms/resetting-a-form/reset-form-event-realm-support.html": [
[]
],
@@ -270439,9 +270455,6 @@
"html/semantics/forms/the-form-element/resources/target/form-action-url-target.html": [
[]
],
- "html/semantics/forms/the-input-element/contains.json": [
- []
- ],
"html/semantics/forms/the-input-element/image01-ref.html": [
[]
],
@@ -270547,15 +270560,9 @@
"html/semantics/interactive-elements/commands/common/accesskey.js": [
[]
],
- "html/semantics/interactive-elements/commands/contains.json": [
- []
- ],
"html/semantics/interactive-elements/the-dialog-element/centering-iframe.sub.html": [
[]
],
- "html/semantics/interactive-elements/the-dialog-element/contains.json": [
- []
- ],
"html/semantics/interactive-elements/the-dialog-element/resources/common.js": [
[]
],
@@ -270565,9 +270572,6 @@
"html/semantics/links/META.yml": [
[]
],
- "html/semantics/links/downloading-resources/contains.json": [
- []
- ],
"html/semantics/links/links-created-by-a-and-area-elements/support/noopener-popup.html": [
[]
],
@@ -270589,9 +270593,6 @@
"html/semantics/links/linktypes/alternate.css": [
[]
],
- "html/semantics/links/linktypes/contains.json": [
- []
- ],
"html/semantics/links/linktypes/original-id.json": [
[]
],
@@ -270604,9 +270605,6 @@
"html/semantics/scripting-1/the-script-element/cacheable-script-throw.py": [
[]
],
- "html/semantics/scripting-1/the-script-element/contains.json": [
- []
- ],
"html/semantics/scripting-1/the-script-element/defer.js": [
[]
],
@@ -271228,9 +271226,6 @@
"html/semantics/scripting-1/the-template-element/resources/two-templates.html": [
[]
],
- "html/semantics/sections/headings-and-sections/contains.json": [
- []
- ],
"html/semantics/sections/the-h1-h2-h3-h4-h5-and-h6-elements/original-id.json": [
[]
],
@@ -271249,12 +271244,6 @@
"html/semantics/tabular-data/html-table-section-element.js": [
[]
],
- "html/semantics/tabular-data/processing-model-1/contains.json": [
- []
- ],
- "html/semantics/tabular-data/the-table-element/contains.json": [
- []
- ],
"html/semantics/text-level-semantics/the-a-element/a-download-404.py": [
[]
],
@@ -271384,9 +271373,6 @@
"html/syntax/parsing/common.js": [
[]
],
- "html/syntax/parsing/contains.json": [
- []
- ],
"html/syntax/parsing/foreign_content_001.html": [
[]
],
@@ -271426,12 +271412,6 @@
"html/syntax/parsing/test.js": [
[]
],
- "html/syntax/writing/elements-0/contains.json": [
- []
- ],
- "html/syntax/writing/text/contains.json": [
- []
- ],
"html/the-xhtml-syntax/parsing-xhtml-documents/adopt-while-parsing-001-ref.html": [
[]
],
@@ -271618,9 +271598,6 @@
"html/webappapis/dynamic-markup-insertion/opening-the-input-stream/type-argument-plaintext-subframe.txt": [
[]
],
- "html/webappapis/scripting/event-loops/contains.json": [
- []
- ],
"html/webappapis/scripting/event-loops/resources/common.js": [
[]
],
@@ -271630,9 +271607,6 @@
"html/webappapis/scripting/event-loops/resources/page-with-frame.html": [
[]
],
- "html/webappapis/scripting/events/contains.json": [
- []
- ],
"html/webappapis/scripting/events/event-handler-processing-algorithm-error/resources/no-op-worker.js": [
[]
],
@@ -271651,15 +271625,6 @@
"html/webappapis/scripting/events/resources/open-window.html": [
[]
],
- "html/webappapis/scripting/processing-model-2/contains.json": [
- []
- ],
- "html/webappapis/scripting/processing-model-2/integration-with-the-javascript-agent-formalism/worker-that-requires-failure.js": [
- []
- ],
- "html/webappapis/scripting/processing-model-2/integration-with-the-javascript-agent-formalism/worker-that-requires-success.js": [
- []
- ],
"html/webappapis/scripting/processing-model-2/support/syntax-error-in-setInterval.js": [
[]
],
@@ -271693,9 +271658,6 @@
"html/webappapis/structured-clone/structured-clone-battery-of-tests.js": [
[]
],
- "html/webappapis/system-state-and-capabilities/the-navigator-object/contains.json": [
- []
- ],
"html/webappapis/the-windoworworkerglobalscope-mixin/support/WorkerSelfOriginSharedWorker.js": [
[]
],
@@ -308934,6 +308896,78 @@
{}
]
],
+ "css/css-align/parsing/align-content-invalid.html": [
+ [
+ "css/css-align/parsing/align-content-invalid.html",
+ {}
+ ]
+ ],
+ "css/css-align/parsing/align-content-valid.html": [
+ [
+ "css/css-align/parsing/align-content-valid.html",
+ {}
+ ]
+ ],
+ "css/css-align/parsing/align-items-invalid.html": [
+ [
+ "css/css-align/parsing/align-items-invalid.html",
+ {}
+ ]
+ ],
+ "css/css-align/parsing/align-items-valid.html": [
+ [
+ "css/css-align/parsing/align-items-valid.html",
+ {}
+ ]
+ ],
+ "css/css-align/parsing/align-self-invalid.html": [
+ [
+ "css/css-align/parsing/align-self-invalid.html",
+ {}
+ ]
+ ],
+ "css/css-align/parsing/align-self-valid.html": [
+ [
+ "css/css-align/parsing/align-self-valid.html",
+ {}
+ ]
+ ],
+ "css/css-align/parsing/justify-content-invalid.html": [
+ [
+ "css/css-align/parsing/justify-content-invalid.html",
+ {}
+ ]
+ ],
+ "css/css-align/parsing/justify-content-valid.html": [
+ [
+ "css/css-align/parsing/justify-content-valid.html",
+ {}
+ ]
+ ],
+ "css/css-align/parsing/justify-items-invalid.html": [
+ [
+ "css/css-align/parsing/justify-items-invalid.html",
+ {}
+ ]
+ ],
+ "css/css-align/parsing/justify-items-valid.html": [
+ [
+ "css/css-align/parsing/justify-items-valid.html",
+ {}
+ ]
+ ],
+ "css/css-align/parsing/justify-self-invalid.html": [
+ [
+ "css/css-align/parsing/justify-self-invalid.html",
+ {}
+ ]
+ ],
+ "css/css-align/parsing/justify-self-valid.html": [
+ [
+ "css/css-align/parsing/justify-self-valid.html",
+ {}
+ ]
+ ],
"css/css-align/self-alignment/parse-align-self-001.html": [
[
"css/css-align/self-alignment/parse-align-self-001.html",
@@ -314814,6 +314848,12 @@
{}
]
],
+ "css/css-overscroll-behavior/overscroll-behavior-logical.html": [
+ [
+ "css/css-overscroll-behavior/overscroll-behavior-logical.html",
+ {}
+ ]
+ ],
"css/css-overscroll-behavior/parsing/overscroll-behavior-computed.html": [
[
"css/css-overscroll-behavior/parsing/overscroll-behavior-computed.html",
@@ -329069,9 +329109,9 @@
{}
]
],
- "element-timing/image-TAO-wildcard.sub.html": [
+ "element-timing/image-TAO.sub.html": [
[
- "element-timing/image-TAO-wildcard.sub.html",
+ "element-timing/image-TAO.sub.html",
{}
]
],
@@ -347235,7 +347275,9 @@
"html/rendering/pixel-length-attributes.html": [
[
"html/rendering/pixel-length-attributes.html",
- {}
+ {
+ "timeout": "long"
+ }
]
],
"html/rendering/replaced-elements/attributes-for-embedded-content-and-images/img-aspect-ratio.tentative.html": [
@@ -347346,6 +347388,12 @@
{}
]
],
+ "html/rendering/unmapped-attributes.html": [
+ [
+ "html/rendering/unmapped-attributes.html",
+ {}
+ ]
+ ],
"html/rendering/widgets/button-layout/abspos.html": [
[
"html/rendering/widgets/button-layout/abspos.html",
@@ -357529,28 +357577,52 @@
{}
]
],
- "html/webappapis/scripting/processing-model-2/integration-with-the-javascript-agent-formalism/canblock-dedicatedworker.html": [
+ "html/webappapis/scripting/processing-model-2/integration-with-the-javascript-agent-formalism/requires-failure.https.any.js": [
[
- "html/webappapis/scripting/processing-model-2/integration-with-the-javascript-agent-formalism/canblock-dedicatedworker.html",
- {}
- ]
- ],
- "html/webappapis/scripting/processing-model-2/integration-with-the-javascript-agent-formalism/canblock-serviceworker.https.html": [
+ "html/webappapis/scripting/processing-model-2/integration-with-the-javascript-agent-formalism/requires-failure.https.any.html",
+ {
+ "script_metadata": [
+ [
+ "global",
+ "!default,window,serviceworker"
+ ]
+ ]
+ }
+ ],
[
- "html/webappapis/scripting/processing-model-2/integration-with-the-javascript-agent-formalism/canblock-serviceworker.https.html",
- {}
+ "html/webappapis/scripting/processing-model-2/integration-with-the-javascript-agent-formalism/requires-failure.https.any.serviceworker.html",
+ {
+ "script_metadata": [
+ [
+ "global",
+ "!default,window,serviceworker"
+ ]
+ ]
+ }
]
],
- "html/webappapis/scripting/processing-model-2/integration-with-the-javascript-agent-formalism/canblock-sharedworker.html": [
+ "html/webappapis/scripting/processing-model-2/integration-with-the-javascript-agent-formalism/requires-success.any.js": [
[
- "html/webappapis/scripting/processing-model-2/integration-with-the-javascript-agent-formalism/canblock-sharedworker.html",
- {}
- ]
- ],
- "html/webappapis/scripting/processing-model-2/integration-with-the-javascript-agent-formalism/canblock-window.html": [
+ "html/webappapis/scripting/processing-model-2/integration-with-the-javascript-agent-formalism/requires-success.any.sharedworker.html",
+ {
+ "script_metadata": [
+ [
+ "global",
+ "!default,dedicatedworker,sharedworker"
+ ]
+ ]
+ }
+ ],
[
- "html/webappapis/scripting/processing-model-2/integration-with-the-javascript-agent-formalism/canblock-window.html",
- {}
+ "html/webappapis/scripting/processing-model-2/integration-with-the-javascript-agent-formalism/requires-success.any.worker.html",
+ {
+ "script_metadata": [
+ [
+ "global",
+ "!default,dedicatedworker,sharedworker"
+ ]
+ ]
+ }
]
],
"html/webappapis/scripting/processing-model-2/runtime-error-cross-origin-setInterval.html": [
@@ -390109,6 +390181,12 @@
}
]
],
+ "std-toast/actions.html": [
+ [
+ "std-toast/actions.html",
+ {}
+ ]
+ ],
"std-toast/attributes.html": [
[
"std-toast/attributes.html",
@@ -403008,6 +403086,18 @@
{}
]
],
+ "webaudio/the-audio-api/the-mediastreamaudiosourcenode-interface/mediastreamaudiosourcenode-ctor.html": [
+ [
+ "webaudio/the-audio-api/the-mediastreamaudiosourcenode-interface/mediastreamaudiosourcenode-ctor.html",
+ {}
+ ]
+ ],
+ "webaudio/the-audio-api/the-mediastreamaudiosourcenode-interface/mediastreamaudiosourcenode-routing.html": [
+ [
+ "webaudio/the-audio-api/the-mediastreamaudiosourcenode-interface/mediastreamaudiosourcenode-routing.html",
+ {}
+ ]
+ ],
"webaudio/the-audio-api/the-offlineaudiocontext-interface/ctor-offlineaudiocontext.html": [
[
"webaudio/the-audio-api/the-offlineaudiocontext-interface/ctor-offlineaudiocontext.html",
@@ -404283,7 +404373,9 @@
"webrtc/RTCDataChannel-bufferedAmount.html": [
[
"webrtc/RTCDataChannel-bufferedAmount.html",
- {}
+ {
+ "timeout": "long"
+ }
]
],
"webrtc/RTCDataChannel-id.html": [
@@ -409441,6 +409533,12 @@
{}
]
],
+ "webxr/events_referenceSpace_reset.https.html": [
+ [
+ "webxr/events_referenceSpace_reset.https.html",
+ {}
+ ]
+ ],
"webxr/idlharness.https.window.js": [
[
"webxr/idlharness.https.window.html",
@@ -409482,6 +409580,18 @@
{}
]
],
+ "webxr/xrBoundedReferenceSpace_updates.https.html": [
+ [
+ "webxr/xrBoundedReferenceSpace_updates.https.html",
+ {}
+ ]
+ ],
+ "webxr/xrDevice_disconnect_ends.https.html": [
+ [
+ "webxr/xrDevice_disconnect_ends.https.html",
+ {}
+ ]
+ ],
"webxr/xrDevice_requestSession_immersive.https.html": [
[
"webxr/xrDevice_requestSession_immersive.https.html",
@@ -409626,6 +409736,12 @@
{}
]
],
+ "webxr/xrStationaryReferenceSpace_floorlevel_updates.https.html": [
+ [
+ "webxr/xrStationaryReferenceSpace_floorlevel_updates.https.html",
+ {}
+ ]
+ ],
"webxr/xrView_eyes.https.html": [
[
"webxr/xrView_eyes.https.html",
@@ -446619,7 +446735,7 @@
"manual"
],
"clipboard-apis/async-write-image-read-image-manual.https.html": [
- "351e74bd74568b4c221cd60c145c2681e1dc6ed5",
+ "ad1dc4f83b047f74ae52240174d12dbf60ccee24",
"manual"
],
"clipboard-apis/clipboard-events-synthetic.html": [
@@ -530254,6 +530370,54 @@
"7e2fa130be24214fa8c21f58d0f88a744beb6b79",
"testharness"
],
+ "css/css-align/parsing/align-content-invalid.html": [
+ "ae244389bf1b54f37a9fd6a65111d5e8f3c703fc",
+ "testharness"
+ ],
+ "css/css-align/parsing/align-content-valid.html": [
+ "46c4724516855f169fba15650e89d56e18d884c9",
+ "testharness"
+ ],
+ "css/css-align/parsing/align-items-invalid.html": [
+ "8e329d50e5c34a8fba0eb122be8686e1dfafed31",
+ "testharness"
+ ],
+ "css/css-align/parsing/align-items-valid.html": [
+ "e88845b962ac2df802346b8d57c4b17147d79a81",
+ "testharness"
+ ],
+ "css/css-align/parsing/align-self-invalid.html": [
+ "27b025002655d859c290a4e41d46289680a7a810",
+ "testharness"
+ ],
+ "css/css-align/parsing/align-self-valid.html": [
+ "25ea093b20997419f4d560d47cb9300d136d090e",
+ "testharness"
+ ],
+ "css/css-align/parsing/justify-content-invalid.html": [
+ "971f94bcf8be5ad4e9b4978dc3bc4211e9804881",
+ "testharness"
+ ],
+ "css/css-align/parsing/justify-content-valid.html": [
+ "d476a268addc672fdde32465eb2570315becf0cf",
+ "testharness"
+ ],
+ "css/css-align/parsing/justify-items-invalid.html": [
+ "18da059376095c00c791445268ccba53066b749e",
+ "testharness"
+ ],
+ "css/css-align/parsing/justify-items-valid.html": [
+ "36584f86feb4533b712c418f6cdc20f761d4f172",
+ "testharness"
+ ],
+ "css/css-align/parsing/justify-self-invalid.html": [
+ "846cdd8a00f028b2b04707b4325bfb10f0a5239a",
+ "testharness"
+ ],
+ "css/css-align/parsing/justify-self-valid.html": [
+ "1ee23af200f6300bc3a86f0a1b843c875c8c92a9",
+ "testharness"
+ ],
"css/css-align/reference/baseline-of-scrollable-1-ref.html": [
"422660aff6b6b486ce3288469b4769e1497b071e",
"support"
@@ -543995,7 +544159,7 @@
"testharness"
],
"css/css-fonts/inheritance.html": [
- "8ff02fb7405a358cb4716716e87adc1bee58fca7",
+ "f0c46bec5083dd5b7f5bd0d8da49d5fc0ce01d81",
"testharness"
],
"css/css-fonts/language-specific-01.html": [
@@ -558294,20 +558458,24 @@
"e49fa49bc4e26572a68ad947e8e82a63ee46d4e2",
"testharness"
],
+ "css/css-overscroll-behavior/overscroll-behavior-logical.html": [
+ "a06132feaa05c837151503920caa16458a4ac9e9",
+ "testharness"
+ ],
"css/css-overscroll-behavior/overscrollBehavior-manual.html": [
"97f52984a51ae4157ec8ed91ddf4b3b8d405bec6",
"manual"
],
"css/css-overscroll-behavior/parsing/overscroll-behavior-computed.html": [
- "af117f19f906ad74e4bb3acc158a0829c6c69fa9",
+ "b587ec5cff2214d25a417af05c1c57d12c403edb",
"testharness"
],
"css/css-overscroll-behavior/parsing/overscroll-behavior-invalid.html": [
- "a29722f46570f89fafd76898ff2409017348b8a3",
+ "02ada4576cc38efe0c5e05837cf319d37fe9b995",
"testharness"
],
"css/css-overscroll-behavior/parsing/overscroll-behavior-valid.html": [
- "9dbd4fbb8f93df88e65b7515595ec22979f0ef18",
+ "45d90d485f308a5999929f0edd066ec659bfd63f",
"testharness"
],
"css/css-page/META.yml": [
@@ -559738,6 +559906,14 @@
"1972317822b945b2a70712884ddb2d39b924420e",
"reftest"
],
+ "css/css-position/static-position/inline-level-absolute-in-block-level-context-013.html": [
+ "59541dd679e1c8ea192662f85bb19b85df3b30d5",
+ "reftest"
+ ],
+ "css/css-position/static-position/inline-level-absolute-in-block-level-context-014.html": [
+ "69416c1cd7988f5842f5074b143379c7b90163c2",
+ "reftest"
+ ],
"css/css-position/static-position/vlr-ltr-ltr.html": [
"aa929a7b5085a72acdde7b05b49d9f452fc373e8",
"reftest"
@@ -563043,7 +563219,7 @@
"testharness"
],
"css/css-scroll-snap/snap-at-user-scroll-end-manual.html": [
- "0ab50d6be3e556603b2d2b4b2e41278e9431ba71",
+ "5ef2009df18e297669c6bec1e28c0330c2e16674",
"manual"
],
"css/css-scroll-snap/snap-inline-block.html": [
@@ -565370,6 +565546,10 @@
"57c3f0dea3a56f0281a44e6be019c3ecc9866937",
"testharness"
],
+ "css/css-tables/absolute-tables-006.html": [
+ "91439a69c9b1765cdbaf7e9614180d080ab32907",
+ "reftest"
+ ],
"css/css-tables/anonymous-table-cell-margin-collapsing.html": [
"23b467ebacc983122a632f4d5971c8daca569420",
"reftest"
@@ -566218,6 +566398,22 @@
"ed2e3cefff82a120c3d33f504fd8d6ee78d9fe8c",
"support"
],
+ "css/css-text-decor/reference/text-underline-offset-scroll-001-notref.html": [
+ "fbfdadff0df100bed16f721d3ddd3dd99fc283d4",
+ "support"
+ ],
+ "css/css-text-decor/reference/text-underline-offset-scroll-001-ref.html": [
+ "5b321033d352b84c1ddf68487a484849c95d3710",
+ "support"
+ ],
+ "css/css-text-decor/reference/text-underline-offset-vertical-001-ref.html": [
+ "7ab3b1dcd99d0a06d24db489325506a30af7488c",
+ "support"
+ ],
+ "css/css-text-decor/reference/text-underline-offset-vertical-002-ref.html": [
+ "30a85700d8af5a2a9b083af44bc33ecc1e931236",
+ "support"
+ ],
"css/css-text-decor/text-decoration-001-manual.html": [
"9b620132697dfbf68f0d10575afaf7d902e649da",
"manual"
@@ -566706,10 +566902,22 @@
"62f770497cbde626e28988583a28f90544ac39b5",
"testharness"
],
+ "css/css-text-decor/text-underline-offset-scroll-001.html": [
+ "0a046fb33e06ae6f7c9d4eefd4fd6745ba0b2d7e",
+ "reftest"
+ ],
"css/css-text-decor/text-underline-offset-valid.html": [
"46b4c9e18fdbbe18657de60d424975f17fbbb558",
"testharness"
],
+ "css/css-text-decor/text-underline-offset-vertical-001.html": [
+ "8a7a5ac9d6a2356482be72f2e9e6dcfc6f5c122b",
+ "reftest"
+ ],
+ "css/css-text-decor/text-underline-offset-vertical-002.html": [
+ "74491c823dd96c3a28cfdabbc2adf22f518a1ca1",
+ "reftest"
+ ],
"css/css-text-decor/text-underline-position-019-manual.html": [
"0308fbc8c9ed4b54865a5b382741c148c6853981",
"manual"
@@ -596203,7 +596411,7 @@
"support"
],
"css/support/inheritance-testcommon.js": [
- "8d1645f9b110137408837418423a2ed42a588072",
+ "38ac94eb12e9820732958455238b50699ad373ee",
"support"
],
"css/support/interpolation-testcommon.js": [
@@ -608806,8 +609014,8 @@
"82e7461b0417fb6f667ad266c08789b58f06c457",
"testharness"
],
- "element-timing/image-TAO-wildcard.sub.html": [
- "3af893a98904102bab92672cd28f7fb1e4d2107c",
+ "element-timing/image-TAO.sub.html": [
+ "83a7a5ca0a21e9b4fd32192b019b6a15603748c8",
"testharness"
],
"element-timing/image-carousel.html": [
@@ -608899,7 +609107,7 @@
"testharness"
],
"element-timing/resources/TAOImage.py": [
- "5d042c48941d09ca2d494f054d3625503beaeef0",
+ "1e0afb3827898d4aad7d29ce5649ac00948ff492",
"support"
],
"element-timing/resources/circle.svg": [
@@ -615366,10 +615574,6 @@
"b6a35680dd716328e5547c4e42185b597f4d091e",
"testharness"
],
- "html/browsers/browsing-the-web/history-traversal/contains.json": [
- "90b3466688cc928841a17cdfedb58a9e17ee2fe6",
- "support"
- ],
"html/browsers/browsing-the-web/history-traversal/events.html": [
"d5ff83fac07e23347287652d28699ec7f3877e61",
"testharness"
@@ -615922,10 +616126,6 @@
"6806eaf7a390e9a195b2f7f69d2cf16f4362a0f1",
"testharness"
],
- "html/browsers/browsing-the-web/unloading-documents/contains.json": [
- "4ebca09bfda22e4760a978cd471908a85a7432ac",
- "support"
- ],
"html/browsers/browsing-the-web/unloading-documents/navigation-within-beforeunload-1.html": [
"b96234fba2cb85b10cfa0e086c723f8aa0a82149",
"support"
@@ -616594,10 +616794,6 @@
"62a2aa7c60df02707e8b423c28ddc657aed1f1ad",
"testharness"
],
- "html/browsers/history/the-location-interface/contains.json": [
- "d311dbb31e30e1128029f4cfefea8c8c74ad06a5",
- "support"
- ],
"html/browsers/history/the-location-interface/cross_origin_joined_frame.sub.html": [
"a3ffdd005afadb784b1b64a12caa190a66271018",
"support"
@@ -616986,10 +617182,6 @@
"2f77367c8f9b21fee27e16f53212bdd3e6aa628d",
"support"
],
- "html/browsers/offline/introduction-4/contains.json": [
- "799caa23abec56055e48877682a7b951dc15b505",
- "support"
- ],
"html/browsers/offline/introduction-4/event_cached.https.html": [
"24f57769fc58b4597bd4a6c19a6db339be7e29f6",
"testharness"
@@ -617046,10 +617238,6 @@
"02bf70b163dd1494ae67b5e64bfd10a4d47ba5d0",
"testharness"
],
- "html/browsers/offline/manifests/contains.json": [
- "3fe509a781c43fa64b520abb1f98076d248e5561",
- "support"
- ],
"html/browsers/offline/no-appcache-in-shared-workers-historical.https.html": [
"edfcc3e43605c58d59f8a0c6582c9240d25481c4",
"testharness"
@@ -617602,10 +617790,6 @@
"5779199ca3ad9d92cc294b8d2166798ef707e440",
"testharness"
],
- "html/browsers/windows/auxiliary-browsing-contexts/contains.json": [
- "9f2ca3b6fa518db9d64116d92ce21bf34818c5c6",
- "support"
- ],
"html/browsers/windows/auxiliary-browsing-contexts/opener-closed.html": [
"7c939bc77466900a6fcd544dd07029503e62537b",
"testharness"
@@ -617818,10 +618002,6 @@
"8e02664342f5493faa1f68e67804f2dd7f4d6491",
"testharness"
],
- "html/browsers/windows/nested-browsing-contexts/contains.json": [
- "121284dca146c10e4d3b2c0a4f06c0fdf8b6d147",
- "support"
- ],
"html/browsers/windows/nested-browsing-contexts/frameElement.sub.html": [
"2f5b1c466f8bdaf2555e548f4140abdcc18d79bc",
"testharness"
@@ -618326,14 +618506,6 @@
"f71df48ee3c86afd9f7b634f3c390a9ccc9d4933",
"support"
],
- "html/dom/elements/content-models/contains.json": [
- "42f158d367491eafdebd466d770c0fa677cd54cf",
- "support"
- ],
- "html/dom/elements/element-definitions/contains.json": [
- "a942e85a23927654d86134788cfacfbebbded727",
- "support"
- ],
"html/dom/elements/elements-in-the-dom/historical.html": [
"078ce29cc029bd51554d839ff4dc792a78cc8371",
"testharness"
@@ -618350,10 +618522,6 @@
"5b0560b3172b4d8e4bd8dfe804ab581fce460749",
"testharness"
],
- "html/dom/elements/global-attributes/contains.json": [
- "c413488b504aa4bb2b7224ead08f774c3fe395f7",
- "support"
- ],
"html/dom/elements/global-attributes/custom-attrs.html": [
"a1e41dac2562f6ef35fe55cd0cbd0bdbb5df8c83",
"testharness"
@@ -619118,10 +619286,6 @@
"bea30702d1aab7250c29b6bade3e4b696bea7795",
"support"
],
- "html/dom/elements/wai-aria/contains.json": [
- "031cde580b2c3ddb6c2f0c9cb56e9cd57a48a3bb",
- "support"
- ],
"html/dom/historical.html": [
"b79d35f0b8a383d026920d80d7374887f283a31b",
"testharness"
@@ -623198,10 +623362,6 @@
"9db9bc7bf50d3c7139e2ab921d3adb662e1bf959",
"support"
],
- "html/infrastructure/common-dom-interfaces/collections/contains.json": [
- "b30f1d0d533335c11cd83ce7931c40d78c2c0059",
- "support"
- ],
"html/infrastructure/common-dom-interfaces/collections/domstringlist-interface.html": [
"e991e19f059ea73321b8df94c95f841ec8277ed8",
"testharness"
@@ -623234,14 +623394,6 @@
"fc70d7172c377111dd17febceae89313925aab87",
"testharness"
],
- "html/infrastructure/common-microsyntaxes/dates-and-times/contains.json": [
- "5be31eb48f19a249386a85f0d260d0ee7f55c692",
- "support"
- ],
- "html/infrastructure/common-microsyntaxes/numbers/contains.json": [
- "39a6ea005883f0f654563ad7b7bbab1bd07b549f",
- "support"
- ],
"html/infrastructure/conformance-requirements/extensibility/foreign.html": [
"eaa133badee16d1dade6de02e4cf646515289eb5",
"testharness"
@@ -623695,7 +623847,7 @@
"support"
],
"html/rendering/dimension-attributes.html": [
- "80122ee0e73c09b03e14ccf46e1b4dd6709dfbd8",
+ "bfc70ec14144c21fed7ffcb16b008809053673d8",
"testharness"
],
"html/rendering/interactive-media/links-forms-and-navigation/original-id.json": [
@@ -624499,7 +624651,7 @@
"support"
],
"html/rendering/pixel-length-attributes.html": [
- "a66913afb84065871841dd9f851987270e57ef53",
+ "888e6d0a3ff7ade1f9f3c5849f94cdcd4f13b231",
"testharness"
],
"html/rendering/replaced-elements/attributes-for-embedded-content-and-images/img-aspect-ratio.tentative.html": [
@@ -624726,6 +624878,10 @@
"1f09e7e75f9126982a07902ae0693f9ea2fd5823",
"support"
],
+ "html/rendering/unmapped-attributes.html": [
+ "3f457eb492f0b72b2a9c5891e8784d0b69958b38",
+ "testharness"
+ ],
"html/rendering/widgets/button-layout/abspos.html": [
"c3089b1e39749e003fcadd7d822a8343575be212",
"testharness"
@@ -624986,10 +625142,6 @@
"a312e9e87cac22c19c6a24e083060ac616cf4681",
"support"
],
- "html/semantics/document-metadata/the-meta-element/contains.json": [
- "70a4546914bdf920e50818783e30c9bfb15e1b64",
- "support"
- ],
"html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/allow-scripts-flag-changing-1.html": [
"09454a13b20343df287fa530ed90738fa0f0ae27",
"testharness"
@@ -625138,10 +625290,6 @@
"199c4c412fe026fca11ea5dd43b0e7873f7784ae",
"support"
],
- "html/semantics/embedded-content/image-maps/contains.json": [
- "bf7a3ddd8dee24e6fc79cf8c1bdcbab8f1d6f6bb",
- "support"
- ],
"html/semantics/embedded-content/image-maps/image-map-processing-model/hash-name-reference-test-data.html": [
"735ba8cf08655a3a62f916f9e6d52d0bdb3aef80",
"support"
@@ -625214,10 +625362,6 @@
"f687edf198dbb65064d90d4c3fc8baf4d684cde7",
"testharness"
],
- "html/semantics/embedded-content/media-elements/contains.json": [
- "9cf23296ceea72bd082c0db90b6d5f8e5f09f1da",
- "support"
- ],
"html/semantics/embedded-content/media-elements/error-codes/error.html": [
"42d86e49b0e96cdcf0fb5dd542e5c570fa388caa",
"testharness"
@@ -626818,10 +626962,6 @@
"1e3337732e40d48560eaa9a9f05c24cb29346da7",
"testharness"
],
- "html/semantics/embedded-content/the-canvas-element/contains.json": [
- "3f56f4fd8b34e3ca03e959c03c447576e3dee663",
- "support"
- ],
"html/semantics/embedded-content/the-canvas-element/context.arguments.missing.html": [
"37ae4e80021857c83d9d4216dcf0ba3b5cdceba9",
"testharness"
@@ -628070,10 +628210,6 @@
"ccff177ae9b5066a7085f7e967ab869e665975cc",
"support"
],
- "html/semantics/embedded-content/the-img-element/contains.json": [
- "9ac6d3d4224a76ffb1045b6f38c136c993604661",
- "support"
- ],
"html/semantics/embedded-content/the-img-element/current-pixel-density/basic.html": [
"f7d47b3640dfc03516aafcb744c9e9d32295e452",
"testharness"
@@ -628414,10 +628550,6 @@
"ce84e4ae4c9915f3c1c21d7d23f47a7086b83487",
"support"
],
- "html/semantics/forms/attributes-common-to-form-controls/contains.json": [
- "62326d33f8748ca1bd4e91186e67fc35bd32578a",
- "support"
- ],
"html/semantics/forms/attributes-common-to-form-controls/dirname-ltr-iframe.html": [
"b5ed7e3d9a717746d9653c7d5f867f3acbf3e47f",
"support"
@@ -628466,10 +628598,6 @@
"afd5601a523ff0a1d60d37b171b2098a38600ace",
"support"
],
- "html/semantics/forms/constraints/contains.json": [
- "67e4c3b12e0c74c3d04b21a80a902d1173772b55",
- "support"
- ],
"html/semantics/forms/constraints/form-validation-checkValidity.html": [
"2e790c75d82dec2f60f64199ea4e1cba1164bc63",
"testharness"
@@ -628598,10 +628726,6 @@
"4d84e7d3f0b58c1db7c2a543eb76a9cd8ed542c9",
"testharness"
],
- "html/semantics/forms/form-control-infrastructure/contains.json": [
- "754a6901d2365f5f4f857fb1a910e9f500e06f62",
- "support"
- ],
"html/semantics/forms/form-control-infrastructure/form.html": [
"518de358637133ab4054b7228d8cab8c55fda417",
"testharness"
@@ -628630,10 +628754,6 @@
"8dad6cdd01a43fa17694c67939e8e5a05ab529e2",
"testharness"
],
- "html/semantics/forms/form-submission-0/contains.json": [
- "f9d0d63bf684d4ad0c4f0e77b0bce2502d0c4e52",
- "support"
- ],
"html/semantics/forms/form-submission-0/form-data-set-empty-file.window.js": [
"693bcf9a2af5287e3b3fbca7090980a53cbef5b0",
"testharness"
@@ -628718,10 +628838,6 @@
"6873ecd251741fb8436a377081d5a6d3de53b7ab",
"testharness"
],
- "html/semantics/forms/introduction-1/contains.json": [
- "12a86681384b1fbdc5c50bb712ca53267eb199bc",
- "support"
- ],
"html/semantics/forms/resetting-a-form/reset-event.html": [
"f7d98f721653cd5ed98aa602e367cea635cd5820",
"testharness"
@@ -629106,10 +629222,6 @@
"6164815f66e4cec2b22a90c4e6c690214a9cc6eb",
"testharness"
],
- "html/semantics/forms/the-input-element/contains.json": [
- "c2b780f0b8d916a0e9ccaecf21610cada89e2d46",
- "support"
- ],
"html/semantics/forms/the-input-element/date.html": [
"9b95b86b165b66e02a62070bf41429c38b5331d1",
"testharness"
@@ -629866,10 +629978,6 @@
"f08761be8c1fc618e42369a3358c0dbf8a848bea",
"support"
],
- "html/semantics/interactive-elements/commands/contains.json": [
- "b2ca2e771bd9f7c82c2e955a88ac6fc6010c48a7",
- "support"
- ],
"html/semantics/interactive-elements/commands/legend/first-input-after-legend-manual.html": [
"521b4bb975530880caac863d96b167cd08abc7a0",
"manual"
@@ -629930,10 +630038,6 @@
"8df2d3052320bbfebc8184b3f426405b398dc632",
"testharness"
],
- "html/semantics/interactive-elements/the-dialog-element/contains.json": [
- "c865c8588576ce9ca1ec949a4de0bf8bb90ce0b4",
- "support"
- ],
"html/semantics/interactive-elements/the-dialog-element/dialog-autofocus-multiple-times.html": [
"ff9ebd7d2868ca732a9f4eff8558b461fd14154c",
"testharness"
@@ -630006,10 +630110,6 @@
"b2167370d148cb6516e0f2656e159a5ee06a4d1a",
"support"
],
- "html/semantics/links/downloading-resources/contains.json": [
- "b67f855cfb8352d4410f950892d36c1a2f975ac2",
- "support"
- ],
"html/semantics/links/following-hyperlinks/activation-behavior.window.js": [
"d530642b9e163a3b9b8ee3562783e8cfa3b367d6",
"testharness"
@@ -630070,10 +630170,6 @@
"b101ab91f01281c0919dffe8165f51274890719e",
"support"
],
- "html/semantics/links/linktypes/contains.json": [
- "55aa4f6774a699ce803520762391849a4504e83a",
- "support"
- ],
"html/semantics/links/linktypes/original-id.json": [
"1e5f7b5ed36035ed92670cc161750cfbe28976f1",
"support"
@@ -630142,10 +630238,6 @@
"5df883c07be307fb2f6ff6b14354a5bc816ce662",
"support"
],
- "html/semantics/scripting-1/the-script-element/contains.json": [
- "e31ce40031262e769f1981a88096e0495c9354ce",
- "support"
- ],
"html/semantics/scripting-1/the-script-element/data-url.html": [
"6fad50527177e756db35842e054bf19d6e4dfbe4",
"testharness"
@@ -632154,10 +632246,6 @@
"611ec50bb40dc731d45e99aab0a06ff14b4213cc",
"testharness"
],
- "html/semantics/sections/headings-and-sections/contains.json": [
- "a9fecf65b9dfbbae1585629142cbd84d7e9b34fd",
- "support"
- ],
"html/semantics/sections/the-h1-h2-h3-h4-h5-and-h6-elements/original-id.json": [
"748a548ca98260b3f0883eb696bdf301a9a9377a",
"support"
@@ -632282,10 +632370,6 @@
"a4a425b9c1f70926c77ad3eb1b8a8a87a4655de9",
"testharness"
],
- "html/semantics/tabular-data/processing-model-1/contains.json": [
- "be5a8fdfdd488068db55c07dad8d716d94f88c57",
- "support"
- ],
"html/semantics/tabular-data/processing-model-1/span-limits.html": [
"cdfa61bbcdc06ea62b80d042440d55fb0c89a186",
"testharness"
@@ -632298,10 +632382,6 @@
"ec95eab39fb26acc0831c287d55317075abead1a",
"testharness"
],
- "html/semantics/tabular-data/the-table-element/contains.json": [
- "ee89be21dc698d8a6ff4deeb479227e2cca0ef09",
- "support"
- ],
"html/semantics/tabular-data/the-table-element/createTBody.html": [
"6100aedfdfcd7a2e9524b5968d8a9eb45318571c",
"testharness"
@@ -632754,10 +632834,6 @@
"b3ac9ece70c433f2b01fe8ad18afcf98d3042b32",
"support"
],
- "html/syntax/parsing/contains.json": [
- "249c9fe014a0110d813e81af974fbe121023f627",
- "support"
- ],
"html/syntax/parsing/empty-doctype-ids.html": [
"befdce428c6f09474ea215909b7561a1945f0a81",
"testharness"
@@ -633174,14 +633250,6 @@
"334ce8adf76727b11a498e8e471dad0b42a1923d",
"testharness"
],
- "html/syntax/writing/elements-0/contains.json": [
- "39711a0a213e952099d6adc838a1d21b1bdb5632",
- "support"
- ],
- "html/syntax/writing/text/contains.json": [
- "870ff58a34277ed367f3f9a9d58f6abcb44293c3",
- "support"
- ],
"html/the-xhtml-syntax/parsing-xhtml-documents/adopt-while-parsing-001-ref.html": [
"5b512e72f5a1f3780c9c38be79968b095c277a39",
"support"
@@ -634110,10 +634178,6 @@
"78cdcfc5d989a81882a10b7d70050408aadfe924",
"testharness"
],
- "html/webappapis/scripting/event-loops/contains.json": [
- "5d7e5e600e90861a1703ae37321b1b2583024d19",
- "support"
- ],
"html/webappapis/scripting/event-loops/fully_active_document.window.js": [
"950a8a29ee5731785f350508dc8abec7ca98ba64",
"testharness"
@@ -634158,10 +634222,6 @@
"29ac9b8ced469025278b5d5215b651b58a6f5a4d",
"testharness"
],
- "html/webappapis/scripting/events/contains.json": [
- "65f3062d2cd7edf8a7b703a0e6de36f681895b84",
- "support"
- ],
"html/webappapis/scripting/events/contextmenu-event-manual.htm": [
"2331fa17eee102195dc38de8a016cd9d78b41ab1",
"manual"
@@ -634370,34 +634430,14 @@
"a4bdfd9c471548f26e943e34e44e8bca7736fede",
"testharness"
],
- "html/webappapis/scripting/processing-model-2/contains.json": [
- "b49029277f3e496b8bc094131f7391fd1354c3cd",
- "support"
- ],
- "html/webappapis/scripting/processing-model-2/integration-with-the-javascript-agent-formalism/canblock-dedicatedworker.html": [
- "0d559999f3faf8bc9971c7e895f2d8392dd9b861",
- "testharness"
- ],
- "html/webappapis/scripting/processing-model-2/integration-with-the-javascript-agent-formalism/canblock-serviceworker.https.html": [
- "6bfd29e8c74b509e41fd9bd9e57959c459865801",
- "testharness"
- ],
- "html/webappapis/scripting/processing-model-2/integration-with-the-javascript-agent-formalism/canblock-sharedworker.html": [
- "beb7c6467b2417b65109bf921cb9f2ab307b1917",
+ "html/webappapis/scripting/processing-model-2/integration-with-the-javascript-agent-formalism/requires-failure.https.any.js": [
+ "a890b350198253dc876e719d3e36d2426d3361a8",
"testharness"
],
- "html/webappapis/scripting/processing-model-2/integration-with-the-javascript-agent-formalism/canblock-window.html": [
- "369ce77b0b62af8b2f5eb6c4f818e830b5100cc1",
+ "html/webappapis/scripting/processing-model-2/integration-with-the-javascript-agent-formalism/requires-success.any.js": [
+ "290b44353c8ac57d4e0461c31b88c56b15c89103",
"testharness"
],
- "html/webappapis/scripting/processing-model-2/integration-with-the-javascript-agent-formalism/worker-that-requires-failure.js": [
- "586c8ba38764656243011df4a2e3617e80e2525e",
- "support"
- ],
- "html/webappapis/scripting/processing-model-2/integration-with-the-javascript-agent-formalism/worker-that-requires-success.js": [
- "2ed54143ee5572383da45c15c3a5a8e58ddde4dd",
- "support"
- ],
"html/webappapis/scripting/processing-model-2/runtime-error-cross-origin-setInterval.html": [
"dd97566d70107a9713e05c838f63de07512a29e3",
"testharness"
@@ -634558,10 +634598,6 @@
"40bcd8031b220bd75811468cde0a4c3bb6c15621",
"support"
],
- "html/webappapis/system-state-and-capabilities/the-navigator-object/contains.json": [
- "441c24cec976e4aacb211835f03852b584b35b11",
- "support"
- ],
"html/webappapis/system-state-and-capabilities/the-navigator-object/get-navigatorlanguage-manual.html": [
"4bdab91121d508001a78cd83209c2b8e3c54a692",
"manual"
@@ -659587,7 +659623,7 @@
"support"
],
"resource-timing/TAO-case-insensitive-null-opaque-origin.sub.html": [
- "5b222cdf277a2b13115726af3b8780e646e428b0",
+ "5d58f1c54664cdf5a2c91e523f6cd786148beeef",
"testharness"
],
"resource-timing/TAO-crossorigin-port.sub.html": [
@@ -659595,11 +659631,11 @@
"testharness"
],
"resource-timing/TAO-null-opaque-origin.sub.html": [
- "c78e590067717130fb8681c9c4fd7818816e6940",
+ "0a457637c5165481bf7a3bd1cbf023e9c07be751",
"testharness"
],
"resource-timing/buffer-full-add-after-full-event.html": [
- "969446582e0c4de315318ceabb69480bbaf59779",
+ "84d257e4f4527b7ddf199dfbc91b59183651099f",
"testharness"
],
"resource-timing/buffer-full-add-entries-during-callback-that-drop.html": [
@@ -659931,7 +659967,7 @@
"support"
],
"resource-timing/resources/iframe-TAO-crossorigin-port.sub.html": [
- "39f5d13054a79281ed0131315f834645e6e7790c",
+ "97d77fcc58a3bbd347a98e2cbd9fa6243a83838a",
"support"
],
"resource-timing/resources/iframe-navigate-back.html": [
@@ -660243,7 +660279,7 @@
"support"
],
"resources/chromium/webxr-test.js": [
- "e584ea37cb37edb7af3ed019e91b0a71b2648a44",
+ "8257fbdc2b37f10072c39dd90a3f48adcac90fa8",
"support"
],
"resources/chromium/webxr-test.js.headers": [
@@ -665610,16 +665646,20 @@
"c54357a03f214572481fc08be473cc308d50097b",
"support"
],
+ "std-toast/actions.html": [
+ "018ce21128bdddbba1e2e69fa287eb47eff026ed",
+ "testharness"
+ ],
"std-toast/attributes.html": [
- "2aef41aea618e0ec838ba7885494c69dd106ff17",
+ "58a515dfc981fa4f70f7360bab8d67dfcc01372e",
"testharness"
],
"std-toast/events-open.html": [
- "5442b36d261d0fd91f62cd38396b173429754245",
+ "a49414d2fce2061bcc1399e222cd6b2b5ccdc872",
"testharness"
],
"std-toast/events-showhide.html": [
- "73f1df4ae55bba7ef493dc22adae67553576326a",
+ "547f742f713cbf4c46a82ae1df353aa317b2d2df",
"testharness"
],
"std-toast/methods.html": [
@@ -665627,11 +665667,11 @@
"testharness"
],
"std-toast/options.html": [
- "9cea97146bf2456fc62d1cab71652a5312a4ef9c",
+ "6d4a462d3a9417a501c6ad434b25896a03e162db",
"testharness"
],
"std-toast/resources/helpers.js": [
- "41b7672ab1bb60d0a2345a6debb880db756940f6",
+ "52d740c144af59f1b32cbc8bdab555da9fa72227",
"support"
],
"std-toast/show-toast.html": [
@@ -676115,7 +676155,7 @@
"support"
],
"tools/wptserve/wptserve/constants.py": [
- "e248280ef36e93832b4c481a102c3177e618c42d",
+ "357a2e6d348f90341abea78f9df025f7034a2e40",
"support"
],
"tools/wptserve/wptserve/handlers.py": [
@@ -677083,7 +677123,7 @@
"testharness"
],
"user-timing/measure-with-dict.html": [
- "cdcc0ff1a36a34fa99f98c5bb6a2a79957c74f85",
+ "8ba7b9fe67a6d1213cbc7b6f41196247a8a1cda0",
"testharness"
],
"user-timing/measure.html": [
@@ -679643,7 +679683,7 @@
"testharness"
],
"webaudio/the-audio-api/the-audionode-interface/audionode-connect-method-chaining.html": [
- "5703a2a6c7f565f8705a5630d0b9e2b67394985c",
+ "2df5d03ac076557f6b2fb833efed333e243a320a",
"testharness"
],
"webaudio/the-audio-api/the-audionode-interface/audionode-connect-order.html": [
@@ -680226,6 +680266,14 @@
"e69de29bb2d1d6434b8b29ae775ad8c2e48c5391",
"support"
],
+ "webaudio/the-audio-api/the-mediastreamaudiosourcenode-interface/mediastreamaudiosourcenode-ctor.html": [
+ "fea042ca530d5c92de3edf358af8b21973187e13",
+ "testharness"
+ ],
+ "webaudio/the-audio-api/the-mediastreamaudiosourcenode-interface/mediastreamaudiosourcenode-routing.html": [
+ "b61c318ff0083f170fed58ee4b4a69bca807807a",
+ "testharness"
+ ],
"webaudio/the-audio-api/the-offlineaudiocontext-interface/.gitkeep": [
"e69de29bb2d1d6434b8b29ae775ad8c2e48c5391",
"support"
@@ -680827,7 +680875,7 @@
"support"
],
"webdriver/tests/get_current_url/get.py": [
- "0c1917cff351ab1bc79bbf782532de62abc69110",
+ "39c28c612161e30b114298c7d5eed5ccd60d78d4",
"wdspec"
],
"webdriver/tests/get_current_url/user_prompts.py": [
@@ -681291,7 +681339,7 @@
"support"
],
"webdriver/tests/set_window_rect/set.py": [
- "81432f293770d0fd0b5da66dc4bca19c1043f9a0",
+ "adf265127c97e08da354b47bb15d2e8a9ef4bac3",
"wdspec"
],
"webdriver/tests/set_window_rect/user_prompts.py": [
@@ -682071,7 +682119,7 @@
"testharness"
],
"webrtc/RTCDataChannel-bufferedAmount.html": [
- "b982b29b3b957eaca8a087e75e9ac3627f897e29",
+ "89f6b1b4d7a425f2d05688d14315227454a3d4be",
"testharness"
],
"webrtc/RTCDataChannel-id.html": [
@@ -686962,6 +687010,10 @@
"520afec2000721d04aae9ed89bca49297fa31d4b",
"support"
],
+ "webxr/events_referenceSpace_reset.https.html": [
+ "f15ffc52a8845b7e2cdd6ddb4a9b7f06c1c3e5e0",
+ "testharness"
+ ],
"webxr/idlharness.https.window.js": [
"3e54e367787cb95dada398790fe23b10174df29f",
"testharness"
@@ -686979,7 +687031,7 @@
"support"
],
"webxr/resources/webxr_test_constants.js": [
- "a846f1da75fe4707623a123f5e9e1bfe2952fd8a",
+ "aed6ff9c80905e96a100bbe48c7a9f37ea4237e9",
"support"
],
"webxr/resources/webxr_util.js": [
@@ -687006,6 +687058,14 @@
"515b2ad1a8d015120032ea56c473922a2af73e85",
"testharness"
],
+ "webxr/xrBoundedReferenceSpace_updates.https.html": [
+ "cf1047c8abc96740f22088620723e50a7da1db13",
+ "testharness"
+ ],
+ "webxr/xrDevice_disconnect_ends.https.html": [
+ "ace64e8f41212d2e21a450ef6958bf2b7508a0da",
+ "testharness"
+ ],
"webxr/xrDevice_requestSession_immersive.https.html": [
"a397d1a89f6e0d3ac7784a39ac8612350aa69dcd",
"testharness"
@@ -687102,6 +687162,10 @@
"fd6082bc3468f094953152d220fceafa083baf76",
"testharness"
],
+ "webxr/xrStationaryReferenceSpace_floorlevel_updates.https.html": [
+ "68f91fd315019ccee9fbb9e034166338c65acad9",
+ "testharness"
+ ],
"webxr/xrView_eyes.https.html": [
"4ff22ff618d96d53c7a9e8cc573608bb0ea7919e",
"testharness"
@@ -690059,7 +690123,7 @@
"testharness"
],
"xhr/responsexml-document-properties.htm": [
- "9071fab121fc8e55d885c4fc89636380b66c226c",
+ "c27a4482cd20765ede2f2f8c2f9c7bd2b7c0ff7b",
"testharness"
],
"xhr/responsexml-get-twice.htm": [
diff --git a/tests/wpt/metadata/css/css-align/parsing/align-content-valid.html.ini b/tests/wpt/metadata/css/css-align/parsing/align-content-valid.html.ini
new file mode 100644
index 00000000000..e6e43f8ee3f
--- /dev/null
+++ b/tests/wpt/metadata/css/css-align/parsing/align-content-valid.html.ini
@@ -0,0 +1,28 @@
+[align-content-valid.html]
+ [e.style['align-content'\] = "first baseline" should set the property value]
+ expected: FAIL
+
+ [e.style['align-content'\] = "unsafe end" should set the property value]
+ expected: FAIL
+
+ [e.style['align-content'\] = "end" should set the property value]
+ expected: FAIL
+
+ [e.style['align-content'\] = "normal" should set the property value]
+ expected: FAIL
+
+ [e.style['align-content'\] = "baseline" should set the property value]
+ expected: FAIL
+
+ [e.style['align-content'\] = "space-evenly" should set the property value]
+ expected: FAIL
+
+ [e.style['align-content'\] = "start" should set the property value]
+ expected: FAIL
+
+ [e.style['align-content'\] = "safe flex-start" should set the property value]
+ expected: FAIL
+
+ [e.style['align-content'\] = "last baseline" should set the property value]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-align/parsing/align-items-valid.html.ini b/tests/wpt/metadata/css/css-align/parsing/align-items-valid.html.ini
new file mode 100644
index 00000000000..96318c358d4
--- /dev/null
+++ b/tests/wpt/metadata/css/css-align/parsing/align-items-valid.html.ini
@@ -0,0 +1,28 @@
+[align-items-valid.html]
+ [e.style['align-items'\] = "last baseline" should set the property value]
+ expected: FAIL
+
+ [e.style['align-items'\] = "unsafe center" should set the property value]
+ expected: FAIL
+
+ [e.style['align-items'\] = "first baseline" should set the property value]
+ expected: FAIL
+
+ [e.style['align-items'\] = "normal" should set the property value]
+ expected: FAIL
+
+ [e.style['align-items'\] = "start" should set the property value]
+ expected: FAIL
+
+ [e.style['align-items'\] = "self-start" should set the property value]
+ expected: FAIL
+
+ [e.style['align-items'\] = "end" should set the property value]
+ expected: FAIL
+
+ [e.style['align-items'\] = "self-end" should set the property value]
+ expected: FAIL
+
+ [e.style['align-items'\] = "safe self-end" should set the property value]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-align/parsing/align-self-valid.html.ini b/tests/wpt/metadata/css/css-align/parsing/align-self-valid.html.ini
new file mode 100644
index 00000000000..efffe6178d0
--- /dev/null
+++ b/tests/wpt/metadata/css/css-align/parsing/align-self-valid.html.ini
@@ -0,0 +1,28 @@
+[align-self-valid.html]
+ [e.style['align-self'\] = "self-end" should set the property value]
+ expected: FAIL
+
+ [e.style['align-self'\] = "last baseline" should set the property value]
+ expected: FAIL
+
+ [e.style['align-self'\] = "first baseline" should set the property value]
+ expected: FAIL
+
+ [e.style['align-self'\] = "start" should set the property value]
+ expected: FAIL
+
+ [e.style['align-self'\] = "end" should set the property value]
+ expected: FAIL
+
+ [e.style['align-self'\] = "safe self-end" should set the property value]
+ expected: FAIL
+
+ [e.style['align-self'\] = "normal" should set the property value]
+ expected: FAIL
+
+ [e.style['align-self'\] = "unsafe center" should set the property value]
+ expected: FAIL
+
+ [e.style['align-self'\] = "self-start" should set the property value]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-align/parsing/justify-content-valid.html.ini b/tests/wpt/metadata/css/css-align/parsing/justify-content-valid.html.ini
new file mode 100644
index 00000000000..1e2f46660dd
--- /dev/null
+++ b/tests/wpt/metadata/css/css-align/parsing/justify-content-valid.html.ini
@@ -0,0 +1,25 @@
+[justify-content-valid.html]
+ [e.style['justify-content'\] = "unsafe right" should set the property value]
+ expected: FAIL
+
+ [e.style['justify-content'\] = "start" should set the property value]
+ expected: FAIL
+
+ [e.style['justify-content'\] = "normal" should set the property value]
+ expected: FAIL
+
+ [e.style['justify-content'\] = "unsafe end" should set the property value]
+ expected: FAIL
+
+ [e.style['justify-content'\] = "space-evenly" should set the property value]
+ expected: FAIL
+
+ [e.style['justify-content'\] = "end" should set the property value]
+ expected: FAIL
+
+ [e.style['justify-content'\] = "safe flex-start" should set the property value]
+ expected: FAIL
+
+ [e.style['justify-content'\] = "left" should set the property value]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-align/parsing/justify-items-valid.html.ini b/tests/wpt/metadata/css/css-align/parsing/justify-items-valid.html.ini
new file mode 100644
index 00000000000..731e9282c24
--- /dev/null
+++ b/tests/wpt/metadata/css/css-align/parsing/justify-items-valid.html.ini
@@ -0,0 +1,61 @@
+[justify-items-valid.html]
+ [e.style['justify-items'\] = "self-end" should set the property value]
+ expected: FAIL
+
+ [e.style['justify-items'\] = "unsafe center" should set the property value]
+ expected: FAIL
+
+ [e.style['justify-items'\] = "safe left" should set the property value]
+ expected: FAIL
+
+ [e.style['justify-items'\] = "baseline" should set the property value]
+ expected: FAIL
+
+ [e.style['justify-items'\] = "safe self-end" should set the property value]
+ expected: FAIL
+
+ [e.style['justify-items'\] = "flex-start" should set the property value]
+ expected: FAIL
+
+ [e.style['justify-items'\] = "center" should set the property value]
+ expected: FAIL
+
+ [e.style['justify-items'\] = "center legacy" should set the property value]
+ expected: FAIL
+
+ [e.style['justify-items'\] = "right legacy" should set the property value]
+ expected: FAIL
+
+ [e.style['justify-items'\] = "last baseline" should set the property value]
+ expected: FAIL
+
+ [e.style['justify-items'\] = "start" should set the property value]
+ expected: FAIL
+
+ [e.style['justify-items'\] = "left legacy" should set the property value]
+ expected: FAIL
+
+ [e.style['justify-items'\] = "normal" should set the property value]
+ expected: FAIL
+
+ [e.style['justify-items'\] = "stretch" should set the property value]
+ expected: FAIL
+
+ [e.style['justify-items'\] = "flex-end" should set the property value]
+ expected: FAIL
+
+ [e.style['justify-items'\] = "self-start" should set the property value]
+ expected: FAIL
+
+ [e.style['justify-items'\] = "end" should set the property value]
+ expected: FAIL
+
+ [e.style['justify-items'\] = "first baseline" should set the property value]
+ expected: FAIL
+
+ [e.style['justify-items'\] = "right" should set the property value]
+ expected: FAIL
+
+ [e.style['justify-items'\] = "legacy" should set the property value]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-align/parsing/justify-self-valid.html.ini b/tests/wpt/metadata/css/css-align/parsing/justify-self-valid.html.ini
new file mode 100644
index 00000000000..b019690d48a
--- /dev/null
+++ b/tests/wpt/metadata/css/css-align/parsing/justify-self-valid.html.ini
@@ -0,0 +1,52 @@
+[justify-self-valid.html]
+ [e.style['justify-self'\] = "self-end" should set the property value]
+ expected: FAIL
+
+ [e.style['justify-self'\] = "unsafe center" should set the property value]
+ expected: FAIL
+
+ [e.style['justify-self'\] = "auto" should set the property value]
+ expected: FAIL
+
+ [e.style['justify-self'\] = "safe self-end" should set the property value]
+ expected: FAIL
+
+ [e.style['justify-self'\] = "baseline" should set the property value]
+ expected: FAIL
+
+ [e.style['justify-self'\] = "start" should set the property value]
+ expected: FAIL
+
+ [e.style['justify-self'\] = "left" should set the property value]
+ expected: FAIL
+
+ [e.style['justify-self'\] = "center" should set the property value]
+ expected: FAIL
+
+ [e.style['justify-self'\] = "flex-start" should set the property value]
+ expected: FAIL
+
+ [e.style['justify-self'\] = "stretch" should set the property value]
+ expected: FAIL
+
+ [e.style['justify-self'\] = "normal" should set the property value]
+ expected: FAIL
+
+ [e.style['justify-self'\] = "end" should set the property value]
+ expected: FAIL
+
+ [e.style['justify-self'\] = "flex-end" should set the property value]
+ expected: FAIL
+
+ [e.style['justify-self'\] = "self-start" should set the property value]
+ expected: FAIL
+
+ [e.style['justify-self'\] = "last baseline" should set the property value]
+ expected: FAIL
+
+ [e.style['justify-self'\] = "first baseline" should set the property value]
+ expected: FAIL
+
+ [e.style['justify-self'\] = "unsafe right" should set the property value]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-transitions/properties-value-inherit-001.html.ini b/tests/wpt/metadata/css/css-transitions/properties-value-inherit-001.html.ini
index 7f17425c4aa..5d20389c8e9 100644
--- a/tests/wpt/metadata/css/css-transitions/properties-value-inherit-001.html.ini
+++ b/tests/wpt/metadata/css/css-transitions/properties-value-inherit-001.html.ini
@@ -56,6 +56,3 @@
[background-position length(px) / events]
expected: FAIL
- [font-size length(em) / events]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/css/css-transitions/properties-value-inherit-002.html.ini b/tests/wpt/metadata/css/css-transitions/properties-value-inherit-002.html.ini
index 96ba5320ca1..42f61e8ed49 100644
--- a/tests/wpt/metadata/css/css-transitions/properties-value-inherit-002.html.ini
+++ b/tests/wpt/metadata/css/css-transitions/properties-value-inherit-002.html.ini
@@ -509,39 +509,3 @@
[border-left-width length(pt) / values]
expected: FAIL
- [padding-right length(pt) / values]
- expected: FAIL
-
- [margin-top length(in) / values]
- expected: FAIL
-
- [padding-left length(ex) / values]
- expected: FAIL
-
- [height length(px) / values]
- expected: FAIL
-
- [margin-top length(px) / values]
- expected: FAIL
-
- [padding-left length(pt) / values]
- expected: FAIL
-
- [padding-right length(ex) / values]
- expected: FAIL
-
- [margin-top length(pt) / values]
- expected: FAIL
-
- [margin-top length(cm) / values]
- expected: FAIL
-
- [padding-bottom length(ex) / values]
- expected: FAIL
-
- [height length(pt) / values]
- expected: FAIL
-
- [padding-left length(pc) / values]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/css/cssom-view/matchMedia-display-none-iframe.html.ini b/tests/wpt/metadata/css/cssom-view/matchMedia-display-none-iframe.html.ini
new file mode 100644
index 00000000000..e6e1f29e274
--- /dev/null
+++ b/tests/wpt/metadata/css/cssom-view/matchMedia-display-none-iframe.html.ini
@@ -0,0 +1,2 @@
+[matchMedia-display-none-iframe.html]
+ expected: ERROR
diff --git a/tests/wpt/metadata/css/cssom-view/scroll-behavior-smooth.html.ini b/tests/wpt/metadata/css/cssom-view/scroll-behavior-smooth.html.ini
index e1a609649d6..ee754ce4aa3 100644
--- a/tests/wpt/metadata/css/cssom-view/scroll-behavior-smooth.html.ini
+++ b/tests/wpt/metadata/css/cssom-view/scroll-behavior-smooth.html.ini
@@ -3,3 +3,9 @@
[scroll-behavior: smooth on DIV element]
expected: FAIL
+ [Smooth scrolling while doing history navigation.]
+ expected: FAIL
+
+ [Instant scrolling while doing history navigation.]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/fetch/content-type/response.window.js.ini b/tests/wpt/metadata/fetch/content-type/response.window.js.ini
index 4ff64270030..c261e3f9824 100644
--- a/tests/wpt/metadata/fetch/content-type/response.window.js.ini
+++ b/tests/wpt/metadata/fetch/content-type/response.window.js.ini
@@ -312,9 +312,24 @@
[<iframe>: separate response Content-Type: */* text/html]
expected: FAIL
- [<iframe>: separate response Content-Type: text/plain */*]
+ [<iframe>: combined response Content-Type: text/html;charset=gbk text/plain text/html]
expected: FAIL
- [<iframe>: combined response Content-Type: text/html;charset=gbk text/plain text/html]
+ [<iframe>: combined response Content-Type: text/html;" text/plain]
+ expected: FAIL
+
+ [<iframe>: separate response Content-Type: text/html;" text/plain]
+ expected: FAIL
+
+ [<iframe>: separate response Content-Type: text/html */*;charset=gbk]
+ expected: FAIL
+
+ [<iframe>: separate response Content-Type: text/html */*]
+ expected: FAIL
+
+ [<iframe>: separate response Content-Type: text/html;x=" text/plain]
+ expected: FAIL
+
+ [<iframe>: separate response Content-Type: text/plain */*;charset=gbk]
expected: FAIL
diff --git a/tests/wpt/metadata/fetch/content-type/script.window.js.ini b/tests/wpt/metadata/fetch/content-type/script.window.js.ini
index d2df9b78483..c7413d589dc 100644
--- a/tests/wpt/metadata/fetch/content-type/script.window.js.ini
+++ b/tests/wpt/metadata/fetch/content-type/script.window.js.ini
@@ -56,3 +56,9 @@
[separate text/javascript x/x]
expected: FAIL
+ [separate text/javascript;charset=windows-1252 error text/javascript]
+ expected: FAIL
+
+ [separate text/javascript;charset=windows-1252 text/javascript]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini b/tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini
index 87c807a49ff..d4ba399b762 100644
--- a/tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini
+++ b/tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini
@@ -11,3 +11,6 @@
[X-Content-Type-Options%3A%20nosniff%0C]
expected: FAIL
+ [X-Content-Type-Options%3A%20'NosniFF']
+ 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
new file mode 100644
index 00000000000..87b07c3e670
--- /dev/null
+++ b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini
@@ -0,0 +1,4 @@
+[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_3.html.ini b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_3.html.ini
deleted file mode 100644
index 51f8272a6de..00000000000
--- a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_3.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[traverse_the_history_3.html]
- [Multiple history traversals, last would be aborted]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini
deleted file mode 100644
index dc2e45516de..00000000000
--- a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[traverse_the_history_5.html]
- [Multiple history traversals, last would be aborted]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-innerwidth-innerheight.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-innerwidth-innerheight.html.ini
index e02f179ec25..bf50d59df41 100644
--- a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-innerwidth-innerheight.html.ini
+++ b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-innerwidth-innerheight.html.ini
@@ -1,24 +1,5 @@
[open-features-negative-innerwidth-innerheight.html]
type: testharness
- expected: TIMEOUT
[HTML: window.open `features`: negative values for legacy `innerwidth`, `innerheight`]
expected: FAIL
- [features "innerheight=-404.5" should NOT set "height=404"]
- expected: TIMEOUT
-
- [features "innerwidth=-404.5" should NOT set "width=404"]
- expected: TIMEOUT
-
- [features "innerwidth=-404" should NOT set "width=404"]
- expected: TIMEOUT
-
- [features "innerheight=-404e1" should NOT set "height=404"]
- expected: TIMEOUT
-
- [features "innerheight=-404" should NOT set "height=404"]
- expected: TIMEOUT
-
- [features "innerwidth=-404e1" should NOT set "width=404"]
- expected: TIMEOUT
-
diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-screenx-screeny.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-screenx-screeny.html.ini
index 23eefb8eaf9..e150c9d848f 100644
--- a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-screenx-screeny.html.ini
+++ b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-screenx-screeny.html.ini
@@ -1,24 +1,5 @@
[open-features-negative-screenx-screeny.html]
type: testharness
- expected: TIMEOUT
[HTML: window.open `features`: negative values for legacy `screenx`, `screeny`]
expected: FAIL
- [features "screenx=-204" should NOT set "left=204"]
- expected: TIMEOUT
-
- [features "screeny=-204" should NOT set "top=204"]
- expected: TIMEOUT
-
- [features "screeny=-204.5" should NOT set "top=204"]
- expected: TIMEOUT
-
- [features "screeny=-0" should NOT set "top=204"]
- expected: TIMEOUT
-
- [features "screenx=-0" should NOT set "left=204"]
- expected: TIMEOUT
-
- [features "screenx=-204.5" should NOT set "left=204"]
- expected: TIMEOUT
-
diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-top-left.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-top-left.html.ini
index 940516ddd33..ad8840fbb68 100644
--- a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-top-left.html.ini
+++ b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-top-left.html.ini
@@ -1,24 +1,5 @@
[open-features-negative-top-left.html]
type: testharness
- expected: TIMEOUT
[HTML: window.open `features`: negative values for `top`, `left`]
expected: FAIL
- [features "top=-204" should NOT set "top=204"]
- expected: TIMEOUT
-
- [features "top=-204.5" should NOT set "top=204"]
- expected: TIMEOUT
-
- [features "left=-204" should NOT set "left=204"]
- expected: TIMEOUT
-
- [features "top=-0" should NOT set "top=204"]
- expected: TIMEOUT
-
- [features "left=-204.5" should NOT set "left=204"]
- expected: TIMEOUT
-
- [features "left=-0" should NOT set "left=204"]
- expected: TIMEOUT
-
diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-width-height.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-width-height.html.ini
index 9027336b453..d1ed9088b2b 100644
--- a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-width-height.html.ini
+++ b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-width-height.html.ini
@@ -1,24 +1,5 @@
[open-features-negative-width-height.html]
type: testharness
- expected: TIMEOUT
[HTML: window.open `features`: negative values for `width`, `height`]
expected: FAIL
- [features "height=-404" should NOT set "height=404"]
- expected: TIMEOUT
-
- [features "height=-404e1" should NOT set "height=404"]
- expected: TIMEOUT
-
- [features "height=-404.5" should NOT set "height=404"]
- expected: TIMEOUT
-
- [features "width=-404" should NOT set "width=404"]
- expected: TIMEOUT
-
- [features "width=-404e1" should NOT set "width=404"]
- expected: TIMEOUT
-
- [features "width=-404.5" should NOT set "width=404"]
- expected: TIMEOUT
-
diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-height.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-height.html.ini
index 4e44584b123..a70e9dbad4d 100644
--- a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-height.html.ini
+++ b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-height.html.ini
@@ -1,48 +1,32 @@
[open-features-non-integer-height.html]
type: testharness
- expected: TIMEOUT
[HTML: window.open `features`: non-integer values for feature `height`]
expected: FAIL
[features "height=405*3" should set "height=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "height=405.32" should set "height=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "height=405e1" should set "height=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "height=405/5" should set "height=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "height=405^4" should set "height=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "height=405.5" should set "height=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "height=405e-1" should set "height=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "height=405 " should set "height=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "height=405LLl" should set "height=405"]
- expected: TIMEOUT
-
- [features "height=/404" should NOT set "height=404"]
- expected: TIMEOUT
-
- [top=0,left=0,width=401,: absence of feature "height" should be treated same as "height=0"]
- expected: TIMEOUT
-
- [top=0,left=0: absence of feature "height" should be treated same as "height=0"]
- expected: TIMEOUT
-
- [features "height=_404" should NOT set "height=404"]
- expected: TIMEOUT
-
- [features "height=L404" should NOT set "height=404"]
- expected: TIMEOUT
+ expected: FAIL
diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-innerheight.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-innerheight.html.ini
index fcaeae5336d..779531b4a98 100644
--- a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-innerheight.html.ini
+++ b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-innerheight.html.ini
@@ -1,42 +1,32 @@
[open-features-non-integer-innerheight.html]
type: testharness
- expected: TIMEOUT
[HTML: window.open `features`: non-integer values for legacy feature `innerheight`]
expected: FAIL
[features "innerheight=405e-1" should set "height=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "innerheight=405LLl" should set "height=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "innerheight=405^4" should set "height=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "innerheight=405e1" should set "height=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "innerheight=405 " should set "height=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "innerheight=405/5" should set "height=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "innerheight=405.32" should set "height=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "innerheight=405.5" should set "height=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "innerheight=405*3" should set "height=405"]
- expected: TIMEOUT
-
- [features "innerheight=_404" should NOT set "height=404"]
- expected: TIMEOUT
-
- [features "innerheight=L404" should NOT set "height=404"]
- expected: TIMEOUT
-
- [features "innerheight=/404" should NOT set "height=404"]
- expected: TIMEOUT
+ expected: FAIL
diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-innerwidth.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-innerwidth.html.ini
index 42327fedd27..7a1b258d52e 100644
--- a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-innerwidth.html.ini
+++ b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-innerwidth.html.ini
@@ -1,42 +1,32 @@
[open-features-non-integer-innerwidth.html]
type: testharness
- expected: TIMEOUT
[HTML: window.open `features`: non-integer values for legacy feature `innerwidth`]
expected: FAIL
[features "innerwidth=405e-1" should set "width=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "innerwidth=405*3" should set "width=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "innerwidth=405.5" should set "width=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "innerwidth=405e1" should set "width=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "innerwidth=405.32" should set "width=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "innerwidth=405 " should set "width=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "innerwidth=405LLl" should set "width=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "innerwidth=405/5" should set "width=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "innerwidth=405^4" should set "width=405"]
- expected: TIMEOUT
-
- [features "innerwidth=/404" should NOT set "width=404"]
- expected: TIMEOUT
-
- [features "innerwidth=_404" should NOT set "width=404"]
- expected: TIMEOUT
-
- [features "innerwidth=L404" should NOT set "width=404"]
- expected: TIMEOUT
+ expected: FAIL
diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-left.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-left.html.ini
index a8e4fe06618..caba4124f0b 100644
--- a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-left.html.ini
+++ b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-left.html.ini
@@ -1,42 +1,32 @@
[open-features-non-integer-left.html]
type: testharness
- expected: TIMEOUT
[HTML: window.open `features`: non-integer values for feature `left`]
expected: FAIL
[features "left=105e1" should set "left=105"]
- expected: TIMEOUT
+ expected: FAIL
[features "left=105 " should set "left=105"]
- expected: TIMEOUT
+ expected: FAIL
[features "left=105/5" should set "left=105"]
- expected: TIMEOUT
+ expected: FAIL
[features "left=105e-1" should set "left=105"]
- expected: TIMEOUT
+ expected: FAIL
[features "left=105^4" should set "left=105"]
- expected: TIMEOUT
+ expected: FAIL
[features "left=105LLl" should set "left=105"]
- expected: TIMEOUT
+ expected: FAIL
[features "left=105.32" should set "left=105"]
- expected: TIMEOUT
+ expected: FAIL
[features "left=105*3" should set "left=105"]
- expected: TIMEOUT
+ expected: FAIL
[features "left=105.5" should set "left=105"]
- expected: TIMEOUT
-
- [features "left=L104" should NOT set "left=104"]
- expected: TIMEOUT
-
- [features "left=/104" should NOT set "left=104"]
- expected: TIMEOUT
-
- [features "left=_104" should NOT set "left=104"]
- expected: TIMEOUT
+ expected: FAIL
diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-screenx.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-screenx.html.ini
index 64a08faf0e6..9ace8a4cbdb 100644
--- a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-screenx.html.ini
+++ b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-screenx.html.ini
@@ -1,42 +1,32 @@
[open-features-non-integer-screenx.html]
type: testharness
- expected: TIMEOUT
[HTML: window.open `features`: non-integer values for legacy feature `screenx`]
expected: FAIL
[features "screenx=105.5" should set "left=105"]
- expected: TIMEOUT
+ expected: FAIL
[features "screenx=105e1" should set "left=105"]
- expected: TIMEOUT
+ expected: FAIL
[features "screenx=105 " should set "left=105"]
- expected: TIMEOUT
+ expected: FAIL
[features "screenx=105*3" should set "left=105"]
- expected: TIMEOUT
+ expected: FAIL
[features "screenx=105e-1" should set "left=105"]
- expected: TIMEOUT
+ expected: FAIL
[features "screenx=105^4" should set "left=105"]
- expected: TIMEOUT
+ expected: FAIL
[features "screenx=105LLl" should set "left=105"]
- expected: TIMEOUT
+ expected: FAIL
[features "screenx=105/5" should set "left=105"]
- expected: TIMEOUT
+ expected: FAIL
[features "screenx=105.32" should set "left=105"]
- expected: TIMEOUT
-
- [features "screenx=_104" should NOT set "left=104"]
- expected: TIMEOUT
-
- [features "screenx=L104" should NOT set "left=104"]
- expected: TIMEOUT
-
- [features "screenx=/104" should NOT set "left=104"]
- expected: TIMEOUT
+ expected: FAIL
diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-screeny.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-screeny.html.ini
index 4f22ef4ef29..a82bd0f981a 100644
--- a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-screeny.html.ini
+++ b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-screeny.html.ini
@@ -1,42 +1,32 @@
[open-features-non-integer-screeny.html]
type: testharness
- expected: TIMEOUT
[HTML: window.open `features`: non-integer values for legacy feature `screeny`]
expected: FAIL
[features "screeny=405^4" should set "height=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "screeny=405e-1" should set "height=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "screeny=405LLl" should set "height=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "screeny=405e1" should set "height=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "screeny=405 " should set "height=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "screeny=405/5" should set "height=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "screeny=405*3" should set "height=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "screeny=405.32" should set "height=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "screeny=405.5" should set "height=405"]
- expected: TIMEOUT
-
- [features "screeny=_404" should NOT set "height=404"]
- expected: TIMEOUT
-
- [features "screeny=L404" should NOT set "height=404"]
- expected: TIMEOUT
-
- [features "screeny=/404" should NOT set "height=404"]
- expected: TIMEOUT
+ expected: FAIL
diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-top.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-top.html.ini
index 8540f53d8d6..10f617db69e 100644
--- a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-top.html.ini
+++ b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-top.html.ini
@@ -1,42 +1,32 @@
[open-features-non-integer-top.html]
type: testharness
- expected: TIMEOUT
[HTML: window.open `features`: non-integer values for feature `top`]
expected: FAIL
[features "top=105/5" should set "top=105"]
- expected: TIMEOUT
+ expected: FAIL
[features "top=105*3" should set "top=105"]
- expected: TIMEOUT
+ expected: FAIL
[features "top=105LLl" should set "top=105"]
- expected: TIMEOUT
+ expected: FAIL
[features "top=105e-1" should set "top=105"]
- expected: TIMEOUT
+ expected: FAIL
[features "top=105.32" should set "top=105"]
- expected: TIMEOUT
+ expected: FAIL
[features "top=105e1" should set "top=105"]
- expected: TIMEOUT
+ expected: FAIL
[features "top=105 " should set "top=105"]
- expected: TIMEOUT
+ expected: FAIL
[features "top=105^4" should set "top=105"]
- expected: TIMEOUT
+ expected: FAIL
[features "top=105.5" should set "top=105"]
- expected: TIMEOUT
-
- [features "top=/104" should NOT set "top=104"]
- expected: TIMEOUT
-
- [features "top=_104" should NOT set "top=104"]
- expected: TIMEOUT
-
- [features "top=L104" should NOT set "top=104"]
- expected: TIMEOUT
+ expected: FAIL
diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-width.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-width.html.ini
index 9d841e61bc0..28f93ee71b5 100644
--- a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-width.html.ini
+++ b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-width.html.ini
@@ -1,48 +1,32 @@
[open-features-non-integer-width.html]
type: testharness
- expected: TIMEOUT
[HTML: window.open `features`: non-integer values for feature `width`]
expected: FAIL
[features "width=405^4" should set "width=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "width=405.5" should set "width=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "width=405e1" should set "width=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "width=405 " should set "width=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "width=405.32" should set "width=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "width=405LLl" should set "width=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "width=405*3" should set "width=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "width=405e-1" should set "width=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "width=405/5" should set "width=405"]
- expected: TIMEOUT
-
- [top=0,left=0: absence of feature "width" should be treated same as "width=0"]
- expected: TIMEOUT
-
- [features "width=_404" should NOT set "width=404"]
- expected: TIMEOUT
-
- [top=0,left=0,height=401,: absence of feature "width" should be treated same as "width=0"]
- expected: TIMEOUT
-
- [features "width=/404" should NOT set "width=404"]
- expected: TIMEOUT
-
- [features "width=L404" should NOT set "width=404"]
- expected: TIMEOUT
+ expected: FAIL
diff --git a/tests/wpt/metadata/html/rendering/dimension-attributes.html.ini b/tests/wpt/metadata/html/rendering/dimension-attributes.html.ini
index 588f2b03d4a..f0409a96198 100644
--- a/tests/wpt/metadata/html/rendering/dimension-attributes.html.ini
+++ b/tests/wpt/metadata/html/rendering/dimension-attributes.html.ini
@@ -968,3 +968,2334 @@
[<embed height="200%"> mapping]
expected: FAIL
+ [<table height="+200%"> mapping to height]
+ expected: FAIL
+
+ [<embed hspace="200"> mapping to marginLeft]
+ expected: FAIL
+
+ [<embed height=" +200in "> mapping to height]
+ expected: FAIL
+
+ [<object hspace="200.25%"> mapping to marginLeft]
+ expected: FAIL
+
+ [<input hspace=" +200.25% "> mapping to marginLeft]
+ expected: FAIL
+
+ [<img vspace="200 %"> mapping to marginBottom]
+ expected: FAIL
+
+ [<input height="200."> mapping to height]
+ expected: FAIL
+
+ [<marquee vspace="200 %"> mapping to marginBottom]
+ expected: FAIL
+
+ [<input hspace="0%"> mapping to marginLeft]
+ expected: FAIL
+
+ [<img hspace="200 abc"> mapping to marginLeft]
+ expected: FAIL
+
+ [<img hspace="200%abc"> mapping to marginRight]
+ expected: FAIL
+
+ [<embed vspace="200.25%"> mapping to marginBottom]
+ expected: FAIL
+
+ [<tr height="200.25%"> mapping to height]
+ expected: FAIL
+
+ [<marquee vspace=" 00523 "> mapping to marginTop]
+ expected: FAIL
+
+ [<img vspace="200.25%"> mapping to marginTop]
+ expected: FAIL
+
+ [<marquee height="+200%"> mapping to height]
+ expected: FAIL
+
+ [<marquee height=" +200in "> mapping to height]
+ expected: FAIL
+
+ [<input vspace="200.7"> mapping to marginTop]
+ expected: FAIL
+
+ [<input vspace="200.25"> mapping to marginBottom]
+ expected: FAIL
+
+ [<object width="200.%"> mapping to width]
+ expected: FAIL
+
+ [<object vspace="0%"> mapping to marginBottom]
+ expected: FAIL
+
+ [<object height=" +200.25%abc"> mapping to height]
+ expected: FAIL
+
+ [<embed hspace="+200"> mapping to marginRight]
+ expected: FAIL
+
+ [<img vspace="200in"> mapping to marginTop]
+ expected: FAIL
+
+ [<img vspace="200.25in"> mapping to marginTop]
+ expected: FAIL
+
+ [<tr height="200%abc"> mapping to height]
+ expected: FAIL
+
+ [<td height="200 %"> mapping to height]
+ expected: FAIL
+
+ [<object height="0px"> mapping to height]
+ expected: FAIL
+
+ [<table height="200 abc"> mapping to height]
+ expected: FAIL
+
+ [<embed height="+0"> mapping to height]
+ expected: FAIL
+
+ [<embed vspace="+200"> mapping to marginBottom]
+ expected: FAIL
+
+ [<object vspace=" +200in "> mapping to marginBottom]
+ expected: FAIL
+
+ [<video height="+200%"> mapping to height]
+ expected: FAIL
+
+ [<input hspace=" +200.25% "> mapping to marginRight]
+ expected: FAIL
+
+ [<embed width="200in"> mapping to width]
+ expected: FAIL
+
+ [<embed hspace="+200%"> mapping to marginLeft]
+ expected: FAIL
+
+ [<table height="200.7"> mapping to height]
+ expected: FAIL
+
+ [<td height="200."> mapping to height]
+ expected: FAIL
+
+ [<embed vspace="200%abc"> mapping to marginBottom]
+ expected: FAIL
+
+ [<td height="+200%"> mapping to height]
+ expected: FAIL
+
+ [<input height="200%abc"> mapping to height]
+ expected: FAIL
+
+ [<input vspace="200"> mapping to marginTop]
+ expected: FAIL
+
+ [<input hspace="1007"> mapping to marginLeft]
+ expected: FAIL
+
+ [<object hspace="200%"> mapping to marginLeft]
+ expected: FAIL
+
+ [<input width="200 abc"> mapping to width]
+ expected: FAIL
+
+ [<input width="200.7"> mapping to width]
+ expected: FAIL
+
+ [<object vspace=" +200.25% "> mapping to marginBottom]
+ expected: FAIL
+
+ [<embed height="0px"> mapping to height]
+ expected: FAIL
+
+ [<object vspace="+0%"> mapping to marginBottom]
+ expected: FAIL
+
+ [<embed hspace=" +200.25in "> mapping to marginLeft]
+ expected: FAIL
+
+ [<img vspace="200.7"> mapping to marginBottom]
+ expected: FAIL
+
+ [<tr height="200."> mapping to height]
+ expected: FAIL
+
+ [<td height="1007"> mapping to height]
+ expected: FAIL
+
+ [<img vspace=" 00523 "> mapping to marginBottom]
+ expected: FAIL
+
+ [<input vspace="200.25"> mapping to marginTop]
+ expected: FAIL
+
+ [<marquee width="200.25in"> mapping to width]
+ expected: FAIL
+
+ [<input hspace="200 %"> mapping to marginLeft]
+ expected: FAIL
+
+ [<marquee height=" 00523 "> mapping to height]
+ expected: FAIL
+
+ [<marquee hspace="0%"> mapping to marginRight]
+ expected: FAIL
+
+ [<img vspace="200%"> mapping to marginBottom]
+ expected: FAIL
+
+ [<marquee height="200.7"> mapping to height]
+ expected: FAIL
+
+ [<tr height="200in"> mapping to height]
+ expected: FAIL
+
+ [<marquee hspace="200"> mapping to marginRight]
+ expected: FAIL
+
+ [<marquee hspace=" +200.25in "> mapping to marginLeft]
+ expected: FAIL
+
+ [<marquee height="200 abc"> mapping to height]
+ expected: FAIL
+
+ [<marquee width="200 abc"> mapping to width]
+ expected: FAIL
+
+ [<object vspace="200.%"> mapping to marginBottom]
+ expected: FAIL
+
+ [<input height="0"> mapping to height]
+ expected: FAIL
+
+ [<marquee vspace="200.25in"> mapping to marginTop]
+ expected: FAIL
+
+ [<img hspace=" 00523 "> mapping to marginRight]
+ expected: FAIL
+
+ [<iframe height="200.%"> mapping to height]
+ expected: FAIL
+
+ [<table height=" +200.25%abc"> mapping to height]
+ expected: FAIL
+
+ [<embed hspace="+0%"> mapping to marginLeft]
+ expected: FAIL
+
+ [<embed height="200.25%"> mapping to height]
+ expected: FAIL
+
+ [<input height=" +200in "> mapping to height]
+ expected: FAIL
+
+ [<marquee height="200.25in"> mapping to height]
+ expected: FAIL
+
+ [<img hspace=" +200.25in "> mapping to marginLeft]
+ expected: FAIL
+
+ [<input hspace="200.25%"> mapping to marginLeft]
+ expected: FAIL
+
+ [<input hspace="200 abc"> mapping to marginLeft]
+ expected: FAIL
+
+ [<object width=" +200.25%abc"> mapping to width]
+ expected: FAIL
+
+ [<object height="1007"> mapping to height]
+ expected: FAIL
+
+ [<marquee hspace="200%"> mapping to marginRight]
+ expected: FAIL
+
+ [<input hspace=" +200in "> mapping to marginLeft]
+ expected: FAIL
+
+ [<embed hspace="200.25in"> mapping to marginLeft]
+ expected: FAIL
+
+ [<embed hspace="200%"> mapping to marginRight]
+ expected: FAIL
+
+ [<col width="200.7"> mapping to width]
+ expected: FAIL
+
+ [<table height=" 00523 "> mapping to height]
+ expected: FAIL
+
+ [<input vspace="200 %"> mapping to marginTop]
+ expected: FAIL
+
+ [<object hspace=" +200.25in "> mapping to marginRight]
+ expected: FAIL
+
+ [<input width=" +200in "> mapping to width]
+ expected: FAIL
+
+ [<input vspace=" +200in "> mapping to marginTop]
+ expected: FAIL
+
+ [<object height="200in"> mapping to height]
+ expected: FAIL
+
+ [<img vspace="+200%"> mapping to marginBottom]
+ expected: FAIL
+
+ [<object vspace="200 abc"> mapping to marginBottom]
+ expected: FAIL
+
+ [<marquee hspace="+200"> mapping to marginLeft]
+ expected: FAIL
+
+ [<td height="200.25"> mapping to height]
+ expected: FAIL
+
+ [<video height=" +200.25% "> mapping to height]
+ expected: FAIL
+
+ [<img hspace=" +200.25%abc"> mapping to marginLeft]
+ expected: FAIL
+
+ [<embed width="200.7"> mapping to width]
+ expected: FAIL
+
+ [<input hspace="200.%"> mapping to marginLeft]
+ expected: FAIL
+
+ [<tr height="200.%"> mapping to height]
+ expected: FAIL
+
+ [<table height="200.25in"> mapping to height]
+ expected: FAIL
+
+ [<marquee vspace="200in"> mapping to marginBottom]
+ expected: FAIL
+
+ [<img vspace=" +200in "> mapping to marginBottom]
+ expected: FAIL
+
+ [<input width="200%abc"> mapping to width]
+ expected: FAIL
+
+ [<video height="200.25%"> mapping to height]
+ expected: FAIL
+
+ [<video height="1007"> mapping to height]
+ expected: FAIL
+
+ [<iframe width="200.%"> mapping to width]
+ expected: FAIL
+
+ [<input vspace="200."> mapping to marginTop]
+ expected: FAIL
+
+ [<tr height="200.7"> mapping to height]
+ expected: FAIL
+
+ [<input width="200."> mapping to width]
+ expected: FAIL
+
+ [<object hspace=" +200in "> mapping to marginRight]
+ expected: FAIL
+
+ [<input vspace="+200"> mapping to marginTop]
+ expected: FAIL
+
+ [<embed width="+0"> mapping to width]
+ expected: FAIL
+
+ [<marquee hspace=" 00523 "> mapping to marginRight]
+ expected: FAIL
+
+ [<img vspace=" +200.25% "> mapping to marginBottom]
+ expected: FAIL
+
+ [<object hspace="0%"> mapping to marginRight]
+ expected: FAIL
+
+ [<marquee width="+200%"> mapping to width]
+ expected: FAIL
+
+ [<img vspace="0%"> mapping to marginTop]
+ expected: FAIL
+
+ [<object vspace="200in"> mapping to marginTop]
+ expected: FAIL
+
+ [<object width="0%"> mapping to width]
+ expected: FAIL
+
+ [<embed height=" +200.25in "> mapping to height]
+ expected: FAIL
+
+ [<object height="200.25%"> mapping to height]
+ expected: FAIL
+
+ [<object vspace=" +200in "> mapping to marginTop]
+ expected: FAIL
+
+ [<img vspace="200.25"> mapping to marginBottom]
+ expected: FAIL
+
+ [<input hspace="200%abc"> mapping to marginRight]
+ expected: FAIL
+
+ [<video width=" +200.25%abc"> mapping to width]
+ expected: FAIL
+
+ [<img vspace="200.25"> mapping to marginTop]
+ expected: FAIL
+
+ [<video height=" +200in "> mapping to height]
+ expected: FAIL
+
+ [<img hspace="200.25"> mapping to marginLeft]
+ expected: FAIL
+
+ [<marquee hspace="200in"> mapping to marginLeft]
+ expected: FAIL
+
+ [<marquee vspace="200.25%"> mapping to marginTop]
+ expected: FAIL
+
+ [<marquee vspace=" +200.25%abc"> mapping to marginBottom]
+ expected: FAIL
+
+ [<object hspace="200.7"> mapping to marginLeft]
+ expected: FAIL
+
+ [<embed vspace="200.%"> mapping to marginTop]
+ expected: FAIL
+
+ [<marquee vspace="+200"> mapping to marginTop]
+ expected: FAIL
+
+ [<video width="200.7"> mapping to width]
+ expected: FAIL
+
+ [<col width="200%abc"> mapping to width]
+ expected: FAIL
+
+ [<table height="200.%"> mapping to height]
+ expected: FAIL
+
+ [<img hspace="200.%"> mapping to marginRight]
+ expected: FAIL
+
+ [<embed vspace="200"> mapping to marginBottom]
+ expected: FAIL
+
+ [<input vspace="200."> mapping to marginBottom]
+ expected: FAIL
+
+ [<img hspace="0%"> mapping to marginRight]
+ expected: FAIL
+
+ [<object height="200 %"> mapping to height]
+ expected: FAIL
+
+ [<marquee vspace="200."> mapping to marginBottom]
+ expected: FAIL
+
+ [<td height="200in"> mapping to height]
+ expected: FAIL
+
+ [<img hspace="+200"> mapping to marginLeft]
+ expected: FAIL
+
+ [<embed height="200."> mapping to height]
+ expected: FAIL
+
+ [<input hspace="200.25in"> mapping to marginRight]
+ expected: FAIL
+
+ [<marquee width="0%"> mapping to width]
+ expected: FAIL
+
+ [<embed hspace="200.25%"> mapping to marginLeft]
+ expected: FAIL
+
+ [<td width="200.%"> mapping to width]
+ expected: FAIL
+
+ [<input vspace="0%"> mapping to marginBottom]
+ expected: FAIL
+
+ [<embed vspace="200in"> mapping to marginTop]
+ expected: FAIL
+
+ [<marquee vspace="+200"> mapping to marginBottom]
+ expected: FAIL
+
+ [<marquee vspace="200"> mapping to marginTop]
+ expected: FAIL
+
+ [<object hspace="+200%"> mapping to marginRight]
+ expected: FAIL
+
+ [<marquee vspace="200.%"> mapping to marginBottom]
+ expected: FAIL
+
+ [<input width=" 00523 "> mapping to width]
+ expected: FAIL
+
+ [<video height="200.7"> mapping to height]
+ expected: FAIL
+
+ [<video width="200%"> mapping to width]
+ expected: FAIL
+
+ [<input height="200 %"> mapping to height]
+ expected: FAIL
+
+ [<input height="200%"> mapping to height]
+ expected: FAIL
+
+ [<img hspace="200 abc"> mapping to marginRight]
+ expected: FAIL
+
+ [<embed width="0"> mapping to width]
+ expected: FAIL
+
+ [<marquee height="200 %"> mapping to height]
+ expected: FAIL
+
+ [<marquee hspace=" +200.25in "> mapping to marginRight]
+ expected: FAIL
+
+ [<col width="1007"> mapping to width]
+ expected: FAIL
+
+ [<input vspace=" +200.25% "> mapping to marginBottom]
+ expected: FAIL
+
+ [<input height="0%"> mapping to height]
+ expected: FAIL
+
+ [<table height="200 %"> mapping to height]
+ expected: FAIL
+
+ [<object hspace=" +200.25% "> mapping to marginRight]
+ expected: FAIL
+
+ [<embed width=" +200in "> mapping to width]
+ expected: FAIL
+
+ [<object hspace=" +200in "> mapping to marginLeft]
+ expected: FAIL
+
+ [<embed vspace=" +200in "> mapping to marginTop]
+ expected: FAIL
+
+ [<tr height="200%"> mapping to height]
+ expected: FAIL
+
+ [<input width=" +200.25%abc"> mapping to width]
+ expected: FAIL
+
+ [<img hspace="200"> mapping to marginLeft]
+ expected: FAIL
+
+ [<embed width="200%"> mapping to width]
+ expected: FAIL
+
+ [<marquee hspace="200 abc"> mapping to marginLeft]
+ expected: FAIL
+
+ [<input height="200in"> mapping to height]
+ expected: FAIL
+
+ [<object width="200 abc"> mapping to width]
+ expected: FAIL
+
+ [<input hspace=" +200.25in "> mapping to marginRight]
+ expected: FAIL
+
+ [<col width="200.25%"> mapping to width]
+ expected: FAIL
+
+ [<input width="200.%"> mapping to width]
+ expected: FAIL
+
+ [<embed vspace="0%"> mapping to marginBottom]
+ expected: FAIL
+
+ [<img vspace=" 00523 "> mapping to marginTop]
+ expected: FAIL
+
+ [<embed hspace="+200"> mapping to marginLeft]
+ expected: FAIL
+
+ [<img vspace=" +200.25in "> mapping to marginTop]
+ expected: FAIL
+
+ [<embed hspace="200."> mapping to marginLeft]
+ expected: FAIL
+
+ [<video height="200%abc"> mapping to height]
+ expected: FAIL
+
+ [<marquee hspace=" +200.25%abc"> mapping to marginLeft]
+ expected: FAIL
+
+ [<input height="+0"> mapping to height]
+ expected: FAIL
+
+ [<embed width="200"> mapping to width]
+ expected: FAIL
+
+ [<video height="+0"> mapping to height]
+ expected: FAIL
+
+ [<td height="200.25in"> mapping to height]
+ expected: FAIL
+
+ [<object height="+200"> mapping to height]
+ expected: FAIL
+
+ [<marquee vspace="0%"> mapping to marginBottom]
+ expected: FAIL
+
+ [<embed height="+200%"> mapping to height]
+ expected: FAIL
+
+ [<object width=" 00523 "> mapping to width]
+ expected: FAIL
+
+ [<marquee vspace="200%"> mapping to marginBottom]
+ expected: FAIL
+
+ [<marquee hspace="200"> mapping to marginLeft]
+ expected: FAIL
+
+ [<img vspace="200 abc"> mapping to marginTop]
+ expected: FAIL
+
+ [<embed width="+200"> mapping to width]
+ expected: FAIL
+
+ [<img vspace=" +200.25%abc"> mapping to marginBottom]
+ expected: FAIL
+
+ [<col width="200"> mapping to width]
+ expected: FAIL
+
+ [<marquee vspace="200%abc"> mapping to marginTop]
+ expected: FAIL
+
+ [<object vspace="200.25%"> mapping to marginTop]
+ expected: FAIL
+
+ [<input vspace="1007"> mapping to marginBottom]
+ expected: FAIL
+
+ [<marquee width="1007"> mapping to width]
+ expected: FAIL
+
+ [<embed hspace=" +200in "> mapping to marginLeft]
+ expected: FAIL
+
+ [<object width="1007"> mapping to width]
+ expected: FAIL
+
+ [<embed height="200 %"> mapping to height]
+ expected: FAIL
+
+ [<img hspace="200.25in"> mapping to marginRight]
+ expected: FAIL
+
+ [<video width="0"> mapping to width]
+ expected: FAIL
+
+ [<embed hspace="200%abc"> mapping to marginRight]
+ expected: FAIL
+
+ [<table height="200%abc"> mapping to height]
+ expected: FAIL
+
+ [<img hspace="+200%"> mapping to marginLeft]
+ expected: FAIL
+
+ [<object width="200.7"> mapping to width]
+ expected: FAIL
+
+ [<marquee vspace="200.%"> mapping to marginTop]
+ expected: FAIL
+
+ [<embed hspace="1007"> mapping to marginLeft]
+ expected: FAIL
+
+ [<object height="200."> mapping to height]
+ expected: FAIL
+
+ [<input hspace="200."> mapping to marginRight]
+ expected: FAIL
+
+ [<table height="200"> mapping to height]
+ expected: FAIL
+
+ [<object vspace="200"> mapping to marginBottom]
+ expected: FAIL
+
+ [<marquee height="1007"> mapping to height]
+ expected: FAIL
+
+ [<input width="+0%"> mapping to width]
+ expected: FAIL
+
+ [<input width="200%"> mapping to width]
+ expected: FAIL
+
+ [<input vspace="200"> mapping to marginBottom]
+ expected: FAIL
+
+ [<object vspace="200.7"> mapping to marginTop]
+ expected: FAIL
+
+ [<input vspace=" 00523 "> mapping to marginBottom]
+ expected: FAIL
+
+ [<object hspace="200.25"> mapping to marginRight]
+ expected: FAIL
+
+ [<input hspace="+200"> mapping to marginLeft]
+ expected: FAIL
+
+ [<embed hspace="0%"> mapping to marginRight]
+ expected: FAIL
+
+ [<col width=" +200in "> mapping to width]
+ expected: FAIL
+
+ [<input vspace="1007"> mapping to marginTop]
+ expected: FAIL
+
+ [<img hspace="+0%"> mapping to marginLeft]
+ expected: FAIL
+
+ [<img vspace="1007"> mapping to marginBottom]
+ expected: FAIL
+
+ [<video height="200%"> mapping to height]
+ expected: FAIL
+
+ [<video height="0%"> mapping to height]
+ expected: FAIL
+
+ [<object hspace=" 00523 "> mapping to marginLeft]
+ expected: FAIL
+
+ [<table height=" +200.25% "> mapping to height]
+ expected: FAIL
+
+ [<embed vspace=" +200.25in "> mapping to marginBottom]
+ expected: FAIL
+
+ [<img vspace="200"> mapping to marginTop]
+ expected: FAIL
+
+ [<input width="+0"> mapping to width]
+ expected: FAIL
+
+ [<object vspace="+0%"> mapping to marginTop]
+ expected: FAIL
+
+ [<video width=" +200.25in "> mapping to width]
+ expected: FAIL
+
+ [<input vspace="0%"> mapping to marginTop]
+ expected: FAIL
+
+ [<input height="1007"> mapping to height]
+ expected: FAIL
+
+ [<input hspace="200.7"> mapping to marginRight]
+ expected: FAIL
+
+ [<embed height="200.7"> mapping to height]
+ expected: FAIL
+
+ [<video width="200.25%"> mapping to width]
+ expected: FAIL
+
+ [<video width=" 00523 "> mapping to width]
+ expected: FAIL
+
+ [<object hspace="200."> mapping to marginRight]
+ expected: FAIL
+
+ [<marquee vspace=" +200.25% "> mapping to marginTop]
+ expected: FAIL
+
+ [<tr height="200.25"> mapping to height]
+ expected: FAIL
+
+ [<embed height="200"> mapping to height]
+ expected: FAIL
+
+ [<input height="+200%"> mapping to height]
+ expected: FAIL
+
+ [<marquee width="200 %"> mapping to width]
+ expected: FAIL
+
+ [<input hspace="200"> mapping to marginRight]
+ expected: FAIL
+
+ [<input width="200 %"> mapping to width]
+ expected: FAIL
+
+ [<img hspace="1007"> mapping to marginLeft]
+ expected: FAIL
+
+ [<input height=" +200.25in "> mapping to height]
+ expected: FAIL
+
+ [<object vspace=" +200.25%abc"> mapping to marginTop]
+ expected: FAIL
+
+ [<object hspace="+200"> mapping to marginRight]
+ expected: FAIL
+
+ [<object vspace="1007"> mapping to marginTop]
+ expected: FAIL
+
+ [<input width="200.25in"> mapping to width]
+ expected: FAIL
+
+ [<embed width="200 %"> mapping to width]
+ expected: FAIL
+
+ [<input width=" +200.25in "> mapping to width]
+ expected: FAIL
+
+ [<embed vspace=" +200.25% "> mapping to marginTop]
+ expected: FAIL
+
+ [<input hspace="+200%"> mapping to marginRight]
+ expected: FAIL
+
+ [<input vspace="200.7"> mapping to marginBottom]
+ expected: FAIL
+
+ [<object vspace="200.7"> mapping to marginBottom]
+ expected: FAIL
+
+ [<input width="200.25"> mapping to width]
+ expected: FAIL
+
+ [<object width="200.25"> mapping to width]
+ expected: FAIL
+
+ [<input hspace="200.25"> mapping to marginLeft]
+ expected: FAIL
+
+ [<object hspace="1007"> mapping to marginRight]
+ expected: FAIL
+
+ [<td height="200 abc"> mapping to height]
+ expected: FAIL
+
+ [<object vspace="200.25in"> mapping to marginTop]
+ expected: FAIL
+
+ [<marquee height="+0"> mapping to height]
+ expected: FAIL
+
+ [<object vspace="200."> mapping to marginTop]
+ expected: FAIL
+
+ [<marquee width="0"> mapping to width]
+ expected: FAIL
+
+ [<tr height=" 00523 "> mapping to height]
+ expected: FAIL
+
+ [<marquee width="+0%"> mapping to width]
+ expected: FAIL
+
+ [<input height="+200"> mapping to height]
+ expected: FAIL
+
+ [<embed width=" +200.25%abc"> mapping to width]
+ expected: FAIL
+
+ [<marquee vspace="1007"> mapping to marginTop]
+ expected: FAIL
+
+ [<input height="200 abc"> mapping to height]
+ expected: FAIL
+
+ [<marquee vspace="200 abc"> mapping to marginBottom]
+ expected: FAIL
+
+ [<embed width="0%"> mapping to width]
+ expected: FAIL
+
+ [<embed height="200.%"> mapping to height]
+ expected: FAIL
+
+ [<embed hspace=" 00523 "> mapping to marginLeft]
+ expected: FAIL
+
+ [<input hspace="200"> mapping to marginLeft]
+ expected: FAIL
+
+ [<tr height=" +200.25%abc"> mapping to height]
+ expected: FAIL
+
+ [<input vspace=" +200.25%abc"> mapping to marginBottom]
+ expected: FAIL
+
+ [<embed width="200.25%"> mapping to width]
+ expected: FAIL
+
+ [<img height="200.%"> mapping to height]
+ expected: FAIL
+
+ [<marquee vspace="200.7"> mapping to marginBottom]
+ expected: FAIL
+
+ [<tr height="1007"> mapping to height]
+ expected: FAIL
+
+ [<input hspace=" +200in "> mapping to marginRight]
+ expected: FAIL
+
+ [<img hspace="200.25"> mapping to marginRight]
+ expected: FAIL
+
+ [<marquee height="200%"> mapping to height]
+ expected: FAIL
+
+ [<marquee vspace="200.25in"> mapping to marginBottom]
+ expected: FAIL
+
+ [<img vspace="200"> mapping to marginBottom]
+ expected: FAIL
+
+ [<object height="200.25"> mapping to height]
+ expected: FAIL
+
+ [<img vspace="200%"> mapping to marginTop]
+ expected: FAIL
+
+ [<table height="200.25"> mapping to height]
+ expected: FAIL
+
+ [<video height="200 abc"> mapping to height]
+ expected: FAIL
+
+ [<embed width="1007"> mapping to width]
+ expected: FAIL
+
+ [<input vspace="+200%"> mapping to marginBottom]
+ expected: FAIL
+
+ [<input hspace="200%abc"> mapping to marginLeft]
+ expected: FAIL
+
+ [<tr height="200 abc"> mapping to height]
+ expected: FAIL
+
+ [<embed vspace="200 abc"> mapping to marginTop]
+ expected: FAIL
+
+ [<object hspace=" +200.25% "> mapping to marginLeft]
+ expected: FAIL
+
+ [<marquee width="200.25"> mapping to width]
+ expected: FAIL
+
+ [<input width=" +200.25% "> mapping to width]
+ expected: FAIL
+
+ [<marquee vspace="200in"> mapping to marginTop]
+ expected: FAIL
+
+ [<input hspace="200in"> mapping to marginLeft]
+ expected: FAIL
+
+ [<object vspace=" +200.25%abc"> mapping to marginBottom]
+ expected: FAIL
+
+ [<embed width="200.%"> mapping to width]
+ expected: FAIL
+
+ [<marquee hspace="200%"> mapping to marginLeft]
+ expected: FAIL
+
+ [<marquee hspace="+0%"> mapping to marginRight]
+ expected: FAIL
+
+ [<object hspace="200.7"> mapping to marginRight]
+ expected: FAIL
+
+ [<embed hspace="200in"> mapping to marginLeft]
+ expected: FAIL
+
+ [<video width="200%abc"> mapping to width]
+ expected: FAIL
+
+ [<object vspace="200.25%"> mapping to marginBottom]
+ expected: FAIL
+
+ [<embed width="200%abc"> mapping to width]
+ expected: FAIL
+
+ [<marquee height="0px"> mapping to height]
+ expected: FAIL
+
+ [<embed vspace="200.7"> mapping to marginBottom]
+ expected: FAIL
+
+ [<img vspace="200%abc"> mapping to marginTop]
+ expected: FAIL
+
+ [<object vspace="200%abc"> mapping to marginBottom]
+ expected: FAIL
+
+ [<embed hspace=" +200.25% "> mapping to marginRight]
+ expected: FAIL
+
+ [<td height="200"> mapping to height]
+ expected: FAIL
+
+ [<video width="1007"> mapping to width]
+ expected: FAIL
+
+ [<embed width="+0%"> mapping to width]
+ expected: FAIL
+
+ [<object vspace="200%"> mapping to marginTop]
+ expected: FAIL
+
+ [<video height=" +200.25in "> mapping to height]
+ expected: FAIL
+
+ [<embed vspace="200 %"> mapping to marginTop]
+ expected: FAIL
+
+ [<table height="200."> mapping to height]
+ expected: FAIL
+
+ [<object width="200.25%"> mapping to width]
+ expected: FAIL
+
+ [<marquee hspace="200."> mapping to marginLeft]
+ expected: FAIL
+
+ [<embed height="200.25"> mapping to height]
+ expected: FAIL
+
+ [<object vspace=" 00523 "> mapping to marginTop]
+ expected: FAIL
+
+ [<input vspace=" +200.25in "> mapping to marginTop]
+ expected: FAIL
+
+ [<video width="200 abc"> mapping to width]
+ expected: FAIL
+
+ [<embed vspace="+0%"> mapping to marginTop]
+ expected: FAIL
+
+ [<table height="200.25%"> mapping to height]
+ expected: FAIL
+
+ [<embed vspace=" +200.25in "> mapping to marginTop]
+ expected: FAIL
+
+ [<embed hspace="200"> mapping to marginRight]
+ expected: FAIL
+
+ [<marquee width=" +200.25%abc"> mapping to width]
+ expected: FAIL
+
+ [<video height="+0%"> mapping to height]
+ expected: FAIL
+
+ [<img hspace="200%"> mapping to marginRight]
+ expected: FAIL
+
+ [<marquee vspace="+0%"> mapping to marginBottom]
+ expected: FAIL
+
+ [<marquee vspace="200.25"> mapping to marginBottom]
+ expected: FAIL
+
+ [<object hspace="1007"> mapping to marginLeft]
+ expected: FAIL
+
+ [<img hspace=" +200in "> mapping to marginLeft]
+ expected: FAIL
+
+ [<video width="200.25"> mapping to width]
+ expected: FAIL
+
+ [<marquee vspace=" +200in "> mapping to marginTop]
+ expected: FAIL
+
+ [<object width="+200"> mapping to width]
+ expected: FAIL
+
+ [<video height="200."> mapping to height]
+ expected: FAIL
+
+ [<marquee hspace="200.7"> mapping to marginRight]
+ expected: FAIL
+
+ [<marquee vspace="0%"> mapping to marginTop]
+ expected: FAIL
+
+ [<hr width="200.%"> mapping to width]
+ expected: FAIL
+
+ [<input vspace="200in"> mapping to marginTop]
+ expected: FAIL
+
+ [<marquee width=" 00523 "> mapping to width]
+ expected: FAIL
+
+ [<img hspace="1007"> mapping to marginRight]
+ expected: FAIL
+
+ [<embed height="200%"> mapping to height]
+ expected: FAIL
+
+ [<object height="200 abc"> mapping to height]
+ expected: FAIL
+
+ [<input vspace="+0%"> mapping to marginBottom]
+ expected: FAIL
+
+ [<video height="200 %"> mapping to height]
+ expected: FAIL
+
+ [<marquee vspace="200.25%"> mapping to marginBottom]
+ expected: FAIL
+
+ [<img vspace="200in"> mapping to marginBottom]
+ expected: FAIL
+
+ [<embed vspace="200.25%"> mapping to marginTop]
+ expected: FAIL
+
+ [<video height="200.%"> mapping to height]
+ expected: FAIL
+
+ [<object vspace="+200%"> mapping to marginTop]
+ expected: FAIL
+
+ [<embed vspace="+200%"> mapping to marginBottom]
+ expected: FAIL
+
+ [<marquee vspace="+200%"> mapping to marginBottom]
+ expected: FAIL
+
+ [<input hspace="200in"> mapping to marginRight]
+ expected: FAIL
+
+ [<img width="200.%"> mapping to width]
+ expected: FAIL
+
+ [<td height=" +200.25% "> mapping to height]
+ expected: FAIL
+
+ [<embed width="200.25in"> mapping to width]
+ expected: FAIL
+
+ [<video height=" 00523 "> mapping to height]
+ expected: FAIL
+
+ [<object vspace="200 %"> mapping to marginBottom]
+ expected: FAIL
+
+ [<input hspace="1007"> mapping to marginRight]
+ expected: FAIL
+
+ [<object height=" +200in "> mapping to height]
+ expected: FAIL
+
+ [<object hspace="200 %"> mapping to marginRight]
+ expected: FAIL
+
+ [<object vspace="200.%"> mapping to marginTop]
+ expected: FAIL
+
+ [<object hspace=" 00523 "> mapping to marginRight]
+ expected: FAIL
+
+ [<object height="0"> mapping to height]
+ expected: FAIL
+
+ [<object width="200 %"> mapping to width]
+ expected: FAIL
+
+ [<marquee width=" +200in "> mapping to width]
+ expected: FAIL
+
+ [<marquee hspace="0%"> mapping to marginLeft]
+ expected: FAIL
+
+ [<col width=" +200.25%abc"> mapping to width]
+ expected: FAIL
+
+ [<marquee vspace=" 00523 "> mapping to marginBottom]
+ expected: FAIL
+
+ [<img vspace="200.7"> mapping to marginTop]
+ expected: FAIL
+
+ [<marquee hspace="200in"> mapping to marginRight]
+ expected: FAIL
+
+ [<video width="200in"> mapping to width]
+ expected: FAIL
+
+ [<td height="200.25%"> mapping to height]
+ expected: FAIL
+
+ [<img hspace=" +200.25in "> mapping to marginRight]
+ expected: FAIL
+
+ [<marquee height="+200"> mapping to height]
+ expected: FAIL
+
+ [<input vspace="200.25in"> mapping to marginTop]
+ expected: FAIL
+
+ [<marquee vspace="200.25"> mapping to marginTop]
+ expected: FAIL
+
+ [<video height="0px"> mapping to height]
+ expected: FAIL
+
+ [<embed height="0%"> mapping to height]
+ expected: FAIL
+
+ [<input vspace="200%"> mapping to marginBottom]
+ expected: FAIL
+
+ [<embed vspace=" +200.25%abc"> mapping to marginTop]
+ expected: FAIL
+
+ [<object width=" +200.25in "> mapping to width]
+ expected: FAIL
+
+ [<video width="200 %"> mapping to width]
+ expected: FAIL
+
+ [<td height="+200"> mapping to height]
+ expected: FAIL
+
+ [<embed vspace="200%abc"> mapping to marginTop]
+ expected: FAIL
+
+ [<input width="200"> mapping to width]
+ expected: FAIL
+
+ [<object hspace="200.25"> mapping to marginLeft]
+ expected: FAIL
+
+ [<table height="+200"> mapping to height]
+ expected: FAIL
+
+ [<embed vspace="+200"> mapping to marginTop]
+ expected: FAIL
+
+ [<marquee hspace="200.25"> mapping to marginRight]
+ expected: FAIL
+
+ [<input height="200.7"> mapping to height]
+ expected: FAIL
+
+ [<img vspace="200.%"> mapping to marginBottom]
+ expected: FAIL
+
+ [<embed vspace="200.%"> mapping to marginBottom]
+ expected: FAIL
+
+ [<object vspace=" +200.25in "> mapping to marginBottom]
+ expected: FAIL
+
+ [<object vspace="200in"> mapping to marginBottom]
+ expected: FAIL
+
+ [<object vspace="200%abc"> mapping to marginTop]
+ expected: FAIL
+
+ [<img vspace="0%"> mapping to marginBottom]
+ expected: FAIL
+
+ [<input height="200.%"> mapping to height]
+ expected: FAIL
+
+ [<embed width=" +200.25in "> mapping to width]
+ expected: FAIL
+
+ [<marquee vspace=" +200.25in "> mapping to marginBottom]
+ expected: FAIL
+
+ [<input hspace=" +200.25in "> mapping to marginLeft]
+ expected: FAIL
+
+ [<input vspace="200 abc"> mapping to marginBottom]
+ expected: FAIL
+
+ [<embed vspace="200"> mapping to marginTop]
+ expected: FAIL
+
+ [<embed width=" +200.25% "> mapping to width]
+ expected: FAIL
+
+ [<img vspace="+0%"> mapping to marginBottom]
+ expected: FAIL
+
+ [<table height=" +200.25in "> mapping to height]
+ expected: FAIL
+
+ [<object width="+0"> mapping to width]
+ expected: FAIL
+
+ [<input vspace="200.%"> mapping to marginTop]
+ expected: FAIL
+
+ [<marquee hspace=" +200.25%abc"> mapping to marginRight]
+ expected: FAIL
+
+ [<input hspace="+200%"> mapping to marginLeft]
+ expected: FAIL
+
+ [<marquee height="0%"> mapping to height]
+ expected: FAIL
+
+ [<tr height="+200%"> mapping to height]
+ expected: FAIL
+
+ [<marquee height="200.%"> mapping to height]
+ expected: FAIL
+
+ [<img vspace=" +200.25in "> mapping to marginBottom]
+ expected: FAIL
+
+ [<img hspace="200.7"> mapping to marginLeft]
+ expected: FAIL
+
+ [<embed height="+200"> mapping to height]
+ expected: FAIL
+
+ [<marquee hspace=" +200in "> mapping to marginRight]
+ expected: FAIL
+
+ [<marquee vspace="200."> mapping to marginTop]
+ expected: FAIL
+
+ [<video width="+200"> mapping to width]
+ expected: FAIL
+
+ [<object hspace="200in"> mapping to marginRight]
+ expected: FAIL
+
+ [<marquee hspace="200.25in"> mapping to marginLeft]
+ expected: FAIL
+
+ [<input hspace="200%"> mapping to marginLeft]
+ expected: FAIL
+
+ [<embed hspace="+0%"> mapping to marginRight]
+ expected: FAIL
+
+ [<input height="200.25in"> mapping to height]
+ expected: FAIL
+
+ [<input height="200.25%"> mapping to height]
+ expected: FAIL
+
+ [<input height="+0%"> mapping to height]
+ expected: FAIL
+
+ [<marquee hspace="+200"> mapping to marginRight]
+ expected: FAIL
+
+ [<object hspace="+0%"> mapping to marginLeft]
+ expected: FAIL
+
+ [<input hspace=" +200.25%abc"> mapping to marginRight]
+ expected: FAIL
+
+ [<input hspace="200.25in"> mapping to marginLeft]
+ expected: FAIL
+
+ [<embed vspace="200%"> mapping to marginBottom]
+ expected: FAIL
+
+ [<col width="200."> mapping to width]
+ expected: FAIL
+
+ [<object hspace="200 %"> mapping to marginLeft]
+ expected: FAIL
+
+ [<object hspace="200.%"> mapping to marginLeft]
+ expected: FAIL
+
+ [<img hspace="+200"> mapping to marginRight]
+ expected: FAIL
+
+ [<marquee vspace="200.7"> mapping to marginTop]
+ expected: FAIL
+
+ [<marquee vspace="200 abc"> mapping to marginTop]
+ expected: FAIL
+
+ [<marquee hspace="200 abc"> mapping to marginRight]
+ expected: FAIL
+
+ [<col width=" +200.25in "> mapping to width]
+ expected: FAIL
+
+ [<object vspace="200 abc"> mapping to marginTop]
+ expected: FAIL
+
+ [<marquee vspace="200%"> mapping to marginTop]
+ expected: FAIL
+
+ [<object hspace="200.25in"> mapping to marginRight]
+ expected: FAIL
+
+ [<embed vspace="200."> mapping to marginTop]
+ expected: FAIL
+
+ [<img vspace="1007"> mapping to marginTop]
+ expected: FAIL
+
+ [<object hspace=" +200.25%abc"> mapping to marginRight]
+ expected: FAIL
+
+ [<embed hspace="200 abc"> mapping to marginLeft]
+ expected: FAIL
+
+ [<marquee width="200%"> mapping to width]
+ expected: FAIL
+
+ [<marquee hspace="200.25in"> mapping to marginRight]
+ expected: FAIL
+
+ [<object vspace="200 %"> mapping to marginTop]
+ expected: FAIL
+
+ [<img hspace="200."> mapping to marginLeft]
+ expected: FAIL
+
+ [<embed hspace=" +200.25% "> mapping to marginLeft]
+ expected: FAIL
+
+ [<video width=" +200.25% "> mapping to width]
+ expected: FAIL
+
+ [<object height="200.25in"> mapping to height]
+ expected: FAIL
+
+ [<embed width="+200%"> mapping to width]
+ expected: FAIL
+
+ [<img hspace="0%"> mapping to marginLeft]
+ expected: FAIL
+
+ [<marquee height="+0%"> mapping to height]
+ expected: FAIL
+
+ [<img hspace="200.25%"> mapping to marginLeft]
+ expected: FAIL
+
+ [<input hspace="200."> mapping to marginLeft]
+ expected: FAIL
+
+ [<input vspace="200.25%"> mapping to marginBottom]
+ expected: FAIL
+
+ [<marquee width=" +200.25in "> mapping to width]
+ expected: FAIL
+
+ [<object vspace="0%"> mapping to marginTop]
+ expected: FAIL
+
+ [<object height="200.%"> mapping to height]
+ expected: FAIL
+
+ [<embed height="1007"> mapping to height]
+ expected: FAIL
+
+ [<video height="200.25"> mapping to height]
+ expected: FAIL
+
+ [<input vspace="200.%"> mapping to marginBottom]
+ expected: FAIL
+
+ [<marquee vspace="+0%"> mapping to marginTop]
+ expected: FAIL
+
+ [<input height="200"> mapping to height]
+ expected: FAIL
+
+ [<embed hspace="200 abc"> mapping to marginRight]
+ expected: FAIL
+
+ [<marquee hspace="+200%"> mapping to marginRight]
+ expected: FAIL
+
+ [<img vspace="+200"> mapping to marginBottom]
+ expected: FAIL
+
+ [<input vspace="200.25%"> mapping to marginTop]
+ expected: FAIL
+
+ [<img hspace="200 %"> mapping to marginRight]
+ expected: FAIL
+
+ [<object height="0%"> mapping to height]
+ expected: FAIL
+
+ [<marquee hspace="200%abc"> mapping to marginLeft]
+ expected: FAIL
+
+ [<object vspace="200%"> mapping to marginBottom]
+ expected: FAIL
+
+ [<object vspace="200"> mapping to marginTop]
+ expected: FAIL
+
+ [<img hspace="+0%"> mapping to marginRight]
+ expected: FAIL
+
+ [<img hspace=" +200.25% "> mapping to marginRight]
+ expected: FAIL
+
+ [<col width=" +200.25% "> mapping to width]
+ expected: FAIL
+
+ [<marquee hspace="+200%"> mapping to marginLeft]
+ expected: FAIL
+
+ [<embed vspace="200.25"> mapping to marginTop]
+ expected: FAIL
+
+ [<object width="200%"> mapping to width]
+ expected: FAIL
+
+ [<object hspace="200."> mapping to marginLeft]
+ expected: FAIL
+
+ [<video width="+0%"> mapping to width]
+ expected: FAIL
+
+ [<table height="200in"> mapping to height]
+ expected: FAIL
+
+ [<embed hspace="200 %"> mapping to marginRight]
+ expected: FAIL
+
+ [<img hspace=" +200in "> mapping to marginRight]
+ expected: FAIL
+
+ [<object vspace="200.25"> mapping to marginTop]
+ expected: FAIL
+
+ [<embed hspace="200%"> mapping to marginLeft]
+ expected: FAIL
+
+ [<embed hspace="200.7"> mapping to marginRight]
+ expected: FAIL
+
+ [<td height="200%abc"> mapping to height]
+ expected: FAIL
+
+ [<td height="200.%"> mapping to height]
+ expected: FAIL
+
+ [<marquee width="200.%"> mapping to width]
+ expected: FAIL
+
+ [<embed hspace="200.%"> mapping to marginLeft]
+ expected: FAIL
+
+ [<object width="200.25in"> mapping to width]
+ expected: FAIL
+
+ [<object hspace=" +200.25in "> mapping to marginLeft]
+ expected: FAIL
+
+ [<object vspace=" +200.25% "> mapping to marginTop]
+ expected: FAIL
+
+ [<img hspace="200"> mapping to marginRight]
+ expected: FAIL
+
+ [<img hspace="200%abc"> mapping to marginLeft]
+ expected: FAIL
+
+ [<object height=" 00523 "> mapping to height]
+ expected: FAIL
+
+ [<object vspace=" +200.25in "> mapping to marginTop]
+ expected: FAIL
+
+ [<input vspace=" 00523 "> mapping to marginTop]
+ expected: FAIL
+
+ [<object hspace="200.25%"> mapping to marginRight]
+ expected: FAIL
+
+ [<img vspace="200.25%"> mapping to marginBottom]
+ expected: FAIL
+
+ [<marquee vspace="200"> mapping to marginBottom]
+ expected: FAIL
+
+ [<marquee vspace="200%abc"> mapping to marginBottom]
+ expected: FAIL
+
+ [<marquee hspace="1007"> mapping to marginLeft]
+ expected: FAIL
+
+ [<embed hspace=" +200.25in "> mapping to marginRight]
+ expected: FAIL
+
+ [<input hspace="200.7"> mapping to marginLeft]
+ expected: FAIL
+
+ [<marquee hspace="200 %"> mapping to marginLeft]
+ expected: FAIL
+
+ [<object width="200."> mapping to width]
+ expected: FAIL
+
+ [<embed hspace=" +200in "> mapping to marginRight]
+ expected: FAIL
+
+ [<tr height="200"> mapping to height]
+ expected: FAIL
+
+ [<object height=" +200.25% "> mapping to height]
+ expected: FAIL
+
+ [<video width="200.25in"> mapping to width]
+ expected: FAIL
+
+ [<object width="200in"> mapping to width]
+ expected: FAIL
+
+ [<marquee hspace="200."> mapping to marginRight]
+ expected: FAIL
+
+ [<object height="+200%"> mapping to height]
+ expected: FAIL
+
+ [<marquee hspace="200.25"> mapping to marginLeft]
+ expected: FAIL
+
+ [<object height="200.7"> mapping to height]
+ expected: FAIL
+
+ [<img vspace="200.25in"> mapping to marginBottom]
+ expected: FAIL
+
+ [<img hspace=" +200.25% "> mapping to marginLeft]
+ expected: FAIL
+
+ [<col width="200.25in"> mapping to width]
+ expected: FAIL
+
+ [<input width="0"> mapping to width]
+ expected: FAIL
+
+ [<marquee hspace="200.%"> mapping to marginLeft]
+ expected: FAIL
+
+ [<embed height="0"> mapping to height]
+ expected: FAIL
+
+ [<object vspace=" 00523 "> mapping to marginBottom]
+ expected: FAIL
+
+ [<marquee width="200."> mapping to width]
+ expected: FAIL
+
+ [<input hspace="200.25"> mapping to marginRight]
+ expected: FAIL
+
+ [<object vspace="+200%"> mapping to marginBottom]
+ expected: FAIL
+
+ [<object hspace="+0%"> mapping to marginRight]
+ expected: FAIL
+
+ [<table height=" +200in "> mapping to height]
+ expected: FAIL
+
+ [<marquee hspace="200.%"> mapping to marginRight]
+ expected: FAIL
+
+ [<col width="200.%"> mapping to width]
+ expected: FAIL
+
+ [<object height="200%"> mapping to height]
+ expected: FAIL
+
+ [<input hspace="200.%"> mapping to marginRight]
+ expected: FAIL
+
+ [<input hspace="200%"> mapping to marginRight]
+ expected: FAIL
+
+ [<embed vspace="200."> mapping to marginBottom]
+ expected: FAIL
+
+ [<marquee height="200"> mapping to height]
+ expected: FAIL
+
+ [<embed width=" 00523 "> mapping to width]
+ expected: FAIL
+
+ [<input hspace="200 %"> mapping to marginRight]
+ expected: FAIL
+
+ [<object vspace="200."> mapping to marginBottom]
+ expected: FAIL
+
+ [<embed height="200 abc"> mapping to height]
+ expected: FAIL
+
+ [<input vspace=" +200.25in "> mapping to marginBottom]
+ expected: FAIL
+
+ [<input height=" +200.25%abc"> mapping to height]
+ expected: FAIL
+
+ [<input width="200.25%"> mapping to width]
+ expected: FAIL
+
+ [<img vspace="200 abc"> mapping to marginBottom]
+ expected: FAIL
+
+ [<input hspace=" +200.25%abc"> mapping to marginLeft]
+ expected: FAIL
+
+ [<embed vspace="200.7"> mapping to marginTop]
+ expected: FAIL
+
+ [<embed width="200."> mapping to width]
+ expected: FAIL
+
+ [<img vspace="200 %"> mapping to marginTop]
+ expected: FAIL
+
+ [<input width="200in"> mapping to width]
+ expected: FAIL
+
+ [<video height="+200"> mapping to height]
+ expected: FAIL
+
+ [<input hspace="200.25%"> mapping to marginRight]
+ expected: FAIL
+
+ [<object width="0"> mapping to width]
+ expected: FAIL
+
+ [<input height="200.25"> mapping to height]
+ expected: FAIL
+
+ [<td height="200%"> mapping to height]
+ expected: FAIL
+
+ [<embed hspace="200."> mapping to marginRight]
+ expected: FAIL
+
+ [<embed height=" 00523 "> mapping to height]
+ expected: FAIL
+
+ [<marquee vspace=" +200.25in "> mapping to marginTop]
+ expected: FAIL
+
+ [<embed hspace="200.%"> mapping to marginRight]
+ expected: FAIL
+
+ [<marquee width="+200"> mapping to width]
+ expected: FAIL
+
+ [<input vspace=" +200.25% "> mapping to marginTop]
+ expected: FAIL
+
+ [<marquee height=" +200.25in "> mapping to height]
+ expected: FAIL
+
+ [<object width=" +200.25% "> mapping to width]
+ expected: FAIL
+
+ [<marquee width="200"> mapping to width]
+ expected: FAIL
+
+ [<object width="+200%"> mapping to width]
+ expected: FAIL
+
+ [<embed vspace="200in"> mapping to marginBottom]
+ expected: FAIL
+
+ [<video height="200in"> mapping to height]
+ expected: FAIL
+
+ [<object hspace="200.%"> mapping to marginRight]
+ expected: FAIL
+
+ [<embed vspace="200 abc"> mapping to marginBottom]
+ expected: FAIL
+
+ [<table width="200.%"> mapping to width]
+ expected: FAIL
+
+ [<marquee vspace=" +200.25% "> mapping to marginBottom]
+ expected: FAIL
+
+ [<input vspace="200%abc"> mapping to marginBottom]
+ expected: FAIL
+
+ [<marquee height="200%abc"> mapping to height]
+ expected: FAIL
+
+ [<marquee hspace=" +200in "> mapping to marginLeft]
+ expected: FAIL
+
+ [<img hspace="200.%"> mapping to marginLeft]
+ expected: FAIL
+
+ [<embed vspace="200.25"> mapping to marginBottom]
+ expected: FAIL
+
+ [<embed vspace="200 %"> mapping to marginBottom]
+ expected: FAIL
+
+ [<input hspace="+0%"> mapping to marginRight]
+ expected: FAIL
+
+ [<img hspace="200.7"> mapping to marginRight]
+ expected: FAIL
+
+ [<img hspace=" 00523 "> mapping to marginLeft]
+ expected: FAIL
+
+ [<input vspace="+0%"> mapping to marginTop]
+ expected: FAIL
+
+ [<img vspace="+0%"> mapping to marginTop]
+ expected: FAIL
+
+ [<embed hspace=" 00523 "> mapping to marginRight]
+ expected: FAIL
+
+ [<table height="200%"> mapping to height]
+ expected: FAIL
+
+ [<object height="200"> mapping to height]
+ expected: FAIL
+
+ [<object height=" +200.25in "> mapping to height]
+ expected: FAIL
+
+ [<img vspace="+200%"> mapping to marginTop]
+ expected: FAIL
+
+ [<tr height=" +200.25in "> mapping to height]
+ expected: FAIL
+
+ [<marquee vspace=" +200in "> mapping to marginBottom]
+ expected: FAIL
+
+ [<input vspace="+200%"> mapping to marginTop]
+ expected: FAIL
+
+ [<marquee hspace=" 00523 "> mapping to marginLeft]
+ expected: FAIL
+
+ [<object vspace="200.25in"> mapping to marginBottom]
+ expected: FAIL
+
+ [<col width="200 %"> mapping to width]
+ expected: FAIL
+
+ [<object hspace="200"> mapping to marginRight]
+ expected: FAIL
+
+ [<embed vspace=" +200.25% "> mapping to marginBottom]
+ expected: FAIL
+
+ [<col width="200 abc"> mapping to width]
+ expected: FAIL
+
+ [<embed vspace="+200%"> mapping to marginTop]
+ expected: FAIL
+
+ [<embed hspace="200.25"> mapping to marginLeft]
+ expected: FAIL
+
+ [<embed hspace="200.25in"> mapping to marginRight]
+ expected: FAIL
+
+ [<embed vspace=" +200.25%abc"> mapping to marginBottom]
+ expected: FAIL
+
+ [<img hspace="200."> mapping to marginRight]
+ expected: FAIL
+
+ [<img vspace="200%abc"> mapping to marginBottom]
+ expected: FAIL
+
+ [<marquee height=" +200.25%abc"> mapping to height]
+ expected: FAIL
+
+ [<marquee hspace="200.25%"> mapping to marginLeft]
+ expected: FAIL
+
+ [<input width="+200"> mapping to width]
+ expected: FAIL
+
+ [<input hspace="+0%"> mapping to marginLeft]
+ expected: FAIL
+
+ [<marquee hspace="200.25%"> mapping to marginRight]
+ expected: FAIL
+
+ [<video width="+200%"> mapping to width]
+ expected: FAIL
+
+ [<input vspace=" +200in "> mapping to marginBottom]
+ expected: FAIL
+
+ [<object hspace="0%"> mapping to marginLeft]
+ expected: FAIL
+
+ [<embed hspace="200.25%"> mapping to marginRight]
+ expected: FAIL
+
+ [<td height=" +200in "> mapping to height]
+ expected: FAIL
+
+ [<input width="1007"> mapping to width]
+ expected: FAIL
+
+ [<embed height="200in"> mapping to height]
+ expected: FAIL
+
+ [<embed height="200.25in"> mapping to height]
+ expected: FAIL
+
+ [<object hspace="200%abc"> mapping to marginRight]
+ expected: FAIL
+
+ [<img vspace=" +200.25% "> mapping to marginTop]
+ expected: FAIL
+
+ [<input width="+200%"> mapping to width]
+ expected: FAIL
+
+ [<tr height=" +200.25% "> mapping to height]
+ expected: FAIL
+
+ [<img hspace="200.25in"> mapping to marginLeft]
+ expected: FAIL
+
+ [<input hspace="0%"> mapping to marginRight]
+ expected: FAIL
+
+ [<marquee width="200.7"> mapping to width]
+ expected: FAIL
+
+ [<input vspace="200%abc"> mapping to marginTop]
+ expected: FAIL
+
+ [<object vspace="+200"> mapping to marginTop]
+ expected: FAIL
+
+ [<embed vspace=" 00523 "> mapping to marginBottom]
+ expected: FAIL
+
+ [<marquee hspace="200 %"> mapping to marginRight]
+ expected: FAIL
+
+ [<embed height=" +200.25% "> mapping to height]
+ expected: FAIL
+
+ [<embed hspace="0%"> mapping to marginLeft]
+ expected: FAIL
+
+ [<object hspace="200%abc"> mapping to marginLeft]
+ expected: FAIL
+
+ [<embed vspace="1007"> mapping to marginBottom]
+ expected: FAIL
+
+ [<embed hspace=" +200.25%abc"> mapping to marginLeft]
+ expected: FAIL
+
+ [<embed hspace="200in"> mapping to marginRight]
+ expected: FAIL
+
+ [<embed width="200.25"> mapping to width]
+ expected: FAIL
+
+ [<img hspace="200in"> mapping to marginLeft]
+ expected: FAIL
+
+ [<object hspace="+200"> mapping to marginLeft]
+ expected: FAIL
+
+ [<video width="200."> mapping to width]
+ expected: FAIL
+
+ [<marquee hspace="1007"> mapping to marginRight]
+ expected: FAIL
+
+ [<embed hspace="200 %"> mapping to marginLeft]
+ expected: FAIL
+
+ [<col width="+200%"> mapping to width]
+ expected: FAIL
+
+ [<video width="0px"> mapping to width]
+ expected: FAIL
+
+ [<img vspace=" +200in "> mapping to marginTop]
+ expected: FAIL
+
+ [<tr height=" +200in "> mapping to height]
+ expected: FAIL
+
+ [<input vspace="200%"> mapping to marginTop]
+ expected: FAIL
+
+ [<input hspace=" 00523 "> mapping to marginLeft]
+ expected: FAIL
+
+ [<video height="200"> mapping to height]
+ expected: FAIL
+
+ [<input height=" 00523 "> mapping to height]
+ expected: FAIL
+
+ [<input height=" +200.25% "> mapping to height]
+ expected: FAIL
+
+ [<td height=" 00523 "> mapping to height]
+ expected: FAIL
+
+ [<input vspace="200 %"> mapping to marginBottom]
+ expected: FAIL
+
+ [<marquee vspace="200 %"> mapping to marginTop]
+ expected: FAIL
+
+ [<input hspace=" 00523 "> mapping to marginRight]
+ expected: FAIL
+
+ [<marquee height="200in"> mapping to height]
+ expected: FAIL
+
+ [<embed height=" +200.25%abc"> mapping to height]
+ expected: FAIL
+
+ [<embed vspace="200.25in"> mapping to marginTop]
+ expected: FAIL
+
+ [<input vspace="+200"> mapping to marginBottom]
+ expected: FAIL
+
+ [<img vspace="200."> mapping to marginBottom]
+ expected: FAIL
+
+ [<marquee height="200."> mapping to height]
+ expected: FAIL
+
+ [<img hspace="200.25%"> mapping to marginRight]
+ expected: FAIL
+
+ [<img vspace=" +200.25%abc"> mapping to marginTop]
+ expected: FAIL
+
+ [<img vspace="+200"> mapping to marginTop]
+ expected: FAIL
+
+ [<embed vspace="200.25in"> mapping to marginBottom]
+ expected: FAIL
+
+ [<video width="+0"> mapping to width]
+ expected: FAIL
+
+ [<embed height="+0%"> mapping to height]
+ expected: FAIL
+
+ [<marquee width="200in"> mapping to width]
+ expected: FAIL
+
+ [<video width="200"> mapping to width]
+ expected: FAIL
+
+ [<img hspace=" +200.25%abc"> mapping to marginRight]
+ expected: FAIL
+
+ [<input hspace="+200"> mapping to marginRight]
+ expected: FAIL
+
+ [<video height="0"> mapping to height]
+ expected: FAIL
+
+ [<embed vspace=" 00523 "> mapping to marginTop]
+ expected: FAIL
+
+ [<marquee width="200%abc"> mapping to width]
+ expected: FAIL
+
+ [<object width="0px"> mapping to width]
+ expected: FAIL
+
+ [<object width="+0%"> mapping to width]
+ expected: FAIL
+
+ [<object hspace=" +200.25%abc"> mapping to marginLeft]
+ expected: FAIL
+
+ [<embed hspace="1007"> mapping to marginRight]
+ expected: FAIL
+
+ [<object vspace="200.25"> mapping to marginBottom]
+ expected: FAIL
+
+ [<embed vspace=" +200in "> mapping to marginBottom]
+ expected: FAIL
+
+ [<embed hspace="200.25"> mapping to marginRight]
+ expected: FAIL
+
+ [<input vspace="200 abc"> mapping to marginTop]
+ expected: FAIL
+
+ [<col width=" 00523 "> mapping to width]
+ expected: FAIL
+
+ [<marquee vspace=" +200.25%abc"> mapping to marginTop]
+ expected: FAIL
+
+ [<marquee hspace="200.7"> mapping to marginLeft]
+ expected: FAIL
+
+ [<input height="0px"> mapping to height]
+ expected: FAIL
+
+ [<col width="+200"> mapping to width]
+ expected: FAIL
+
+ [<img hspace="200in"> mapping to marginRight]
+ expected: FAIL
+
+ [<td height=" +200.25in "> mapping to height]
+ expected: FAIL
+
+ [<td height=" +200.25%abc"> mapping to height]
+ expected: FAIL
+
+ [<marquee hspace="+0%"> mapping to marginLeft]
+ expected: FAIL
+
+ [<marquee height="200.25"> mapping to height]
+ expected: FAIL
+
+ [<marquee width="200.25%"> mapping to width]
+ expected: FAIL
+
+ [<marquee height=" +200.25% "> mapping to height]
+ expected: FAIL
+
+ [<object hspace="200 abc"> mapping to marginLeft]
+ expected: FAIL
+
+ [<marquee vspace="+200%"> mapping to marginTop]
+ expected: FAIL
+
+ [<img hspace="200 %"> mapping to marginLeft]
+ expected: FAIL
+
+ [<marquee height="0"> mapping to height]
+ expected: FAIL
+
+ [<video height=" +200.25%abc"> mapping to height]
+ expected: FAIL
+
+ [<input width="0%"> mapping to width]
+ expected: FAIL
+
+ [<table height="1007"> mapping to height]
+ expected: FAIL
+
+ [<embed hspace=" +200.25%abc"> mapping to marginRight]
+ expected: FAIL
+
+ [<object height="+0"> mapping to height]
+ expected: FAIL
+
+ [<object hspace="200%"> mapping to marginRight]
+ expected: FAIL
+
+ [<object height="200%abc"> mapping to height]
+ expected: FAIL
+
+ [<object width=" +200in "> mapping to width]
+ expected: FAIL
+
+ [<embed width="0px"> mapping to width]
+ expected: FAIL
+
+ [<embed vspace="0%"> mapping to marginTop]
+ expected: FAIL
+
+ [<object hspace="200.25in"> mapping to marginLeft]
+ expected: FAIL
+
+ [<embed vspace="200%"> mapping to marginTop]
+ expected: FAIL
+
+ [<embed hspace="200.7"> mapping to marginLeft]
+ expected: FAIL
+
+ [<marquee width="+0"> mapping to width]
+ expected: FAIL
+
+ [<video width="200.%"> mapping to width]
+ expected: FAIL
+
+ [<col width="200in"> mapping to width]
+ expected: FAIL
+
+ [<img hspace="200%"> mapping to marginLeft]
+ expected: FAIL
+
+ [<marquee width=" +200.25% "> mapping to width]
+ expected: FAIL
+
+ [<video width="0%"> mapping to width]
+ expected: FAIL
+
+ [<marquee width="0px"> mapping to width]
+ expected: FAIL
+
+ [<embed hspace="200%abc"> mapping to marginLeft]
+ expected: FAIL
+
+ [<img hspace="+200%"> mapping to marginRight]
+ expected: FAIL
+
+ [<marquee hspace=" +200.25% "> mapping to marginRight]
+ expected: FAIL
+
+ [<object width="200%abc"> mapping to width]
+ expected: FAIL
+
+ [<marquee hspace=" +200.25% "> mapping to marginLeft]
+ expected: FAIL
+
+ [<td height="200.7"> mapping to height]
+ expected: FAIL
+
+ [<col width="200%"> mapping to width]
+ expected: FAIL
+
+ [<object hspace="200 abc"> mapping to marginRight]
+ expected: FAIL
+
+ [<video height="200.25in"> mapping to height]
+ expected: FAIL
+
+ [<embed vspace="+0%"> mapping to marginBottom]
+ expected: FAIL
+
+ [<input vspace="200in"> mapping to marginBottom]
+ expected: FAIL
+
+ [<marquee hspace="200%abc"> mapping to marginRight]
+ expected: FAIL
+
+ [<marquee height="200.25%"> mapping to height]
+ expected: FAIL
+
+ [<embed height="200%abc"> mapping to height]
+ expected: FAIL
+
+ [<object hspace="+200%"> mapping to marginLeft]
+ expected: FAIL
+
+ [<object hspace="200in"> mapping to marginLeft]
+ expected: FAIL
+
+ [<object width="200"> mapping to width]
+ expected: FAIL
+
+ [<input vspace="200.25in"> mapping to marginBottom]
+ expected: FAIL
+
+ [<object vspace="1007"> mapping to marginBottom]
+ expected: FAIL
+
+ [<tr height="+200"> mapping to height]
+ expected: FAIL
+
+ [<video width=" +200in "> mapping to width]
+ expected: FAIL
+
+ [<tr height="200 %"> mapping to height]
+ expected: FAIL
+
+ [<col width="200.25"> mapping to width]
+ expected: FAIL
+
+ [<tr height="200.25in"> mapping to height]
+ expected: FAIL
+
+ [<object hspace="200"> mapping to marginLeft]
+ expected: FAIL
+
+ [<embed hspace="+200%"> mapping to marginRight]
+ expected: FAIL
+
+ [<embed width="200 abc"> mapping to width]
+ expected: FAIL
+
+ [<input vspace=" +200.25%abc"> mapping to marginTop]
+ expected: FAIL
+
+ [<img vspace="200."> mapping to marginTop]
+ expected: FAIL
+
+ [<marquee vspace="1007"> mapping to marginBottom]
+ expected: FAIL
+
+ [<img vspace="200.%"> mapping to marginTop]
+ expected: FAIL
+
+ [<input hspace="200 abc"> mapping to marginRight]
+ expected: FAIL
+
+ [<embed vspace="1007"> mapping to marginTop]
+ expected: FAIL
+
+ [<input width="0px"> mapping to width]
+ expected: FAIL
+
+ [<object height="+0%"> mapping to height]
+ expected: FAIL
+
+ [<object vspace="+200"> mapping to marginBottom]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/html/rendering/pixel-length-attributes.html.ini b/tests/wpt/metadata/html/rendering/pixel-length-attributes.html.ini
index 99f0d626d84..fb11c5b5972 100644
--- a/tests/wpt/metadata/html/rendering/pixel-length-attributes.html.ini
+++ b/tests/wpt/metadata/html/rendering/pixel-length-attributes.html.ini
@@ -1,5 +1,4 @@
[pixel-length-attributes.html]
- expected: ERROR
[<iframe marginheight="200%"> mapping to marginBottom]
expected: FAIL
@@ -192,3 +191,6 @@
[<iframe marginwidth="0"> mapping to marginLeft]
expected: FAIL
+ [Test handling of attributes that map to pixel length properties]
+ 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/document-write/iframe_005.html.ini b/tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/document-write/iframe_005.html.ini
new file mode 100644
index 00000000000..6cf9d13975c
--- /dev/null
+++ b/tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/document-write/iframe_005.html.ini
@@ -0,0 +1,4 @@
+[iframe_005.html]
+ [document.write external script into iframe write back into parent]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-agent-formalism/requires-failure.https.any.js.ini b/tests/wpt/metadata/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-agent-formalism/requires-failure.https.any.js.ini
new file mode 100644
index 00000000000..44439df7a90
--- /dev/null
+++ b/tests/wpt/metadata/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-agent-formalism/requires-failure.https.any.js.ini
@@ -0,0 +1,6 @@
+[requires-failure.https.any.html]
+
+[requires-failure.https.any.serviceworker.html]
+ [requires-failure]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-agent-formalism/requires-success.any.js.ini b/tests/wpt/metadata/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-agent-formalism/requires-success.any.js.ini
new file mode 100644
index 00000000000..f14929079d7
--- /dev/null
+++ b/tests/wpt/metadata/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-agent-formalism/requires-success.any.js.ini
@@ -0,0 +1,9 @@
+[requires-success.any.worker.html]
+ [[[CanBlock\]\] in a DedicatedWorkerGlobalScope]
+ expected: FAIL
+
+
+[requires-success.any.sharedworker.html]
+ [requires-success]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.html.ini b/tests/wpt/metadata/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.html.ini
index 034d9baebfa..496bad988c6 100644
--- a/tests/wpt/metadata/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.html.ini
+++ b/tests/wpt/metadata/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.html.ini
@@ -1,5 +1,4 @@
[promise-rejection-events.html]
- expected: TIMEOUT
[delayed handling: delaying handling rejected promise created from createImageBitmap will cause both events to fire]
expected: FAIL
@@ -9,6 +8,3 @@
[no unhandledrejection/rejectionhandled: rejection handler attached synchronously to a promise created from createImageBitmap]
expected: FAIL
- [rejectionhandled is dispatched from a queued task, and not immediately]
- expected: TIMEOUT
-
diff --git a/tests/wpt/metadata/resource-timing/resource_TAO_zero.htm.ini b/tests/wpt/metadata/resource-timing/resource_TAO_zero.htm.ini
index 841d4050464..091a2791657 100644
--- a/tests/wpt/metadata/resource-timing/resource_TAO_zero.htm.ini
+++ b/tests/wpt/metadata/resource-timing/resource_TAO_zero.htm.ini
@@ -23,6 +23,3 @@
[domainLookupStart should be 0 in cross-origin request.]
expected: FAIL
- [responseEnd should be greater than 0 in cross-origin request.]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-audiobuffersourcenode-interface/sub-sample-buffer-stitching.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-audiobuffersourcenode-interface/sub-sample-buffer-stitching.html.ini
index 9a6ba1ca4dc..84a55b8f763 100644
--- a/tests/wpt/metadata/webaudio/the-audio-api/the-audiobuffersourcenode-interface/sub-sample-buffer-stitching.html.ini
+++ b/tests/wpt/metadata/webaudio/the-audio-api/the-audiobuffersourcenode-interface/sub-sample-buffer-stitching.html.ini
@@ -83,3 +83,9 @@
[X Stitched sine-wave buffers at sample rate 43800 does not equal [0,0.06264832615852356,0.12505052983760834,0.18696144223213196,0.24813786149024963,0.308339387178421,0.36732959747314453,0.4248766601085663,0.480754554271698,0.5347436666488647,0.5866320133209229,0.6362156271934509,0.6832997798919678,0.7276994585990906,0.7692402601242065,0.8077589869499207...\] with an element-wise tolerance of {"absoluteThreshold":0.0038986,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[30\]\t9.4836157560348511e-1\t9.5236867666244507e-1\t4.0071010589599609e-3\t4.2075103446311962e-3\t3.8985999999999999e-3\n\t[31\]\t9.2646563053131104e-1\t9.3139332532882690e-1\t4.9276947975158691e-3\t5.2906700783754857e-3\t3.8985999999999999e-3\n\t[32\]\t9.0087991952896118e-1\t9.0675884485244751e-1\t5.8789253234863281e-3\t6.4834496590358351e-3\t3.8985999999999999e-3\n\t[33\]\t8.7170630693435669e-1\t8.7856203317642212e-1\t6.8557262420654297e-3\t7.8033490899654511e-3\t3.8985999999999999e-3\n\t[34\]\t8.3906102180480957e-1\t8.4691369533538818e-1\t7.8526735305786133e-3\t9.2721059699818163e-3\t3.8985999999999999e-3\n\t...and 31037 more errors.\n\tMax AbsError of 1.3054461021373052e+24 at index of 20238.\n\t[20238\]\t1.3054461021373052e+24\t-4.7574958205223083e-1\t1.3054461021373052e+24\t2.7439774019475333e+24\t3.8985999999999999e-3\n\tMax RelError of 2.7439774019475333e+24 at index of 20238.\n\t[20238\]\t1.3054461021373052e+24\t-4.7574958205223083e-1\t1.3054461021373052e+24\t2.7439774019475333e+24\t3.8985999999999999e-3\n]
expected: FAIL
+ [X SNR (-354.903972203962 dB) is not greater than or equal to 65.737. Got -354.903972203962.]
+ expected: FAIL
+
+ [X Stitched sine-wave buffers at sample rate 43800 does not equal [0,0.06264832615852356,0.12505052983760834,0.18696144223213196,0.24813786149024963,0.308339387178421,0.36732959747314453,0.4248766601085663,0.480754554271698,0.5347436666488647,0.5866320133209229,0.6362156271934509,0.6832997798919678,0.7276994585990906,0.7692402601242065,0.8077589869499207...\] with an element-wise tolerance of {"absoluteThreshold":0.0038986,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[30\]\t9.4836157560348511e-1\t9.5236867666244507e-1\t4.0071010589599609e-3\t4.2075103446311962e-3\t3.8985999999999999e-3\n\t[31\]\t9.2646563053131104e-1\t9.3139332532882690e-1\t4.9276947975158691e-3\t5.2906700783754857e-3\t3.8985999999999999e-3\n\t[32\]\t9.0087991952896118e-1\t9.0675884485244751e-1\t5.8789253234863281e-3\t6.4834496590358351e-3\t3.8985999999999999e-3\n\t[33\]\t8.7170630693435669e-1\t8.7856203317642212e-1\t6.8557262420654297e-3\t7.8033490899654511e-3\t3.8985999999999999e-3\n\t[34\]\t8.3906102180480957e-1\t8.4691369533538818e-1\t7.8526735305786133e-3\t9.2721059699818163e-3\t3.8985999999999999e-3\n\t...and 31037 more errors.\n\tMax AbsError of 6.0007368809968042e+19 at index of 20238.\n\t[20238\]\t-6.0007368809968042e+19\t-4.7574958205223083e-1\t6.0007368809968042e+19\t1.2613225754422218e+20\t3.8985999999999999e-3\n\tMax RelError of 1.2613225754422218e+20 at index of 20238.\n\t[20238\]\t-6.0007368809968042e+19\t-4.7574958205223083e-1\t6.0007368809968042e+19\t1.2613225754422218e+20\t3.8985999999999999e-3\n]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-mediastreamaudiosourcenode-interface/mediastreamaudiosourcenode-ctor.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-mediastreamaudiosourcenode-interface/mediastreamaudiosourcenode-ctor.html.ini
new file mode 100644
index 00000000000..581273c3391
--- /dev/null
+++ b/tests/wpt/metadata/webaudio/the-audio-api/the-mediastreamaudiosourcenode-interface/mediastreamaudiosourcenode-ctor.html.ini
@@ -0,0 +1,4 @@
+[mediastreamaudiosourcenode-ctor.html]
+ [MediaStreamAudioSourceNode]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-mediastreamaudiosourcenode-interface/mediastreamaudiosourcenode-routing.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-mediastreamaudiosourcenode-interface/mediastreamaudiosourcenode-routing.html.ini
new file mode 100644
index 00000000000..f1bdca6094a
--- /dev/null
+++ b/tests/wpt/metadata/webaudio/the-audio-api/the-mediastreamaudiosourcenode-interface/mediastreamaudiosourcenode-routing.html.ini
@@ -0,0 +1,5 @@
+[mediastreamaudiosourcenode-routing.html]
+ expected: ERROR
+ [MediaStreamAudioSourceNode captures the right track.]
+ expected: NOTRUN
+
diff --git a/tests/wpt/metadata/xhr/responsexml-document-properties.htm.ini b/tests/wpt/metadata/xhr/responsexml-document-properties.htm.ini
index 841155cd200..38c257cee08 100644
--- a/tests/wpt/metadata/xhr/responsexml-document-properties.htm.ini
+++ b/tests/wpt/metadata/xhr/responsexml-document-properties.htm.ini
@@ -21,3 +21,6 @@
[lastModified set to related HTTP header if provided]
expected: FAIL
+ [XMLHttpRequest: responseXML document properties]
+ expected: FAIL
+
diff --git a/tests/wpt/mozilla/meta/css/transition_calc_implicit.html.ini b/tests/wpt/mozilla/meta/css/transition_calc_implicit.html.ini
deleted file mode 100644
index dbea4f293ad..00000000000
--- a/tests/wpt/mozilla/meta/css/transition_calc_implicit.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[transition_calc_implicit.html]
- expected: TIMEOUT
diff --git a/tests/wpt/web-platform-tests/clipboard-apis/async-write-image-read-image-manual.https.html b/tests/wpt/web-platform-tests/clipboard-apis/async-write-image-read-image-manual.https.html
index 351e74bd745..ad1dc4f83b0 100644
--- a/tests/wpt/web-platform-tests/clipboard-apis/async-write-image-read-image-manual.https.html
+++ b/tests/wpt/web-platform-tests/clipboard-apis/async-write-image-read-image-manual.https.html
@@ -61,6 +61,14 @@ promise_test(async t => {
assert_equals(comparableOutput, comparableInput);
}, 'Verify write and read clipboard [image/png Blob]');
+
+promise_test(async t => {
+ const invalidPngBlob = new Blob(['this text is not a valid png image'],
+ {type: "image/png"});
+ const clipboardItemInput = new ClipboardItem({'image/png' : invalidPngBlob});
+ await promise_rejects(t, "DataError",
+ navigator.clipboard.write([clipboardItemInput]));
+}, 'Verify write error on malformed data [image/png ClipboardItem]');
</script>
<p>
Note: This is a manual test because it writes/reads to the shared system
diff --git a/tests/wpt/web-platform-tests/css/css-align/parsing/align-content-invalid.html b/tests/wpt/web-platform-tests/css/css-align/parsing/align-content-invalid.html
new file mode 100644
index 00000000000..ae244389bf1
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-align/parsing/align-content-invalid.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Box Alignment Level 3: parsing align-content with invalid values</title>
+<link rel="help" href="https://drafts.csswg.org/css-align-3/#propdef-align-content">
+<meta name="assert" content="align-content supports only the grammar 'normal | <baseline-position> | <content-distribution> | <overflow-position>? <content-position>'.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/parsing-testcommon.js"></script>
+</head>
+<body>
+<script>
+test_invalid_value("align-content", "auto");
+test_invalid_value("align-content", "baseline last");
+test_invalid_value("align-content", "center baseline");
+test_invalid_value("align-content", "first");
+test_invalid_value("align-content", "flex-start flex-end");
+test_invalid_value("align-content", "last");
+test_invalid_value("align-content", "left");
+test_invalid_value("align-content", "legacy center");
+test_invalid_value("align-content", "legacy left");
+test_invalid_value("align-content", "legacy");
+test_invalid_value("align-content", "normal baseline");
+test_invalid_value("align-content", "right legacy");
+test_invalid_value("align-content", "safe self-end");
+test_invalid_value("align-content", "safe");
+test_invalid_value("align-content", "self-end unsafe");
+test_invalid_value("align-content", "self-start");
+test_invalid_value("align-content", "start safe");
+test_invalid_value("align-content", "unsafe right");
+test_invalid_value("align-content", "unsafe");
+</script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-align/parsing/align-content-valid.html b/tests/wpt/web-platform-tests/css/css-align/parsing/align-content-valid.html
new file mode 100644
index 00000000000..46c47245168
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-align/parsing/align-content-valid.html
@@ -0,0 +1,39 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Box Alignment Level 3: parsing align-content with valid values</title>
+<link rel="help" href="https://drafts.csswg.org/css-align-3/#propdef-align-content">
+<meta name="assert" content="align-content supports the full grammar 'normal | <baseline-position> | <content-distribution> | <overflow-position>? <content-position>'.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/parsing-testcommon.js"></script>
+</head>
+<body>
+<script>
+test_valid_value("align-content", "normal");
+
+// <baseline-position> = [ first | last ]? baseline
+test_valid_value("align-content", "baseline");
+test_valid_value("align-content", "first baseline", "baseline");
+test_valid_value("align-content", "last baseline");
+
+// <content-distribution> = space-between | space-around | space-evenly | stretch
+test_valid_value("align-content", "space-between");
+test_valid_value("align-content", "space-around");
+test_valid_value("align-content", "space-evenly");
+test_valid_value("align-content", "stretch");
+
+// <overflow-position>? <content-position>
+// <overflow-position> = unsafe | safe
+// <content-position> = center | start | end | flex-start | flex-end
+test_valid_value("align-content", "center");
+test_valid_value("align-content", "start");
+test_valid_value("align-content", "end");
+test_valid_value("align-content", "flex-start");
+test_valid_value("align-content", "flex-end");
+test_valid_value("align-content", "unsafe end");
+test_valid_value("align-content", "safe flex-start");
+</script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-align/parsing/align-items-invalid.html b/tests/wpt/web-platform-tests/css/css-align/parsing/align-items-invalid.html
new file mode 100644
index 00000000000..8e329d50e5c
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-align/parsing/align-items-invalid.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Box Alignment Level 3: parsing align-items with invalid values</title>
+<link rel="help" href="https://drafts.csswg.org/css-align-3/#propdef-align-items">
+<meta name="assert" content="align-items supports only the grammar 'normal | stretch | <baseline-position> | [ <overflow-position>? <self-position> ]'.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/parsing-testcommon.js"></script>
+</head>
+<body>
+<script>
+test_invalid_value("align-items", "auto");
+test_invalid_value("align-items", "baseline last");
+test_invalid_value("align-items", "center baseline");
+test_invalid_value("align-items", "first");
+test_invalid_value("align-items", "flex-start flex-end");
+test_invalid_value("align-items", "last");
+test_invalid_value("align-items", "left");
+test_invalid_value("align-items", "legacy center");
+test_invalid_value("align-items", "legacy left");
+test_invalid_value("align-items", "legacy");
+test_invalid_value("align-items", "normal baseline");
+test_invalid_value("align-items", "right legacy");
+test_invalid_value("align-items", "safe");
+test_invalid_value("align-items", "self-end unsafe");
+test_invalid_value("align-items", "space-around");
+test_invalid_value("align-items", "space-between");
+test_invalid_value("align-items", "space-evenly");
+test_invalid_value("align-items", "start safe");
+test_invalid_value("align-items", "unsafe right");
+test_invalid_value("align-items", "unsafe");
+</script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-align/parsing/align-items-valid.html b/tests/wpt/web-platform-tests/css/css-align/parsing/align-items-valid.html
new file mode 100644
index 00000000000..e88845b962a
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-align/parsing/align-items-valid.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Box Alignment Level 3: parsing align-items with valid values</title>
+<link rel="help" href="https://drafts.csswg.org/css-align-3/#propdef-align-items">
+<meta name="assert" content="align-items supports the full grammar 'normal | stretch | <baseline-position> | [ <overflow-position>? <self-position> ]'.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/parsing-testcommon.js"></script>
+</head>
+<body>
+<script>
+test_valid_value("align-items", "normal");
+test_valid_value("align-items", "stretch");
+
+// <baseline-position> = [ first | last ]? baseline
+test_valid_value("align-items", "baseline");
+test_valid_value("align-items", "first baseline", "baseline");
+test_valid_value("align-items", "last baseline");
+
+// <overflow-position>? <self-position>
+// <overflow-position> = unsafe | safe
+// <self-position> = center | start | end | self-start | self-end | flex-start | flex-end
+test_valid_value("align-items", "center");
+test_valid_value("align-items", "start");
+test_valid_value("align-items", "end");
+test_valid_value("align-items", "self-start");
+test_valid_value("align-items", "self-end");
+test_valid_value("align-items", "flex-start");
+test_valid_value("align-items", "flex-end");
+test_valid_value("align-items", "unsafe center");
+test_valid_value("align-items", "safe self-end");
+</script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-align/parsing/align-self-invalid.html b/tests/wpt/web-platform-tests/css/css-align/parsing/align-self-invalid.html
new file mode 100644
index 00000000000..27b02500265
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-align/parsing/align-self-invalid.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Box Alignment Level 3: parsing align-self with invalid values</title>
+<link rel="help" href="https://drafts.csswg.org/css-align-3/#propdef-align-self">
+<meta name="assert" content="align-self supports only the grammar 'auto | normal | stretch | <baseline-position> | <overflow-position>? <self-position>'.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/parsing-testcommon.js"></script>
+</head>
+<body>
+<script>
+test_invalid_value("align-self", "baseline last");
+test_invalid_value("align-self", "center baseline");
+test_invalid_value("align-self", "first");
+test_invalid_value("align-self", "flex-start flex-end");
+test_invalid_value("align-self", "last");
+test_invalid_value("align-self", "left");
+test_invalid_value("align-self", "legacy center");
+test_invalid_value("align-self", "legacy left");
+test_invalid_value("align-self", "legacy");
+test_invalid_value("align-self", "normal baseline");
+test_invalid_value("align-self", "right legacy");
+test_invalid_value("align-self", "safe");
+test_invalid_value("align-self", "self-end unsafe");
+test_invalid_value("align-self", "space-around");
+test_invalid_value("align-self", "space-between");
+test_invalid_value("align-self", "space-evenly");
+test_invalid_value("align-self", "start safe");
+test_invalid_value("align-self", "unsafe right");
+test_invalid_value("align-self", "unsafe");
+</script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-align/parsing/align-self-valid.html b/tests/wpt/web-platform-tests/css/css-align/parsing/align-self-valid.html
new file mode 100644
index 00000000000..25ea093b209
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-align/parsing/align-self-valid.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Box Alignment Level 3: parsing align-self with valid values</title>
+<link rel="help" href="https://drafts.csswg.org/css-align-3/#propdef-align-self">
+<meta name="assert" content="align-self supports the full grammar 'auto | normal | stretch | <baseline-position> | <overflow-position>? <self-position>'.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/parsing-testcommon.js"></script>
+</head>
+<body>
+<script>
+test_valid_value("align-self", "auto");
+test_valid_value("align-self", "normal");
+test_valid_value("align-self", "stretch");
+
+// <baseline-position> = [ first | last ]? baseline
+test_valid_value("align-self", "baseline");
+test_valid_value("align-self", "first baseline", "baseline");
+test_valid_value("align-self", "last baseline");
+
+// <overflow-position>? <self-position>
+// <overflow-position> = unsafe | safe
+// <self-position> = center | start | end | self-start | self-end | flex-start | flex-end
+test_valid_value("align-self", "center");
+test_valid_value("align-self", "start");
+test_valid_value("align-self", "end");
+test_valid_value("align-self", "self-start");
+test_valid_value("align-self", "self-end");
+test_valid_value("align-self", "flex-start");
+test_valid_value("align-self", "flex-end");
+test_valid_value("align-self", "unsafe center");
+test_valid_value("align-self", "safe self-end");
+</script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-align/parsing/justify-content-invalid.html b/tests/wpt/web-platform-tests/css/css-align/parsing/justify-content-invalid.html
new file mode 100644
index 00000000000..971f94bcf8b
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-align/parsing/justify-content-invalid.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Box Alignment Level 3: parsing justify-content with invalid values</title>
+<link rel="help" href="https://drafts.csswg.org/css-justify-3/#propdef-justify-content">
+<meta name="assert" content="justify-content supports only the grammar 'normal | <content-distribution> | <overflow-position>? [ <content-position> | left | right ]'.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/parsing-testcommon.js"></script>
+</head>
+<body>
+<script>
+test_invalid_value("justify-content", "auto");
+test_invalid_value("justify-content", "baseline last");
+test_invalid_value("justify-content", "baseline");
+test_invalid_value("justify-content", "center baseline");
+test_invalid_value("justify-content", "first baseline");
+test_invalid_value("justify-content", "first");
+test_invalid_value("justify-content", "flex-start flex-end");
+test_invalid_value("justify-content", "last baseline");
+test_invalid_value("justify-content", "last");
+test_invalid_value("justify-content", "legacy center");
+test_invalid_value("justify-content", "legacy left");
+test_invalid_value("justify-content", "legacy");
+test_invalid_value("justify-content", "normal baseline");
+test_invalid_value("justify-content", "right legacy");
+test_invalid_value("justify-content", "safe self-end");
+test_invalid_value("justify-content", "safe");
+test_invalid_value("justify-content", "self-end unsafe");
+test_invalid_value("justify-content", "self-start");
+test_invalid_value("justify-content", "start safe");
+test_invalid_value("justify-content", "unsafe");
+</script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-align/parsing/justify-content-valid.html b/tests/wpt/web-platform-tests/css/css-align/parsing/justify-content-valid.html
new file mode 100644
index 00000000000..d476a268add
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-align/parsing/justify-content-valid.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Box Alignment Level 3: parsing justify-content with valid values</title>
+<link rel="help" href="https://drafts.csswg.org/css-justify-3/#propdef-justify-content">
+<meta name="assert" content="justify-content supports the full grammar 'normal | <content-distribution> | <overflow-position>? [ <content-position> | left | right ]'.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/parsing-testcommon.js"></script>
+</head>
+<body>
+<script>
+test_valid_value("justify-content", "normal");
+
+// <content-distribution> = space-between | space-around | space-evenly | stretch
+test_valid_value("justify-content", "space-between");
+test_valid_value("justify-content", "space-around");
+test_valid_value("justify-content", "space-evenly");
+test_valid_value("justify-content", "stretch");
+
+// <overflow-position>? [ <content-position> | left | right ]
+// <overflow-position> = unsafe | safe
+// <content-position> = center | start | end | flex-start | flex-end
+test_valid_value("justify-content", "center");
+test_valid_value("justify-content", "start");
+test_valid_value("justify-content", "end");
+test_valid_value("justify-content", "flex-start");
+test_valid_value("justify-content", "flex-end");
+test_valid_value("justify-content", "unsafe end");
+test_valid_value("justify-content", "safe flex-start");
+test_valid_value("justify-content", "left");
+test_valid_value("justify-content", "unsafe right");
+</script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-align/parsing/justify-items-invalid.html b/tests/wpt/web-platform-tests/css/css-align/parsing/justify-items-invalid.html
new file mode 100644
index 00000000000..18da0593760
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-align/parsing/justify-items-invalid.html
@@ -0,0 +1,30 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Box Alignment Level 3: parsing justify-items with invalid values</title>
+<link rel="help" href="https://drafts.csswg.org/css-justify-3/#propdef-justify-items">
+<meta name="assert" content="justify-items supports only the grammar 'normal | stretch | <baseline-position> | <overflow-position>? [ <self-position> | left | right ] | legacy | legacy && [ left | right | center ]'.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/parsing-testcommon.js"></script>
+</head>
+<body>
+<script>
+test_invalid_value("justify-items", "auto");
+test_invalid_value("justify-items", "baseline last");
+test_invalid_value("justify-items", "center baseline");
+test_invalid_value("justify-items", "first");
+test_invalid_value("justify-items", "flex-start flex-end");
+test_invalid_value("justify-items", "last");
+test_invalid_value("justify-items", "normal baseline");
+test_invalid_value("justify-items", "safe");
+test_invalid_value("justify-items", "self-end unsafe");
+test_invalid_value("justify-items", "space-around");
+test_invalid_value("justify-items", "space-between");
+test_invalid_value("justify-items", "space-evenly");
+test_invalid_value("justify-items", "start safe");
+test_invalid_value("justify-items", "unsafe");
+</script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-align/parsing/justify-items-valid.html b/tests/wpt/web-platform-tests/css/css-align/parsing/justify-items-valid.html
new file mode 100644
index 00000000000..36584f86feb
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-align/parsing/justify-items-valid.html
@@ -0,0 +1,44 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Box Alignment Level 3: parsing justify-items with valid values</title>
+<link rel="help" href="https://drafts.csswg.org/css-justify-3/#propdef-justify-items">
+<meta name="assert" content="justify-items supports the full grammar 'normal | stretch | <baseline-position> | <overflow-position>? [ <self-position> | left | right ] | legacy | legacy && [ left | right | center ]'.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/parsing-testcommon.js"></script>
+</head>
+<body>
+<script>
+test_valid_value("justify-items", "normal");
+test_valid_value("justify-items", "stretch");
+
+// <baseline-position> = [ first | last ]? baseline
+test_valid_value("justify-items", "baseline");
+test_valid_value("justify-items", "first baseline", "baseline");
+test_valid_value("justify-items", "last baseline");
+
+// <overflow-position>? [ <self-position> | left | right ]
+// <overflow-position> = unsafe | safe
+// <self-position> = center | start | end | self-start | self-end | flex-start | flex-end
+test_valid_value("justify-items", "center");
+test_valid_value("justify-items", "start");
+test_valid_value("justify-items", "end");
+test_valid_value("justify-items", "self-start");
+test_valid_value("justify-items", "self-end");
+test_valid_value("justify-items", "flex-start");
+test_valid_value("justify-items", "flex-end");
+test_valid_value("justify-items", "unsafe center");
+test_valid_value("justify-items", "safe self-end");
+test_valid_value("justify-items", "right");
+test_valid_value("justify-items", "safe left");
+
+// legacy | legacy && [ left | right | center ]
+test_valid_value("justify-items", "legacy");
+test_valid_value("justify-items", "left legacy", "legacy left");
+test_valid_value("justify-items", "right legacy", "legacy right");
+test_valid_value("justify-items", "center legacy", "legacy center");
+</script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-align/parsing/justify-self-invalid.html b/tests/wpt/web-platform-tests/css/css-align/parsing/justify-self-invalid.html
new file mode 100644
index 00000000000..846cdd8a00f
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-align/parsing/justify-self-invalid.html
@@ -0,0 +1,33 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Box Alignment Level 3: parsing justify-self with invalid values</title>
+<link rel="help" href="https://drafts.csswg.org/css-justify-3/#propdef-justify-self">
+<meta name="assert" content="justify-self supports only the grammar 'auto | normal | stretch | <baseline-position> | <overflow-position>? [ <self-position> | left | right ]'.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/parsing-testcommon.js"></script>
+</head>
+<body>
+<script>
+test_invalid_value("justify-self", "baseline last");
+test_invalid_value("justify-self", "center baseline");
+test_invalid_value("justify-self", "first");
+test_invalid_value("justify-self", "flex-start flex-end");
+test_invalid_value("justify-self", "last");
+test_invalid_value("justify-self", "legacy center");
+test_invalid_value("justify-self", "legacy left");
+test_invalid_value("justify-self", "legacy");
+test_invalid_value("justify-self", "normal baseline");
+test_invalid_value("justify-self", "right legacy");
+test_invalid_value("justify-self", "safe");
+test_invalid_value("justify-self", "self-end unsafe");
+test_invalid_value("justify-self", "space-around");
+test_invalid_value("justify-self", "space-between");
+test_invalid_value("justify-self", "space-evenly");
+test_invalid_value("justify-self", "start safe");
+test_invalid_value("justify-self", "unsafe");
+</script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-align/parsing/justify-self-valid.html b/tests/wpt/web-platform-tests/css/css-align/parsing/justify-self-valid.html
new file mode 100644
index 00000000000..1ee23af200f
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-align/parsing/justify-self-valid.html
@@ -0,0 +1,39 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Box Alignment Level 3: parsing justify-self with valid values</title>
+<link rel="help" href="https://drafts.csswg.org/css-justify-3/#propdef-justify-self">
+<meta name="assert" content="justify-self supports the full grammar 'auto | normal | stretch | <baseline-position> | <overflow-position>? [ <self-position> | left | right ]'.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/parsing-testcommon.js"></script>
+</head>
+<body>
+<script>
+test_valid_value("justify-self", "auto");
+test_valid_value("justify-self", "normal");
+test_valid_value("justify-self", "stretch");
+
+// <baseline-position> = [ first | last ]? baseline
+test_valid_value("justify-self", "baseline");
+test_valid_value("justify-self", "first baseline", "baseline");
+test_valid_value("justify-self", "last baseline");
+
+// <overflow-position>? [ <self-position> | left | right ]
+// <overflow-position> = unsafe | safe
+// <self-position> = center | start | end | self-start | self-end | flex-start | flex-end
+test_valid_value("justify-self", "center");
+test_valid_value("justify-self", "start");
+test_valid_value("justify-self", "end");
+test_valid_value("justify-self", "self-start");
+test_valid_value("justify-self", "self-end");
+test_valid_value("justify-self", "flex-start");
+test_valid_value("justify-self", "flex-end");
+test_valid_value("justify-self", "unsafe center");
+test_valid_value("justify-self", "safe self-end");
+test_valid_value("justify-self", "left");
+test_valid_value("justify-self", "unsafe right");
+</script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-fonts/inheritance.html b/tests/wpt/web-platform-tests/css/css-fonts/inheritance.html
index 8ff02fb7405..f0c46bec508 100644
--- a/tests/wpt/web-platform-tests/css/css-fonts/inheritance.html
+++ b/tests/wpt/web-platform-tests/css/css-fonts/inheritance.html
@@ -12,7 +12,6 @@
<script src="/css/support/inheritance-testcommon.js"></script>
<style>
#box {
- font: initial;
font-size: medium;
}
</style>
@@ -25,10 +24,9 @@
<script>
'use strict';
const box = document.getElementById('box');
-const initialFontFamily = getComputedStyle(box).fontFamily;
const mediumFontSize = getComputedStyle(box).fontSize;
-assert_inherited('font-family', initialFontFamily, '"Not Initial!"');
+assert_inherited('font-family', null, '"Not Initial!"'); // Initial value depends on user agent.
assert_inherited('font-feature-settings', 'normal', '"smcp", "swsh" 2');
assert_inherited('font-kerning', 'auto', 'none');
assert_inherited('font-size', mediumFontSize /* medium */, '123px');
diff --git a/tests/wpt/web-platform-tests/css/css-overscroll-behavior/overscroll-behavior-logical.html b/tests/wpt/web-platform-tests/css/css-overscroll-behavior/overscroll-behavior-logical.html
new file mode 100644
index 00000000000..a06132feaa0
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-overscroll-behavior/overscroll-behavior-logical.html
@@ -0,0 +1,49 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Test flow-relative versions of overscroll-behavior properties</title>
+<link rel="author" title="Majid Valipour">
+<link rel="help" href="https://drafts.csswg.org/css-overscroll-behavior-1/#overscroll-behavior-longhands-logical">
+<link rel="help" href="https://drafts.csswg.org/css-logical/#box">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<style>
+div {
+ overscroll-behavior-block: contain;
+ overscroll-behavior-inline: none;
+}
+#horizontal {
+ writing-mode: horizontal-tb;
+}
+#vertical {
+ writing-mode: vertical-rl;
+}
+#horizontalreversed {
+ writing-mode: horizontal-tb;
+ direction: rtl;
+}
+</style>
+<body>
+ <div id="horizontal"></div>
+ <div id="vertical"></div>
+ <div id="horizontalreversed"></div>
+</body>
+
+<script>
+test(function() {
+ var element = document.getElementById("horizontal");
+ assert_equals(getComputedStyle(element).overscrollBehaviorX, "none");
+ assert_equals(getComputedStyle(element).overscrollBehaviorY, "contain");
+}, "Logical overscroll-behavior maps correctly when element has horizontal-tb writing mode");
+
+test(function() {
+ var element = document.getElementById("vertical");
+ assert_equals(getComputedStyle(element).overscrollBehaviorX, "contain");
+ assert_equals(getComputedStyle(element).overscrollBehaviorY, "none");
+}, "Logical overscroll-behavior maps correctly when element has vertical-rl writing mode");
+
+test(function() {
+ var element = document.getElementById("horizontalreversed");
+ assert_equals(getComputedStyle(element).overscrollBehaviorX, "none");
+ assert_equals(getComputedStyle(element).overscrollBehaviorY, "contain");
+}, "Logical overscroll-behavior maps correctly when element has horizontal-tb writing mode and is not affected by rtl direction");
+</script> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/css/css-overscroll-behavior/parsing/overscroll-behavior-computed.html b/tests/wpt/web-platform-tests/css/css-overscroll-behavior/parsing/overscroll-behavior-computed.html
index af117f19f90..b587ec5cff2 100644
--- a/tests/wpt/web-platform-tests/css/css-overscroll-behavior/parsing/overscroll-behavior-computed.html
+++ b/tests/wpt/web-platform-tests/css/css-overscroll-behavior/parsing/overscroll-behavior-computed.html
@@ -6,6 +6,8 @@
<link rel="help" href="https://drafts.csswg.org/css-overscroll-behavior/#overscroll-behavior-properties">
<meta name="assert" content="overscroll-behavior-x computed value is as specified.">
<meta name="assert" content="overscroll-behavior-y computed value is as specified.">
+<meta name="assert" content="overscroll-behavior-inline computed value is as specified.">
+<meta name="assert" content="overscroll-behavior-block computed value is as specified.">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/css/support/computed-testcommon.js"></script>
@@ -14,7 +16,7 @@
<div id="target"></div>
<script>
'use strict';
-for (let property of ["overscroll-behavior-x", "overscroll-behavior-y"]) {
+for (let property of ["overscroll-behavior-x", "overscroll-behavior-y", "overscroll-behavior-inline", "overscroll-behavior-block"]) {
test_computed_value(property, "contain");
test_computed_value(property, "none");
test_computed_value(property, "auto");
diff --git a/tests/wpt/web-platform-tests/css/css-overscroll-behavior/parsing/overscroll-behavior-invalid.html b/tests/wpt/web-platform-tests/css/css-overscroll-behavior/parsing/overscroll-behavior-invalid.html
index a29722f4657..02ada4576cc 100644
--- a/tests/wpt/web-platform-tests/css/css-overscroll-behavior/parsing/overscroll-behavior-invalid.html
+++ b/tests/wpt/web-platform-tests/css/css-overscroll-behavior/parsing/overscroll-behavior-invalid.html
@@ -18,7 +18,7 @@ test_invalid_value("overscroll-behavior", "0");
test_invalid_value("overscroll-behavior", "contain contain contain");
-for (let property of ["overscroll-behavior-x", "overscroll-behavior-y"]) {
+for (let property of ["overscroll-behavior-x", "overscroll-behavior-y", "overscroll-behavior-inline", "overscroll-behavior-block"]) {
test_invalid_value(property, "normal");
test_invalid_value(property, "0");
test_invalid_value(property, "contain contain");
diff --git a/tests/wpt/web-platform-tests/css/css-overscroll-behavior/parsing/overscroll-behavior-valid.html b/tests/wpt/web-platform-tests/css/css-overscroll-behavior/parsing/overscroll-behavior-valid.html
index 9dbd4fbb8f9..45d90d485f3 100644
--- a/tests/wpt/web-platform-tests/css/css-overscroll-behavior/parsing/overscroll-behavior-valid.html
+++ b/tests/wpt/web-platform-tests/css/css-overscroll-behavior/parsing/overscroll-behavior-valid.html
@@ -26,7 +26,7 @@ test_valid_value("overscroll-behavior", "none none", "none");
test_valid_value("overscroll-behavior", "auto auto", "auto");
-for (let property of ["overscroll-behavior-x", "overscroll-behavior-y"]) {
+for (let property of ["overscroll-behavior-x", "overscroll-behavior-y", "overscroll-behavior-inline", "overscroll-behavior-block"]) {
test_valid_value(property, "contain");
test_valid_value(property, "none");
test_valid_value(property, "auto");
diff --git a/tests/wpt/web-platform-tests/css/css-position/static-position/inline-level-absolute-in-block-level-context-013.html b/tests/wpt/web-platform-tests/css/css-position/static-position/inline-level-absolute-in-block-level-context-013.html
new file mode 100644
index 00000000000..59541dd679e
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-position/static-position/inline-level-absolute-in-block-level-context-013.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<link rel="help" href="https://crbug.com/982403" />
+<link rel="match" href="../../reference/ref-filled-green-100px-square.xht">
+<meta name="assert" content="Tests the static position of an inline-level absolute-positioned element." />
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div style="overflow: hidden;">
+ <div style="float: left; width: 100px; height: 50px; background: green;"></div>
+ <div style="clear: both; width: 100px; height: 50px; background: red;">
+ <div style="position: absolute; display: inline; width: 100px; height: 50px; background: green;"></div>
+ </div>
+</div>
diff --git a/tests/wpt/web-platform-tests/css/css-position/static-position/inline-level-absolute-in-block-level-context-014.html b/tests/wpt/web-platform-tests/css/css-position/static-position/inline-level-absolute-in-block-level-context-014.html
new file mode 100644
index 00000000000..69416c1cd79
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-position/static-position/inline-level-absolute-in-block-level-context-014.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<link rel="help" href="https://crbug.com/982403" />
+<link rel="match" href="../../reference/ref-filled-green-100px-square.xht">
+<meta name="assert" content="Tests the static position of an inline-level absolute-positioned element." />
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div style="overflow: hidden;">
+ <div style="float: left; width: 100px; height: 50px; background: green;"></div>
+ <div style="clear: both; width: 100px; height: 50px; background: red;">
+ <div></div>
+ <div style="position: absolute; display: inline; width: 100px; height: 50px; background: green;"></div>
+ </div>
+</div>
diff --git a/tests/wpt/web-platform-tests/css/css-scroll-snap/snap-at-user-scroll-end-manual.html b/tests/wpt/web-platform-tests/css/css-scroll-snap/snap-at-user-scroll-end-manual.html
index 0ab50d6be3e..5ef2009df18 100644
--- a/tests/wpt/web-platform-tests/css/css-scroll-snap/snap-at-user-scroll-end-manual.html
+++ b/tests/wpt/web-platform-tests/css/css-scroll-snap/snap-at-user-scroll-end-manual.html
@@ -6,7 +6,6 @@
<style>
body {
margin: 0px;
- overflow: scroll;
scroll-snap-type: both mandatory;
}
#content {
@@ -22,6 +21,7 @@ body {
width: 400px;
height: 400px;
background-color: lightblue;
+ overflow: hidden;
scroll-snap-align: start;
}
#i1 {
@@ -74,10 +74,13 @@ button.onclick = function() {
if (!scrolled_x || !scrolled_y)
return;
- assert_equals(window.scrollX, target.offsetLeft,
- "window.scrollX should be at snapped position.");
- assert_equals(window.scrollY, target.offsetTop,
- "window.scrollY should be at snapped position.");
+ snap_test.step(() => {
+ assert_equals(window.scrollX, target.offsetLeft,
+ "window.scrollX should be at snapped position.");
+ assert_equals(window.scrollY, target.offsetTop,
+ "window.scrollY should be at snapped position.");
+ });
+
// To make the test result visible.
var content = document.getElementById("content");
body.removeChild(content);
diff --git a/tests/wpt/web-platform-tests/css/css-tables/absolute-tables-006.html b/tests/wpt/web-platform-tests/css/css-tables/absolute-tables-006.html
new file mode 100644
index 00000000000..91439a69c9b
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-tables/absolute-tables-006.html
@@ -0,0 +1,36 @@
+<!doctype html>
+<link rel="author" title="David Grogan" href="mailto:dgrogan@chromium.org">
+<link rel="help" href="https://www.w3.org/TR/css-position-3/#def-cb">
+<link rel="match" href="../reference/ref-filled-green-100px-square-only.html">
+<link rel="bookmark" href="https://crbug.com/977507" />
+<meta name="flags" content="" />
+<meta name="assert" content="Abspos table works when it is dynamically added" />
+
+<style>
+table {
+ border-spacing: 0px;
+}
+td {
+ padding: 0px;
+}
+.outerTable {
+ height: 100px;
+ width: 100px;
+ position: relative;
+}
+.innerTable {
+ position: absolute;
+ top: 0px;
+ width: 100px;
+ height: 100%;
+ color: green;
+ background: green;
+}
+</style>
+<p>Test passes if there is a filled green square.</p>
+<table class=outerTable>
+ <td id=outerCell></td>
+</table>
+<script>
+outerCell.innerHTML = "<table class=innerTable><td>some text</td></table>";
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-text-decor/reference/text-underline-offset-scroll-001-notref.html b/tests/wpt/web-platform-tests/css/css-text-decor/reference/text-underline-offset-scroll-001-notref.html
new file mode 100644
index 00000000000..fbfdadff0df
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text-decor/reference/text-underline-offset-scroll-001-notref.html
@@ -0,0 +1,23 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <meta charset="utf-8">
+ <title>Non-reference case for text-underline-offset</title>
+ <style>
+ #text{
+ border: black dashed;
+ overflow-y: auto;
+ height: 5em;
+ width: 20em;
+ font: 20px/1 Ahem;
+ color: transparent;
+ text-decoration: red underline;
+ text-decoration-skip-ink: none;
+ }
+ </style>
+</head>
+<body>
+ <div>Test fails if there is a red line or scrollbar in the dashed area</div>
+ <div id="text">XXXXXXX</div>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-text-decor/reference/text-underline-offset-scroll-001-ref.html b/tests/wpt/web-platform-tests/css/css-text-decor/reference/text-underline-offset-scroll-001-ref.html
new file mode 100644
index 00000000000..5b321033d35
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text-decor/reference/text-underline-offset-scroll-001-ref.html
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <meta charset="utf-8">
+ <title>Reference case for text-underline-offset</title>
+ <style>
+ #text{
+ border: black dashed;
+ height: 5em;
+ width: 20em;
+ font: 20px/1 Ahem;
+ color: transparent;
+ }
+ </style>
+</head>
+<body>
+ <div>Test fails if there is a red line or scrollbar in the dashed area</div>
+ <div id="text">XXXXXXX</div>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-text-decor/reference/text-underline-offset-vertical-001-ref.html b/tests/wpt/web-platform-tests/css/css-text-decor/reference/text-underline-offset-vertical-001-ref.html
new file mode 100644
index 00000000000..7ab3b1dcd99
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text-decor/reference/text-underline-offset-vertical-001-ref.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <meta charset="utf-8">
+ <title>Reference case for text-underline-offset</title>
+ <style>
+ span{
+ font: 20px/1 Ahem;
+ color: transparent;
+ writing-mode: vertical-lr;
+ text-decoration: green underline;
+ text-decoration-skip-ink: none;
+ text-underline-offset: 0;
+ }
+ </style>
+</head>
+<body>
+ <div>Test passes if the underline is vertical and close to the word left</div>
+ <div>left<span>XXXXX</span></div>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-text-decor/reference/text-underline-offset-vertical-002-ref.html b/tests/wpt/web-platform-tests/css/css-text-decor/reference/text-underline-offset-vertical-002-ref.html
new file mode 100644
index 00000000000..30a85700d8a
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text-decor/reference/text-underline-offset-vertical-002-ref.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <meta charset="utf-8">
+ <title>Reference case for text-underline-offset</title>
+ <style>
+ div{
+ font: 20px/1 Ahem;
+ margin-left: 5em;
+ }
+ #text{
+ color: transparent;
+ writing-mode: sideways-lr;
+ text-decoration: green underline;
+ text-decoration-skip-ink: none;
+ text-underline-offset: 0;
+ margin-left: 5em;
+ }
+ </style>
+</head>
+<body>
+ <p>Test passes if the underline is further to the right of the text</p>
+ <div>
+ <p>XXXX</p>
+ <span id="text">XXXXX</span>
+ </div>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-text-decor/text-underline-offset-scroll-001.html b/tests/wpt/web-platform-tests/css/css-text-decor/text-underline-offset-scroll-001.html
new file mode 100644
index 00000000000..0a046fb33e0
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text-decor/text-underline-offset-scroll-001.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <meta charset="utf-8">
+ <title>Test case for text-underline-offset</title>
+ <meta name="assert" content="text-underline-offset should influence the placement of the underline">
+ <link rel="author" title="Charlie Marlow" href="mailto:cmarlow@mozilla.com">
+ <link rel="author" title="Mozilla" href="https://www.mozilla.org">
+ <link rel="help" href="https://drafts.csswg.org/css-text-decor-4/#underline-offset">
+ <link rel="match" href="reference/text-underline-offset-scroll-001-ref.html">
+ <link rel="mismatch" href="reference/text-underline-offset-scroll-001-notref.html">
+ <style>
+ /*
+ * Testing to make sure that positioning the underline
+ * outside of the scrollframe does not create scrollable
+ * overflow and is not visible outside of the div
+ */
+ #scroll{
+ border: black dashed;
+ overflow-y: auto;
+ height: 5em;
+ width: 20em;
+ font: 20px/1 Ahem;
+ }
+
+ #text{
+ color: transparent;
+ text-decoration: red underline;
+ text-decoration-skip-ink: none;
+ text-underline-offset: 5em;
+ }
+ </style>
+</head>
+<body>
+ <div>Test fails if there is a red line or scrollbar in the dashed area</div>
+ <div id="scroll"><span id="text">XXXXXXX</span></div>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-text-decor/text-underline-offset-vertical-001.html b/tests/wpt/web-platform-tests/css/css-text-decor/text-underline-offset-vertical-001.html
new file mode 100644
index 00000000000..8a7a5ac9d6a
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text-decor/text-underline-offset-vertical-001.html
@@ -0,0 +1,27 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <meta charset="utf-8">
+ <title>Test case for text-underline-offset</title>
+ <meta name="assert" content="text-underline-offset should influence the placement of the underline">
+ <link rel="author" title="Charlie Marlow" href="mailto:cmarlow@mozilla.com">
+ <link rel="author" title="Mozilla" href="https://www.mozilla.org">
+ <link rel="help" href="https://drafts.csswg.org/css-text-decor-4/#underline-offset">
+ <link rel="match" href="reference/text-underline-offset-vertical-001-ref.html">
+ <style>
+ span{
+ margin-left: 5em;
+ font: 20px/1 Ahem;
+ color: transparent;
+ writing-mode: vertical-lr;
+ text-decoration: green underline;
+ text-decoration-skip-ink: none;
+ text-underline-offset: 5em;
+ }
+ </style>
+</head>
+<body>
+ <div>Test passes if the underline is vertical and close to the word left</div>
+ <div>left<span>XXXXX</span></div>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-text-decor/text-underline-offset-vertical-002.html b/tests/wpt/web-platform-tests/css/css-text-decor/text-underline-offset-vertical-002.html
new file mode 100644
index 00000000000..74491c823dd
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text-decor/text-underline-offset-vertical-002.html
@@ -0,0 +1,32 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <meta charset="utf-8">
+ <title>Test case for text-underline-offset</title>
+ <meta name="assert" content="text-underline-offset should influence the placement of the underline">
+ <link rel="author" title="Charlie Marlow" href="mailto:cmarlow@mozilla.com">
+ <link rel="author" title="Mozilla" href="https://www.mozilla.org">
+ <link rel="help" href="https://drafts.csswg.org/css-text-decor-4/#underline-offset">
+ <link rel="match" href="reference/text-underline-offset-vertical-002-ref.html">
+ <style>
+ div{
+ font: 20px/1 Ahem;
+ margin-left: 5em;
+ }
+ #text{
+ color: transparent;
+ writing-mode: sideways-lr;
+ text-decoration: green underline;
+ text-decoration-skip-ink: none;
+ text-underline-offset: 5em;
+ }
+ </style>
+</head>
+<body>
+ <p>Test passes if the underline is further to the right of the text</p>
+ <div>
+ <p>XXXX</p>
+ <span id="text">XXXXX</span>
+ </div>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/support/inheritance-testcommon.js b/tests/wpt/web-platform-tests/css/support/inheritance-testcommon.js
index 8d1645f9b11..38ac94eb12e 100644
--- a/tests/wpt/web-platform-tests/css/support/inheritance-testcommon.js
+++ b/tests/wpt/web-platform-tests/css/support/inheritance-testcommon.js
@@ -33,7 +33,8 @@ function assert_initial(property, initial) {
* value.
*/
function assert_inherited(property, initial, other) {
- assert_initial(property, initial);
+ if (initial)
+ assert_initial(property, initial);
test(() => {
const container = document.getElementById('container');
diff --git a/tests/wpt/web-platform-tests/element-timing/image-TAO-wildcard.sub.html b/tests/wpt/web-platform-tests/element-timing/image-TAO-wildcard.sub.html
deleted file mode 100644
index 3af893a9890..00000000000
--- a/tests/wpt/web-platform-tests/element-timing/image-TAO-wildcard.sub.html
+++ /dev/null
@@ -1,54 +0,0 @@
-<!DOCTYPE HTML>
-<meta charset=utf-8>
-<title>Element Timing: observe elements from same-origin iframes</title>
-<body>
-<style>
-body {
- margin: 0;
-}
-</style>
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="resources/element-timing-helpers.js"></script>
-<script>
- async_test((t) => {
- if (!window.PerformanceElementTiming) {
- assert_unreached("PerformanceElementTiming is not implemented");
- }
- let beforeRender;
- let img;
- const img_src = 'http://{{domains[www]}}:{{ports[http][1]}}/element-timing/'
- + 'resources/TAOImage.py?tao=wildcard';
- const observer = new PerformanceObserver(
- t.step_func_done((entryList) => {
- assert_equals(entryList.getEntries().length, 1);
- const entry = entryList.getEntries()[0];
- checkElement(entry, img_src, 'my_image', 'my_id', beforeRender, img);
- // Assume viewport has size at least 20, so the element is fully visible.
- checkRect(entry, [0, 20, 0, 20]);
- checkNaturalSize(entry, 20, 20);
- })
- );
- observer.observe({entryTypes: ['element']});
- // We add the image during onload to be sure that the observer is registered
- // in time for it to observe the element timing.
- // TODO(npm): change observer to use buffered flag.
- window.onload = t.step_func(() => {
- img = document.createElement('img');
- img.src = img_src;
- img.setAttribute('elementtiming', 'my_image');
- img.setAttribute('id', 'my_id');
- img.onload = t.step_func(() => {
- // After a short delay, assume that the entry was not dispatched.
- t.step_timeout(() => {
- assert_unreached("Should have received an entry!");
- t.done();
- }, 100);
- });
- document.body.appendChild(img);
- beforeRender = performance.now();
- });
- }, 'Cross-origin element with wildcard TAO is observed.');
-</script>
-
-</body>
diff --git a/tests/wpt/web-platform-tests/element-timing/image-TAO.sub.html b/tests/wpt/web-platform-tests/element-timing/image-TAO.sub.html
new file mode 100644
index 00000000000..83a7a5ca0a2
--- /dev/null
+++ b/tests/wpt/web-platform-tests/element-timing/image-TAO.sub.html
@@ -0,0 +1,56 @@
+<!DOCTYPE HTML>
+<meta charset=utf-8>
+<title>Element Timing: observe cross origin images with various Timing-Allow-Origin headers</title>
+<body>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="resources/element-timing-helpers.js"></script>
+<script>
+ async_test(t => {
+ if (!window.PerformanceElementTiming) {
+ assert_unreached("PerformanceElementTiming is not implemented");
+ }
+ const beforeRender = performance.now();
+ const remote_img = 'http://{{domains[www]}}:{{ports[http][1]}}/element-timing/resources/TAOImage.py?'
+ + 'origin=' + window.location.origin +'&tao=';
+ const valid_tao = ['wildcard', 'origin', 'multi', 'multi_wildcard', 'match_origin', 'match_wildcard'];
+ function addImage(tao) {
+ const img = document.createElement('img');
+ img.src = remote_img + tao;
+ img.setAttribute('elementtiming', tao);
+ img.id = 'id_' + tao;
+ document.body.appendChild(img);
+ }
+ valid_tao.forEach(tao => {
+ addImage(tao);
+ });
+ const invalid_tao = ['null', 'space', 'uppercase'];
+ invalid_tao.forEach(tao => {
+ addImage(tao);
+ });
+ let img_count = 0;
+ const total_images = valid_tao.length + invalid_tao.length;
+ new PerformanceObserver(
+ t.step_func(entryList => {
+ entryList.getEntries().forEach(entry => {
+ img_count++;
+ const tao = entry.identifier;
+ const img = document.getElementById('id_' + tao);
+ if (valid_tao.includes(tao)) {
+ checkElement(entry, remote_img + tao, tao, 'id_' + tao, beforeRender, img);
+ } else if (invalid_tao.includes(tao)) {
+ assert_equals(entry.startTime, 0, 'Entry with tao=' + tao + ' must have a startTime of 0');
+ checkElement(entry, remote_img + tao, tao, 'id_' + tao, 0, img);
+ }
+ else {
+ assert_unreached('Should be in one of valid_tao OR invalid_tao');
+ }
+ checkNaturalSize(entry, 20, 20);
+ if (img_count == total_images)
+ t.done();
+ });
+ })
+ ).observe({type: 'element', buffered: true});
+ }, 'Cross-origin elements with valid TAO have correct startTime, with invalid TAO have startTime set to 0.');
+</script>
+</body>
diff --git a/tests/wpt/web-platform-tests/element-timing/resources/TAOImage.py b/tests/wpt/web-platform-tests/element-timing/resources/TAOImage.py
index 5d042c48941..1e0afb38278 100644
--- a/tests/wpt/web-platform-tests/element-timing/resources/TAOImage.py
+++ b/tests/wpt/web-platform-tests/element-timing/resources/TAOImage.py
@@ -1,7 +1,7 @@
import os
def main(request, response):
- origin = request.GET.first('origin', '');
+ origin = request.GET.first('origin')
if origin:
response.headers.set('Access-Control-Allow-Origin', origin)
diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/history-traversal/contains.json b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/history-traversal/contains.json
deleted file mode 100644
index 90b3466688c..00000000000
--- a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/history-traversal/contains.json
+++ /dev/null
@@ -1,6 +0,0 @@
-[
- {
- "id": "event-definitions-0",
- "original_id": "event-definitions-0"
- }
-] \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/unloading-documents/contains.json b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/unloading-documents/contains.json
deleted file mode 100644
index 4ebca09bfda..00000000000
--- a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/unloading-documents/contains.json
+++ /dev/null
@@ -1,6 +0,0 @@
-[
- {
- "id": "event-definition",
- "original_id": "event-definition"
- }
-] \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/html/browsers/history/the-location-interface/contains.json b/tests/wpt/web-platform-tests/html/browsers/history/the-location-interface/contains.json
deleted file mode 100644
index d311dbb31e3..00000000000
--- a/tests/wpt/web-platform-tests/html/browsers/history/the-location-interface/contains.json
+++ /dev/null
@@ -1,6 +0,0 @@
-[
- {
- "id": "security-location",
- "original_id": "security-location"
- }
-] \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/html/browsers/offline/introduction-4/contains.json b/tests/wpt/web-platform-tests/html/browsers/offline/introduction-4/contains.json
deleted file mode 100644
index 799caa23abe..00000000000
--- a/tests/wpt/web-platform-tests/html/browsers/offline/introduction-4/contains.json
+++ /dev/null
@@ -1,10 +0,0 @@
-[
- {
- "id": "supporting-offline-caching-for-legacy-applications",
- "original_id": "supporting-offline-caching-for-legacy-applications"
- },
- {
- "id": "appcacheevents",
- "original_id": "appcacheevents"
- }
-] \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/html/browsers/offline/manifests/contains.json b/tests/wpt/web-platform-tests/html/browsers/offline/manifests/contains.json
deleted file mode 100644
index 3fe509a781c..00000000000
--- a/tests/wpt/web-platform-tests/html/browsers/offline/manifests/contains.json
+++ /dev/null
@@ -1,14 +0,0 @@
-[
- {
- "id": "some-sample-manifests",
- "original_id": "some-sample-manifests"
- },
- {
- "id": "writing-cache-manifests",
- "original_id": "writing-cache-manifests"
- },
- {
- "id": "parsing-cache-manifests",
- "original_id": "parsing-cache-manifests"
- }
-] \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/html/browsers/windows/auxiliary-browsing-contexts/contains.json b/tests/wpt/web-platform-tests/html/browsers/windows/auxiliary-browsing-contexts/contains.json
deleted file mode 100644
index 9f2ca3b6fa5..00000000000
--- a/tests/wpt/web-platform-tests/html/browsers/windows/auxiliary-browsing-contexts/contains.json
+++ /dev/null
@@ -1,6 +0,0 @@
-[
- {
- "id": "navigating-auxiliary-browsing-contexts-in-the-dom",
- "original_id": "navigating-auxiliary-browsing-contexts-in-the-dom"
- }
-] \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/html/browsers/windows/nested-browsing-contexts/contains.json b/tests/wpt/web-platform-tests/html/browsers/windows/nested-browsing-contexts/contains.json
deleted file mode 100644
index 121284dca14..00000000000
--- a/tests/wpt/web-platform-tests/html/browsers/windows/nested-browsing-contexts/contains.json
+++ /dev/null
@@ -1,6 +0,0 @@
-[
- {
- "id": "navigating-nested-browsing-contexts-in-the-dom",
- "original_id": "navigating-nested-browsing-contexts-in-the-dom"
- }
-] \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/html/dom/elements/content-models/contains.json b/tests/wpt/web-platform-tests/html/dom/elements/content-models/contains.json
deleted file mode 100644
index 42f158d3674..00000000000
--- a/tests/wpt/web-platform-tests/html/dom/elements/content-models/contains.json
+++ /dev/null
@@ -1,48 +0,0 @@
-[
- {
- "id": "kinds-of-content",
- "original_id": "kinds-of-content",
- "children": [
- {
- "id": "metadata-content",
- "original_id": "metadata-content"
- },
- {
- "id": "flow-content",
- "original_id": "flow-content"
- },
- {
- "id": "sectioning-content",
- "original_id": "sectioning-content"
- },
- {
- "id": "heading-content",
- "original_id": "heading-content"
- },
- {
- "id": "phrasing-content",
- "original_id": "phrasing-content"
- },
- {
- "id": "embedded-content",
- "original_id": "embedded-content"
- },
- {
- "id": "interactive-content",
- "original_id": "interactive-content"
- },
- {
- "id": "palpable-content",
- "original_id": "palpable-content"
- }
- ]
- },
- {
- "id": "transparent-content-models",
- "original_id": "transparent-content-models"
- },
- {
- "id": "paragraphs",
- "original_id": "paragraphs"
- }
-] \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/html/dom/elements/element-definitions/contains.json b/tests/wpt/web-platform-tests/html/dom/elements/element-definitions/contains.json
deleted file mode 100644
index a942e85a239..00000000000
--- a/tests/wpt/web-platform-tests/html/dom/elements/element-definitions/contains.json
+++ /dev/null
@@ -1,6 +0,0 @@
-[
- {
- "id": "attributes",
- "original_id": "attributes"
- }
-] \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/contains.json b/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/contains.json
deleted file mode 100644
index c413488b504..00000000000
--- a/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/contains.json
+++ /dev/null
@@ -1,38 +0,0 @@
-[
- {
- "id": "the-id-attribute",
- "original_id": "the-id-attribute"
- },
- {
- "id": "the-title-attribute",
- "original_id": "the-title-attribute"
- },
- {
- "id": "the-lang-and-xml-lang-attributes",
- "original_id": "the-lang-and-xml:lang-attributes"
- },
- {
- "id": "the-translate-attribute",
- "original_id": "the-translate-attribute"
- },
- {
- "id": "the-xml-base-attribute-xml-only",
- "original_id": "the-xml:base-attribute-(xml-only)"
- },
- {
- "id": "the-dir-attribute",
- "original_id": "the-dir-attribute"
- },
- {
- "id": "classes",
- "original_id": "classes"
- },
- {
- "id": "the-style-attribute",
- "original_id": "the-style-attribute"
- },
- {
- "id": "embedding-custom-non-visible-data-with-the-data-attributes",
- "original_id": "embedding-custom-non-visible-data-with-the-data-*-attributes"
- }
-] \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/html/dom/elements/wai-aria/contains.json b/tests/wpt/web-platform-tests/html/dom/elements/wai-aria/contains.json
deleted file mode 100644
index 031cde580b2..00000000000
--- a/tests/wpt/web-platform-tests/html/dom/elements/wai-aria/contains.json
+++ /dev/null
@@ -1,18 +0,0 @@
-[
- {
- "id": "aria-role-attribute",
- "original_id": "aria-role-attribute"
- },
- {
- "id": "state-and-property-attributes",
- "original_id": "state-and-property-attributes"
- },
- {
- "id": "sec-strong-native-semantics",
- "original_id": "sec-strong-native-semantics"
- },
- {
- "id": "sec-implicit-aria-semantics",
- "original_id": "sec-implicit-aria-semantics"
- }
-] \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/html/infrastructure/common-dom-interfaces/collections/contains.json b/tests/wpt/web-platform-tests/html/infrastructure/common-dom-interfaces/collections/contains.json
deleted file mode 100644
index b30f1d0d533..00000000000
--- a/tests/wpt/web-platform-tests/html/infrastructure/common-dom-interfaces/collections/contains.json
+++ /dev/null
@@ -1,14 +0,0 @@
-[
- {
- "id": "htmlallcollection",
- "original_id": "htmlallcollection"
- },
- {
- "id": "htmlformcontrolscollection",
- "original_id": "htmlformcontrolscollection"
- },
- {
- "id": "htmloptionscollection",
- "original_id": "htmloptionscollection"
- }
-] \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/html/infrastructure/common-microsyntaxes/dates-and-times/contains.json b/tests/wpt/web-platform-tests/html/infrastructure/common-microsyntaxes/dates-and-times/contains.json
deleted file mode 100644
index 5be31eb48f1..00000000000
--- a/tests/wpt/web-platform-tests/html/infrastructure/common-microsyntaxes/dates-and-times/contains.json
+++ /dev/null
@@ -1,42 +0,0 @@
-[
- {
- "id": "months",
- "original_id": "months"
- },
- {
- "id": "dates",
- "original_id": "dates"
- },
- {
- "id": "yearless-dates",
- "original_id": "yearless-dates"
- },
- {
- "id": "times",
- "original_id": "times"
- },
- {
- "id": "local-dates-and-times",
- "original_id": "local-dates-and-times"
- },
- {
- "id": "time-zones",
- "original_id": "time-zones"
- },
- {
- "id": "global-dates-and-times",
- "original_id": "global-dates-and-times"
- },
- {
- "id": "weeks",
- "original_id": "weeks"
- },
- {
- "id": "durations",
- "original_id": "durations"
- },
- {
- "id": "vaguer-moments-in-time",
- "original_id": "vaguer-moments-in-time"
- }
-] \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/html/infrastructure/common-microsyntaxes/numbers/contains.json b/tests/wpt/web-platform-tests/html/infrastructure/common-microsyntaxes/numbers/contains.json
deleted file mode 100644
index 39a6ea00588..00000000000
--- a/tests/wpt/web-platform-tests/html/infrastructure/common-microsyntaxes/numbers/contains.json
+++ /dev/null
@@ -1,26 +0,0 @@
-[
- {
- "id": "signed-integers",
- "original_id": "signed-integers"
- },
- {
- "id": "non-negative-integers",
- "original_id": "non-negative-integers"
- },
- {
- "id": "floating-point-numbers",
- "original_id": "floating-point-numbers"
- },
- {
- "id": "percentages-and-dimensions",
- "original_id": "percentages-and-dimensions"
- },
- {
- "id": "lists-of-integers",
- "original_id": "lists-of-integers"
- },
- {
- "id": "lists-of-dimensions",
- "original_id": "lists-of-dimensions"
- }
-] \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/html/rendering/dimension-attributes.html b/tests/wpt/web-platform-tests/html/rendering/dimension-attributes.html
index 80122ee0e73..bfc70ec1414 100644
--- a/tests/wpt/web-platform-tests/html/rendering/dimension-attributes.html
+++ b/tests/wpt/web-platform-tests/html/rendering/dimension-attributes.html
@@ -33,6 +33,7 @@ const valid_values = [
[ "1007", "1007px" ],
[ " 00523 ", "523px" ],
[ "200.25", "200.25px" ],
+ [ "200.7", "200.7px" ],
[ "200.", "200px" ],
[ "+200", "200px" ],
[ "200in", "200px" ],
@@ -99,39 +100,60 @@ function newImageInput() {
* Array of tests. Each test consists of the following information:
*
* 1) An element creation function.
- * 2) The name of the attribute to set (and CSS property to get).
- * 3) A boolean indicating whether 0 is a valid value for the dimension
+ * 2) The name of the attribute to set
+ * 3) The name of the CSS property to get.
+ * 4) A boolean indicating whether 0 is a valid value for the dimension
* attribute.
*/
const tests = [
- [ newElem("hr"), "width", true ],
- [ newElem("iframe"), "width", true ],
- [ newElem("iframe"), "height", true ],
- [ newImageInput(), "width", true ],
- [ newImageInput(), "height", true ],
- [ newElem("marquee"), "width", true ],
- [ newElem("marquee"), "height", true ],
- [ newElem("video"), "width", true ],
- [ newElem("video"), "height", true ],
- [ newElem("object"), "width", true ],
- [ newElem("object"), "height", true ],
- [ newElem("embed"), "width", true ],
- [ newElem("embed"), "height", true ],
- [ newElem("img"), "width", true ],
- [ newElem("img"), "height", true ],
- [ newElem("td"), "width", false ],
- [ newElem("td"), "height", false ],
+ [ newElem("hr"), "width", "width", true ],
+ [ newElem("iframe"), "width", "width", true ],
+ [ newElem("iframe"), "height", "height", true ],
+ [ newImageInput(), "width", "width", true ],
+ [ newImageInput(), "height", "height", true ],
+ [ newElem("marquee"), "width", "width", true ],
+ [ newElem("marquee"), "height", "height", true ],
+ [ newElem("video"), "width", "width", true ],
+ [ newElem("video"), "height", "height", true ],
+ [ newElem("object"), "width", "width", true ],
+ [ newElem("object"), "height", "height", true ],
+ [ newElem("embed"), "width", "width", true ],
+ [ newElem("embed"), "height", "height", true ],
+ [ newElem("img"), "width", "width", true ],
+ [ newElem("img"), "height", "height", true ],
+ [ newElem("td"), "width", "width", false ],
+ [ newElem("td"), "height", "height", false ],
// https://github.com/whatwg/html/issues/4715 tracks the fact that for
// <table width> and <table height> the "0 is valid" boolean should probably
// be true.
- [ newElem("table"), "width", false ],
- [ newElem("table"), "height", false ],
+ [ newElem("table"), "width", "width", false ],
+ [ newElem("table"), "height", "height", false ],
// https://github.com/whatwg/html/issues/4716 tracks the fact that for the
// <tr height> case that "0 is valid" boolean should probably be true.
- [ newElem("tr"), "height", false ],
+ [ newElem("tr"), "height", "height", false ],
// https://github.com/whatwg/html/issues/4717 tracks the fact that for the
// <col width> case that "0 is valid" boolean should probably be true.
- [ newElem("col"), "width", false ],
+ [ newElem("col"), "width", "width", false ],
+ [ newElem("embed"), "hspace", "marginLeft", true ],
+ [ newElem("embed"), "hspace", "marginRight", true ],
+ [ newElem("embed"), "vspace", "marginTop", true ],
+ [ newElem("embed"), "vspace", "marginBottom", true ],
+ [ newElem("img"), "hspace", "marginLeft", true ],
+ [ newElem("img"), "hspace", "marginRight", true ],
+ [ newElem("img"), "vspace", "marginTop", true ],
+ [ newElem("img"), "vspace", "marginBottom", true ],
+ [ newElem("object"), "hspace", "marginLeft", true ],
+ [ newElem("object"), "hspace", "marginRight", true ],
+ [ newElem("object"), "vspace", "marginTop", true ],
+ [ newElem("object"), "vspace", "marginBottom", true ],
+ [ newImageInput(), "hspace", "marginLeft", true ],
+ [ newImageInput(), "hspace", "marginRight", true ],
+ [ newImageInput(), "vspace", "marginTop", true ],
+ [ newImageInput(), "vspace", "marginBottom", true ],
+ [ newElem("marquee"), "hspace", "marginLeft", true ],
+ [ newElem("marquee"), "hspace", "marginRight", true ],
+ [ newElem("marquee"), "vspace", "marginTop", true ],
+ [ newElem("marquee"), "vspace", "marginBottom", true ],
];
@@ -141,7 +163,7 @@ function style(element) {
const container = document.getElementById("container");
-for (let [ctor, attr, zero_allowed] of tests) {
+for (let [ctor, attr, prop, zero_allowed] of tests) {
let valid, invalid;
if (zero_allowed) {
valid = valid_values_with_0;
@@ -157,13 +179,13 @@ for (let [ctor, attr, zero_allowed] of tests) {
elem.setAttribute(attr, value);
assert_equals(elem.getAttribute(attr), value);
container.appendChild(elem);
- assert_equals(style(elem)[attr], result);
- }, `<${elem.localName} ${attr}="${value}"> mapping`);
+ assert_equals(style(elem)[prop], result);
+ }, `<${elem.localName} ${attr}="${value}"> mapping to ${prop}`);
}
let default_elem = ctor();
container.appendChild(default_elem);
- let defaultVal = style(default_elem)[attr];
+ let defaultVal = style(default_elem)[prop];
default_elem.remove();
for (let value of invalid) {
let elem = ctor();
@@ -172,8 +194,8 @@ for (let [ctor, attr, zero_allowed] of tests) {
elem.setAttribute(attr, value);
assert_equals(elem.getAttribute(attr), value);
container.appendChild(elem);
- assert_equals(style(elem)[attr], defaultVal);
- }, `<${elem.localName} ${attr}="${value}"> mapping`);
+ assert_equals(style(elem)[prop], defaultVal);
+ }, `<${elem.localName} ${attr}="${value}"> mapping to ${prop}`);
}
}
</script>
diff --git a/tests/wpt/web-platform-tests/html/rendering/pixel-length-attributes.html b/tests/wpt/web-platform-tests/html/rendering/pixel-length-attributes.html
index a66913afb84..888e6d0a3ff 100644
--- a/tests/wpt/web-platform-tests/html/rendering/pixel-length-attributes.html
+++ b/tests/wpt/web-platform-tests/html/rendering/pixel-length-attributes.html
@@ -1,11 +1,18 @@
<!doctype html>
<meta charset=utf-8>
+<!-- Creating iframes is slow in browsers -->
+<meta name=timeout content=long>
<title>Test handling of attributes that map to pixel length properties</title>
<link rel="help"
href="https://html.spec.whatwg.org/multipage/rendering.html#maps-to-the-pixel-length-property">
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<body>
+ <div id="container" style="display: none">
+ <img id="defaultImg">
+ <object id="defaultObject"></object>
+ <input type="image" id="defaultInput"></input>
+ </div>
<script>
/*
* This test tests
@@ -69,13 +76,53 @@ const tests = [
[ createFrame, "marginwidth", "marginRight", document.body ],
[ createFrame, "marginheight", "marginTop", document.body ],
[ createFrame, "marginheight", "marginBottom", document.body ],
+ [ createBody, "marginwidth", "marginLeft", document.body ],
+ [ createBody, "marginwidth", "marginRight", document.body ],
+ [ createBody, "leftmargin", "marginLeft", document.body ],
+ [ createBody, "rightmargin", "marginRight", document.body ],
+ [ createBody, "marginheight", "marginTop", document.body ],
+ [ createBody, "marginheight", "marginBottom", document.body ],
+ [ createBody, "topmargin", "marginTop", document.body ],
+ [ createBody, "bottommargin", "marginBottom", document.body ],
+ [ newElem("img"), "border", "borderTopWidth", defaultImg ],
+ [ newElem("img"), "border", "borderRightWidth", defaultImg ],
+ [ newElem("img"), "border", "borderBottomWidth", defaultImg ],
+ [ newElem("img"), "border", "borderLeftWidth", defaultImg ],
+ [ newElem("object"), "border", "borderTopWidth", defaultObject ],
+ [ newElem("object"), "border", "borderRightWidth", defaultObject ],
+ [ newElem("object"), "border", "borderBottomWidth", defaultObject ],
+ [ newElem("object"), "border", "borderLeftWidth", defaultObject ],
+ [ newImageInput, "border", "borderTopWidth", defaultInput ],
+ [ newImageInput, "border", "borderRightWidth", defaultInput ],
+ [ newImageInput, "border", "borderBottomWidth", defaultInput ],
+ [ newImageInput, "border", "borderLeftWidth", defaultInput ],
];
+function newElem(name) {
+ return () => {
+ var elem = document.createElement(name);
+ document.getElementById("container").appendChild(elem);
+ return [ elem, elem, () => elem.remove() ];
+ }
+}
+
+function newImageInput() {
+ var elem = document.createElement("input");
+ elem.type = "image";
+ document.getElementById("container").appendChild(elem);
+ return [ elem, elem, () => elem.remove() ];
+}
function createIframe() {
let ifr = document.createElement("iframe");
document.body.appendChild(ifr);
return [ ifr, ifr.contentDocument.body, () => ifr.remove() ];
+ }
+
+function createBody() {
+ let ifr = document.createElement("iframe");
+ document.body.appendChild(ifr);
+ return [ ifr.contentDocument.body, ifr.contentDocument.body, () => ifr.remove() ];
}
function createFrame() {
diff --git a/tests/wpt/web-platform-tests/html/rendering/unmapped-attributes.html b/tests/wpt/web-platform-tests/html/rendering/unmapped-attributes.html
new file mode 100644
index 00000000000..3f457eb492f
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/rendering/unmapped-attributes.html
@@ -0,0 +1,91 @@
+<!doctype html>
+<meta charset=utf-8>
+<title>Test handling of attributes that should not be mapped into style, but
+ incorrectly were in some browsers</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<body>
+<div id="container" style="display: none"></div>
+<iframe></iframe>
+<script>
+ /*
+ * We wand to test both quirks and standards mode. We can use the fact that
+ * our document is in standards mode and the about:blank iframe we have is in
+ * quirks mode.
+ */
+test(() => {
+ assert_equals(document.compatMode, "CSS1Compat")
+}, "We should be in standards mode");
+const container = document.getElementById("container");
+
+const frameDoc = document.querySelector("iframe").contentDocument;
+test(() => {
+ assert_equals(frameDoc.compatMode, "BackCompat")
+}, "Subframe should be in quirks mode");
+const frameContainer = frameDoc.createElement("div");
+frameContainer.style.display = "none";
+frameDoc.body.appendChild(frameContainer);
+
+function newElem(name) {
+ return (parent) =>
+ parent.appendChild(parent.ownerDocument.createElement(name));
+}
+
+ /*
+ * Array of tests. Each test consists of the following information:
+ *
+ * 1) An element creation function, which takes a parent element as an
+ * argument.
+ * 2) The name of the attribute to set
+ * 3) The name of the CSS property to get.
+ */
+const tests = [
+ [ newElem("table"), "hspace", "marginLeft" ],
+ [ newElem("table"), "hspace", "marginRight" ],
+ [ newElem("table"), "vspace", "marginTop" ],
+ [ newElem("table"), "vspace", "marginBottom" ],
+ [ newElem("embed"), "border", "borderTopWidth" ],
+ [ newElem("embed"), "border", "borderRightWidth" ],
+ [ newElem("embed"), "border", "borderBottomWidth" ],
+ [ newElem("embed"), "border", "borderLeftWidth" ],
+ [ newElem("iframe"), "border", "borderTopWidth" ],
+ [ newElem("iframe"), "border", "borderRightWidth" ],
+ [ newElem("iframe"), "border", "borderBottomWidth" ],
+ [ newElem("iframe"), "border", "borderLeftWidth" ],
+ [ newElem("marquee"), "border", "borderTopWidth" ],
+ [ newElem("marquee"), "border", "borderRightWidth" ],
+ [ newElem("marquee"), "border", "borderBottomWidth" ],
+ [ newElem("marquee"), "border", "borderLeftWidth" ],
+ // Non-image input
+ [ newElem("input"), "border", "borderTopWidth" ],
+ [ newElem("input"), "border", "borderRightWidth" ],
+ [ newElem("input"), "border", "borderBottomWidth" ],
+ [ newElem("input"), "border", "borderLeftWidth" ],
+ [ newElem("input"), "width", "width" ],
+ [ newElem("input"), "height", "height" ],
+ [ newElem("input"), "hspace", "marginLeft" ],
+ [ newElem("input"), "hspace", "marginRight" ],
+ [ newElem("input"), "vspace", "marginTop" ],
+ [ newElem("input"), "vspace", "marginBottom" ],
+];
+
+function style(element) {
+ return element.ownerDocument.defaultView.getComputedStyle(element);
+}
+
+for (let [ctor, attr, prop] of tests) {
+ for (let parent of [container, frameContainer]) {
+ let elem = ctor(parent);
+ test(function() {
+ let default_elem = ctor(parent);
+ this.add_cleanup(() => {
+ elem.remove();
+ default_elem.remove();
+ });
+ elem.setAttribute(attr, "200");
+ assert_equals(elem.getAttribute(attr), "200");
+ assert_equals(style(elem)[prop], style(default_elem)[prop]);
+ }, `<${elem.localName} ${attr}> should not be mapped to style ${prop} in ${parent.ownerDocument.compatMode} mode`);
+ }
+}
+</script>
diff --git a/tests/wpt/web-platform-tests/html/semantics/document-metadata/the-meta-element/contains.json b/tests/wpt/web-platform-tests/html/semantics/document-metadata/the-meta-element/contains.json
deleted file mode 100644
index 70a4546914b..00000000000
--- a/tests/wpt/web-platform-tests/html/semantics/document-metadata/the-meta-element/contains.json
+++ /dev/null
@@ -1,22 +0,0 @@
-[
- {
- "id": "standard-metadata-names",
- "original_id": "standard-metadata-names"
- },
- {
- "id": "other-metadata-names",
- "original_id": "other-metadata-names"
- },
- {
- "id": "pragma-directives",
- "original_id": "pragma-directives"
- },
- {
- "id": "other-pragma-directives",
- "original_id": "other-pragma-directives"
- },
- {
- "id": "charset",
- "original_id": "charset"
- }
-] \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/image-maps/contains.json b/tests/wpt/web-platform-tests/html/semantics/embedded-content/image-maps/contains.json
deleted file mode 100644
index bf7a3ddd8de..00000000000
--- a/tests/wpt/web-platform-tests/html/semantics/embedded-content/image-maps/contains.json
+++ /dev/null
@@ -1,10 +0,0 @@
-[
- {
- "id": "authoring",
- "original_id": "authoring"
- },
- {
- "id": "image-map-processing-model",
- "original_id": "image-map-processing-model"
- }
-]
diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/media-elements/contains.json b/tests/wpt/web-platform-tests/html/semantics/embedded-content/media-elements/contains.json
deleted file mode 100644
index 9cf23296cee..00000000000
--- a/tests/wpt/web-platform-tests/html/semantics/embedded-content/media-elements/contains.json
+++ /dev/null
@@ -1,132 +0,0 @@
-[
- {
- "id": "error-codes",
- "original_id": "error-codes"
- },
- {
- "id": "location-of-the-media-resource",
- "original_id": "location-of-the-media-resource"
- },
- {
- "id": "mime-types",
- "original_id": "mime-types"
- },
- {
- "id": "network-states",
- "original_id": "network-states"
- },
- {
- "id": "loading-the-media-resource",
- "original_id": "loading-the-media-resource"
- },
- {
- "id": "offsets-into-the-media-resource",
- "original_id": "offsets-into-the-media-resource"
- },
- {
- "id": "ready-states",
- "original_id": "ready-states"
- },
- {
- "id": "playing-the-media-resource",
- "original_id": "playing-the-media-resource"
- },
- {
- "id": "seeking",
- "original_id": "seeking"
- },
- {
- "id": "media-resources-with-multiple-media-tracks",
- "original_id": "media-resources-with-multiple-media-tracks",
- "children": [
- {
- "id": "audiotracklist-and-videotracklist-objects",
- "original_id": "audiotracklist-and-videotracklist-objects"
- },
- {
- "id": "selecting-specific-audio-and-video-tracks-declaratively",
- "original_id": "selecting-specific-audio-and-video-tracks-declaratively"
- }
- ]
- },
- {
- "id": "synchronising-multiple-media-elements",
- "original_id": "synchronising-multiple-media-elements",
- "children": [
- {
- "id": "introduction-0",
- "original_id": "introduction-0"
- },
- {
- "id": "media-controllers",
- "original_id": "media-controllers"
- },
- {
- "id": "assigning-a-media-controller-declaratively",
- "original_id": "assigning-a-media-controller-declaratively"
- }
- ]
- },
- {
- "id": "timed-text-tracks",
- "original_id": "timed-text-tracks",
- "children": [
- {
- "id": "text-track-model",
- "original_id": "text-track-model"
- },
- {
- "id": "sourcing-in-band-text-tracks",
- "original_id": "sourcing-in-band-text-tracks"
- },
- {
- "id": "sourcing-out-of-band-text-tracks",
- "original_id": "sourcing-out-of-band-text-tracks"
- },
- {
- "id": "guidelines-for-exposing-cues-in-various-formats-as-text-track-cues",
- "original_id": "guidelines-for-exposing-cues-in-various-formats-as-text-track-cues"
- },
- {
- "id": "text-track-api",
- "original_id": "text-track-api"
- },
- {
- "id": "text-tracks-describing-chapters",
- "original_id": "text-tracks-describing-chapters"
- },
- {
- "id": "cue-events",
- "original_id": "cue-events"
- }
- ]
- },
- {
- "id": "user-interface",
- "original_id": "user-interface"
- },
- {
- "id": "time-ranges",
- "original_id": "time-ranges"
- },
- {
- "id": "event-definitions",
- "original_id": "event-definitions"
- },
- {
- "id": "mediaevents",
- "original_id": "mediaevents"
- },
- {
- "id": "security-and-privacy-considerations",
- "original_id": "security-and-privacy-considerations"
- },
- {
- "id": "best-practices-for-authors-using-media-elements",
- "original_id": "best-practices-for-authors-using-media-elements"
- },
- {
- "id": "best-practices-for-implementors-of-media-elements",
- "original_id": "best-practices-for-implementors-of-media-elements"
- }
-]
diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/contains.json b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/contains.json
deleted file mode 100644
index 3f56f4fd8b3..00000000000
--- a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/contains.json
+++ /dev/null
@@ -1,10 +0,0 @@
-[
- {
- "id": "color-spaces-and-color-correction",
- "original_id": "color-spaces-and-color-correction"
- },
- {
- "id": "security-with-canvas-elements",
- "original_id": "security-with-canvas-elements"
- }
-] \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/contains.json b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/contains.json
deleted file mode 100644
index 9ac6d3d4224..00000000000
--- a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/contains.json
+++ /dev/null
@@ -1,60 +0,0 @@
-[
- {
- "id": "alt",
- "original_id": "alt",
- "children": [
- {
- "id": "general-guidelines",
- "original_id": "general-guidelines"
- },
- {
- "id": "a-link-or-button-containing-nothing-but-the-image",
- "original_id": "a-link-or-button-containing-nothing-but-the-image"
- },
- {
- "id": "a-phrase-or-paragraph-with-an-alternative-graphical-representation-charts-diagrams-graphs-maps-illustrations",
- "original_id": "a-phrase-or-paragraph-with-an-alternative-graphical-representation:-charts,-diagrams,-graphs,-maps,-illustrations"
- },
- {
- "id": "a-short-phrase-or-label-with-an-alternative-graphical-representation-icons-logos",
- "original_id": "a-short-phrase-or-label-with-an-alternative-graphical-representation:-icons,-logos"
- },
- {
- "id": "text-that-has-been-rendered-to-a-graphic-for-typographical-effect",
- "original_id": "text-that-has-been-rendered-to-a-graphic-for-typographical-effect"
- },
- {
- "id": "a-graphical-representation-of-some-of-the-surrounding-text",
- "original_id": "a-graphical-representation-of-some-of-the-surrounding-text"
- },
- {
- "id": "a-purely-decorative-image-that-doesn-t-add-any-information",
- "original_id": "a-purely-decorative-image-that-doesn't-add-any-information"
- },
- {
- "id": "a-group-of-images-that-form-a-single-larger-picture-with-no-links",
- "original_id": "a-group-of-images-that-form-a-single-larger-picture-with-no-links"
- },
- {
- "id": "a-group-of-images-that-form-a-single-larger-picture-with-links",
- "original_id": "a-group-of-images-that-form-a-single-larger-picture-with-links"
- },
- {
- "id": "a-key-part-of-the-content",
- "original_id": "a-key-part-of-the-content"
- },
- {
- "id": "an-image-not-intended-for-the-user",
- "original_id": "an-image-not-intended-for-the-user"
- },
- {
- "id": "guidance-for-markup-generators",
- "original_id": "guidance-for-markup-generators"
- },
- {
- "id": "guidance-for-conformance-checkers",
- "original_id": "guidance-for-conformance-checkers"
- }
- ]
- }
-] \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/html/semantics/forms/attributes-common-to-form-controls/contains.json b/tests/wpt/web-platform-tests/html/semantics/forms/attributes-common-to-form-controls/contains.json
deleted file mode 100644
index 62326d33f87..00000000000
--- a/tests/wpt/web-platform-tests/html/semantics/forms/attributes-common-to-form-controls/contains.json
+++ /dev/null
@@ -1,38 +0,0 @@
-[
- {
- "id": "naming-form-controls-the-name-attribute",
- "original_id": "naming-form-controls:-the-name-attribute"
- },
- {
- "id": "submitting-element-directionality-the-dirname-attribute",
- "original_id": "submitting-element-directionality:-the-dirname-attribute"
- },
- {
- "id": "limiting-user-input-length-the-maxlength-attribute",
- "original_id": "limiting-user-input-length:-the-maxlength-attribute"
- },
- {
- "id": "enabling-and-disabling-form-controls-the-disabled-attribute",
- "original_id": "enabling-and-disabling-form-controls:-the-disabled-attribute"
- },
- {
- "id": "form-submission",
- "original_id": "form-submission"
- },
- {
- "id": "autofocusing-a-form-control-the-autofocus-attribute",
- "original_id": "autofocusing-a-form-control:-the-autofocus-attribute"
- },
- {
- "id": "input-modalities-the-enterkeyhint-attribute",
- "original_id": "input-modalities:-the-enterkeyhint-attribute"
- },
- {
- "id": "input-modalities-the-inputmode-attribute",
- "original_id": "input-modalities:-the-inputmode-attribute"
- },
- {
- "id": "autofilling-form-controls-the-autocomplete-attribute",
- "original_id": "autofilling-form-controls:-the-autocomplete-attribute"
- }
-]
diff --git a/tests/wpt/web-platform-tests/html/semantics/forms/constraints/contains.json b/tests/wpt/web-platform-tests/html/semantics/forms/constraints/contains.json
deleted file mode 100644
index 67e4c3b12e0..00000000000
--- a/tests/wpt/web-platform-tests/html/semantics/forms/constraints/contains.json
+++ /dev/null
@@ -1,18 +0,0 @@
-[
- {
- "id": "definitions",
- "original_id": "definitions"
- },
- {
- "id": "constraint-validation",
- "original_id": "constraint-validation"
- },
- {
- "id": "the-constraint-validation-api",
- "original_id": "the-constraint-validation-api"
- },
- {
- "id": "security-forms",
- "original_id": "security-forms"
- }
-] \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/html/semantics/forms/form-control-infrastructure/contains.json b/tests/wpt/web-platform-tests/html/semantics/forms/form-control-infrastructure/contains.json
deleted file mode 100644
index 754a6901d23..00000000000
--- a/tests/wpt/web-platform-tests/html/semantics/forms/form-control-infrastructure/contains.json
+++ /dev/null
@@ -1,14 +0,0 @@
-[
- {
- "id": "a-form-control-s-value",
- "original_id": "a-form-control's-value"
- },
- {
- "id": "mutability",
- "original_id": "mutability"
- },
- {
- "id": "association-of-controls-and-forms",
- "original_id": "association-of-controls-and-forms"
- }
-] \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/html/semantics/forms/form-submission-0/contains.json b/tests/wpt/web-platform-tests/html/semantics/forms/form-submission-0/contains.json
deleted file mode 100644
index f9d0d63bf68..00000000000
--- a/tests/wpt/web-platform-tests/html/semantics/forms/form-submission-0/contains.json
+++ /dev/null
@@ -1,30 +0,0 @@
-[
- {
- "id": "introduction-2",
- "original_id": "introduction-2"
- },
- {
- "id": "implicit-submission",
- "original_id": "implicit-submission"
- },
- {
- "id": "form-submission-algorithm",
- "original_id": "form-submission-algorithm"
- },
- {
- "id": "constructing-form-data-set",
- "original_id": "constructing-form-data-set"
- },
- {
- "id": "url-encoded-form-data",
- "original_id": "url-encoded-form-data"
- },
- {
- "id": "multipart-form-data",
- "original_id": "multipart-form-data"
- },
- {
- "id": "plain-text-form-data",
- "original_id": "plain-text-form-data"
- }
-] \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/html/semantics/forms/introduction-1/contains.json b/tests/wpt/web-platform-tests/html/semantics/forms/introduction-1/contains.json
deleted file mode 100644
index 12a86681384..00000000000
--- a/tests/wpt/web-platform-tests/html/semantics/forms/introduction-1/contains.json
+++ /dev/null
@@ -1,34 +0,0 @@
-[
- {
- "id": "writing-a-form-s-user-interface",
- "original_id": "writing-a-form's-user-interface"
- },
- {
- "id": "implementing-the-server-side-processing-for-a-form",
- "original_id": "implementing-the-server-side-processing-for-a-form"
- },
- {
- "id": "configuring-a-form-to-communicate-with-a-server",
- "original_id": "configuring-a-form-to-communicate-with-a-server"
- },
- {
- "id": "client-side-form-validation",
- "original_id": "client-side-form-validation"
- },
- {
- "id": "enabling-client-side-automatic-filling-of-form-controls",
- "original_id": "enabling-client-side-automatic-filling-of-form-controls"
- },
- {
- "id": "improving-the-user-experience-on-mobile-devices",
- "original_id": "improving-the-user-experience-on-mobile-devices"
- },
- {
- "id": "the-difference-between-the-field-type-the-autofill-field-name-and-the-input-modality",
- "original_id": "the-difference-between-the-field-type,-the-autofill-field-name,-and-the-input-modality"
- },
- {
- "id": "input-author-notes",
- "original_id": "input-author-notes"
- }
-] \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/html/semantics/forms/the-input-element/contains.json b/tests/wpt/web-platform-tests/html/semantics/forms/the-input-element/contains.json
deleted file mode 100644
index c2b780f0b8d..00000000000
--- a/tests/wpt/web-platform-tests/html/semantics/forms/the-input-element/contains.json
+++ /dev/null
@@ -1,154 +0,0 @@
-[
- {
- "id": "states-of-the-type-attribute",
- "original_id": "states-of-the-type-attribute",
- "children": [
- {
- "id": "hidden-state-type-hidden",
- "original_id": "hidden-state-(type=hidden)"
- },
- {
- "id": "text-type-text-state-and-search-state-type-search",
- "original_id": "text-(type=text)-state-and-search-state-(type=search)"
- },
- {
- "id": "telephone-state-type-tel",
- "original_id": "telephone-state-(type=tel)"
- },
- {
- "id": "url-state-type-url",
- "original_id": "url-state-(type=url)"
- },
- {
- "id": "e-mail-state-type-email",
- "original_id": "e-mail-state-(type=email)"
- },
- {
- "id": "password-state-type-password",
- "original_id": "password-state-(type=password)"
- },
- {
- "id": "date-and-time-state-type-datetime",
- "original_id": "date-and-time-state-(type=datetime)"
- },
- {
- "id": "date-state-type-date",
- "original_id": "date-state-(type=date)"
- },
- {
- "id": "month-state-type-month",
- "original_id": "month-state-(type=month)"
- },
- {
- "id": "week-state-type-week",
- "original_id": "week-state-(type=week)"
- },
- {
- "id": "time-state-type-time",
- "original_id": "time-state-(type=time)"
- },
- {
- "id": "local-date-and-time-state-type-datetime-local",
- "original_id": "local-date-and-time-state-(type=datetime-local)"
- },
- {
- "id": "number-state-type-number",
- "original_id": "number-state-(type=number)"
- },
- {
- "id": "range-state-type-range",
- "original_id": "range-state-(type=range)"
- },
- {
- "id": "color-state-type-color",
- "original_id": "color-state-(type=color)"
- },
- {
- "id": "checkbox-state-type-checkbox",
- "original_id": "checkbox-state-(type=checkbox)"
- },
- {
- "id": "radio-button-state-type-radio",
- "original_id": "radio-button-state-(type=radio)"
- },
- {
- "id": "file-upload-state-type-file",
- "original_id": "file-upload-state-(type=file)"
- },
- {
- "id": "submit-button-state-type-submit",
- "original_id": "submit-button-state-(type=submit)"
- },
- {
- "id": "image-button-state-type-image",
- "original_id": "image-button-state-(type=image)"
- },
- {
- "id": "reset-button-state-type-reset",
- "original_id": "reset-button-state-(type=reset)"
- },
- {
- "id": "button-state-type-button",
- "original_id": "button-state-(type=button)"
- }
- ]
- },
- {
- "id": "input-impl-notes",
- "original_id": "input-impl-notes"
- },
- {
- "id": "common-input-element-attributes",
- "original_id": "common-input-element-attributes",
- "children": [
- {
- "id": "the-maxlength-attribute",
- "original_id": "the-maxlength-attribute"
- },
- {
- "id": "the-size-attribute",
- "original_id": "the-size-attribute"
- },
- {
- "id": "the-readonly-attribute",
- "original_id": "the-readonly-attribute"
- },
- {
- "id": "the-required-attribute",
- "original_id": "the-required-attribute"
- },
- {
- "id": "the-multiple-attribute",
- "original_id": "the-multiple-attribute"
- },
- {
- "id": "the-pattern-attribute",
- "original_id": "the-pattern-attribute"
- },
- {
- "id": "the-min-and-max-attributes",
- "original_id": "the-min-and-max-attributes"
- },
- {
- "id": "the-step-attribute",
- "original_id": "the-step-attribute"
- },
- {
- "id": "the-list-attribute",
- "original_id": "the-list-attribute"
- },
- {
- "id": "the-placeholder-attribute",
- "original_id": "the-placeholder-attribute"
- }
- ]
- },
- {
- "id": "common-input-element-apis",
- "original_id": "common-input-element-apis"
- },
- {
- "id": "common-event-behaviors",
- "original_id": "common-event-behaviors"
- }
-] \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/commands/contains.json b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/commands/contains.json
deleted file mode 100644
index b2ca2e771bd..00000000000
--- a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/commands/contains.json
+++ /dev/null
@@ -1,38 +0,0 @@
-[
- {
- "id": "using-the-a-element-to-define-a-command",
- "original_id": "using-the-a-element-to-define-a-command"
- },
- {
- "id": "using-the-button-element-to-define-a-command",
- "original_id": "using-the-button-element-to-define-a-command"
- },
- {
- "id": "using-the-input-element-to-define-a-command",
- "original_id": "using-the-input-element-to-define-a-command"
- },
- {
- "id": "using-the-option-element-to-define-a-command",
- "original_id": "using-the-option-element-to-define-a-command"
- },
- {
- "id": "using-the-command-element-to-define-a-command",
- "original_id": "using-the-command-element-to-define-a-command"
- },
- {
- "id": "using-the-command-attribute-on-command-elements-to-define-a-command-indirectly",
- "original_id": "using-the-command-attribute-on-command-elements-to-define-a-command-indirectly"
- },
- {
- "id": "using-the-accesskey-attribute-on-a-label-element-to-define-a-command",
- "original_id": "using-the-accesskey-attribute-on-a-label-element-to-define-a-command"
- },
- {
- "id": "using-the-accesskey-attribute-on-a-legend-element-to-define-a-command",
- "original_id": "using-the-accesskey-attribute-on-a-legend-element-to-define-a-command"
- },
- {
- "id": "using-the-accesskey-attribute-to-define-a-command-on-other-elements",
- "original_id": "using-the-accesskey-attribute-to-define-a-command-on-other-elements"
- }
-] \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/contains.json b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/contains.json
deleted file mode 100644
index c865c858857..00000000000
--- a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/contains.json
+++ /dev/null
@@ -1,6 +0,0 @@
-[
- {
- "id": "anchor-points",
- "original_id": "anchor-points"
- }
-] \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/html/semantics/links/downloading-resources/contains.json b/tests/wpt/web-platform-tests/html/semantics/links/downloading-resources/contains.json
deleted file mode 100644
index b67f855cfb8..00000000000
--- a/tests/wpt/web-platform-tests/html/semantics/links/downloading-resources/contains.json
+++ /dev/null
@@ -1,6 +0,0 @@
-[
- {
- "id": "hyperlink-auditing",
- "original_id": "hyperlink-auditing"
- }
-] \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/html/semantics/links/linktypes/contains.json b/tests/wpt/web-platform-tests/html/semantics/links/linktypes/contains.json
deleted file mode 100644
index 55aa4f6774a..00000000000
--- a/tests/wpt/web-platform-tests/html/semantics/links/linktypes/contains.json
+++ /dev/null
@@ -1,68 +0,0 @@
-[
- {
- "id": "rel-alternate",
- "original_id": "rel-alternate"
- },
- {
- "id": "link-type-author",
- "original_id": "link-type-author"
- },
- {
- "id": "link-type-bookmark",
- "original_id": "link-type-bookmark"
- },
- {
- "id": "link-type-help",
- "original_id": "link-type-help"
- },
- {
- "id": "rel-icon",
- "original_id": "rel-icon"
- },
- {
- "id": "link-type-license",
- "original_id": "link-type-license"
- },
- {
- "id": "link-type-nofollow",
- "original_id": "link-type-nofollow"
- },
- {
- "id": "link-type-noreferrer",
- "original_id": "link-type-noreferrer"
- },
- {
- "id": "link-type-prefetch",
- "original_id": "link-type-prefetch"
- },
- {
- "id": "link-type-search",
- "original_id": "link-type-search"
- },
- {
- "id": "link-type-stylesheet",
- "original_id": "link-type-stylesheet"
- },
- {
- "id": "link-type-tag",
- "original_id": "link-type-tag"
- },
- {
- "id": "sequential-link-types",
- "original_id": "sequential-link-types",
- "children": [
- {
- "id": "link-type-next",
- "original_id": "link-type-next"
- },
- {
- "id": "link-type-prev",
- "original_id": "link-type-prev"
- }
- ]
- },
- {
- "id": "other-link-types",
- "original_id": "other-link-types"
- }
-] \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/contains.json b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/contains.json
deleted file mode 100644
index e31ce400312..00000000000
--- a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/contains.json
+++ /dev/null
@@ -1,18 +0,0 @@
-[
- {
- "id": "scriptinglanguages",
- "original_id": "scriptingLanguages"
- },
- {
- "id": "restrictions-for-contents-of-script-elements",
- "original_id": "restrictions-for-contents-of-script-elements"
- },
- {
- "id": "inline-documentation-for-external-scripts",
- "original_id": "inline-documentation-for-external-scripts"
- },
- {
- "id": "scripttagxslt",
- "original_id": "scriptTagXSLT"
- }
-] \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/html/semantics/sections/headings-and-sections/contains.json b/tests/wpt/web-platform-tests/html/semantics/sections/headings-and-sections/contains.json
deleted file mode 100644
index a9fecf65b9d..00000000000
--- a/tests/wpt/web-platform-tests/html/semantics/sections/headings-and-sections/contains.json
+++ /dev/null
@@ -1,6 +0,0 @@
-[
- {
- "id": "outlines",
- "original_id": "outlines"
- }
-] \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/html/semantics/tabular-data/processing-model-1/contains.json b/tests/wpt/web-platform-tests/html/semantics/tabular-data/processing-model-1/contains.json
deleted file mode 100644
index be5a8fdfdd4..00000000000
--- a/tests/wpt/web-platform-tests/html/semantics/tabular-data/processing-model-1/contains.json
+++ /dev/null
@@ -1,10 +0,0 @@
-[
- {
- "id": "forming-a-table",
- "original_id": "forming-a-table"
- },
- {
- "id": "header-and-data-cell-semantics",
- "original_id": "header-and-data-cell-semantics"
- }
-] \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/html/semantics/tabular-data/the-table-element/contains.json b/tests/wpt/web-platform-tests/html/semantics/tabular-data/the-table-element/contains.json
deleted file mode 100644
index ee89be21dc6..00000000000
--- a/tests/wpt/web-platform-tests/html/semantics/tabular-data/the-table-element/contains.json
+++ /dev/null
@@ -1,10 +0,0 @@
-[
- {
- "id": "table-descriptions-techniques",
- "original_id": "table-descriptions-techniques"
- },
- {
- "id": "table-layout-techniques",
- "original_id": "table-layout-techniques"
- }
-] \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/html/syntax/parsing/contains.json b/tests/wpt/web-platform-tests/html/syntax/parsing/contains.json
deleted file mode 100644
index 249c9fe014a..00000000000
--- a/tests/wpt/web-platform-tests/html/syntax/parsing/contains.json
+++ /dev/null
@@ -1,490 +0,0 @@
-[
- {
- "id": "overview-of-the-parsing-model",
- "original_id": "overview-of-the-parsing-model"
- },
- {
- "id": "the-input-byte-stream",
- "original_id": "the-input-byte-stream",
- "children": [
- {
- "id": "determining-the-character-encoding",
- "original_id": "determining-the-character-encoding"
- },
- {
- "id": "character-encodings-0",
- "original_id": "character-encodings-0"
- },
- {
- "id": "changing-the-encoding-while-parsing",
- "original_id": "changing-the-encoding-while-parsing"
- },
- {
- "id": "preprocessing-the-input-stream",
- "original_id": "preprocessing-the-input-stream"
- }
- ]
- },
- {
- "id": "parse-state",
- "original_id": "parse-state",
- "children": [
- {
- "id": "the-insertion-mode",
- "original_id": "the-insertion-mode"
- },
- {
- "id": "the-stack-of-open-elements",
- "original_id": "the-stack-of-open-elements"
- },
- {
- "id": "the-list-of-active-formatting-elements",
- "original_id": "the-list-of-active-formatting-elements"
- },
- {
- "id": "the-element-pointers",
- "original_id": "the-element-pointers"
- },
- {
- "id": "other-parsing-state-flags",
- "original_id": "other-parsing-state-flags"
- }
- ]
- },
- {
- "id": "tokenization",
- "original_id": "tokenization",
- "children": [
- {
- "id": "data-state",
- "original_id": "data-state"
- },
- {
- "id": "character-reference-in-data-state",
- "original_id": "character-reference-in-data-state"
- },
- {
- "id": "rcdata-state",
- "original_id": "rcdata-state"
- },
- {
- "id": "character-reference-in-rcdata-state",
- "original_id": "character-reference-in-rcdata-state"
- },
- {
- "id": "rawtext-state",
- "original_id": "rawtext-state"
- },
- {
- "id": "script-data-state",
- "original_id": "script-data-state"
- },
- {
- "id": "plaintext-state",
- "original_id": "plaintext-state"
- },
- {
- "id": "tag-open-state",
- "original_id": "tag-open-state"
- },
- {
- "id": "end-tag-open-state",
- "original_id": "end-tag-open-state"
- },
- {
- "id": "tag-name-state",
- "original_id": "tag-name-state"
- },
- {
- "id": "rcdata-less-than-sign-state",
- "original_id": "rcdata-less-than-sign-state"
- },
- {
- "id": "rcdata-end-tag-open-state",
- "original_id": "rcdata-end-tag-open-state"
- },
- {
- "id": "rcdata-end-tag-name-state",
- "original_id": "rcdata-end-tag-name-state"
- },
- {
- "id": "rawtext-less-than-sign-state",
- "original_id": "rawtext-less-than-sign-state"
- },
- {
- "id": "rawtext-end-tag-open-state",
- "original_id": "rawtext-end-tag-open-state"
- },
- {
- "id": "rawtext-end-tag-name-state",
- "original_id": "rawtext-end-tag-name-state"
- },
- {
- "id": "script-data-less-than-sign-state",
- "original_id": "script-data-less-than-sign-state"
- },
- {
- "id": "script-data-end-tag-open-state",
- "original_id": "script-data-end-tag-open-state"
- },
- {
- "id": "script-data-end-tag-name-state",
- "original_id": "script-data-end-tag-name-state"
- },
- {
- "id": "script-data-escape-start-state",
- "original_id": "script-data-escape-start-state"
- },
- {
- "id": "script-data-escape-start-dash-state",
- "original_id": "script-data-escape-start-dash-state"
- },
- {
- "id": "script-data-escaped-state",
- "original_id": "script-data-escaped-state"
- },
- {
- "id": "script-data-escaped-dash-state",
- "original_id": "script-data-escaped-dash-state"
- },
- {
- "id": "script-data-escaped-dash-dash-state",
- "original_id": "script-data-escaped-dash-dash-state"
- },
- {
- "id": "script-data-escaped-less-than-sign-state",
- "original_id": "script-data-escaped-less-than-sign-state"
- },
- {
- "id": "script-data-escaped-end-tag-open-state",
- "original_id": "script-data-escaped-end-tag-open-state"
- },
- {
- "id": "script-data-escaped-end-tag-name-state",
- "original_id": "script-data-escaped-end-tag-name-state"
- },
- {
- "id": "script-data-double-escape-start-state",
- "original_id": "script-data-double-escape-start-state"
- },
- {
- "id": "script-data-double-escaped-state",
- "original_id": "script-data-double-escaped-state"
- },
- {
- "id": "script-data-double-escaped-dash-state",
- "original_id": "script-data-double-escaped-dash-state"
- },
- {
- "id": "script-data-double-escaped-dash-dash-state",
- "original_id": "script-data-double-escaped-dash-dash-state"
- },
- {
- "id": "script-data-double-escaped-less-than-sign-state",
- "original_id": "script-data-double-escaped-less-than-sign-state"
- },
- {
- "id": "script-data-double-escape-end-state",
- "original_id": "script-data-double-escape-end-state"
- },
- {
- "id": "before-attribute-name-state",
- "original_id": "before-attribute-name-state"
- },
- {
- "id": "attribute-name-state",
- "original_id": "attribute-name-state"
- },
- {
- "id": "after-attribute-name-state",
- "original_id": "after-attribute-name-state"
- },
- {
- "id": "before-attribute-value-state",
- "original_id": "before-attribute-value-state"
- },
- {
- "id": "attribute-value-double-quoted-state",
- "original_id": "attribute-value-(double-quoted)-state"
- },
- {
- "id": "attribute-value-single-quoted-state",
- "original_id": "attribute-value-(single-quoted)-state"
- },
- {
- "id": "attribute-value-unquoted-state",
- "original_id": "attribute-value-(unquoted)-state"
- },
- {
- "id": "character-reference-in-attribute-value-state",
- "original_id": "character-reference-in-attribute-value-state"
- },
- {
- "id": "after-attribute-value-quoted-state",
- "original_id": "after-attribute-value-(quoted)-state"
- },
- {
- "id": "self-closing-start-tag-state",
- "original_id": "self-closing-start-tag-state"
- },
- {
- "id": "bogus-comment-state",
- "original_id": "bogus-comment-state"
- },
- {
- "id": "markup-declaration-open-state",
- "original_id": "markup-declaration-open-state"
- },
- {
- "id": "comment-start-state",
- "original_id": "comment-start-state"
- },
- {
- "id": "comment-start-dash-state",
- "original_id": "comment-start-dash-state"
- },
- {
- "id": "comment-state",
- "original_id": "comment-state"
- },
- {
- "id": "comment-end-dash-state",
- "original_id": "comment-end-dash-state"
- },
- {
- "id": "comment-end-state",
- "original_id": "comment-end-state"
- },
- {
- "id": "comment-end-bang-state",
- "original_id": "comment-end-bang-state"
- },
- {
- "id": "doctype-state",
- "original_id": "doctype-state"
- },
- {
- "id": "before-doctype-name-state",
- "original_id": "before-doctype-name-state"
- },
- {
- "id": "doctype-name-state",
- "original_id": "doctype-name-state"
- },
- {
- "id": "after-doctype-name-state",
- "original_id": "after-doctype-name-state"
- },
- {
- "id": "after-doctype-public-keyword-state",
- "original_id": "after-doctype-public-keyword-state"
- },
- {
- "id": "before-doctype-public-identifier-state",
- "original_id": "before-doctype-public-identifier-state"
- },
- {
- "id": "doctype-public-identifier-double-quoted-state",
- "original_id": "doctype-public-identifier-(double-quoted)-state"
- },
- {
- "id": "doctype-public-identifier-single-quoted-state",
- "original_id": "doctype-public-identifier-(single-quoted)-state"
- },
- {
- "id": "after-doctype-public-identifier-state",
- "original_id": "after-doctype-public-identifier-state"
- },
- {
- "id": "between-doctype-public-and-system-identifiers-state",
- "original_id": "between-doctype-public-and-system-identifiers-state"
- },
- {
- "id": "after-doctype-system-keyword-state",
- "original_id": "after-doctype-system-keyword-state"
- },
- {
- "id": "before-doctype-system-identifier-state",
- "original_id": "before-doctype-system-identifier-state"
- },
- {
- "id": "doctype-system-identifier-double-quoted-state",
- "original_id": "doctype-system-identifier-(double-quoted)-state"
- },
- {
- "id": "doctype-system-identifier-single-quoted-state",
- "original_id": "doctype-system-identifier-(single-quoted)-state"
- },
- {
- "id": "after-doctype-system-identifier-state",
- "original_id": "after-doctype-system-identifier-state"
- },
- {
- "id": "bogus-doctype-state",
- "original_id": "bogus-doctype-state"
- },
- {
- "id": "cdata-section-state",
- "original_id": "cdata-section-state"
- },
- {
- "id": "tokenizing-character-references",
- "original_id": "tokenizing-character-references"
- }
- ]
- },
- {
- "id": "tree-construction",
- "original_id": "tree-construction",
- "children": [
- {
- "id": "creating-and-inserting-elements",
- "original_id": "creating-and-inserting-elements"
- },
- {
- "id": "closing-elements-that-have-implied-end-tags",
- "original_id": "closing-elements-that-have-implied-end-tags"
- },
- {
- "id": "foster-parenting",
- "original_id": "foster-parenting"
- },
- {
- "id": "parsing-main-inhtml",
- "original_id": "parsing-main-inhtml",
- "children": [
- {
- "id": "the-initial-insertion-mode",
- "original_id": "the-initial-insertion-mode"
- },
- {
- "id": "the-before-html-insertion-mode",
- "original_id": "the-before-html-insertion-mode"
- },
- {
- "id": "the-before-head-insertion-mode",
- "original_id": "the-before-head-insertion-mode"
- },
- {
- "id": "parsing-main-inhead",
- "original_id": "parsing-main-inhead"
- },
- {
- "id": "parsing-main-inheadnoscript",
- "original_id": "parsing-main-inheadnoscript"
- },
- {
- "id": "the-after-head-insertion-mode",
- "original_id": "the-after-head-insertion-mode"
- },
- {
- "id": "parsing-main-inbody",
- "original_id": "parsing-main-inbody"
- },
- {
- "id": "parsing-main-incdata",
- "original_id": "parsing-main-incdata"
- },
- {
- "id": "parsing-main-intable",
- "original_id": "parsing-main-intable"
- },
- {
- "id": "parsing-main-intabletext",
- "original_id": "parsing-main-intabletext"
- },
- {
- "id": "parsing-main-incaption",
- "original_id": "parsing-main-incaption"
- },
- {
- "id": "parsing-main-incolgroup",
- "original_id": "parsing-main-incolgroup"
- },
- {
- "id": "parsing-main-intbody",
- "original_id": "parsing-main-intbody"
- },
- {
- "id": "parsing-main-intr",
- "original_id": "parsing-main-intr"
- },
- {
- "id": "parsing-main-intd",
- "original_id": "parsing-main-intd"
- },
- {
- "id": "parsing-main-inselect",
- "original_id": "parsing-main-inselect"
- },
- {
- "id": "parsing-main-inselectintable",
- "original_id": "parsing-main-inselectintable"
- },
- {
- "id": "parsing-main-afterbody",
- "original_id": "parsing-main-afterbody"
- },
- {
- "id": "parsing-main-inframeset",
- "original_id": "parsing-main-inframeset"
- },
- {
- "id": "parsing-main-afterframeset",
- "original_id": "parsing-main-afterframeset"
- },
- {
- "id": "the-after-after-body-insertion-mode",
- "original_id": "the-after-after-body-insertion-mode"
- },
- {
- "id": "the-after-after-frameset-insertion-mode",
- "original_id": "the-after-after-frameset-insertion-mode"
- }
- ]
- },
- {
- "id": "parsing-main-inforeign",
- "original_id": "parsing-main-inforeign"
- }
- ]
- },
- {
- "id": "the-end",
- "original_id": "the-end"
- },
- {
- "id": "coercing-an-html-dom-into-an-infoset",
- "original_id": "coercing-an-html-dom-into-an-infoset"
- },
- {
- "id": "an-introduction-to-error-handling-and-strange-cases-in-the-parser",
- "original_id": "an-introduction-to-error-handling-and-strange-cases-in-the-parser",
- "children": [
- {
- "id": "misnested-tags-b-i-b-i",
- "original_id": "misnested-tags:-b-i-/b-/i"
- },
- {
- "id": "misnested-tags-b-p-b-p",
- "original_id": "misnested-tags:-b-p-/b-/p"
- },
- {
- "id": "unexpected-markup-in-tables",
- "original_id": "unexpected-markup-in-tables"
- },
- {
- "id": "scripts-that-modify-the-page-as-it-is-being-parsed",
- "original_id": "scripts-that-modify-the-page-as-it-is-being-parsed"
- },
- {
- "id": "the-execution-of-scripts-that-are-moving-across-multiple-documents",
- "original_id": "the-execution-of-scripts-that-are-moving-across-multiple-documents"
- },
- {
- "id": "unclosed-formatting-elements",
- "original_id": "unclosed-formatting-elements"
- }
- ]
- }
-] \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/html/syntax/writing/elements-0/contains.json b/tests/wpt/web-platform-tests/html/syntax/writing/elements-0/contains.json
deleted file mode 100644
index 39711a0a213..00000000000
--- a/tests/wpt/web-platform-tests/html/syntax/writing/elements-0/contains.json
+++ /dev/null
@@ -1,26 +0,0 @@
-[
- {
- "id": "start-tags",
- "original_id": "start-tags"
- },
- {
- "id": "end-tags",
- "original_id": "end-tags"
- },
- {
- "id": "attributes-0",
- "original_id": "attributes-0"
- },
- {
- "id": "optional-tags",
- "original_id": "optional-tags"
- },
- {
- "id": "element-restrictions",
- "original_id": "element-restrictions"
- },
- {
- "id": "cdata-rcdata-restrictions",
- "original_id": "cdata-rcdata-restrictions"
- }
-] \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/html/syntax/writing/text/contains.json b/tests/wpt/web-platform-tests/html/syntax/writing/text/contains.json
deleted file mode 100644
index 870ff58a342..00000000000
--- a/tests/wpt/web-platform-tests/html/syntax/writing/text/contains.json
+++ /dev/null
@@ -1,6 +0,0 @@
-[
- {
- "id": "newlines",
- "original_id": "newlines"
- }
-] \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/html/webappapis/scripting/event-loops/contains.json b/tests/wpt/web-platform-tests/html/webappapis/scripting/event-loops/contains.json
deleted file mode 100644
index 5d7e5e600e9..00000000000
--- a/tests/wpt/web-platform-tests/html/webappapis/scripting/event-loops/contains.json
+++ /dev/null
@@ -1,14 +0,0 @@
-[
- {
- "id": "definitions-1",
- "original_id": "definitions-1"
- },
- {
- "id": "processing-model-3",
- "original_id": "processing-model-3"
- },
- {
- "id": "generic-task-sources",
- "original_id": "generic-task-sources"
- }
-] \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/html/webappapis/scripting/events/contains.json b/tests/wpt/web-platform-tests/html/webappapis/scripting/events/contains.json
deleted file mode 100644
index 65f3062d2cd..00000000000
--- a/tests/wpt/web-platform-tests/html/webappapis/scripting/events/contains.json
+++ /dev/null
@@ -1,18 +0,0 @@
-[
- {
- "id": "event-handler-attributes",
- "original_id": "event-handler-attributes"
- },
- {
- "id": "event-handlers-on-elements-document-objects-and-window-objects",
- "original_id": "event-handlers-on-elements,-document-objects,-and-window-objects"
- },
- {
- "id": "event-firing",
- "original_id": "event-firing"
- },
- {
- "id": "events-and-the-window-object",
- "original_id": "events-and-the-window-object"
- }
-] \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/html/webappapis/scripting/processing-model-2/contains.json b/tests/wpt/web-platform-tests/html/webappapis/scripting/processing-model-2/contains.json
deleted file mode 100644
index b49029277f3..00000000000
--- a/tests/wpt/web-platform-tests/html/webappapis/scripting/processing-model-2/contains.json
+++ /dev/null
@@ -1,28 +0,0 @@
-[
- {
- "id": "definitions-0",
- "original_id": "definitions-0"
- },
- {
- "id": "calling-scripts",
- "original_id": "calling-scripts"
- },
- {
- "id": "creating-scripts",
- "original_id": "creating-scripts"
- },
- {
- "id": "killing-scripts",
- "original_id": "killing-scripts"
- },
- {
- "id": "runtime-script-errors",
- "original_id": "runtime-script-errors",
- "children": [
- {
- "id": "runtime-script-errors-in-documents",
- "original_id": "runtime-script-errors-in-documents"
- }
- ]
- }
-] \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-agent-formalism/canblock-dedicatedworker.html b/tests/wpt/web-platform-tests/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-agent-formalism/canblock-dedicatedworker.html
deleted file mode 100644
index 0d559999f3f..00000000000
--- a/tests/wpt/web-platform-tests/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-agent-formalism/canblock-dedicatedworker.html
+++ /dev/null
@@ -1,13 +0,0 @@
-<!DOCTYPE html>
-<meta charset="utf-8">
-<title>[[CanBlock]] in a dedicated worker agent</title>
-<link rel="author" title="Domenic Denicola" href="mailto:d@domenic.me">
-<link rel="help" href="https://html.spec.whatwg.org/multipage/#dedicated-worker-agent">
-<link rel="help" href="https://tc39.github.io/ecma262/#sec-agentcansuspend">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-
-<script>
-"use strict";
-fetch_tests_from_worker(new Worker("worker-that-requires-success.js"));
-</script>
diff --git a/tests/wpt/web-platform-tests/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-agent-formalism/canblock-serviceworker.https.html b/tests/wpt/web-platform-tests/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-agent-formalism/canblock-serviceworker.https.html
deleted file mode 100644
index 6bfd29e8c74..00000000000
--- a/tests/wpt/web-platform-tests/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-agent-formalism/canblock-serviceworker.https.html
+++ /dev/null
@@ -1,14 +0,0 @@
-<!DOCTYPE html>
-<meta charset="utf-8">
-<title>[[CanBlock]] in a service worker agent</title>
-<link rel="author" title="Domenic Denicola" href="mailto:d@domenic.me">
-<link rel="help" href="https://html.spec.whatwg.org/multipage/#service-worker-agent">
-<link rel="help" href="https://tc39.github.io/ecma262/#sec-agentcansuspend">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="/service-workers/service-worker/resources/test-helpers.sub.js"></script>
-
-<script>
-"use strict";
-service_worker_test("worker-that-requires-failure.js", "Service worker test setup");
-</script>
diff --git a/tests/wpt/web-platform-tests/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-agent-formalism/canblock-sharedworker.html b/tests/wpt/web-platform-tests/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-agent-formalism/canblock-sharedworker.html
deleted file mode 100644
index beb7c6467b2..00000000000
--- a/tests/wpt/web-platform-tests/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-agent-formalism/canblock-sharedworker.html
+++ /dev/null
@@ -1,13 +0,0 @@
-<!DOCTYPE html>
-<meta charset="utf-8">
-<title>[[CanBlock]] in a shared worker agent</title>
-<link rel="author" title="Domenic Denicola" href="mailto:d@domenic.me">
-<link rel="help" href="https://html.spec.whatwg.org/multipage/#shared-worker-agent">
-<link rel="help" href="https://tc39.github.io/ecma262/#sec-agentcansuspend">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-
-<script>
-"use strict";
-fetch_tests_from_worker(new SharedWorker("worker-that-requires-success.js"));
-</script>
diff --git a/tests/wpt/web-platform-tests/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-agent-formalism/canblock-window.html b/tests/wpt/web-platform-tests/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-agent-formalism/canblock-window.html
deleted file mode 100644
index 369ce77b0b6..00000000000
--- a/tests/wpt/web-platform-tests/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-agent-formalism/canblock-window.html
+++ /dev/null
@@ -1,21 +0,0 @@
-<!DOCTYPE html>
-<meta charset="utf-8">
-<title>[[CanBlock]] in a similar-origin window agent</title>
-<link rel="author" title="Domenic Denicola" href="mailto:d@domenic.me">
-<link rel="help" href="https://html.spec.whatwg.org/multipage/#similar-origin-window-agent">
-<link rel="help" href="https://tc39.github.io/ecma262/#sec-agentcansuspend">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-
-<script>
-"use strict";
-
-const sab = new SharedArrayBuffer(16);
-const ta = new Int32Array(sab);
-
-assert_throws(new TypeError(), () => {
- Atomics.wait(ta, 0, 0, 10);
-}, "Atomics.wait must throw in a window context");
-
-done();
-</script>
diff --git a/tests/wpt/web-platform-tests/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-agent-formalism/worker-that-requires-failure.js b/tests/wpt/web-platform-tests/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-agent-formalism/requires-failure.https.any.js
index 586c8ba3876..a890b350198 100644
--- a/tests/wpt/web-platform-tests/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-agent-formalism/worker-that-requires-failure.js
+++ b/tests/wpt/web-platform-tests/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-agent-formalism/requires-failure.https.any.js
@@ -1,5 +1,4 @@
-"use strict";
-importScripts("/resources/testharness.js");
+// META: global=!default,window,serviceworker
test(() => {
const sab = new SharedArrayBuffer(16);
@@ -9,5 +8,3 @@ test(() => {
Atomics.wait(ta, 0, 0, 10);
});
}, `[[CanBlock]] in a ${self.constructor.name}`);
-
-done();
diff --git a/tests/wpt/web-platform-tests/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-agent-formalism/worker-that-requires-success.js b/tests/wpt/web-platform-tests/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-agent-formalism/requires-success.any.js
index 2ed54143ee5..290b44353c8 100644
--- a/tests/wpt/web-platform-tests/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-agent-formalism/worker-that-requires-success.js
+++ b/tests/wpt/web-platform-tests/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-agent-formalism/requires-success.any.js
@@ -1,5 +1,4 @@
-"use strict";
-importScripts("/resources/testharness.js");
+// META: global=!default,dedicatedworker,sharedworker
test(() => {
const sab = new SharedArrayBuffer(16);
@@ -7,5 +6,3 @@ test(() => {
assert_equals(Atomics.wait(ta, 0, 0, 10), "timed-out");
}, `[[CanBlock]] in a ${self.constructor.name}`);
-
-done();
diff --git a/tests/wpt/web-platform-tests/html/webappapis/system-state-and-capabilities/the-navigator-object/contains.json b/tests/wpt/web-platform-tests/html/webappapis/system-state-and-capabilities/the-navigator-object/contains.json
deleted file mode 100644
index 441c24cec97..00000000000
--- a/tests/wpt/web-platform-tests/html/webappapis/system-state-and-capabilities/the-navigator-object/contains.json
+++ /dev/null
@@ -1,22 +0,0 @@
-[
- {
- "id": "client-identification",
- "original_id": "client-identification"
- },
- {
- "id": "custom-handlers",
- "original_id": "custom-handlers"
- },
- {
- "id": "security-and-privacy",
- "original_id": "security-and-privacy"
- },
- {
- "id": "sample-handler-impl",
- "original_id": "sample-handler-impl"
- },
- {
- "id": "manually-releasing-the-storage-mutex",
- "original_id": "manually-releasing-the-storage-mutex"
- }
-] \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/resource-timing/TAO-case-insensitive-null-opaque-origin.sub.html b/tests/wpt/web-platform-tests/resource-timing/TAO-case-insensitive-null-opaque-origin.sub.html
index 5b222cdf277..5d58f1c5466 100644
--- a/tests/wpt/web-platform-tests/resource-timing/TAO-case-insensitive-null-opaque-origin.sub.html
+++ b/tests/wpt/web-platform-tests/resource-timing/TAO-case-insensitive-null-opaque-origin.sub.html
@@ -34,7 +34,7 @@ let frame_content = "data:text/html;utf8,<body>" +
"};" +
"let observer = new PerformanceObserver(observe);" +
"observer.observe({ entryTypes: ['resource'] });" +
- "fetch(url);" +
+ "fetch(url).then(r => r.text());" +
"</" + "script></body>";
document.getElementById("frameContext").src = frame_content;
</script>
diff --git a/tests/wpt/web-platform-tests/resource-timing/TAO-null-opaque-origin.sub.html b/tests/wpt/web-platform-tests/resource-timing/TAO-null-opaque-origin.sub.html
index c78e5900677..0a457637c51 100644
--- a/tests/wpt/web-platform-tests/resource-timing/TAO-null-opaque-origin.sub.html
+++ b/tests/wpt/web-platform-tests/resource-timing/TAO-null-opaque-origin.sub.html
@@ -34,7 +34,7 @@ let frame_content = "data:text/html;utf8,<body>" +
"};" +
"let observer = new PerformanceObserver(observe);" +
"observer.observe({ entryTypes: ['resource'] });" +
- "fetch(url);" +
+ "fetch(url).then(r => r.text());" +
"</" + "script></body>";
document.getElementById("frameContext").src = frame_content;
</script>
diff --git a/tests/wpt/web-platform-tests/resource-timing/buffer-full-add-after-full-event.html b/tests/wpt/web-platform-tests/resource-timing/buffer-full-add-after-full-event.html
index 969446582e0..84d257e4f45 100644
--- a/tests/wpt/web-platform-tests/resource-timing/buffer-full-add-after-full-event.html
+++ b/tests/wpt/web-platform-tests/resource-timing/buffer-full-add-after-full-event.html
@@ -12,7 +12,7 @@
<script>
let eventFired = false;
let loadRandomResource = () => {
- return fetch(window.location.href + "?" + Math.random());
+ return fetch(window.location.href + "?" + Math.random()).then(r => r.text());
}
setup(() => {
diff --git a/tests/wpt/web-platform-tests/resource-timing/resources/iframe-TAO-crossorigin-port.sub.html b/tests/wpt/web-platform-tests/resource-timing/resources/iframe-TAO-crossorigin-port.sub.html
index 39f5d13054a..97d77fcc58a 100644
--- a/tests/wpt/web-platform-tests/resource-timing/resources/iframe-TAO-crossorigin-port.sub.html
+++ b/tests/wpt/web-platform-tests/resource-timing/resources/iframe-TAO-crossorigin-port.sub.html
@@ -23,7 +23,7 @@
}
let observer = new PerformanceObserver(observe);
observer.observe({ entryTypes: ["resource"] });
- fetch(url);
+ fetch(url).then(r => r.text());
</script>
</body>
</html>
diff --git a/tests/wpt/web-platform-tests/resources/chromium/webxr-test.js b/tests/wpt/web-platform-tests/resources/chromium/webxr-test.js
index e584ea37cb3..8257fbdc2b3 100644
--- a/tests/wpt/web-platform-tests/resources/chromium/webxr-test.js
+++ b/tests/wpt/web-platform-tests/resources/chromium/webxr-test.js
@@ -3,6 +3,19 @@
// This polyfill library implements the WebXR Test API as specified here:
// https://github.com/immersive-web/webxr-test-api
+
+let default_standing = new gfx.mojom.Transform();
+default_standing.matrix = [1, 0, 0, 0,
+ 0, 1, 0, 0,
+ 0, 0, 1, 0,
+ 0, 1.65, 0, 1];
+const default_stage_parameters = {
+ standingTransform: default_standing,
+ sizeX: 0,
+ sizeZ: 0,
+ bounds: null
+};
+
class ChromeXRTest {
constructor() {
this.mockVRService_ = new MockVRService(mojo.frameInterfaces);
@@ -69,6 +82,17 @@ class MockVRService {
this.runtimes_ = [];
}
+ removeRuntime(device) {
+ let index = this.runtimes_.indexOf(device);
+ if (index >= 0) {
+ this.runtimes_.splice(index, 1);
+ if (this.client_) {
+ console.error("Notifying client");
+ this.client_.onDeviceChanged();
+ }
+ }
+ }
+
// VRService implementation.
requestDevice() {
if (this.runtimes_.length > 0) {
@@ -147,6 +171,8 @@ class MockRuntime {
this.pose_ = null;
this.next_frame_id_ = 0;
+ this.bounds_ = null;
+ this.send_pose_reset_ = false;
this.service_ = service;
@@ -168,10 +194,27 @@ class MockRuntime {
this.setViewerOrigin(fakeDeviceInit.viewerOrigin);
}
+ if (fakeDeviceInit.localToFloorLevelTransform != null) {
+ this.setLocalToFloorLevelTransform(fakeDeviceInit.localToFloorLevelTransform);
+ }
+
+ // This appropriately handles if the coordinates are null
+ this.setBoundsGeometry(fakeDeviceInit.boundsCoordinates);
+
this.setViews(fakeDeviceInit.views);
}
// Test API methods.
+ disconnect() {
+ this.service_.removeRuntime(this);
+ this.presentation_provider_.Close();
+ if (this.sessionClient_.ptr.isBound()) {
+ this.sessionClient_.ptr.reset();
+ }
+
+ return Promise.resolve();
+ }
+
setViews(views) {
if (views) {
let changed = false;
@@ -210,7 +253,91 @@ class MockRuntime {
this.pose_ = null;
}
+ simulateVisibilityChange(visibilityState) {
+ // TODO(https://crbug.com/982099): Chrome currently does not have a way for
+ // devices to bubble up any form of visibilityChange.
+ }
+
+ setBoundsGeometry(bounds) {
+ if (bounds == null) {
+ this.bounds_ = null;
+ } else if (bounds.length < 3) {
+ throw new Error("Bounds must have a length of at least 3");
+ } else {
+ this.bounds_ = bounds;
+ }
+
+ // We can only set bounds if we have stageParameters set; otherwise, we
+ // don't know the transform from local space to bounds space.
+ // We'll cache the bounds so that they can be set in the future if the
+ // floorLevel transform is set, but we won't update them just yet.
+ if (this.displayInfo_.stageParameters) {
+ this.displayInfo_.stageParameters.bounds = this.bounds_;
+
+ if (this.sessionClient_.ptr.isBound()) {
+ this.sessionClient_.onChanged(this.displayInfo_);
+ }
+ }
+ }
+
+ setLocalToFloorLevelTransform(transform) {
+ if (!this.displayInfo_.stageParameters) {
+ this.displayInfo_.stageParameters = default_stage_parameters;
+ this.displayInfo_.stageParameters.bounds = this.bounds_;
+ }
+
+ this.displayInfo_.stageParameters.standingTransform = new gfx.mojom.Transform();
+ this.displayInfo_.stageParameters.standingTransform.matrix =
+ this.getMatrixFromTransform(transform);
+
+ if (this.sessionClient_.ptr.isBound()) {
+ this.sessionClient_.onChanged(this.displayInfo_);
+ }
+ }
+
+ clearLocalToFloorLevelTransform() {
+ if (this.displayInfo_.stageParameters) {
+ this.displayInfo_.stageParameters = null;
+
+ if (this.sessionClient_.ptr.isBound()) {
+ this.sessionClient_.onChanged(this.displayInfo_);
+ }
+ }
+ }
+
+ simulateResetPose() {
+ this.send_pose_reset_ = true;
+ }
+
// Helper methods
+ getMatrixFromTransform(transform) {
+ let x = transform.orientation[0];
+ let y = transform.orientation[1];
+ let z = transform.orientation[2];
+ let w = transform.orientation[3];
+
+ let m11 = 1.0 - 2.0 * (y * y + z * z);
+ let m21 = 2.0 * (x * y + z * w);
+ let m31 = 2.0 * (x * z - y * w);
+
+ let m12 = 2.0 * (x * y - z * w);
+ let m22 = 1.0 - 2.0 * (x * x + z * z);
+ let m32 = 2.0 * (y * z + x * w);
+
+ let m13 = 2.0 * (x * z + y * w);
+ let m23 = 2.0 * (y * z - x * w);
+ let m33 = 1.0 - 2.0 * (x * x + y * y);
+
+ let m14 = transform.position[0];
+ let m24 = transform.position[1];
+ let m34 = transform.position[2];
+
+ // Column-major linearized order is expected.
+ return [m11, m21, m31, 0,
+ m12, m22, m32, 0,
+ m13, m23, m33, 0,
+ m14, m24, m34, 1];
+ }
getNonImmersiveDisplayInfo() {
let displayInfo = this.getImmersiveDisplayInfo();
@@ -297,6 +424,8 @@ class MockRuntime {
getFrameData() {
if (this.pose_) {
this.pose_.poseIndex++;
+ this.pose_.poseReset = this.send_pose_reset_;
+ this.send_pose_reset_ = false;
}
// Convert current document time to monotonic time.
@@ -429,6 +558,11 @@ class MockXRPresentationProvider {
this.submitFrameClient_.onSubmitFrameTransferred(true);
this.submitFrameClient_.onSubmitFrameRendered();
}
+
+ // Utility methods
+ Close() {
+ this.binding_.close();
+ }
}
// This is a temporary workaround for the fact that spinning up webxr before
diff --git a/tests/wpt/web-platform-tests/std-toast/actions.html b/tests/wpt/web-platform-tests/std-toast/actions.html
new file mode 100644
index 00000000000..018ce21128b
--- /dev/null
+++ b/tests/wpt/web-platform-tests/std-toast/actions.html
@@ -0,0 +1,105 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Toast: action tests</title>
+
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+
+<main></main>
+
+<script type="module">
+import { testActionToast, testToastElement, assertActionButtonOnToast } from './resources/helpers.js';
+import { showToast } from 'std:elements/toast';
+
+testActionToast((toast) => {
+ assert_equals(toast.action.textContent, 'action');
+}, 'the action element gets properly captured with this.action');
+
+testActionToast((toast) => {
+ toast.innerHTML = `<button slot='action'>new action</button>`
+ assert_equals(toast.action.textContent, 'new action');
+}, 'changing the action button changes this.action');
+
+testToastElement((toast) => {
+ assert_equals(toast.action, null);
+}, 'the action property of a toast without an action is null');
+
+testToastElement((toast) => {
+ toast.innerHTML = `<button slot="action" id="first">first</button>
+ <button slot="action" id="second">second</button>`;
+
+ assert_equals(toast.action, toast.querySelector('#first'));
+}, 'toast action returns the first item with the action slot');
+
+test(() => {
+ const toast = showToast('Message', {action: 'action'});
+ const actionButton = toast.querySelector('button');
+
+ assertActionButtonOnToast(actionButton, toast);
+}, 'passing an action via showToast creates a button');
+
+test(() => {
+ const actionMarkup = '<b>strong text</b>';
+ const toast = showToast('Message', {action: actionMarkup});
+ const actionButton = toast.querySelector('button');
+
+ assert_equals(actionButton.textContent, actionMarkup);
+ assert_equals(toast.querySelector('b'), null);
+}, 'passing markup to the action option represents as text');
+
+test(() => {
+ const toast = document.createElement('std-toast');
+ toast.textContent = 'Message';
+ toast.show({action: 'action'});
+ const actionButton = toast.querySelector('button');
+
+ assert_equals(actionButton, null);
+}, 'passing action option to show does not create a button');
+
+test(() => {
+ const toast = showToast('Message', {action: null});
+ const actionButton = toast.querySelector('button');
+
+ assertActionButtonOnToast(actionButton, toast);
+ assert_equals(actionButton.textContent, 'null');
+}, 'passing non-string (null) as action option stringifies it and creates an action button');
+
+test(() => {
+ const toast = showToast('Message', {action: false});
+ const actionButton = toast.querySelector('button');
+
+ assertActionButtonOnToast(actionButton, toast);
+ assert_equals(actionButton.textContent, 'false');
+}, 'passing non-string (false) as action option stringifies it and creates an action button');
+
+test(() => {
+ const toast = showToast('Message', {action: 0});
+ const actionButton = toast.querySelector('button');
+
+ assertActionButtonOnToast(actionButton, toast);
+ assert_equals(actionButton.textContent, '0');
+}, 'passing non-string (0) as action option stringifies it and creates an action button');
+
+test(() => {
+ const toast = showToast('Message', {action: 1});
+ const actionButton = toast.querySelector('button');
+
+ assertActionButtonOnToast(actionButton, toast);
+ assert_equals(actionButton.textContent, '1');
+}, 'passing non-string (1) as action option stringifies it and creates an action button');
+
+test(() => {
+ const toast = showToast('Message', {action: {field: 'value'}});
+ const actionButton = toast.querySelector('button');
+
+ assertActionButtonOnToast(actionButton, toast);
+ assert_equals(actionButton.textContent, '[object Object]');
+}, 'passing non-string ({field: value}) as action option stringifies it and creates an action button');
+
+test(() => {
+ const toast = showToast('Message', {});
+ const actionButton = toast.querySelector('button');
+
+ assert_equals(actionButton, null);
+}, 'passing non-string (undefined) as action option does not create an action button');
+</script>
diff --git a/tests/wpt/web-platform-tests/std-toast/attributes.html b/tests/wpt/web-platform-tests/std-toast/attributes.html
index 2aef41aea61..58a515dfc98 100644
--- a/tests/wpt/web-platform-tests/std-toast/attributes.html
+++ b/tests/wpt/web-platform-tests/std-toast/attributes.html
@@ -115,7 +115,7 @@ testToastElementAsync((t, toast) => {
}, 'toggling open attribute does not start timeout');
testToastElement((toast) => {
- const permitted_properties = ['constructor', 'show', 'hide', 'toggle', 'open'];
+ const permitted_properties = ['constructor', 'show', 'hide', 'toggle', 'open', 'action'];
assert_array_equals(permitted_properties.sort(), Object.getOwnPropertyNames(toast.__proto__).sort());
}, 'toast only exposes certain properties');
</script>
diff --git a/tests/wpt/web-platform-tests/std-toast/events-open.html b/tests/wpt/web-platform-tests/std-toast/events-open.html
index 5442b36d261..a49414d2fce 100644
--- a/tests/wpt/web-platform-tests/std-toast/events-open.html
+++ b/tests/wpt/web-platform-tests/std-toast/events-open.html
@@ -1,6 +1,6 @@
<!DOCTYPE html>
<meta charset="utf-8">
-<title>Toast: Event tests</title>
+<title>Toast: event (open) tests</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
@@ -13,9 +13,7 @@ import { testToastElement, EventCollector } from './resources/helpers.js';
testToastElement((toast) => {
const counter = new EventCollector();
- toast.addEventListener('show', (e) => {
- counter.getCallback()(e);
- });
+ toast.addEventListener('show', counter.getCallback());
toast.open = true;
assert_equals(counter.getCount(), 1);
diff --git a/tests/wpt/web-platform-tests/std-toast/events-showhide.html b/tests/wpt/web-platform-tests/std-toast/events-showhide.html
index 73f1df4ae55..547f742f713 100644
--- a/tests/wpt/web-platform-tests/std-toast/events-showhide.html
+++ b/tests/wpt/web-platform-tests/std-toast/events-showhide.html
@@ -1,6 +1,6 @@
<!DOCTYPE html>
<meta charset="utf-8">
-<title>Toast: Event tests</title>
+<title>Toast: event (show/hide) tests</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
diff --git a/tests/wpt/web-platform-tests/std-toast/options.html b/tests/wpt/web-platform-tests/std-toast/options.html
index 9cea97146bf..6d4a462d3a9 100644
--- a/tests/wpt/web-platform-tests/std-toast/options.html
+++ b/tests/wpt/web-platform-tests/std-toast/options.html
@@ -1,7 +1,7 @@
<!DOCTYPE html>
<meta charset="utf-8">
<meta name="timeout" content="long">
-<title>Toast: showToast tests</title>
+<title>Toast: option tests</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
diff --git a/tests/wpt/web-platform-tests/std-toast/resources/helpers.js b/tests/wpt/web-platform-tests/std-toast/resources/helpers.js
index 41b7672ab1b..52d740c144a 100644
--- a/tests/wpt/web-platform-tests/std-toast/resources/helpers.js
+++ b/tests/wpt/web-platform-tests/std-toast/resources/helpers.js
@@ -53,6 +53,12 @@ export const assertToastNotShown = (toast) => {
assert_false(toast.open);
};
+export const assertActionButtonOnToast = (action, toast) => {
+ assert_equals(toast.action, action);
+ assert_equals(action.getAttribute('slot'), 'action');
+ assert_equals(action, toast.querySelector('button'));
+};
+
export class EventCollector {
events = [];
diff --git a/tests/wpt/web-platform-tests/tools/wptserve/wptserve/constants.py b/tests/wpt/web-platform-tests/tools/wptserve/wptserve/constants.py
index e248280ef36..357a2e6d348 100644
--- a/tests/wpt/web-platform-tests/tools/wptserve/wptserve/constants.py
+++ b/tests/wpt/web-platform-tests/tools/wptserve/wptserve/constants.py
@@ -20,7 +20,7 @@ content_types = utils.invert_dict({
"text/css": ["css"],
"text/event-stream": ["event_stream"],
"text/html": ["htm", "html"],
- "text/javascript": ["js"],
+ "text/javascript": ["js", "mjs"],
"text/plain": ["txt", "md"],
"text/vtt": ["vtt"],
"video/mp4": ["mp4", "m4v"],
diff --git a/tests/wpt/web-platform-tests/user-timing/measure-with-dict.html b/tests/wpt/web-platform-tests/user-timing/measure-with-dict.html
index cdcc0ff1a36..8ba7b9fe67a 100644
--- a/tests/wpt/web-platform-tests/user-timing/measure-with-dict.html
+++ b/tests/wpt/web-platform-tests/user-timing/measure-with-dict.html
@@ -96,10 +96,16 @@
test(function() {
this.add_cleanup(cleanupPerformanceTimeline);
assert_throws(new TypeError(), function() {
- self.performance.measure("wrongUsage2", {'start': 2}, 12);
+ self.performance.measure("optionsAndNumberEnd", {'start': 2}, 12);
}, "measure should throw a TypeError when passed an options object and an end time");
assert_throws(new TypeError(), function() {
- self.performance.measure("wrongUsage3", {'start': 2}, 'mark1');
+ self.performance.measure("optionsAndMarkEnd", {'start': 2}, 'mark1');
}, "measure should throw a TypeError when passed an options object and an end mark");
+ assert_throws(new TypeError(), function() {
+ self.performance.measure("negativeStartInOptions", {'start': -1});
+ }, "measure cannot have a negative time stamp.");
+ assert_throws(new TypeError(), function() {
+ self.performance.measure("negativeEndInOptions", {'end': -1});
+ }, "measure cannot have a negative time stamp for end.");
}, "measure should throw a TypeError when passed an invalid argument combination");
</script>
diff --git a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audionode-interface/audionode-connect-method-chaining.html b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audionode-interface/audionode-connect-method-chaining.html
index 5703a2a6c7f..2df5d03ac07 100644
--- a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audionode-interface/audionode-connect-method-chaining.html
+++ b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audionode-interface/audionode-connect-method-chaining.html
@@ -133,7 +133,7 @@
// Task: verify if the method chaining actually works.
audit.define('verification', (task, should) => {
// We pick the lowest sample rate allowed to run the test efficiently.
- let context = new OfflineAudioContext(1, 128, 3000);
+ let context = new OfflineAudioContext(1, 128, 8000);
let constantBuffer = createConstantBuffer(context, 1, 1.0);
diff --git a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-mediastreamaudiosourcenode-interface/mediastreamaudiosourcenode-ctor.html b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-mediastreamaudiosourcenode-interface/mediastreamaudiosourcenode-ctor.html
new file mode 100644
index 00000000000..fea042ca530
--- /dev/null
+++ b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-mediastreamaudiosourcenode-interface/mediastreamaudiosourcenode-ctor.html
@@ -0,0 +1,73 @@
+<!DOCTYPE html>
+
+<html class="a">
+ <head>
+ <title>MediaStreamAudioSourceNode</title>
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ </head>
+ <body class="a">
+ <div id="log"></div>
+ <script>
+ setup({explicit_done: true});
+ // Wait until the DOM is ready to be able to get a reference to the canvas
+ // element.
+ window.addEventListener("load", function() {
+ const ac = new AudioContext();
+ const emptyStream = new MediaStream();
+
+ test(function() {
+ assert_throws(
+ "InvalidStateError",
+ function() {
+ ac.createMediaStreamSource(emptyStream);
+ },
+ `A MediaStreamAudioSourceNode can only be constructed via the factory
+ method with a MediaStream that has at least one track of kind "audio"`
+ );
+ }, "MediaStreamAudioSourceNode created with factory method and MediaStream with no tracks");
+
+ test(function() {
+ assert_throws(
+ "InvalidStateError",
+ function() {
+ new MediaStreamAudioSourceNode(ac, { mediaStream: emptyStream });
+ },
+ `A MediaStreamAudioSourceNode can only be constructed via the constructor
+ with a MediaStream that has at least one track of kind "audio"`
+ );
+ }, "MediaStreamAudioSourceNode created with constructor and MediaStream with no tracks");
+
+ const canvas = document.querySelector("canvas");
+ const ctx = canvas.getContext("2d");
+ const videoOnlyStream = canvas.captureStream();
+
+ test(function() {
+ assert_throws(
+ "InvalidStateError",
+ function() {
+ ac.createMediaStreamSource(videoOnlyStream);
+ },
+ `A MediaStreamAudioSourceNode can only be constructed via the factory with a
+ MediaStream that has at least one track of kind "audio"`
+ );
+ }, `MediaStreamAudioSourceNode created with the factory method and MediaStream with only a video track`);
+
+ test(function() {
+ assert_throws(
+ "InvalidStateError",
+ function() {
+ new MediaStreamAudioSourceNode(ac, {
+ mediaStream: videoOnlyStream,
+ });
+ },
+ `A MediaStreamAudioSourceNode can only be constructed via the factory with a
+ MediaStream that has at least one track of kind "audio"`
+ );
+ }, `MediaStreamAudioSourceNode created with constructor and MediaStream with only a video track`);
+ done();
+ });
+ </script>
+ </body>
+ <canvas></canvas>
+</html>
diff --git a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-mediastreamaudiosourcenode-interface/mediastreamaudiosourcenode-routing.html b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-mediastreamaudiosourcenode-interface/mediastreamaudiosourcenode-routing.html
new file mode 100644
index 00000000000..b61c318ff00
--- /dev/null
+++ b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-mediastreamaudiosourcenode-interface/mediastreamaudiosourcenode-routing.html
@@ -0,0 +1,135 @@
+<!DOCTYPE html>
+
+<html class="a">
+ <head>
+ <title>MediaStreamAudioSourceNode</title>
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ </head>
+ <body class="a">
+ <div id="log"></div>
+ <script>
+ function binIndexForFrequency(frequency, analyser) {
+ return (
+ 1 +
+ Math.round(
+ (frequency * analyser.fftSize) / analyser.context.sampleRate
+ )
+ );
+ }
+
+ const t = async_test(
+ "MediaStreamAudioSourceNode captures the right track."
+ );
+ const ac = new AudioContext();
+ // Test that the right track is captured. Set up a MediaStream that has two
+ // tracks, one with a tone at 100Hz and one with a tone at 1000Hz.
+ const dest0 = ac.createMediaStreamDestination();
+ const dest1 = ac.createMediaStreamDestination();
+ const osc0 = ac.createOscillator();
+ const osc1 = ac.createOscillator();
+ osc0.frequency.value = 100;
+ osc1.frequency.value = 1000;
+ osc0.connect(dest0);
+ osc1.connect(dest1);
+ osc0.start(0);
+ osc1.start(0);
+ const track0 = dest0.stream.getAudioTracks()[0];
+ const track0id = track0.id;
+ const track1 = dest1.stream.getAudioTracks()[0];
+ const track1id = track1.id;
+
+ let ids = [track0id, track1id];
+ ids.sort();
+ let targetFrequency;
+ let otherFrequency;
+ if (ids[0] == track0id) {
+ targetFrequency = 100;
+ otherFrequency = 1000;
+ } else {
+ targetFrequency = 1000;
+ otherFrequency = 100;
+ }
+
+ let twoTrackMediaStream = new MediaStream();
+ twoTrackMediaStream.addTrack(track0);
+ twoTrackMediaStream.addTrack(track1);
+
+ const twoTrackSource = ac.createMediaStreamSource(twoTrackMediaStream);
+ const analyser = ac.createAnalyser();
+
+ twoTrackSource.connect(analyser);
+
+ const indexToCheckForHighEnergy = binIndexForFrequency(
+ targetFrequency,
+ analyser
+ );
+ const indexToCheckForLowEnergy = binIndexForFrequency(
+ otherFrequency,
+ analyser
+ );
+ let frequencyData = new Float32Array(1024);
+ let checkCount = 0;
+ let numberOfRemovals = 0;
+ let stopped = false;
+ function analyse() {
+ analyser.getFloatFrequencyData(frequencyData);
+ // there should be high energy in the right bin, higher than 40dbfs because
+ // it's supposed to be a sine wave at 0dbfs
+ if (frequencyData[indexToCheckForHighEnergy] > -40 && !stopped) {
+ assert_true(true, "Correct track routed to the AudioContext.");
+ checkCount++;
+ }
+ if (stopped && frequencyData[indexToCheckForHighEnergy] < -40) {
+ assert_true(
+ true,
+ `After stopping the track, low energy is found in the
+ same bin`
+ );
+ checkCount++;
+ }
+ // Don't assert(false) immediately here if the bin is still higher than
+ // -40db the analyzer node has a window and it's expecte that it takes some
+ // time for the volume of this bin to decrease. Similarly, -50 may seem
+ // quite high but is also a product of windowing.
+ if (frequencyData[indexToCheckForLowEnergy] < -50) {
+ assert_true(true, "Correct track routed to the AudioContext.");
+ } else {
+ assert_true(
+ false,
+ "Other track seem to be routed to the AudioContext?"
+ );
+ }
+ if (checkCount > 5 && checkCount < 20) {
+ twoTrackMediaStream.getAudioTracks().forEach(track => {
+ if (track.id == ids[0]) {
+ numberOfRemovals++;
+ window.removedTrack = track;
+ twoTrackMediaStream.removeTrack(track);
+ }
+ });
+ assert_true(
+ numberOfRemovals == 1,
+ `The mediastreamtrack can only be
+ removed once from the mediastream`
+ );
+ } else if (checkCount >= 20 && checkCount < 30) {
+ window.removedTrack.stop();
+ stopped = true;
+ } else if (checkCount >= 30) {
+ assert_true(
+ numberOfRemovals == 1,
+ `After removing the track from the
+ mediastream, it's still routed to the graph.`
+ );
+ // After some time, consider that it worked.
+ t.done();
+ return;
+ }
+
+ t.step_timeout(analyse, 100);
+ }
+ t.step_timeout(analyse, 100);
+ </script>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/webdriver/tests/get_current_url/get.py b/tests/wpt/web-platform-tests/webdriver/tests/get_current_url/get.py
index 0c1917cff35..39c28c61216 100644
--- a/tests/wpt/web-platform-tests/webdriver/tests/get_current_url/get.py
+++ b/tests/wpt/web-platform-tests/webdriver/tests/get_current_url/get.py
@@ -52,6 +52,8 @@ def test_get_current_url_file_protocol(session, server_config):
session.url = url
response = get_current_url(session)
+ if response.status == 200 and response.body['value'].endswith('/'):
+ url += '/'
assert_success(response, url)
diff --git a/tests/wpt/web-platform-tests/webdriver/tests/set_window_rect/set.py b/tests/wpt/web-platform-tests/webdriver/tests/set_window_rect/set.py
index 81432f29377..adf265127c9 100644
--- a/tests/wpt/web-platform-tests/webdriver/tests/set_window_rect/set.py
+++ b/tests/wpt/web-platform-tests/webdriver/tests/set_window_rect/set.py
@@ -75,15 +75,15 @@ def test_out_of_bounds(session, rect):
def test_width_height_floats(session):
- response = set_window_rect(session, {"width": 500.5, "height": 420})
+ response = set_window_rect(session, {"width": 750.5, "height": 700})
value = assert_success(response)
- assert value["width"] == 500
- assert value["height"] == 420
+ assert value["width"] == 750
+ assert value["height"] == 700
- response = set_window_rect(session, {"width": 500, "height": 450.5})
+ response = set_window_rect(session, {"width": 750, "height": 700.5})
value = assert_success(response)
- assert value["width"] == 500
- assert value["height"] == 450
+ assert value["width"] == 750
+ assert value["height"] == 700
def test_x_y_floats(session):
@@ -147,10 +147,10 @@ def test_restore_from_minimized(session):
session.window.minimize()
assert document_hidden(session)
- response = set_window_rect(session, {"width": 450, "height": 450})
+ response = set_window_rect(session, {"width": 750, "height": 700})
value = assert_success(response)
- assert value["width"] == 450
- assert value["height"] == 450
+ assert value["width"] == 750
+ assert value["height"] == 700
assert not document_hidden(session)
@@ -160,10 +160,10 @@ def test_restore_from_maximized(session):
session.window.maximize()
assert session.window.size != original_size
- response = set_window_rect(session, {"width": 400, "height": 400})
+ response = set_window_rect(session, {"width": 750, "height": 700})
value = assert_success(response)
- assert value["width"] == 400
- assert value["height"] == 400
+ assert value["width"] == 750
+ assert value["height"] == 700
def test_height_width(session):
diff --git a/tests/wpt/web-platform-tests/webrtc/RTCDataChannel-bufferedAmount.html b/tests/wpt/web-platform-tests/webrtc/RTCDataChannel-bufferedAmount.html
index b982b29b3b9..89f6b1b4d7a 100644
--- a/tests/wpt/web-platform-tests/webrtc/RTCDataChannel-bufferedAmount.html
+++ b/tests/wpt/web-platform-tests/webrtc/RTCDataChannel-bufferedAmount.html
@@ -1,5 +1,6 @@
<!doctype html>
<meta charset=utf-8>
+<meta name="timeout" content="long">
<title>RTCDataChannel.prototype.bufferedAmount</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
diff --git a/tests/wpt/web-platform-tests/webxr/events_referenceSpace_reset.https.html b/tests/wpt/web-platform-tests/webxr/events_referenceSpace_reset.https.html
new file mode 100644
index 00000000000..f15ffc52a88
--- /dev/null
+++ b/tests/wpt/web-platform-tests/webxr/events_referenceSpace_reset.https.html
@@ -0,0 +1,43 @@
+<!DOCTYPE html>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src="resources/webxr_util.js"></script>
+<script src="resources/webxr_test_constants.js"></script>
+<canvas id="webgl-canvas"></canvas>
+
+<script>
+let immersiveTestName = "XRSession resetpose from a device properly fires off " +
+ "the right events for immersive sessions";
+let nonImmersiveTestName = "XRSession resetpose from a device properly fires off " +
+ "the right events for non-immersive sessions";
+
+let watcherDone = new Event("watcherdone");
+
+let fakeDeviceInitParams = TRACKED_IMMERSIVE_DEVICE;
+
+let testFunction = function(session, fakeDeviceController, t) {
+ let resetPromise = session.requestReferenceSpace('local')
+ .then((refSpace) => {
+ let eventWatcher = new EventWatcher(
+ t, refSpace, ["reset", "watcherdone"]);
+ refSpace.addEventListener("reset", (event) => {
+ assert_equals(event.referenceSpace, refSpace);
+ refSpace.dispatchEvent(watcherDone);
+ }, false);
+ return eventWatcher.wait_for(["reset", "watcherdone"]);
+ });
+
+ fakeDeviceController.simulateResetPose();
+
+ // The triggered resetPose event should arrive after the next Animation Frame
+ session.requestAnimationFrame(() => {});
+
+ return resetPromise;
+};
+
+xr_session_promise_test(
+ immersiveTestName, testFunction, fakeDeviceInitParams, 'immersive-vr');
+xr_session_promise_test(
+ nonImmersiveTestName, testFunction, fakeDeviceInitParams, 'inline');
+
+</script>
diff --git a/tests/wpt/web-platform-tests/webxr/resources/webxr_test_constants.js b/tests/wpt/web-platform-tests/webxr/resources/webxr_test_constants.js
index a846f1da75f..aed6ff9c809 100644
--- a/tests/wpt/web-platform-tests/webxr/resources/webxr_test_constants.js
+++ b/tests/wpt/web-platform-tests/webxr/resources/webxr_test_constants.js
@@ -37,16 +37,25 @@ const VALID_POINTER_OFFSET = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1];
const VALID_GRIP_WITH_POINTER_OFFSET =
[1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 4, 3, 3, 1];
-const VALID_STAGE_TRANSFORM =
- [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1.0, 1.65, -1.0, 1];
+// A Valid Local to floor matrix/transform for when we don't care about specific
+// values. Note that these should be identical, just different representations.
+const VALID_LOCAL_TO_FLOOR_MATRIX = [1, 0, 0, 0,
+ 0, 1, 0, 0,
+ 0, 0, 1, 0,
+ 1, 1.65, -1, 1];
+
+const VALID_LOCAL_TO_FLOOR_TRANSFORM = {
+ position: [1.0, 1.65, -1.0],
+ orientation: [0, 0, 0, 1]
+};
const VALID_BOUNDS = [
- { x: 3.0, y: 0, z: -2.0 },
- { x: 3.5, y: 0, z: 0.0 },
- { x: 3.0, y: 0, z: 2.0 },
- { x: -3.0, y: 0, z: 2.0 },
- { x: -3.5, y: 0, z: 0.0 },
- { x: -3.0, y: 0, z: -2.0 }
+ { x: 3.0, z: -2.0 },
+ { x: 3.5, z: 0.0 },
+ { x: 3.0, z: 2.0 },
+ { x: -3.0, z: 2.0 },
+ { x: -3.5, z: 0.0 },
+ { x: -3.0, z: -2.0 }
];
const VALID_RESOLUTION = {
diff --git a/tests/wpt/web-platform-tests/webxr/xrBoundedReferenceSpace_updates.https.html b/tests/wpt/web-platform-tests/webxr/xrBoundedReferenceSpace_updates.https.html
new file mode 100644
index 00000000000..cf1047c8abc
--- /dev/null
+++ b/tests/wpt/web-platform-tests/webxr/xrBoundedReferenceSpace_updates.https.html
@@ -0,0 +1,63 @@
+<!DOCTYPE html>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src="resources/webxr_util.js"></script>
+<script src="resources/webxr_test_constants.js"></script>
+<script src="resources/xr-test-asserts.js"></script>
+<canvas></canvas>
+
+<script>
+let testName =
+ "'XRBoundedReferenceSpace updates properly when the changes are applied";
+
+let fakeDeviceInitParams = {
+ supportsImmersive: true,
+ views: VALID_VIEWS,
+ viewerOrigin: IDENTITY_TRANSFORM,
+ localToFloorLevelTransform: VALID_LOCAL_TO_FLOOR_TRANSFORM
+};
+
+let testFunction = function(session, fakeDeviceController, t) {
+
+ return new Promise((resolve, reject) => {
+ session.requestReferenceSpace('bounded-floor')
+ .then((referenceSpace) => {
+ t.step(() => {
+ assert_unreached("Should not be able to get a bounded space until bounds set");
+ });
+ }).catch((err) => {
+ t.step(() => {
+ assert_equals(err.name, "NotSupportedError");
+ });
+
+ function onFrame(time, xrFrame) {
+ // After setting the bounds explicitly, we should be able to get a
+ // reference space
+ session.requestReferenceSpace('bounded-floor')
+ .then((referenceSpace) => {
+ t.step(() => {
+ assert_equals(referenceSpace.boundsGeometry.length, VALID_BOUNDS.length);
+ for (i = 0; i < VALID_BOUNDS.length; ++i) {
+ let valid_point = VALID_BOUNDS[i];
+ let bounds_point = referenceSpace.boundsGeometry[i];
+ assert_equals(valid_point.x, bounds_point.x);
+ assert_equals(bounds_point.y, 0.0);
+ assert_equals(valid_point.z, bounds_point.z);
+ assert_equals(bounds_point.w, 1.0);
+ }
+ });
+
+ resolve();
+ });
+ }
+
+ // Now set the bounds explicitly and check again on the next frame.
+ fakeDeviceController.setBoundsGeometry(VALID_BOUNDS);
+ session.requestAnimationFrame(onFrame);
+ });
+ });
+};
+
+xr_session_promise_test(testName, testFunction, fakeDeviceInitParams, 'immersive-vr');
+
+</script>
diff --git a/tests/wpt/web-platform-tests/webxr/xrDevice_disconnect_ends.https.html b/tests/wpt/web-platform-tests/webxr/xrDevice_disconnect_ends.https.html
new file mode 100644
index 00000000000..ace64e8f412
--- /dev/null
+++ b/tests/wpt/web-platform-tests/webxr/xrDevice_disconnect_ends.https.html
@@ -0,0 +1,39 @@
+<!DOCTYPE html>
+<body>
+ <script src=/resources/testharness.js></script>
+ <script src=/resources/testharnessreport.js></script>
+ <script src="resources/webxr_util.js"></script>
+ <script src="resources/webxr_test_constants.js"></script>
+ <canvas></canvas>
+
+ <script>
+ const testName = "Immersive session ends when device is disconnected";
+ let watcherDone = new Event("watcherdone");
+ const fakeDeviceInitParams = TRACKED_IMMERSIVE_DEVICE;
+
+ let testFunction = function(session, testDeviceController, t) {
+ let sessionWatcher = new EventWatcher(t, session, ["end", "watcherdone"]);
+ let sessionPromise = sessionWatcher.wait_for(["end", "watcherdone"]);
+
+ let xrWatcher = new EventWatcher(t, navigator.xr, ["devicechange"]);
+ let xrPromise = xrWatcher.wait_for(["devicechange"]);
+
+ function onSessionEnd(event) {
+ t.step( () => {
+ assert_equals(event.session, session);
+ session.dispatchEvent(watcherDone);
+ });
+ }
+
+ session.addEventListener("end", onSessionEnd, false);
+
+ // The javascript needs to yield so that the event registration processes.
+ t.step_timeout(() => { testDeviceController.disconnect(); }, 0);
+
+ return Promise.all([sessionPromise, xrPromise]);
+ };
+
+ xr_session_promise_test(testName, testFunction,
+ fakeDeviceInitParams, 'immersive-vr');
+ </script>
+</body>
diff --git a/tests/wpt/web-platform-tests/webxr/xrStationaryReferenceSpace_floorlevel_updates.https.html b/tests/wpt/web-platform-tests/webxr/xrStationaryReferenceSpace_floorlevel_updates.https.html
new file mode 100644
index 00000000000..68f91fd3150
--- /dev/null
+++ b/tests/wpt/web-platform-tests/webxr/xrStationaryReferenceSpace_floorlevel_updates.https.html
@@ -0,0 +1,70 @@
+<!DOCTYPE html>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src="resources/webxr_util.js"></script>
+<script src="resources/webxr_test_constants.js"></script>
+<script src="resources/xr-test-asserts.js"></script>
+<canvas></canvas>
+
+<script>
+let immersiveTestName = "'floor-level' XRStationaryReferenceSpace updates properly when " +
+ "the transform changes for immersive sessions";
+let nonImmersiveTestName = "'floor-level' XRStationaryReferenceSpace updates properly when " +
+ "the transform changes for non-immersive sessions";
+
+let fakeDeviceInitParams = TRACKED_IMMERSIVE_DEVICE;
+
+let testFunction = function(session, fakeDeviceController, t) {
+ // Don't need to request a frame/allow the stage updates to propagate before
+ // requesting local-floor because if the stage transform is set it just won't
+ // be emulated on the first frame, and we wait a frame before checking.
+ return session.requestReferenceSpace('local-floor')
+ .then((referenceSpace) => new Promise((resolve, reject) => {
+ function onFirstFrame(time, xrFrame) {
+ // On the first frame where the pose has been initialized, the stage
+ // should be using an emulated frame of reference because it has no
+ // stageParameters yet. So the pose should be ~1.5 meters off the floor.
+ t.step( () => {
+ let pose = xrFrame.getViewerPose(referenceSpace);
+
+ let poseMatrix = pose.transform.matrix;
+ assert_approx_equals(poseMatrix[12], 0.0, FLOAT_EPSILON);
+ assert_greater_than(poseMatrix[13], 1.0);
+ assert_approx_equals(poseMatrix[14], 0.0, FLOAT_EPSILON);
+
+ fakeDeviceController.setLocalToFloorLevelTransform(VALID_LOCAL_TO_FLOOR_TRANSFORM);
+
+ // Need to request one animation frame for the new stage transform to
+ // propagate before we check that it's what we expect.
+ session.requestAnimationFrame(() => {
+ session.requestAnimationFrame(onFrame);
+ });
+ });
+ }
+
+ function onFrame(time, xrFrame) {
+ t.step( () => {
+ // Check that stage transform was updated.
+ let pose = xrFrame.getViewerPose(referenceSpace);
+ assert_not_equals(pose, null);
+
+ let poseMatrix = pose.transform.matrix;
+ assert_matrix_approx_equals(poseMatrix, VALID_LOCAL_TO_FLOOR_MATRIX, FLOAT_EPSILON);
+ });
+
+ // Finished.
+ resolve();
+ }
+
+ // Need to wait one frame for the removal to propagate before we check that
+ // everything is at the expected emulated position.
+ session.requestAnimationFrame(() => {
+ session.requestAnimationFrame(onFirstFrame);
+ });
+ }));
+};
+
+xr_session_promise_test(immersiveTestName, testFunction, fakeDeviceInitParams, 'immersive-vr');
+xr_session_promise_test(nonImmersiveTestName, testFunction, fakeDeviceInitParams, 'inline');
+
+</script>
diff --git a/tests/wpt/web-platform-tests/xhr/responsexml-document-properties.htm b/tests/wpt/web-platform-tests/xhr/responsexml-document-properties.htm
index 9071fab121f..c27a4482cd2 100644
--- a/tests/wpt/web-platform-tests/xhr/responsexml-document-properties.htm
+++ b/tests/wpt/web-platform-tests/xhr/responsexml-document-properties.htm
@@ -28,7 +28,7 @@
defaultView:null,
body:null,
doctype:null,
- all:undefined,
+ all:HTMLAllCollection,
cookie:''
}
@@ -38,7 +38,11 @@
function runTest(name, value){
test(function(){
- assert_equals(client.responseXML[name], value)
+ if (name == "all") {
+ assert_equals(client.responseXML[name].__proto__, value.prototype)
+ } else {
+ assert_equals(client.responseXML[name], value)
+ }
}, name)
}