aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--tests/wpt/metadata/FileAPI/url/url-with-fetch.any.js.ini3
-rw-r--r--tests/wpt/metadata/MANIFEST.json990
-rw-r--r--tests/wpt/metadata/css/cssom-view/elementFromPoint-list-001.html.ini4
-rw-r--r--tests/wpt/metadata/css/cssom-view/scrollIntoView-sideways-lr-writing-mode-and-rtl-direction.html.ini28
-rw-r--r--tests/wpt/metadata/css/cssom-view/scrollIntoView-sideways-lr-writing-mode.html.ini28
-rw-r--r--tests/wpt/metadata/css/cssom-view/scrollIntoView-sideways-rl-writing-mode-and-rtl-direction.html.ini28
-rw-r--r--tests/wpt/metadata/css/cssom-view/scrollIntoView-sideways-rl-writing-mode.html.ini28
-rw-r--r--tests/wpt/metadata/css/selectors/selectors-case-sensitive-001.html.ini4
-rw-r--r--tests/wpt/metadata/fetch/content-type/response.window.js.ini17
-rw-r--r--tests/wpt/metadata/fetch/content-type/script.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_5.html.ini4
-rw-r--r--tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/creating_browsing_context_test_01.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-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/semantics/forms/form-submission-0/form-submission-algorithm.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/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.html.ini4
-rw-r--r--tests/wpt/metadata/resource-timing/resource_TAO_origin.htm.ini3
-rw-r--r--tests/wpt/metadata/webaudio/the-audio-api/the-analysernode-interface/realtimeanalyser-fft-scaling.html.ini1
-rw-r--r--tests/wpt/metadata/webaudio/the-audio-api/the-audiobuffer-interface/audiobuffer-copy-channel.html.ini12
-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/webxr/xrBoundedReferenceSpace_updates.https.html.ini2
-rw-r--r--tests/wpt/web-platform-tests/IndexedDB/idbfactory-databases-opaque-origin.html15
-rw-r--r--tests/wpt/web-platform-tests/css/CSS2/floats/zero-available-space-float-positioning.html9
-rw-r--r--tests/wpt/web-platform-tests/css/css-flexbox/parsing/flex-basis-computed.html9
-rw-r--r--tests/wpt/web-platform-tests/css/css-position/hypothetical-dynamic-change-001-ref.html15
-rw-r--r--tests/wpt/web-platform-tests/css/css-position/hypothetical-dynamic-change-001.html30
-rw-r--r--tests/wpt/web-platform-tests/css/css-position/hypothetical-dynamic-change-002.html33
-rw-r--r--tests/wpt/web-platform-tests/css/css-position/hypothetical-dynamic-change-003.html34
-rw-r--r--tests/wpt/web-platform-tests/css/css-properties-values-api/var-reference-registered-properties-cycles.html38
-rw-r--r--tests/wpt/web-platform-tests/css/css-scroll-anchoring/position-change-heuristic-display-none-to-abspos-change.html71
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/computed/get-auto-min-size.html57
-rw-r--r--tests/wpt/web-platform-tests/css/css-writing-modes/support/wm-propagation-body-035-exp-res.pngbin0 -> 4003 bytes
-rw-r--r--tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-003-ref.xht37
-rw-r--r--tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-006.xht51
-rw-r--r--tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-008.xht49
-rw-r--r--tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-010.xht48
-rw-r--r--tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-011.xht49
-rw-r--r--tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-015.xht50
-rw-r--r--tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-032.html81
-rw-r--r--tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-033-ref.html27
-rw-r--r--tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-033.html84
-rw-r--r--tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-034.html81
-rw-r--r--tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-035-ref.html34
-rw-r--r--tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-035.html81
-rw-r--r--tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-036.html87
-rw-r--r--tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-037.html89
-rw-r--r--tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-038.html86
-rw-r--r--tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-039.html86
-rw-r--r--tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-040.html85
-rw-r--r--tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-041.html86
-rw-r--r--tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-042-ref.html26
-rw-r--r--tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-042.html93
-rw-r--r--tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-043.html86
-rw-r--r--tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-044-ref.html27
-rw-r--r--tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-044.html91
-rw-r--r--tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-045.html86
-rw-r--r--tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-046.html86
-rw-r--r--tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-047-ref.html36
-rw-r--r--tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-047.html99
-rw-r--r--tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-048.html85
-rw-r--r--tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-049-ref.html48
-rw-r--r--tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-049.html93
-rw-r--r--tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-050.html86
-rw-r--r--tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-051.html86
-rw-r--r--tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-052.html85
-rw-r--r--tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-053.html86
-rw-r--r--tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-054-ref.html32
-rw-r--r--tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-054.html94
-rw-r--r--tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-055.html86
-rw-r--r--tests/wpt/web-platform-tests/css/cssom-view/elementFromPoint-list-001.html32
-rw-r--r--tests/wpt/web-platform-tests/css/cssom-view/scrollIntoView-sideways-lr-writing-mode-and-rtl-direction.html106
-rw-r--r--tests/wpt/web-platform-tests/css/cssom-view/scrollIntoView-sideways-lr-writing-mode.html108
-rw-r--r--tests/wpt/web-platform-tests/css/cssom-view/scrollIntoView-sideways-rl-writing-mode-and-rtl-direction.html111
-rw-r--r--tests/wpt/web-platform-tests/css/cssom-view/scrollIntoView-sideways-rl-writing-mode.html108
-rw-r--r--tests/wpt/web-platform-tests/css/motion/offset-anchor-transform-box-fill-box-001.html17
-rw-r--r--tests/wpt/web-platform-tests/css/motion/offset-anchor-transform-box-fill-box-002.html (renamed from tests/wpt/web-platform-tests/css/motion/offset-anchor-transform-box-fill-box.html)0
-rw-r--r--tests/wpt/web-platform-tests/css/selectors/selectors-case-sensitive-001.html40
-rw-r--r--tests/wpt/web-platform-tests/html/browsers/history/the-location-interface/location_hash.html2
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/forms/the-select-element/selected-index.html20
-rw-r--r--tests/wpt/web-platform-tests/interfaces/DOM-Parsing.idl1
-rw-r--r--tests/wpt/web-platform-tests/interfaces/animation-worklet.idl10
-rw-r--r--tests/wpt/web-platform-tests/interfaces/geolocation-API.idl75
-rw-r--r--tests/wpt/web-platform-tests/interfaces/media-capabilities.idl2
-rw-r--r--tests/wpt/web-platform-tests/interfaces/media-playback-quality.idl15
-rw-r--r--tests/wpt/web-platform-tests/interfaces/mediacapture-streams.idl278
-rw-r--r--tests/wpt/web-platform-tests/interfaces/mediasession.idl2
-rw-r--r--tests/wpt/web-platform-tests/interfaces/payment-request.idl12
-rw-r--r--tests/wpt/web-platform-tests/interfaces/picture-in-picture.idl2
-rw-r--r--tests/wpt/web-platform-tests/interfaces/push-api.idl10
-rw-r--r--tests/wpt/web-platform-tests/interfaces/wake-lock.idl4
-rw-r--r--tests/wpt/web-platform-tests/interfaces/web-nfc.idl31
-rw-r--r--tests/wpt/web-platform-tests/interfaces/webaudio.idl6
-rw-r--r--tests/wpt/web-platform-tests/interfaces/webrtc-stats.idl79
-rw-r--r--tests/wpt/web-platform-tests/interfaces/webrtc.idl12
-rw-r--r--tests/wpt/web-platform-tests/loading/lazyload/common.js3
-rw-r--r--tests/wpt/web-platform-tests/loading/lazyload/original-base-url-applied-tentative.html12
-rw-r--r--tests/wpt/web-platform-tests/loading/lazyload/original-crossorigin-applied-tentative.sub.html46
-rw-r--r--tests/wpt/web-platform-tests/loading/lazyload/original-referrer-policy-applied-tentative.sub.html16
-rw-r--r--tests/wpt/web-platform-tests/loading/lazyload/resources/referrer-checker-img.py12
-rw-r--r--tests/wpt/web-platform-tests/mathml/presentation-markup/direction/direction-overall-ref.html11
-rw-r--r--tests/wpt/web-platform-tests/mathml/presentation-markup/direction/direction-overall.html15
-rw-r--r--tests/wpt/web-platform-tests/mathml/presentation-markup/fractions/frac-numalign-denomalign-001-ref.html18
-rw-r--r--tests/wpt/web-platform-tests/mathml/presentation-markup/fractions/frac-numalign-denomalign-001.html8
-rw-r--r--tests/wpt/web-platform-tests/mathml/presentation-markup/operators/mo-movablelimits.html2
-rw-r--r--tests/wpt/web-platform-tests/mathml/relations/css-styling/attribute-mapping-001.html24
-rw-r--r--tests/wpt/web-platform-tests/mathml/relations/css-styling/attribute-mapping-002.html8
-rw-r--r--tests/wpt/web-platform-tests/mathml/relations/css-styling/displaystyle-1.html21
-rw-r--r--tests/wpt/web-platform-tests/mathml/relations/css-styling/displaystyle-2.html206
-rw-r--r--tests/wpt/web-platform-tests/mathml/relations/css-styling/mathsize-attribute-legacy-values-ref.html16
-rw-r--r--tests/wpt/web-platform-tests/mathml/relations/css-styling/mathsize-attribute-legacy-values.html20
-rw-r--r--tests/wpt/web-platform-tests/mathml/relations/css-styling/padding-border-margin/border-001.html77
-rw-r--r--tests/wpt/web-platform-tests/mathml/relations/css-styling/padding-border-margin/border-002.html19
-rw-r--r--tests/wpt/web-platform-tests/mathml/relations/css-styling/padding-border-margin/margin-001.html77
-rw-r--r--tests/wpt/web-platform-tests/mathml/relations/css-styling/padding-border-margin/margin-002.html29
-rw-r--r--tests/wpt/web-platform-tests/mathml/relations/css-styling/padding-border-margin/padding-001.html77
-rw-r--r--tests/wpt/web-platform-tests/mathml/relations/css-styling/padding-border-margin/padding-002.html19
-rw-r--r--tests/wpt/web-platform-tests/mathml/relations/css-styling/padding-border-margin/padding-003.html39
-rw-r--r--tests/wpt/web-platform-tests/mathml/relations/css-styling/padding-border-margin/padding-border-margin-001-ref.html17
-rw-r--r--tests/wpt/web-platform-tests/mathml/relations/css-styling/padding-border-margin/padding-border-margin-001.html22
-rw-r--r--tests/wpt/web-platform-tests/mathml/relations/css-styling/width-height-001.html50
-rw-r--r--tests/wpt/web-platform-tests/mathml/relations/css-styling/writing-mode/writing-mode-001.html121
-rw-r--r--tests/wpt/web-platform-tests/mathml/relations/css-styling/writing-mode/writing-mode-002.html86
-rw-r--r--tests/wpt/web-platform-tests/mathml/support/box-comparison.js (renamed from tests/wpt/web-platform-tests/mathml/relations/css-styling/padding-border-margin/helper.js)35
-rw-r--r--tests/wpt/web-platform-tests/mathml/support/layout-comparison.js95
-rw-r--r--tests/wpt/web-platform-tests/mathml/support/mathml-fragments.js6
-rw-r--r--tests/wpt/web-platform-tests/media-playback-quality/META.yml3
-rw-r--r--tests/wpt/web-platform-tests/media-playback-quality/idlharness.window.js20
-rw-r--r--tests/wpt/web-platform-tests/native-file-system/FileSystemWriter.tentative.https.window.js153
-rw-r--r--tests/wpt/web-platform-tests/native-file-system/resources/test-helpers.js3
-rw-r--r--tests/wpt/web-platform-tests/resources/chromium/webxr-test.js18
-rw-r--r--tests/wpt/web-platform-tests/service-workers/service-worker/resources/import-scripts-404-after-update-plus-update-worker.js8
-rw-r--r--tests/wpt/web-platform-tests/service-workers/service-worker/resources/import-scripts-404-after-update.js6
-rw-r--r--tests/wpt/web-platform-tests/service-workers/service-worker/resources/import-scripts-404.js1
-rw-r--r--tests/wpt/web-platform-tests/service-workers/service-worker/resources/update-worker.py6
-rw-r--r--tests/wpt/web-platform-tests/service-workers/service-worker/unregister-then-register-new-script.https.html13
-rw-r--r--tests/wpt/web-platform-tests/service-workers/service-worker/unregister-then-register.https.html2
-rw-r--r--tests/wpt/web-platform-tests/service-workers/service-worker/update-import-scripts.https.html127
-rw-r--r--tests/wpt/web-platform-tests/shape-detection/detected-boundingBox-read-only.https.html (renamed from tests/wpt/web-platform-tests/shape-detection/detected-boundingBox-read-only.html)0
-rw-r--r--tests/wpt/web-platform-tests/shape-detection/detection-HTMLCanvasElement.https.html (renamed from tests/wpt/web-platform-tests/shape-detection/detection-HTMLCanvasElement.html)0
-rw-r--r--tests/wpt/web-platform-tests/shape-detection/detection-HTMLImageElement.https.html (renamed from tests/wpt/web-platform-tests/shape-detection/detection-HTMLImageElement.html)0
-rw-r--r--tests/wpt/web-platform-tests/shape-detection/detection-HTMLVideoElement.https.html (renamed from tests/wpt/web-platform-tests/shape-detection/detection-HTMLVideoElement.html)0
-rw-r--r--tests/wpt/web-platform-tests/shape-detection/detection-ImageBitmap.https.html (renamed from tests/wpt/web-platform-tests/shape-detection/detection-ImageBitmap.html)0
-rw-r--r--tests/wpt/web-platform-tests/shape-detection/detection-ImageData-detached.https.html (renamed from tests/wpt/web-platform-tests/shape-detection/detection-ImageData-detached.html)0
-rw-r--r--tests/wpt/web-platform-tests/shape-detection/detection-ImageData.https.html (renamed from tests/wpt/web-platform-tests/shape-detection/detection-ImageData.html)0
-rw-r--r--tests/wpt/web-platform-tests/shape-detection/detection-getSupportedFormats.https.html (renamed from tests/wpt/web-platform-tests/shape-detection/detection-getSupportedFormats.html)0
-rw-r--r--tests/wpt/web-platform-tests/shape-detection/detection-on-worker.https.worker.js (renamed from tests/wpt/web-platform-tests/shape-detection/detection-on-worker.worker.js)0
-rw-r--r--tests/wpt/web-platform-tests/shape-detection/detection-options.https.html (renamed from tests/wpt/web-platform-tests/shape-detection/detection-options.html)0
-rw-r--r--tests/wpt/web-platform-tests/shape-detection/detection-security-test.https.html (renamed from tests/wpt/web-platform-tests/shape-detection/detection-security-test.html)0
-rw-r--r--tests/wpt/web-platform-tests/shape-detection/detector-same-object.https.html (renamed from tests/wpt/web-platform-tests/shape-detection/detector-same-object.html)0
-rw-r--r--tests/wpt/web-platform-tests/shape-detection/idlharness.https.any.js2
-rw-r--r--tests/wpt/web-platform-tests/shape-detection/resources/shapedetection-helpers.js4
-rw-r--r--tests/wpt/web-platform-tests/shape-detection/shapedetection-cross-origin.sub.https.html (renamed from tests/wpt/web-platform-tests/shape-detection/shapedetection-cross-origin.sub.html)0
-rw-r--r--tests/wpt/web-platform-tests/shape-detection/shapedetection-empty-input.https.html (renamed from tests/wpt/web-platform-tests/shape-detection/shapedetection-empty-input.html)0
-rw-r--r--tests/wpt/web-platform-tests/tools/serve/serve.py17
-rw-r--r--tests/wpt/web-platform-tests/tools/serve/test_serve.py21
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptmanifest/node.py3
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptmanifest/parser.py17
-rw-r--r--tests/wpt/web-platform-tests/web-nfc/NFCReader.https.html (renamed from tests/wpt/web-platform-tests/web-nfc/NFCReader.html)29
-rw-r--r--tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audiobuffer-interface/audiobuffer-copy-channel.html4
-rw-r--r--tests/wpt/web-platform-tests/webaudio/the-audio-api/the-mediastreamaudiosourcenode-interface/mediastreamaudiosourcenode-routing.html2
-rw-r--r--tests/wpt/web-platform-tests/webrtc-svc/RTCRtpParameters-scalability.html47
-rw-r--r--tests/wpt/web-platform-tests/webxr/resources/webxr_util.js6
-rw-r--r--tests/wpt/web-platform-tests/webxr/xrInputSource_gamepad_disconnect.https.html4
-rw-r--r--tests/wpt/web-platform-tests/webxr/xrInputSource_gamepad_input_registered.https.html2
-rw-r--r--tests/wpt/web-platform-tests/webxr/xrWebGLLayer_framebuffer.https.html69
-rw-r--r--tests/wpt/web-platform-tests/webxr/xrWebGLLayer_opaque_framebuffer.https.html4
178 files changed, 6095 insertions, 1180 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 947e223fb28..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
@@ -34,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 23de99261dd..70faa1f516f 100644
--- a/tests/wpt/metadata/MANIFEST.json
+++ b/tests/wpt/metadata/MANIFEST.json
@@ -49737,6 +49737,18 @@
{}
]
],
+ "css/CSS2/floats/zero-available-space-float-positioning.html": [
+ [
+ "css/CSS2/floats/zero-available-space-float-positioning.html",
+ [
+ [
+ "/css/reference/ref-filled-green-100px-square-only.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"css/CSS2/floats/zero-width-floats-positioning.html": [
[
"css/CSS2/floats/zero-width-floats-positioning.html",
@@ -135151,6 +135163,42 @@
{}
]
],
+ "css/css-position/hypothetical-dynamic-change-001.html": [
+ [
+ "css/css-position/hypothetical-dynamic-change-001.html",
+ [
+ [
+ "/css/css-position/hypothetical-dynamic-change-001-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-position/hypothetical-dynamic-change-002.html": [
+ [
+ "css/css-position/hypothetical-dynamic-change-002.html",
+ [
+ [
+ "/css/css-position/hypothetical-dynamic-change-001-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-position/hypothetical-dynamic-change-003.html": [
+ [
+ "css/css-position/hypothetical-dynamic-change-003.html",
+ [
+ [
+ "/css/css-position/hypothetical-dynamic-change-001-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"css/css-position/position-absolute-dynamic-list-marker.html": [
[
"css/css-position/position-absolute-dynamic-list-marker.html",
@@ -178497,9 +178545,165 @@
{}
]
],
- "css/css-writing-modes/wm-propagation-body-006.xht": [
+ "css/css-writing-modes/wm-propagation-body-032.html": [
+ [
+ "css/css-writing-modes/wm-propagation-body-032.html",
+ [
+ [
+ "/css/css-writing-modes/block-flow-direction-025-ref.xht",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-writing-modes/wm-propagation-body-033.html": [
+ [
+ "css/css-writing-modes/wm-propagation-body-033.html",
+ [
+ [
+ "/css/css-writing-modes/wm-propagation-body-033-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-writing-modes/wm-propagation-body-034.html": [
+ [
+ "css/css-writing-modes/wm-propagation-body-034.html",
+ [
+ [
+ "/css/css-writing-modes/block-flow-direction-025-ref.xht",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-writing-modes/wm-propagation-body-035.html": [
+ [
+ "css/css-writing-modes/wm-propagation-body-035.html",
+ [
+ [
+ "/css/css-writing-modes/wm-propagation-body-035-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-writing-modes/wm-propagation-body-036.html": [
+ [
+ "css/css-writing-modes/wm-propagation-body-036.html",
+ [
+ [
+ "/css/css-writing-modes/block-flow-direction-025-ref.xht",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-writing-modes/wm-propagation-body-037.html": [
+ [
+ "css/css-writing-modes/wm-propagation-body-037.html",
+ [
+ [
+ "/css/css-writing-modes/wm-propagation-body-033-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-writing-modes/wm-propagation-body-038.html": [
+ [
+ "css/css-writing-modes/wm-propagation-body-038.html",
+ [
+ [
+ "/css/css-writing-modes/block-flow-direction-025-ref.xht",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-writing-modes/wm-propagation-body-039.html": [
+ [
+ "css/css-writing-modes/wm-propagation-body-039.html",
+ [
+ [
+ "/css/css-writing-modes/wm-propagation-body-035-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-writing-modes/wm-propagation-body-040.html": [
+ [
+ "css/css-writing-modes/wm-propagation-body-040.html",
+ [
+ [
+ "/css/css-writing-modes/wm-propagation-body-033-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-writing-modes/wm-propagation-body-041.html": [
+ [
+ "css/css-writing-modes/wm-propagation-body-041.html",
+ [
+ [
+ "/css/css-writing-modes/wm-propagation-body-033-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-writing-modes/wm-propagation-body-042.html": [
+ [
+ "css/css-writing-modes/wm-propagation-body-042.html",
+ [
+ [
+ "/css/css-writing-modes/wm-propagation-body-042-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-writing-modes/wm-propagation-body-043.html": [
+ [
+ "css/css-writing-modes/wm-propagation-body-043.html",
+ [
+ [
+ "/css/css-writing-modes/wm-propagation-body-035-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-writing-modes/wm-propagation-body-044.html": [
+ [
+ "css/css-writing-modes/wm-propagation-body-044.html",
+ [
+ [
+ "/css/css-writing-modes/wm-propagation-body-044-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-writing-modes/wm-propagation-body-045.html": [
[
- "css/css-writing-modes/wm-propagation-body-006.xht",
+ "css/css-writing-modes/wm-propagation-body-045.html",
[
[
"/css/css-writing-modes/block-flow-direction-025-ref.xht",
@@ -178509,9 +178713,9 @@
{}
]
],
- "css/css-writing-modes/wm-propagation-body-008.xht": [
+ "css/css-writing-modes/wm-propagation-body-046.html": [
[
- "css/css-writing-modes/wm-propagation-body-008.xht",
+ "css/css-writing-modes/wm-propagation-body-046.html",
[
[
"/css/css-writing-modes/block-flow-direction-025-ref.xht",
@@ -178521,33 +178725,105 @@
{}
]
],
- "css/css-writing-modes/wm-propagation-body-010.xht": [
+ "css/css-writing-modes/wm-propagation-body-047.html": [
+ [
+ "css/css-writing-modes/wm-propagation-body-047.html",
+ [
+ [
+ "/css/css-writing-modes/wm-propagation-body-047-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-writing-modes/wm-propagation-body-048.html": [
+ [
+ "css/css-writing-modes/wm-propagation-body-048.html",
+ [
+ [
+ "/css/css-writing-modes/wm-propagation-body-033-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-writing-modes/wm-propagation-body-049.html": [
+ [
+ "css/css-writing-modes/wm-propagation-body-049.html",
+ [
+ [
+ "/css/css-writing-modes/wm-propagation-body-049-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-writing-modes/wm-propagation-body-050.html": [
+ [
+ "css/css-writing-modes/wm-propagation-body-050.html",
+ [
+ [
+ "/css/css-writing-modes/wm-propagation-body-033-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-writing-modes/wm-propagation-body-051.html": [
+ [
+ "css/css-writing-modes/wm-propagation-body-051.html",
+ [
+ [
+ "/css/css-writing-modes/wm-propagation-body-035-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-writing-modes/wm-propagation-body-052.html": [
+ [
+ "css/css-writing-modes/wm-propagation-body-052.html",
+ [
+ [
+ "/css/css-writing-modes/wm-propagation-body-033-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-writing-modes/wm-propagation-body-053.html": [
[
- "css/css-writing-modes/wm-propagation-body-010.xht",
+ "css/css-writing-modes/wm-propagation-body-053.html",
[
[
- "/css/css-writing-modes/wm-propagation-body-003-ref.xht",
+ "/css/css-writing-modes/block-flow-direction-025-ref.xht",
"=="
]
],
{}
]
],
- "css/css-writing-modes/wm-propagation-body-011.xht": [
+ "css/css-writing-modes/wm-propagation-body-054.html": [
[
- "css/css-writing-modes/wm-propagation-body-011.xht",
+ "css/css-writing-modes/wm-propagation-body-054.html",
[
[
- "/css/css-writing-modes/wm-propagation-body-003-ref.xht",
+ "/css/css-writing-modes/wm-propagation-body-054-ref.html",
"=="
]
],
{}
]
],
- "css/css-writing-modes/wm-propagation-body-015.xht": [
+ "css/css-writing-modes/wm-propagation-body-055.html": [
[
- "css/css-writing-modes/wm-propagation-body-015.xht",
+ "css/css-writing-modes/wm-propagation-body-055.html",
[
[
"/css/css-writing-modes/block-flow-direction-025-ref.xht",
@@ -180585,9 +180861,21 @@
{}
]
],
- "css/motion/offset-anchor-transform-box-fill-box.html": [
+ "css/motion/offset-anchor-transform-box-fill-box-001.html": [
[
- "css/motion/offset-anchor-transform-box-fill-box.html",
+ "css/motion/offset-anchor-transform-box-fill-box-001.html",
+ [
+ [
+ "/css/motion/offset-anchor-transform-box-fill-box-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/motion/offset-anchor-transform-box-fill-box-002.html": [
+ [
+ "css/motion/offset-anchor-transform-box-fill-box-002.html",
[
[
"/css/motion/offset-anchor-transform-box-fill-box-ref.html",
@@ -203689,6 +203977,18 @@
{}
]
],
+ "mathml/relations/css-styling/mathsize-attribute-legacy-values.html": [
+ [
+ "mathml/relations/css-styling/mathsize-attribute-legacy-values.html",
+ [
+ [
+ "/mathml/relations/css-styling/mathsize-attribute-legacy-values-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"mathml/relations/css-styling/mathsize-attribute.html": [
[
"mathml/relations/css-styling/mathsize-attribute.html",
@@ -203917,6 +204217,18 @@
{}
]
],
+ "mathml/relations/css-styling/padding-border-margin/padding-border-margin-001.html": [
+ [
+ "mathml/relations/css-styling/padding-border-margin/padding-border-margin-001.html",
+ [
+ [
+ "/mathml/relations/css-styling/padding-border-margin/padding-border-margin-001-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"mathml/relations/css-styling/visibility-001.html": [
[
"mathml/relations/css-styling/visibility-001.html",
@@ -251817,6 +252129,9 @@
"css/css-position/hypothetical-box-scroll-viewport-ref.html": [
[]
],
+ "css/css-position/hypothetical-dynamic-change-001-ref.html": [
+ []
+ ],
"css/css-position/position-relative-table-left-ref.html": [
[]
],
@@ -258891,6 +259206,9 @@
"css/css-writing-modes/support/wm-propagation-body-003-exp-res.png": [
[]
],
+ "css/css-writing-modes/support/wm-propagation-body-035-exp-res.png": [
+ []
+ ],
"css/css-writing-modes/support/yellow-square-59x59.png": [
[]
],
@@ -259092,7 +259410,25 @@
"css/css-writing-modes/wm-propagation-002-ref.html": [
[]
],
- "css/css-writing-modes/wm-propagation-body-003-ref.xht": [
+ "css/css-writing-modes/wm-propagation-body-033-ref.html": [
+ []
+ ],
+ "css/css-writing-modes/wm-propagation-body-035-ref.html": [
+ []
+ ],
+ "css/css-writing-modes/wm-propagation-body-042-ref.html": [
+ []
+ ],
+ "css/css-writing-modes/wm-propagation-body-044-ref.html": [
+ []
+ ],
+ "css/css-writing-modes/wm-propagation-body-047-ref.html": [
+ []
+ ],
+ "css/css-writing-modes/wm-propagation-body-049-ref.html": [
+ []
+ ],
+ "css/css-writing-modes/wm-propagation-body-054-ref.html": [
[]
],
"css/css-writing-modes/writing-mode-vertical-rl-003-ref.htm": [
@@ -273015,6 +273351,9 @@
"interfaces/media-capabilities.idl": [
[]
],
+ "interfaces/media-playback-quality.idl": [
+ []
+ ],
"interfaces/media-source.idl": [
[]
],
@@ -273342,6 +273681,9 @@
"loading/lazyload/resources/image.png": [
[]
],
+ "loading/lazyload/resources/referrer-checker-img.py": [
+ []
+ ],
"loading/lazyload/resources/subframe.html": [
[]
],
@@ -273495,6 +273837,9 @@
"mathml/relations/css-styling/lengths-1-ref.html": [
[]
],
+ "mathml/relations/css-styling/mathsize-attribute-legacy-values-ref.html": [
+ []
+ ],
"mathml/relations/css-styling/mathsize-attribute-ref.html": [
[]
],
@@ -273552,7 +273897,7 @@
"mathml/relations/css-styling/mathvariant-tailed-ref.html": [
[]
],
- "mathml/relations/css-styling/padding-border-margin/helper.js": [
+ "mathml/relations/css-styling/padding-border-margin/padding-border-margin-001-ref.html": [
[]
],
"mathml/relations/css-styling/visibility-001-ref.html": [
@@ -273609,9 +273954,15 @@
"mathml/relations/text-and-math/use-typo-metrics-1-ref.html": [
[]
],
+ "mathml/support/box-comparison.js": [
+ []
+ ],
"mathml/support/feature-detection.js": [
[]
],
+ "mathml/support/layout-comparison.js": [
+ []
+ ],
"mathml/support/mathml-fragments.js": [
[]
],
@@ -273672,6 +274023,9 @@
"media-capabilities/README.md": [
[]
],
+ "media-playback-quality/META.yml": [
+ []
+ ],
"media-source/META.yml": [
[]
],
@@ -278814,6 +279168,15 @@
"service-workers/service-worker/resources/import-relative.xsl": [
[]
],
+ "service-workers/service-worker/resources/import-scripts-404-after-update-plus-update-worker.js": [
+ []
+ ],
+ "service-workers/service-worker/resources/import-scripts-404-after-update.js": [
+ []
+ ],
+ "service-workers/service-worker/resources/import-scripts-404.js": [
+ []
+ ],
"service-workers/service-worker/resources/import-scripts-diff-resource-map-worker.js": [
[]
],
@@ -316856,6 +317219,12 @@
{}
]
],
+ "css/css-scroll-anchoring/position-change-heuristic-display-none-to-abspos-change.html": [
+ [
+ "css/css-scroll-anchoring/position-change-heuristic-display-none-to-abspos-change.html",
+ {}
+ ]
+ ],
"css/css-scroll-anchoring/position-change-heuristic-ib-split.html": [
[
"css/css-scroll-anchoring/position-change-heuristic-ib-split.html",
@@ -321766,6 +322135,12 @@
{}
]
],
+ "css/css-typed-om/the-stylepropertymap/computed/get-auto-min-size.html": [
+ [
+ "css/css-typed-om/the-stylepropertymap/computed/get-auto-min-size.html",
+ {}
+ ]
+ ],
"css/css-typed-om/the-stylepropertymap/computed/get-invalid.html": [
[
"css/css-typed-om/the-stylepropertymap/computed/get-invalid.html",
@@ -324760,6 +325135,12 @@
{}
]
],
+ "css/cssom-view/elementFromPoint-list-001.html": [
+ [
+ "css/cssom-view/elementFromPoint-list-001.html",
+ {}
+ ]
+ ],
"css/cssom-view/elementFromPoint-mixed-font-sizes.html": [
[
"css/cssom-view/elementFromPoint-mixed-font-sizes.html",
@@ -325146,6 +325527,30 @@
{}
]
],
+ "css/cssom-view/scrollIntoView-sideways-lr-writing-mode-and-rtl-direction.html": [
+ [
+ "css/cssom-view/scrollIntoView-sideways-lr-writing-mode-and-rtl-direction.html",
+ {}
+ ]
+ ],
+ "css/cssom-view/scrollIntoView-sideways-lr-writing-mode.html": [
+ [
+ "css/cssom-view/scrollIntoView-sideways-lr-writing-mode.html",
+ {}
+ ]
+ ],
+ "css/cssom-view/scrollIntoView-sideways-rl-writing-mode-and-rtl-direction.html": [
+ [
+ "css/cssom-view/scrollIntoView-sideways-rl-writing-mode-and-rtl-direction.html",
+ {}
+ ]
+ ],
+ "css/cssom-view/scrollIntoView-sideways-rl-writing-mode.html": [
+ [
+ "css/cssom-view/scrollIntoView-sideways-rl-writing-mode.html",
+ {}
+ ]
+ ],
"css/cssom-view/scrollIntoView-smooth.html": [
[
"css/cssom-view/scrollIntoView-smooth.html",
@@ -326880,6 +327285,12 @@
{}
]
],
+ "css/selectors/selectors-case-sensitive-001.html": [
+ [
+ "css/selectors/selectors-case-sensitive-001.html",
+ {}
+ ]
+ ],
"css/selectors/user-invalid.html": [
[
"css/selectors/user-invalid.html",
@@ -360956,6 +361367,12 @@
{}
]
],
+ "loading/lazyload/original-crossorigin-applied-tentative.sub.html": [
+ [
+ "loading/lazyload/original-crossorigin-applied-tentative.sub.html",
+ {}
+ ]
+ ],
"loading/lazyload/original-referrer-policy-applied-tentative.sub.html": [
[
"loading/lazyload/original-referrer-policy-applied-tentative.sub.html",
@@ -361352,6 +361769,12 @@
{}
]
],
+ "mathml/relations/css-styling/displaystyle-2.html": [
+ [
+ "mathml/relations/css-styling/displaystyle-2.html",
+ {}
+ ]
+ ],
"mathml/relations/css-styling/lengths-2.html": [
[
"mathml/relations/css-styling/lengths-2.html",
@@ -361394,9 +361817,21 @@
{}
]
],
- "mathml/relations/css-styling/padding-border-margin/padding-003.html": [
+ "mathml/relations/css-styling/width-height-001.html": [
[
- "mathml/relations/css-styling/padding-border-margin/padding-003.html",
+ "mathml/relations/css-styling/width-height-001.html",
+ {}
+ ]
+ ],
+ "mathml/relations/css-styling/writing-mode/writing-mode-001.html": [
+ [
+ "mathml/relations/css-styling/writing-mode/writing-mode-001.html",
+ {}
+ ]
+ ],
+ "mathml/relations/css-styling/writing-mode/writing-mode-002.html": [
+ [
+ "mathml/relations/css-styling/writing-mode/writing-mode-002.html",
{}
]
],
@@ -361486,6 +361921,23 @@
}
]
],
+ "media-playback-quality/idlharness.window.js": [
+ [
+ "media-playback-quality/idlharness.window.html",
+ {
+ "script_metadata": [
+ [
+ "script",
+ "/resources/WebIDLParser.js"
+ ],
+ [
+ "script",
+ "/resources/idlharness.js"
+ ]
+ ]
+ }
+ ]
+ ],
"media-source/SourceBuffer-abort-readyState.html": [
[
"media-source/SourceBuffer-abort-readyState.html",
@@ -390684,6 +391136,12 @@
}
]
],
+ "service-workers/service-worker/update-import-scripts.https.html": [
+ [
+ "service-workers/service-worker/update-import-scripts.https.html",
+ {}
+ ]
+ ],
"service-workers/service-worker/update-missing-import-scripts.https.html": [
[
"service-workers/service-worker/update-missing-import-scripts.https.html",
@@ -391372,75 +391830,75 @@
{}
]
],
- "shape-detection/detected-boundingBox-read-only.html": [
+ "shape-detection/detected-boundingBox-read-only.https.html": [
[
- "shape-detection/detected-boundingBox-read-only.html",
+ "shape-detection/detected-boundingBox-read-only.https.html",
{}
]
],
- "shape-detection/detection-HTMLCanvasElement.html": [
+ "shape-detection/detection-HTMLCanvasElement.https.html": [
[
- "shape-detection/detection-HTMLCanvasElement.html",
+ "shape-detection/detection-HTMLCanvasElement.https.html",
{}
]
],
- "shape-detection/detection-HTMLImageElement.html": [
+ "shape-detection/detection-HTMLImageElement.https.html": [
[
- "shape-detection/detection-HTMLImageElement.html",
+ "shape-detection/detection-HTMLImageElement.https.html",
{}
]
],
- "shape-detection/detection-HTMLVideoElement.html": [
+ "shape-detection/detection-HTMLVideoElement.https.html": [
[
- "shape-detection/detection-HTMLVideoElement.html",
+ "shape-detection/detection-HTMLVideoElement.https.html",
{}
]
],
- "shape-detection/detection-ImageBitmap.html": [
+ "shape-detection/detection-ImageBitmap.https.html": [
[
- "shape-detection/detection-ImageBitmap.html",
+ "shape-detection/detection-ImageBitmap.https.html",
{}
]
],
- "shape-detection/detection-ImageData-detached.html": [
+ "shape-detection/detection-ImageData-detached.https.html": [
[
- "shape-detection/detection-ImageData-detached.html",
+ "shape-detection/detection-ImageData-detached.https.html",
{}
]
],
- "shape-detection/detection-ImageData.html": [
+ "shape-detection/detection-ImageData.https.html": [
[
- "shape-detection/detection-ImageData.html",
+ "shape-detection/detection-ImageData.https.html",
{}
]
],
- "shape-detection/detection-getSupportedFormats.html": [
+ "shape-detection/detection-getSupportedFormats.https.html": [
[
- "shape-detection/detection-getSupportedFormats.html",
+ "shape-detection/detection-getSupportedFormats.https.html",
{}
]
],
- "shape-detection/detection-on-worker.worker.js": [
+ "shape-detection/detection-on-worker.https.worker.js": [
[
- "shape-detection/detection-on-worker.worker.html",
+ "shape-detection/detection-on-worker.https.worker.html",
{}
]
],
- "shape-detection/detection-options.html": [
+ "shape-detection/detection-options.https.html": [
[
- "shape-detection/detection-options.html",
+ "shape-detection/detection-options.https.html",
{}
]
],
- "shape-detection/detection-security-test.html": [
+ "shape-detection/detection-security-test.https.html": [
[
- "shape-detection/detection-security-test.html",
+ "shape-detection/detection-security-test.https.html",
{}
]
],
- "shape-detection/detector-same-object.html": [
+ "shape-detection/detector-same-object.https.html": [
[
- "shape-detection/detector-same-object.html",
+ "shape-detection/detector-same-object.https.html",
{}
]
],
@@ -391538,15 +391996,15 @@
}
]
],
- "shape-detection/shapedetection-cross-origin.sub.html": [
+ "shape-detection/shapedetection-cross-origin.sub.https.html": [
[
- "shape-detection/shapedetection-cross-origin.sub.html",
+ "shape-detection/shapedetection-cross-origin.sub.https.html",
{}
]
],
- "shape-detection/shapedetection-empty-input.html": [
+ "shape-detection/shapedetection-empty-input.https.html": [
[
- "shape-detection/shapedetection-empty-input.html",
+ "shape-detection/shapedetection-empty-input.https.html",
{}
]
],
@@ -404018,9 +404476,9 @@
{}
]
],
- "web-nfc/NFCReader.html": [
+ "web-nfc/NFCReader.https.html": [
[
- "web-nfc/NFCReader.html",
+ "web-nfc/NFCReader.https.html",
{}
]
],
@@ -406306,6 +406764,12 @@
}
]
],
+ "webrtc-svc/RTCRtpParameters-scalability.html": [
+ [
+ "webrtc-svc/RTCRtpParameters-scalability.html",
+ {}
+ ]
+ ],
"webrtc/RTCCertificate-postMessage.html": [
[
"webrtc/RTCCertificate-postMessage.html",
@@ -411906,12 +412370,6 @@
{}
]
],
- "webxr/xrWebGLLayer_framebuffer.https.html": [
- [
- "webxr/xrWebGLLayer_framebuffer.https.html",
- {}
- ]
- ],
"webxr/xrWebGLLayer_framebuffer_draw.https.html": [
[
"webxr/xrWebGLLayer_framebuffer_draw.https.html",
@@ -442768,7 +443226,7 @@
"testharness"
],
"IndexedDB/idbfactory-databases-opaque-origin.html": [
- "805c1951b3caae393496b5228a9e31bdf2ae4579",
+ "5f1b3070c638ddf36b7d2d30717c24d324a38f06",
"testharness"
],
"IndexedDB/idbfactory-deleteDatabase-opaque-origin.html": [
@@ -491951,6 +492409,10 @@
"21235d550dc83532be86788294bcc891a81c4caa",
"reftest"
],
+ "css/CSS2/floats/zero-available-space-float-positioning.html": [
+ "62ace6daa036929b46a8e9c1cc516fda403b7131",
+ "reftest"
+ ],
"css/CSS2/floats/zero-space-between-floats-001.html": [
"a7796011b0191e18ac24dee8ac94d2e878752201",
"testharness"
@@ -544676,7 +545138,7 @@
"reftest"
],
"css/css-flexbox/parsing/flex-basis-computed.html": [
- "a2cd407fc72be3636d02e0d2bd929c0e57e0c6f1",
+ "549c9bf7053fac57c5dd11eedbf0fddebd324ea7",
"testharness"
],
"css/css-flexbox/parsing/flex-basis-invalid.html": [
@@ -561687,6 +562149,22 @@
"9ccb822f107f429651c7949995412c9f2a80feea",
"reftest"
],
+ "css/css-position/hypothetical-dynamic-change-001-ref.html": [
+ "12e109bd0b2be3d7cef2717306900426db7a23fc",
+ "support"
+ ],
+ "css/css-position/hypothetical-dynamic-change-001.html": [
+ "996f439211ccef5a12d3e5e2598973fd5983b80c",
+ "reftest"
+ ],
+ "css/css-position/hypothetical-dynamic-change-002.html": [
+ "114b48dc7fc9cfdaabe29f305063aaa6b4577cc0",
+ "reftest"
+ ],
+ "css/css-position/hypothetical-dynamic-change-003.html": [
+ "26a27c269550f2ee0afbb6c2bc0219554acd4948",
+ "reftest"
+ ],
"css/css-position/inheritance.html": [
"d75b28c1e0aa2698fe0c73965f4e7d1f06b16547",
"testharness"
@@ -562492,7 +562970,7 @@
"testharness"
],
"css/css-properties-values-api/var-reference-registered-properties-cycles.html": [
- "65d11697355c17fca39b4e9fa0dcf0db404e22eb",
+ "e94da5ddaef0c6906acc37ac78cab571504535d4",
"testharness"
],
"css/css-properties-values-api/var-reference-registered-properties.html": [
@@ -565435,6 +565913,10 @@
"6e002383822f5c8558950e413e099178cd1311e0",
"testharness"
],
+ "css/css-scroll-anchoring/position-change-heuristic-display-none-to-abspos-change.html": [
+ "5cf27d9e6b11ea3082d4775b5f5d996cf7c3ff0e",
+ "testharness"
+ ],
"css/css-scroll-anchoring/position-change-heuristic-ib-split.html": [
"e9033251128d28de58549810eeab6b26fb11bc08",
"testharness"
@@ -582567,6 +583049,10 @@
"9bbcb306998c22dc7770be3a28e0bc3c613827b1",
"testharness"
],
+ "css/css-typed-om/the-stylepropertymap/computed/get-auto-min-size.html": [
+ "3466fb21ca6d78eb963db53e90d6b9e2d2024e9e",
+ "testharness"
+ ],
"css/css-typed-om/the-stylepropertymap/computed/get-invalid.html": [
"8117d18b764ced36e845b20e0de6f358d5ed363c",
"testharness"
@@ -592959,6 +593445,10 @@
"b437e8fb8d74bafc27661189144968c757de4405",
"support"
],
+ "css/css-writing-modes/support/wm-propagation-body-035-exp-res.png": [
+ "33f2820dafd2599226da0ad8dad2b9dee1f329d1",
+ "support"
+ ],
"css/css-writing-modes/support/yellow-square-59x59.png": [
"50816d38f6b6758e69991c65de0b9dc505628ebe",
"support"
@@ -594051,28 +594541,128 @@
"42f5b1b3fdc903d9f6812bcab81866e6029eee69",
"reftest"
],
- "css/css-writing-modes/wm-propagation-body-003-ref.xht": [
- "1f83fdaea6ef98786ce7c9769dcb4cd8dd4750a5",
+ "css/css-writing-modes/wm-propagation-body-032.html": [
+ "ca5f0094c34f65882bbec7491b94eb42df352ab9",
+ "reftest"
+ ],
+ "css/css-writing-modes/wm-propagation-body-033-ref.html": [
+ "766c85701d0a5a0913a1d228508f982f402347ed",
+ "support"
+ ],
+ "css/css-writing-modes/wm-propagation-body-033.html": [
+ "b98a57912cf8d2e7b6bb6558f4613537961cb895",
+ "reftest"
+ ],
+ "css/css-writing-modes/wm-propagation-body-034.html": [
+ "aa3081daef2bfa46ec812aa72ec996f9eedb6a01",
+ "reftest"
+ ],
+ "css/css-writing-modes/wm-propagation-body-035-ref.html": [
+ "c3fdba1b749ecff4f422b93e83e58449186fd48a",
+ "support"
+ ],
+ "css/css-writing-modes/wm-propagation-body-035.html": [
+ "9771d485cc16bebd850c286d5abcc8f3b1ebd39d",
+ "reftest"
+ ],
+ "css/css-writing-modes/wm-propagation-body-036.html": [
+ "b30e979fadb702e5666f6e59ca50dabdf85d14f3",
+ "reftest"
+ ],
+ "css/css-writing-modes/wm-propagation-body-037.html": [
+ "63616de07099f7b0ee479f10d72c2db823334725",
+ "reftest"
+ ],
+ "css/css-writing-modes/wm-propagation-body-038.html": [
+ "5488988355896698dc758ceda779193c0de72243",
+ "reftest"
+ ],
+ "css/css-writing-modes/wm-propagation-body-039.html": [
+ "7462c26c1aae3103c13efba43db9241b5f80b59a",
+ "reftest"
+ ],
+ "css/css-writing-modes/wm-propagation-body-040.html": [
+ "a744a21e273586f9ccb9f79206f58b90029e9da4",
+ "reftest"
+ ],
+ "css/css-writing-modes/wm-propagation-body-041.html": [
+ "2e2f82fcae84190e94f16a2dce1a12d8d255bd6b",
+ "reftest"
+ ],
+ "css/css-writing-modes/wm-propagation-body-042-ref.html": [
+ "d86e926463caa7f07b7b0146f03fec991959454a",
"support"
],
- "css/css-writing-modes/wm-propagation-body-006.xht": [
- "93b5236f13819edfe833b33e1dd0693967ce032b",
+ "css/css-writing-modes/wm-propagation-body-042.html": [
+ "1bfbca99514ce670c76dac35e680d309220b6712",
"reftest"
],
- "css/css-writing-modes/wm-propagation-body-008.xht": [
- "feeb8575ad9f803813fca2bc32107a2061d067dc",
+ "css/css-writing-modes/wm-propagation-body-043.html": [
+ "61be8f79500641ea97a7ff87fe10aa9917dc5d10",
"reftest"
],
- "css/css-writing-modes/wm-propagation-body-010.xht": [
- "d74f5a6b06b758642428054cb4c9cf13fac8e0fb",
+ "css/css-writing-modes/wm-propagation-body-044-ref.html": [
+ "31e98673720e06e2ed5519c38bf0ad28ec7b944c",
+ "support"
+ ],
+ "css/css-writing-modes/wm-propagation-body-044.html": [
+ "60d444ca8b2f1de90be794a51ef5e3ae77005c7d",
+ "reftest"
+ ],
+ "css/css-writing-modes/wm-propagation-body-045.html": [
+ "75ea01644a6e8ab118ddd9e6f3bdd472c10cab7f",
+ "reftest"
+ ],
+ "css/css-writing-modes/wm-propagation-body-046.html": [
+ "da89e881dc17f1033aaabfbec703b19e5a195f14",
+ "reftest"
+ ],
+ "css/css-writing-modes/wm-propagation-body-047-ref.html": [
+ "80e95b35befc6de6d51a603c4ad5bc0ee4467703",
+ "support"
+ ],
+ "css/css-writing-modes/wm-propagation-body-047.html": [
+ "dac0da9d5224fc295f5a7e56bc154f683433ea65",
+ "reftest"
+ ],
+ "css/css-writing-modes/wm-propagation-body-048.html": [
+ "17e2a2d1f69b200e7038e986c86940360f73da68",
+ "reftest"
+ ],
+ "css/css-writing-modes/wm-propagation-body-049-ref.html": [
+ "fb5f2a3c4790733404e884ebe3562ef6e7002033",
+ "support"
+ ],
+ "css/css-writing-modes/wm-propagation-body-049.html": [
+ "a8b06c9040b1378e456d8872bd9c461623bb5eac",
+ "reftest"
+ ],
+ "css/css-writing-modes/wm-propagation-body-050.html": [
+ "0af948a8436aeb21fc1f51387d8a641f869a0966",
+ "reftest"
+ ],
+ "css/css-writing-modes/wm-propagation-body-051.html": [
+ "ce0680611a2fe358e99aeeba03fd2cbcb4c66ed1",
"reftest"
],
- "css/css-writing-modes/wm-propagation-body-011.xht": [
- "40e181ba0fe82d3acb0222c215d176df1cc22aec",
+ "css/css-writing-modes/wm-propagation-body-052.html": [
+ "15a0bc63484ae97abd4a0c7c6826afe6e11506f8",
"reftest"
],
- "css/css-writing-modes/wm-propagation-body-015.xht": [
- "82fae3778268ef6d08395c3d833c39ecf71d907f",
+ "css/css-writing-modes/wm-propagation-body-053.html": [
+ "ea98953ae503d5b4642aead825d208792056737d",
+ "reftest"
+ ],
+ "css/css-writing-modes/wm-propagation-body-054-ref.html": [
+ "1e6f6343b3c59e3654ef96037c92a89233cf3798",
+ "support"
+ ],
+ "css/css-writing-modes/wm-propagation-body-054.html": [
+ "956913eeb58802e862eb85cf0a452ca948aa25a4",
+ "reftest"
+ ],
+ "css/css-writing-modes/wm-propagation-body-055.html": [
+ "080ddd6ddf17cc3649be1688098032f1acf89030",
"reftest"
],
"css/css-writing-modes/wm-propagation-body-computed-root.html": [
@@ -594375,6 +594965,10 @@
"e0acb90fb8fe76f3b0c5b561d84a3bdc6e05bd78",
"testharness"
],
+ "css/cssom-view/elementFromPoint-list-001.html": [
+ "e3c2c4d18f4c35f31908fd1095b0516fd0161b8a",
+ "testharness"
+ ],
"css/cssom-view/elementFromPoint-mixed-font-sizes.html": [
"e2bac90afdfb226aa8e44d40dc36d98423181cc3",
"testharness"
@@ -594651,6 +595245,22 @@
"eb1bce37d2cdc09640eb1aa20951f75d2a8aa36f",
"testharness"
],
+ "css/cssom-view/scrollIntoView-sideways-lr-writing-mode-and-rtl-direction.html": [
+ "8d435407f68e42e026c22b563f639e885d1feb84",
+ "testharness"
+ ],
+ "css/cssom-view/scrollIntoView-sideways-lr-writing-mode.html": [
+ "0659dec8c1a7e226e2e22c7ae16119f204c5d892",
+ "testharness"
+ ],
+ "css/cssom-view/scrollIntoView-sideways-rl-writing-mode-and-rtl-direction.html": [
+ "82e43eb4859d9cbd5cea64e105adfae9df629f21",
+ "testharness"
+ ],
+ "css/cssom-view/scrollIntoView-sideways-rl-writing-mode.html": [
+ "9d7fda63e6e34c26d1a3d232de910c4276eb65be",
+ "testharness"
+ ],
"css/cssom-view/scrollIntoView-smooth.html": [
"70343cb42530147fe08575c7cd69912be8944213",
"testharness"
@@ -597043,14 +597653,18 @@
"4a82f32cd58694f43314b6f52fc5e828ddfd8f01",
"testharness"
],
- "css/motion/offset-anchor-transform-box-fill-box-ref.html": [
- "f718ea6abfbab54333ba674ff0dcd320d8672bcd",
- "support"
+ "css/motion/offset-anchor-transform-box-fill-box-001.html": [
+ "ac893bae6525992ce1c7b93e52bbb13b1d702bc5",
+ "reftest"
],
- "css/motion/offset-anchor-transform-box-fill-box.html": [
+ "css/motion/offset-anchor-transform-box-fill-box-002.html": [
"563ffdaf1a198a50e6ae82e949a8f12aa9ace8bc",
"reftest"
],
+ "css/motion/offset-anchor-transform-box-fill-box-ref.html": [
+ "f718ea6abfbab54333ba674ff0dcd320d8672bcd",
+ "support"
+ ],
"css/motion/offset-distance-001.html": [
"a24f046bde638f4474b0a0561208b60bc1f0630f",
"reftest"
@@ -599127,6 +599741,10 @@
"62df884cf4558e7091efb35e2a390e2b53befe25",
"reftest"
],
+ "css/selectors/selectors-case-sensitive-001.html": [
+ "d0214078bddff61f6d72fb6e600615d5882c1d21",
+ "testharness"
+ ],
"css/selectors/selectors-dir-selector-ltr-001.html": [
"9b90832a218debcf98a8a23bed7b0e679bd472ac",
"reftest"
@@ -619784,7 +620402,7 @@
"testharness"
],
"html/browsers/history/the-location-interface/location_hash.html": [
- "ef6f6331389168c8fed45c1eabe810e0cdf5e512",
+ "c063e285ea64cb9e5017976f8dcc3a6a5a31af9b",
"testharness"
],
"html/browsers/history/the-location-interface/location_host.html": [
@@ -632544,7 +633162,7 @@
"testharness"
],
"html/semantics/forms/the-select-element/selected-index.html": [
- "70f6772b876dd194320015eb58401aba7ee64ca3",
+ "7f7fd9a1a2e99ba492a00240602c822c68847dd9",
"testharness"
],
"html/semantics/forms/the-textarea-element/cloning-steps.html": [
@@ -638636,7 +639254,7 @@
"support"
],
"interfaces/DOM-Parsing.idl": [
- "c5de42b0cfc5ce2a485fa692e33839b7eb4f2162",
+ "7c93a52d2a7a23bd787c3e4f121fa6a299d5afff",
"support"
],
"interfaces/FileAPI.idl": [
@@ -638684,7 +639302,7 @@
"support"
],
"interfaces/animation-worklet.idl": [
- "32988e11506d14930a27b3b77dc3a8435bdf4269",
+ "615a21c76fd1f59910ba5867d4de097e6ecd917e",
"support"
],
"interfaces/appmanifest.idl": [
@@ -638860,7 +639478,7 @@
"support"
],
"interfaces/geolocation-API.idl": [
- "8bb3dd748dd64f77a9e90a5a3284ab8c3191aae5",
+ "802e76ce85fed6b9ac5bf8d139b79ea8612182ed",
"support"
],
"interfaces/geolocation-sensor.idl": [
@@ -638920,7 +639538,11 @@
"support"
],
"interfaces/media-capabilities.idl": [
- "00a9e62028a8e455a50f25a6f426aa901bb007d3",
+ "e66309187f467045c44f9083a51f0d610bcc7019",
+ "support"
+ ],
+ "interfaces/media-playback-quality.idl": [
+ "12b2c74e6183af66ec5bfae1897b7c46f276bdac",
"support"
],
"interfaces/media-source.idl": [
@@ -638936,11 +639558,11 @@
"support"
],
"interfaces/mediacapture-streams.idl": [
- "c07b7e3301248f4945aacbbbe1a0c84330bbe086",
+ "d83777c5d293d04931e1d3ff9611a183e74bd142",
"support"
],
"interfaces/mediasession.idl": [
- "565eab7b02715ee2b20e06992292a136bfc5bf22",
+ "5466300b6b48829493518fd4dd9f995509d7d337",
"support"
],
"interfaces/mediastream-recording.idl": [
@@ -638988,7 +639610,7 @@
"support"
],
"interfaces/payment-request.idl": [
- "f8bd336dbe3b22223030a60cdd36be93067b3a9f",
+ "fefdc6f361774180c6672b6407e6cfa63dd3669d",
"support"
],
"interfaces/performance-timeline.idl": [
@@ -639000,7 +639622,7 @@
"support"
],
"interfaces/picture-in-picture.idl": [
- "164ec02a9cf208e3c56da82a9629b3bb674f27f0",
+ "09b3b50c19bb4ab4a28e5d84dc3ed23d1c3c0298",
"support"
],
"interfaces/pointerevents-extension.idl": [
@@ -639024,7 +639646,7 @@
"support"
],
"interfaces/push-api.idl": [
- "2fd5e27896ca95a546b26b9675483cb9bde07758",
+ "74725a3025680c91af9d44d6aec80b89519d217f",
"support"
],
"interfaces/referrer-policy.idl": [
@@ -639120,7 +639742,7 @@
"support"
],
"interfaces/wake-lock.idl": [
- "21a3406f5894629ab5838dcf85474043c5138867",
+ "5bccbe8f9b7cd6464e60343b64bea477c4069057",
"support"
],
"interfaces/wasm-js-api.idl": [
@@ -639140,7 +639762,7 @@
"support"
],
"interfaces/web-nfc.idl": [
- "a50d53b57cd1bfa0fb44b8921c215dbc8d51279f",
+ "365b38ff191920a39a98417097c2e7fc8a7e3574",
"support"
],
"interfaces/web-share.idl": [
@@ -639148,7 +639770,7 @@
"support"
],
"interfaces/webaudio.idl": [
- "aa137c12f01e0ceee5af4435f38187d19c2acfcb",
+ "19d807894231de9f3522f3845f44e212b9708580",
"support"
],
"interfaces/webauthn.idl": [
@@ -639176,11 +639798,11 @@
"support"
],
"interfaces/webrtc-stats.idl": [
- "29604eafc2f4bff2ab1c0790cf7411589aefc214",
+ "48ebc187bc4814156eeb61810dbc01355e13de90",
"support"
],
"interfaces/webrtc.idl": [
- "faccd6f47d37443c0d5df63ce71a1f68ebc07bc2",
+ "f56ff80389007129f843eb998c9d2f6a6ca44a33",
"support"
],
"interfaces/webusb.idl": [
@@ -639812,7 +640434,7 @@
"support"
],
"loading/lazyload/common.js": [
- "f5013fc288f58b71a14d01269db14385dd80c8a5",
+ "0a7b408b649fe04604b6f08188a2399eefbbd0a4",
"support"
],
"loading/lazyload/iframe-loading-eager.tentative.html": [
@@ -639832,11 +640454,15 @@
"testharness"
],
"loading/lazyload/original-base-url-applied-tentative.html": [
- "06f9c257ee9e1b10c626e4a36c826a41506dea89",
+ "28d43fd5e3f214118518142cd9e919523930403e",
+ "testharness"
+ ],
+ "loading/lazyload/original-crossorigin-applied-tentative.sub.html": [
+ "dc3cff783e10189a90024f2fc03ae1f5ef54128b",
"testharness"
],
"loading/lazyload/original-referrer-policy-applied-tentative.sub.html": [
- "2ffbc821c66a256765f00773afcef5ed94ac5a44",
+ "15ff8e5ef241416a4e3bd73c11b1d09e791c234b",
"testharness"
],
"loading/lazyload/picture-loading-lazy.tentative.html": [
@@ -639847,6 +640473,10 @@
"b712825093805d1052b01047b1dbb102f0af8f0f",
"support"
],
+ "loading/lazyload/resources/referrer-checker-img.py": [
+ "0597268d8391b339c80d3274a52265db168e676a",
+ "support"
+ ],
"loading/lazyload/resources/subframe.html": [
"07cb999afaefe344a0f8d5ac2b792b60abcd22b4",
"support"
@@ -640020,11 +640650,11 @@
"support"
],
"mathml/presentation-markup/direction/direction-overall-ref.html": [
- "1f823e5b0c359cb5347ee0d1165571ee8286753b",
+ "5ce6c5c42bb8068b895cdbe111644c339c4b9676",
"support"
],
"mathml/presentation-markup/direction/direction-overall.html": [
- "f668c55dbaecf1b89cc3c433ecf8b83f55d6b18f",
+ "8cf5474e3b2f1de02d5bf73c137baf91f7efdb3a",
"reftest"
],
"mathml/presentation-markup/direction/direction-token-ref.html": [
@@ -640128,11 +640758,11 @@
"reftest"
],
"mathml/presentation-markup/fractions/frac-numalign-denomalign-001-ref.html": [
- "2fa978624dc206c834f70d4cf620b565f8f3ac12",
+ "09b83e9efba00aa86b9fa29645c28fe828c463e6",
"support"
],
"mathml/presentation-markup/fractions/frac-numalign-denomalign-001.html": [
- "78c95c28755bdef6019bf0912b43e5f2e98ccfb4",
+ "bc9a2f9084471632a88e2b4d56db4557bfbe216e",
"reftest"
],
"mathml/presentation-markup/fractions/frac-parameters-1.html": [
@@ -640272,7 +640902,7 @@
"support"
],
"mathml/presentation-markup/operators/mo-movablelimits.html": [
- "9be866fabee972bfa1608e2c2e2e64c439c07eea",
+ "ebb5cde6f1381cc5903b4780fd45bf922f33c26c",
"reftest"
],
"mathml/presentation-markup/operators/mo-paint-lspace-rspace-ref.html": [
@@ -640376,11 +641006,11 @@
"testharness"
],
"mathml/relations/css-styling/attribute-mapping-001.html": [
- "347b571b1d681640cabec6c0ce7e940e523fa66b",
+ "c7afa7a112a11ccabc13d971522b416ce82fe65d",
"testharness"
],
"mathml/relations/css-styling/attribute-mapping-002.html": [
- "1a8b7ca16d10ef191276f3dcbbe209eda14111f0",
+ "329578dc95a5cc6548ec70d0d0ef80e229950149",
"testharness"
],
"mathml/relations/css-styling/color-001-ref.html": [
@@ -640424,7 +641054,11 @@
"reftest"
],
"mathml/relations/css-styling/displaystyle-1.html": [
- "12108836ce9356ea80e29ae6e095a355a519d49f",
+ "c59e690f162f4977fb172e37ae7b34fe100379ae",
+ "testharness"
+ ],
+ "mathml/relations/css-styling/displaystyle-2.html": [
+ "f89ade019b52d66d12737517e54436768ac7605a",
"testharness"
],
"mathml/relations/css-styling/dynamic-dir-1-ref.html": [
@@ -640447,6 +641081,14 @@
"22fc40156f177564beb0eb0907637a6bce6e60ca",
"testharness"
],
+ "mathml/relations/css-styling/mathsize-attribute-legacy-values-ref.html": [
+ "687efa49bebdda625ccbf13f100e870d45f78f7b",
+ "support"
+ ],
+ "mathml/relations/css-styling/mathsize-attribute-legacy-values.html": [
+ "745b1033718fcbb6d7208eff98f762d4a5799b12",
+ "reftest"
+ ],
"mathml/relations/css-styling/mathsize-attribute-ref.html": [
"7a0450e51edf24d52a09b1ea4463483d7704bb75",
"support"
@@ -640600,36 +641242,36 @@
"reftest"
],
"mathml/relations/css-styling/padding-border-margin/border-001.html": [
- "8efb6a5ab0e6759fccbd9775da700d5065a3fdd7",
+ "784491cf2e1bf60ea7c9edc951b9252d903d592f",
"testharness"
],
"mathml/relations/css-styling/padding-border-margin/border-002.html": [
- "4168c3cdb942d903598d50013443de041b019af2",
+ "85a3dc2e2ac5797fea9a311cde82854eb80b33f2",
"testharness"
],
- "mathml/relations/css-styling/padding-border-margin/helper.js": [
- "d3f4b261a75ad7706edc65793bd15661aa866b47",
- "support"
- ],
"mathml/relations/css-styling/padding-border-margin/margin-001.html": [
- "dc3a2b4a150d7b140cbc2339a04363a2a29e2e25",
+ "67146882319b40398caa461a3ce86501bee19557",
"testharness"
],
"mathml/relations/css-styling/padding-border-margin/margin-002.html": [
- "8631be586e472965bcecdb955e6eb98de78415b5",
+ "87583b584a34faf3cf7cd54551f74ebf09009618",
"testharness"
],
"mathml/relations/css-styling/padding-border-margin/padding-001.html": [
- "1f8875f657d0ce30719390fc0f6b7c28aae04c65",
+ "afcd930452655f2265cf5929c28200e0668a3cc4",
"testharness"
],
"mathml/relations/css-styling/padding-border-margin/padding-002.html": [
- "eadff36b460565f175f135a40bff3b6cfea8ba21",
+ "c634e4076e066686bb7bd5dd77e36716020f82c3",
"testharness"
],
- "mathml/relations/css-styling/padding-border-margin/padding-003.html": [
- "cad4a990b1d4993afaa36b240007a5ea1cfa925a",
- "testharness"
+ "mathml/relations/css-styling/padding-border-margin/padding-border-margin-001-ref.html": [
+ "150a650bc28434f1811d3d40747d074146ec4a30",
+ "support"
+ ],
+ "mathml/relations/css-styling/padding-border-margin/padding-border-margin-001.html": [
+ "be918dee5108123f66ed1a8e75ec965b4b67b916",
+ "reftest"
],
"mathml/relations/css-styling/visibility-001-ref.html": [
"fcaf5fe85b44129db71f82913374859380576369",
@@ -640663,6 +641305,18 @@
"8173b9cd2ef9162d6596c412d559abdb409d7267",
"reftest"
],
+ "mathml/relations/css-styling/width-height-001.html": [
+ "8d52f48a2d95acd1c103a00694915331cbcfccb1",
+ "testharness"
+ ],
+ "mathml/relations/css-styling/writing-mode/writing-mode-001.html": [
+ "01a93eb15f0af1b4fc7455e5b208898cca6e88e3",
+ "testharness"
+ ],
+ "mathml/relations/css-styling/writing-mode/writing-mode-002.html": [
+ "97be6292eb0b40f4431dd8c7f11fe0e5711d838f",
+ "testharness"
+ ],
"mathml/relations/html5-tree/class-1-ref.html": [
"5afa59ecf2bfd2ec071d735464cd3bd20b0b17ce",
"support"
@@ -640783,12 +641437,20 @@
"4e92a846461b65d150cef9a9444de27abf40a26d",
"reftest"
],
+ "mathml/support/box-comparison.js": [
+ "b1e91cdd99ad197bd1302353dcedf71b74c0edb3",
+ "support"
+ ],
"mathml/support/feature-detection.js": [
"50ca926d25ea810177068a5f5de29f39749db7e6",
"support"
],
+ "mathml/support/layout-comparison.js": [
+ "b1a68995178410d3d0181b9981a0a2ab602ff3b2",
+ "support"
+ ],
"mathml/support/mathml-fragments.js": [
- "3753c3460ec25a872d887db048ac3e708a12e69d",
+ "097ca8690b452a147be295a17c90bd7b4e0342f4",
"support"
],
"mathml/tools/axisheight.py": [
@@ -640887,6 +641549,14 @@
"6da5c7d2848c2dc8a669dfcf621233c40a227c03",
"testharness"
],
+ "media-playback-quality/META.yml": [
+ "51b1b4e07ed2654d67d6e42083ed936e9d78848e",
+ "support"
+ ],
+ "media-playback-quality/idlharness.window.js": [
+ "2444e30c704457353145c252dcd7adf3432d35f0",
+ "testharness"
+ ],
"media-source/META.yml": [
"d1252f5af1b6718b54e4efbfb1f740e53b154561",
"support"
@@ -644552,7 +645222,7 @@
"testharness"
],
"native-file-system/FileSystemWriter.tentative.https.window.js": [
- "f2c2fc82866b83953e2783f8dc56ceaa0803b097",
+ "acc0be1c52184a8b67fdb57953cdc2b4ed793499",
"testharness"
],
"native-file-system/README.md": [
@@ -644560,7 +645230,7 @@
"support"
],
"native-file-system/resources/test-helpers.js": [
- "56c93b597508a5be23da31c9a9cb89d3cb470aa7",
+ "b794cee0c5f111fa9c9a2b05b8a94c2a2260839f",
"support"
],
"navigation-timing/META.yml": [
@@ -663480,7 +664150,7 @@
"support"
],
"resources/chromium/webxr-test.js": [
- "16a859a8ef36727cbbaf5ea55329593c27d6f972",
+ "43857bdc69599323f55ae453d092036fb8c27db6",
"support"
],
"resources/chromium/webxr-test.js.headers": [
@@ -666631,6 +667301,18 @@
"063a62d03143a32f44365bf1e7b08d283ae52895",
"support"
],
+ "service-workers/service-worker/resources/import-scripts-404-after-update-plus-update-worker.js": [
+ "e9899d8e7274ea8b65623e019411700ec65dbc84",
+ "support"
+ ],
+ "service-workers/service-worker/resources/import-scripts-404-after-update.js": [
+ "b569346035ac11c557a1e19d6bf9ba8b90597539",
+ "support"
+ ],
+ "service-workers/service-worker/resources/import-scripts-404.js": [
+ "19c7a4b8e561b3d95f10496e92a2c7264d693815",
+ "support"
+ ],
"service-workers/service-worker/resources/import-scripts-diff-resource-map-worker.js": [
"0fdcb0fcf80ad7f0dffa284c5b77178bdad95ef6",
"support"
@@ -667236,7 +667918,7 @@
"support"
],
"service-workers/service-worker/resources/update-worker.py": [
- "446d547ca78277c69795233f0d7c0f64125059d8",
+ "d25179304a73660122036e5d5fec2067dc61597a",
"support"
],
"service-workers/service-worker/resources/update/update-after-oneday.https.html": [
@@ -667392,11 +668074,11 @@
"testharness"
],
"service-workers/service-worker/unregister-then-register-new-script.https.html": [
- "a07da7d398fa686952e9b7e00df62a07d07fde7b",
+ "444a5c365776beaf3f1862341344e95b753afcae",
"testharness"
],
"service-workers/service-worker/unregister-then-register.https.html": [
- "5fd2cf970950bf94968867c75c41e0aa97205f76",
+ "b61608c8419fd4f362dee5330404e2743a2f05f6",
"testharness"
],
"service-workers/service-worker/unregister.https.html": [
@@ -667419,6 +668101,10 @@
"6628dba6ee7d11ae0cd45941c726df017afb9336",
"testharness"
],
+ "service-workers/service-worker/update-import-scripts.https.html": [
+ "e0bbb12bd675b636116ef5f81447904cddd922d9",
+ "testharness"
+ ],
"service-workers/service-worker/update-missing-import-scripts.https.html": [
"66e8bfac751e835af8e543fc5289697c15ac118d",
"testharness"
@@ -668187,67 +668873,67 @@
"556568baddbeec6ed0b597b5a8391833e807ebfa",
"support"
],
- "shape-detection/detected-boundingBox-read-only.html": [
+ "shape-detection/detected-boundingBox-read-only.https.html": [
"86b88892260602c17ebbf57e7a370d0342350374",
"testharness"
],
- "shape-detection/detection-HTMLCanvasElement.html": [
+ "shape-detection/detection-HTMLCanvasElement.https.html": [
"4e9615a03d0d079bc55eee0f76b50b6d1de8b859",
"testharness"
],
- "shape-detection/detection-HTMLImageElement.html": [
+ "shape-detection/detection-HTMLImageElement.https.html": [
"979efabdcb07cfdc0190383026a24e144dea1747",
"testharness"
],
- "shape-detection/detection-HTMLVideoElement.html": [
+ "shape-detection/detection-HTMLVideoElement.https.html": [
"7b3736d02e9b6b0769a18354b054e5c3ce268773",
"testharness"
],
- "shape-detection/detection-ImageBitmap.html": [
+ "shape-detection/detection-ImageBitmap.https.html": [
"a7157c0960eb463b953576e00bb9628cd48df73d",
"testharness"
],
- "shape-detection/detection-ImageData-detached.html": [
+ "shape-detection/detection-ImageData-detached.https.html": [
"6b6060f089eb5629e8625a8e58f9a0348f2988be",
"testharness"
],
- "shape-detection/detection-ImageData.html": [
+ "shape-detection/detection-ImageData.https.html": [
"a74c2afbe1bcde274793853c593c662f4b161e91",
"testharness"
],
- "shape-detection/detection-getSupportedFormats.html": [
+ "shape-detection/detection-getSupportedFormats.https.html": [
"4ccb5ab7661c7ba4217f2ae0f0fea15e53bb3b43",
"testharness"
],
- "shape-detection/detection-on-worker.worker.js": [
+ "shape-detection/detection-on-worker.https.worker.js": [
"6b440af7b81703915a1c25dad27f5518e1802e97",
"testharness"
],
- "shape-detection/detection-options.html": [
+ "shape-detection/detection-options.https.html": [
"704faf729294d78e1df7821e99baaf734d2ca59e",
"testharness"
],
- "shape-detection/detection-security-test.html": [
+ "shape-detection/detection-security-test.https.html": [
"b3f458e23ee8869aaad56847b8c451e72c4ccf94",
"testharness"
],
- "shape-detection/detector-same-object.html": [
+ "shape-detection/detector-same-object.https.html": [
"52540271d27ecf76cfe68ca0502630eac8c5d0a3",
"testharness"
],
"shape-detection/idlharness.https.any.js": [
- "8886e356baa94b4a0a3b320efd3d14405efb4189",
+ "e7f2cc8ff862d5b25a7ebf55eb6e2448f79688ad",
"testharness"
],
"shape-detection/resources/shapedetection-helpers.js": [
- "de1e681de9fb8520d97381b3e6a844bcfc84b1f2",
+ "eed448428d0dfb7cf713a7eaa6af9e4dc373611c",
"support"
],
- "shape-detection/shapedetection-cross-origin.sub.html": [
+ "shape-detection/shapedetection-cross-origin.sub.https.html": [
"c9d86430356de470bca7a8dfef8596e9159164ad",
"testharness"
],
- "shape-detection/shapedetection-empty-input.html": [
+ "shape-detection/shapedetection-empty-input.https.html": [
"601c992ed85a58ca575901485bafc1f34f5bde24",
"testharness"
],
@@ -674452,7 +675138,7 @@
"support"
],
"tools/serve/serve.py": [
- "77675dbeb3254e14da8cac6e9fc4ced0356292b9",
+ "1868b1a36e51c187491d73aa2708484da882042f",
"support"
],
"tools/serve/test_functional.py": [
@@ -674460,7 +675146,7 @@
"support"
],
"tools/serve/test_serve.py": [
- "62a6e74f980427ab88b05774f18b769b2f48702e",
+ "d6c082a970357f477e82cd25a1c0952ee744db54",
"support"
],
"tools/taskcluster/__init__.py": [
@@ -679096,11 +679782,11 @@
"support"
],
"tools/wptrunner/wptrunner/wptmanifest/node.py": [
- "33e9796c430c33aa0328559f12079f221180d679",
+ "24d523f924a2cf668de84975671207ada65720bf",
"support"
],
"tools/wptrunner/wptrunner/wptmanifest/parser.py": [
- "a8e2bd6db2f36f3034d5beecd40f23f03f6c8a06",
+ "8f1897b08f3e50602afc77d47cf41ee45f70f5fc",
"support"
],
"tools/wptrunner/wptrunner/wptmanifest/serializer.py": [
@@ -682491,8 +683177,8 @@
"a3171c3544e4640ca35d2a6de451d05cf8aa008c",
"manual"
],
- "web-nfc/NFCReader.html": [
- "5a0e88433f23d0ca8f71df8d9fcd0c7ebe036345",
+ "web-nfc/NFCReader.https.html": [
+ "3032b652edfb7ad36d531a9b27b95c865877814a",
"testharness"
],
"web-nfc/NFCReader_options_mediaType-manual.https.html": [
@@ -682824,7 +683510,7 @@
"support"
],
"webaudio/the-audio-api/the-audiobuffer-interface/audiobuffer-copy-channel.html": [
- "a1a5f3fce54e11e33580ec875909e4e1645cf713",
+ "4f9a998c6ded83d564cbb1f8dc3e1edf0de3efb7",
"testharness"
],
"webaudio/the-audio-api/the-audiobuffer-interface/audiobuffer-getChannelData.html": [
@@ -683556,7 +684242,7 @@
"testharness"
],
"webaudio/the-audio-api/the-mediastreamaudiosourcenode-interface/mediastreamaudiosourcenode-routing.html": [
- "43e5ac8e9bb6dfed192bbdfabdfbbe72f9d998a6",
+ "2e04ab6a3f248e69846cadbdc41c5369c406f519",
"testharness"
],
"webaudio/the-audio-api/the-offlineaudiocontext-interface/.gitkeep": [
@@ -685347,6 +686033,10 @@
"d98712fc485298a0455e44c9f29407dc232fca63",
"testharness"
],
+ "webrtc-svc/RTCRtpParameters-scalability.html": [
+ "98a8b3da81f70c9539b55d6f51dbfa9fc5cf183b",
+ "testharness"
+ ],
"webrtc/META.yml": [
"eed4ac834313773528e5665d80505cb4b951a1c9",
"support"
@@ -690380,7 +691070,7 @@
"support"
],
"webxr/resources/webxr_util.js": [
- "f8c7f0f81c7014dad1f5292836f3ee208a5b6830",
+ "61b25991b37d4f21470cd821778137658e05168d",
"support"
],
"webxr/webGLCanvasContext_create_xrcompatible.https.html": [
@@ -690460,11 +691150,11 @@
"testharness"
],
"webxr/xrInputSource_gamepad_disconnect.https.html": [
- "a43bdaae0f924b6c89144e59aa43896349e2b0a0",
+ "9ec349adeb979975569961382fe47f4c889837dc",
"testharness"
],
"webxr/xrInputSource_gamepad_input_registered.https.html": [
- "f3e0c75a128781e275aaadbfcb46ebe81ae64cac",
+ "9213657a367bb0dd8872ff10120d705b08c0f6e6",
"testharness"
],
"webxr/xrRay_constructor.https.html": [
@@ -690567,10 +691257,6 @@
"74f0e7611e5e201a275b1a444a6d4b367af3e53d",
"testharness"
],
- "webxr/xrWebGLLayer_framebuffer.https.html": [
- "ba6b7dc0b922ae45aa714de8d3ca6f4ffbaf414c",
- "testharness"
- ],
"webxr/xrWebGLLayer_framebuffer_draw.https.html": [
"dd40865e445aafce88f5941f4127236c36f01f2d",
"testharness"
@@ -690580,7 +691266,7 @@
"testharness"
],
"webxr/xrWebGLLayer_opaque_framebuffer.https.html": [
- "ceff6251d565726ddb56798da7bbbef649d96d2f",
+ "37955f3988d125b9b16959d0a55e40ce75934de6",
"testharness"
],
"webxr/xrWebGLLayer_viewports.https.html": [
diff --git a/tests/wpt/metadata/css/cssom-view/elementFromPoint-list-001.html.ini b/tests/wpt/metadata/css/cssom-view/elementFromPoint-list-001.html.ini
new file mode 100644
index 00000000000..e953c8679d0
--- /dev/null
+++ b/tests/wpt/metadata/css/cssom-view/elementFromPoint-list-001.html.ini
@@ -0,0 +1,4 @@
+[elementFromPoint-list-001.html]
+ [<li>Outside 1</li>]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/cssom-view/scrollIntoView-sideways-lr-writing-mode-and-rtl-direction.html.ini b/tests/wpt/metadata/css/cssom-view/scrollIntoView-sideways-lr-writing-mode-and-rtl-direction.html.ini
new file mode 100644
index 00000000000..acbd546ec28
--- /dev/null
+++ b/tests/wpt/metadata/css/cssom-view/scrollIntoView-sideways-lr-writing-mode-and-rtl-direction.html.ini
@@ -0,0 +1,28 @@
+[scrollIntoView-sideways-lr-writing-mode-and-rtl-direction.html]
+ [scrollIntoView({"block":"center","inline":"center"})]
+ expected: FAIL
+
+ [scrollIntoView({"block":"end","inline":"start"})]
+ expected: FAIL
+
+ [scrollIntoView({"block":"start","inline":"center"})]
+ expected: FAIL
+
+ [scrollIntoView({"block":"center","inline":"start"})]
+ expected: FAIL
+
+ [scrollIntoView({"block":"start","inline":"start"})]
+ expected: FAIL
+
+ [scrollIntoView({"block":"end","inline":"center"})]
+ expected: FAIL
+
+ [scrollIntoView({"block":"end","inline":"end"})]
+ expected: FAIL
+
+ [scrollIntoView({"block":"start","inline":"end"})]
+ expected: FAIL
+
+ [scrollIntoView({"block":"center","inline":"end"})]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/cssom-view/scrollIntoView-sideways-lr-writing-mode.html.ini b/tests/wpt/metadata/css/cssom-view/scrollIntoView-sideways-lr-writing-mode.html.ini
new file mode 100644
index 00000000000..1d4b23856de
--- /dev/null
+++ b/tests/wpt/metadata/css/cssom-view/scrollIntoView-sideways-lr-writing-mode.html.ini
@@ -0,0 +1,28 @@
+[scrollIntoView-sideways-lr-writing-mode.html]
+ [scrollIntoView({"block":"center","inline":"center"})]
+ expected: FAIL
+
+ [scrollIntoView({"block":"end","inline":"start"})]
+ expected: FAIL
+
+ [scrollIntoView({"block":"start","inline":"center"})]
+ expected: FAIL
+
+ [scrollIntoView({"block":"center","inline":"start"})]
+ expected: FAIL
+
+ [scrollIntoView({"block":"start","inline":"start"})]
+ expected: FAIL
+
+ [scrollIntoView({"block":"end","inline":"center"})]
+ expected: FAIL
+
+ [scrollIntoView({"block":"end","inline":"end"})]
+ expected: FAIL
+
+ [scrollIntoView({"block":"start","inline":"end"})]
+ expected: FAIL
+
+ [scrollIntoView({"block":"center","inline":"end"})]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/cssom-view/scrollIntoView-sideways-rl-writing-mode-and-rtl-direction.html.ini b/tests/wpt/metadata/css/cssom-view/scrollIntoView-sideways-rl-writing-mode-and-rtl-direction.html.ini
new file mode 100644
index 00000000000..3e57fd25f14
--- /dev/null
+++ b/tests/wpt/metadata/css/cssom-view/scrollIntoView-sideways-rl-writing-mode-and-rtl-direction.html.ini
@@ -0,0 +1,28 @@
+[scrollIntoView-sideways-rl-writing-mode-and-rtl-direction.html]
+ [scrollIntoView({"block":"center","inline":"center"})]
+ expected: FAIL
+
+ [scrollIntoView({"block":"end","inline":"start"})]
+ expected: FAIL
+
+ [scrollIntoView({"block":"start","inline":"center"})]
+ expected: FAIL
+
+ [scrollIntoView({"block":"center","inline":"start"})]
+ expected: FAIL
+
+ [scrollIntoView({"block":"start","inline":"start"})]
+ expected: FAIL
+
+ [scrollIntoView({"block":"end","inline":"center"})]
+ expected: FAIL
+
+ [scrollIntoView({"block":"end","inline":"end"})]
+ expected: FAIL
+
+ [scrollIntoView({"block":"start","inline":"end"})]
+ expected: FAIL
+
+ [scrollIntoView({"block":"center","inline":"end"})]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/cssom-view/scrollIntoView-sideways-rl-writing-mode.html.ini b/tests/wpt/metadata/css/cssom-view/scrollIntoView-sideways-rl-writing-mode.html.ini
new file mode 100644
index 00000000000..7d80c9e423a
--- /dev/null
+++ b/tests/wpt/metadata/css/cssom-view/scrollIntoView-sideways-rl-writing-mode.html.ini
@@ -0,0 +1,28 @@
+[scrollIntoView-sideways-rl-writing-mode.html]
+ [scrollIntoView({"block":"center","inline":"center"})]
+ expected: FAIL
+
+ [scrollIntoView({"block":"end","inline":"start"})]
+ expected: FAIL
+
+ [scrollIntoView({"block":"start","inline":"center"})]
+ expected: FAIL
+
+ [scrollIntoView({"block":"center","inline":"start"})]
+ expected: FAIL
+
+ [scrollIntoView({"block":"start","inline":"start"})]
+ expected: FAIL
+
+ [scrollIntoView({"block":"end","inline":"center"})]
+ expected: FAIL
+
+ [scrollIntoView({"block":"end","inline":"end"})]
+ expected: FAIL
+
+ [scrollIntoView({"block":"start","inline":"end"})]
+ expected: FAIL
+
+ [scrollIntoView({"block":"center","inline":"end"})]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/selectors/selectors-case-sensitive-001.html.ini b/tests/wpt/metadata/css/selectors/selectors-case-sensitive-001.html.ini
new file mode 100644
index 00000000000..74a463596ec
--- /dev/null
+++ b/tests/wpt/metadata/css/selectors/selectors-case-sensitive-001.html.ini
@@ -0,0 +1,4 @@
+[selectors-case-sensitive-001.html]
+ [Test element names are case-insensitive only in ASCII range]
+ 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 62efd46733a..9eb9e95addf 100644
--- a/tests/wpt/metadata/fetch/content-type/response.window.js.ini
+++ b/tests/wpt/metadata/fetch/content-type/response.window.js.ini
@@ -312,24 +312,27 @@
[<iframe>: separate response Content-Type: */* text/html]
expected: FAIL
- [<iframe>: combined response Content-Type: text/html;" text/plain]
+ [<iframe>: combined response Content-Type: text/html;charset=gbk text/plain text/html]
expected: FAIL
- [<iframe>: separate response Content-Type: text/plain */*]
+ [<iframe>: combined response Content-Type: text/html;x=" text/plain]
expected: FAIL
- [<iframe>: combined response Content-Type: text/html */*;charset=gbk]
+ [<iframe>: separate response Content-Type: text/plain */*;charset=gbk]
expected: FAIL
- [<iframe>: combined response Content-Type: text/html;charset=gbk text/plain text/html]
+ [<iframe>: separate response Content-Type: text/html */*;charset=gbk]
expected: FAIL
- [<iframe>: combined response Content-Type: text/html */*]
+ [<iframe>: separate response Content-Type: text/html */*]
expected: FAIL
- [<iframe>: combined response Content-Type: text/html;x=" text/plain]
+ [<iframe>: separate response Content-Type: text/html;x=" text/plain]
expected: FAIL
- [<iframe>: separate response Content-Type: text/plain */*;charset=gbk]
+ [<iframe>: combined response Content-Type: text/html;" \\" text/plain]
+ expected: FAIL
+
+ [<iframe>: separate response Content-Type: text/html;" \\" text/plain]
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 e67f0406fc3..a5b9b3752be 100644
--- a/tests/wpt/metadata/fetch/content-type/script.window.js.ini
+++ b/tests/wpt/metadata/fetch/content-type/script.window.js.ini
@@ -53,3 +53,6 @@
[combined text/javascript ]
expected: FAIL
+ [separate text/javascript;charset=windows-1252 text/javascript]
+ 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_5.html.ini b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini
new file mode 100644
index 00000000000..dc2e45516de
--- /dev/null
+++ b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini
@@ -0,0 +1,4 @@
+[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/creating_browsing_context_test_01.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/creating_browsing_context_test_01.html.ini
new file mode 100644
index 00000000000..16fa2c5cfc1
--- /dev/null
+++ b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/creating_browsing_context_test_01.html.ini
@@ -0,0 +1,4 @@
+[creating_browsing_context_test_01.html]
+ [first argument: absolute url]
+ 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-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/semantics/forms/form-submission-0/form-submission-algorithm.html.ini b/tests/wpt/metadata/html/semantics/forms/form-submission-0/form-submission-algorithm.html.ini
index 702af61a3c4..127392316de 100644
--- a/tests/wpt/metadata/html/semantics/forms/form-submission-0/form-submission-algorithm.html.ini
+++ b/tests/wpt/metadata/html/semantics/forms/form-submission-0/form-submission-algorithm.html.ini
@@ -1,11 +1,7 @@
[form-submission-algorithm.html]
- expected: TIMEOUT
[If form's firing submission events is true, then return; 'submit' event]
expected: FAIL
[If form's firing submission events is true, then return; 'invalid' event]
expected: FAIL
- [Cannot navigate (after constructing the entry list)]
- expected: TIMEOUT
-
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
new file mode 100644
index 00000000000..9e522297c94
--- /dev/null
+++ b/tests/wpt/metadata/html/semantics/interactive-elements/the-details-element/toggleEvent.html.ini
@@ -0,0 +1,7 @@
+[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
new file mode 100644
index 00000000000..a9677391662
--- /dev/null
+++ b/tests/wpt/metadata/html/syntax/parsing/DOMContentLoaded-defer.html.ini
@@ -0,0 +1,4 @@
+[DOMContentLoaded-defer.html]
+ [The end: DOMContentLoaded and defer scripts]
+ 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_origin.htm.ini b/tests/wpt/metadata/resource-timing/resource_TAO_origin.htm.ini
index 5a549d938b6..5c59982f790 100644
--- a/tests/wpt/metadata/resource-timing/resource_TAO_origin.htm.ini
+++ b/tests/wpt/metadata/resource-timing/resource_TAO_origin.htm.ini
@@ -11,3 +11,6 @@
[The iframe should have one resource timing entry.]
expected: FAIL
+ [responseEnd should not be 0 in timing-allow cross-origin request.]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-analysernode-interface/realtimeanalyser-fft-scaling.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-analysernode-interface/realtimeanalyser-fft-scaling.html.ini
index a56bad443a2..66bd350083b 100644
--- a/tests/wpt/metadata/webaudio/the-audio-api/the-analysernode-interface/realtimeanalyser-fft-scaling.html.ini
+++ b/tests/wpt/metadata/webaudio/the-audio-api/the-analysernode-interface/realtimeanalyser-fft-scaling.html.ini
@@ -1,5 +1,4 @@
[realtimeanalyser-fft-scaling.html]
- expected: TIMEOUT
[X 2048-point FFT peak position is not equal to 64. Got 0.]
expected: FAIL
diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-audiobuffer-interface/audiobuffer-copy-channel.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-audiobuffer-interface/audiobuffer-copy-channel.html.ini
index 20be82eff14..2ff4a9edb68 100644
--- a/tests/wpt/metadata/webaudio/the-audio-api/the-audiobuffer-interface/audiobuffer-copy-channel.html.ini
+++ b/tests/wpt/metadata/webaudio/the-audio-api/the-audiobuffer-interface/audiobuffer-copy-channel.html.ini
@@ -14,3 +14,15 @@
[X 5: buffer.copyToChannel(x, 0, 16) incorrectly threw IndexSizeError: "The index is not in the allowed range.".]
expected: FAIL
+ [X 4: buffer.copyToChannel(x, 0, -1) incorrectly threw IndexSizeError: "The index is not in the allowed range.".]
+ expected: FAIL
+
+ [< [copyFrom-exceptions\] 2 out of 11 assertions were failed.]
+ expected: FAIL
+
+ [< [copyTo-exceptions\] 2 out of 10 assertions were failed.]
+ expected: FAIL
+
+ [X 5: buffer.copyFromChannel(x, 0, -1) incorrectly threw IndexSizeError: "The index is not in the allowed range.".]
+ 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 98a49abc6ac..b0910df98ad 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
@@ -146,3 +146,9 @@
[X SNR (NaN dB) is not greater than or equal to 65.737. Got NaN.]
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 1.0350983311555801e+21 at index of 39267.\n\t[39267\]\t-1.0350983311555801e+21\t-9.8276454210281372e-1\t1.0350983311555801e+21\t1.0532516048460481e+21\t3.8985999999999999e-3\n\tMax RelError of 2.1757020142640641e+21 at index of 20238.\n\t[20238\]\t-1.0350893239563253e+21\t-4.7574958205223083e-1\t1.0350893239563253e+21\t2.1757020142640641e+21\t3.8985999999999999e-3\n]
+ expected: FAIL
+
+ [X SNR (-379.8758083905784 dB) is not greater than or equal to 65.737. Got -379.8758083905784.]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/webxr/xrBoundedReferenceSpace_updates.https.html.ini b/tests/wpt/metadata/webxr/xrBoundedReferenceSpace_updates.https.html.ini
index 27f6c5ed7a2..6ff00c31bef 100644
--- a/tests/wpt/metadata/webxr/xrBoundedReferenceSpace_updates.https.html.ini
+++ b/tests/wpt/metadata/webxr/xrBoundedReferenceSpace_updates.https.html.ini
@@ -1,5 +1,5 @@
[xrBoundedReferenceSpace_updates.https.html]
- expected: ERROR
+ expected: TIMEOUT
['XRBoundedReferenceSpace updates properly when the changes are applied]
expected: TIMEOUT
diff --git a/tests/wpt/web-platform-tests/IndexedDB/idbfactory-databases-opaque-origin.html b/tests/wpt/web-platform-tests/IndexedDB/idbfactory-databases-opaque-origin.html
index 805c1951b3c..5f1b3070c63 100644
--- a/tests/wpt/web-platform-tests/IndexedDB/idbfactory-databases-opaque-origin.html
+++ b/tests/wpt/web-platform-tests/IndexedDB/idbfactory-databases-opaque-origin.html
@@ -31,9 +31,16 @@ function wait_for_message(iframe) {
const script =
'<script>' +
' window.onmessage = () => {' +
- ' indexedDB.databases().then(' +
- ' () => window.parent.postMessage({result: "no exception"}, "*"),' +
- ' ex => window.parent.postMessage({result: ex.name}, "*"));' +
+ ' try { ' +
+ ' if (!indexedDB || !indexedDB.databases) {' +
+ ' window.parent.postMessage({result: "indexedDB.databases undefined"}, "*")' +
+ ' }' +
+ ' indexedDB.databases().then(' +
+ ' () => window.parent.postMessage({result: "no exception"}, "*"),' +
+ ' ex => window.parent.postMessage({result: ex.name}, "*"));' +
+ ' } catch(e) { ' +
+ ' window.parent.postMessage({result: e.name + " thrown, not rejected"}, "*")' +
+ ' }'+
' };' +
'<\/script>';
@@ -50,6 +57,6 @@ promise_test(async t => {
iframe.contentWindow.postMessage({}, '*');
const message = await wait_for_message(iframe);
assert_equals(message.result, 'SecurityError',
- 'Exception should be SecurityError');
+ 'Promise should be rejected with SecurityError');
}, 'IDBFactory.databases() in sandboxed iframe should reject');
</script>
diff --git a/tests/wpt/web-platform-tests/css/CSS2/floats/zero-available-space-float-positioning.html b/tests/wpt/web-platform-tests/css/CSS2/floats/zero-available-space-float-positioning.html
new file mode 100644
index 00000000000..62ace6daa03
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/CSS2/floats/zero-available-space-float-positioning.html
@@ -0,0 +1,9 @@
+<!DOCTYPE html>
+<link rel="help" href="https://www.w3.org/TR/CSS22/visudet.html#float-width" title="10.3.5 Floating, non-replaced elements">
+<link rel="match" href="../../reference/ref-filled-green-100px-square-only.html">
+<p>Test passes if there is a filled green square.</p>
+<div style="width: 0px;">
+ <div style="float: left; width: 100px; height: 50px; background: green;"></div>
+ <div style="float: left; width: 100px; height: 50px; background: green;"></div>
+</div>
+
diff --git a/tests/wpt/web-platform-tests/css/css-flexbox/parsing/flex-basis-computed.html b/tests/wpt/web-platform-tests/css/css-flexbox/parsing/flex-basis-computed.html
index a2cd407fc72..549c9bf7053 100644
--- a/tests/wpt/web-platform-tests/css/css-flexbox/parsing/flex-basis-computed.html
+++ b/tests/wpt/web-platform-tests/css/css-flexbox/parsing/flex-basis-computed.html
@@ -19,10 +19,15 @@
<div id="target"></div>
<script>
test_computed_value("flex-basis", "1px");
-test_computed_value("flex-basis", "calc(10px + 0.5em)", "30px");
-test_computed_value("flex-basis", "calc(10px - 0.5em)", "0px");
test_computed_value("flex-basis", "400%");
test_computed_value("flex-basis", "auto");
+
+test_computed_value("flex-basis", "calc(10px + 0.5em)", "30px");
+test_computed_value("flex-basis", "calc(10px - 0.5em)", "0px");
+test_computed_value("flex-basis", "calc(10%)", "10%");
+// https://github.com/w3c/csswg-drafts/issues/3482
+test_computed_value("flex-basis", "calc(0% + 10px)", "calc(0% + 10px)");
+test_computed_value("flex-basis", "calc(10% + 0px)", "10%");
</script>
</body>
</html>
diff --git a/tests/wpt/web-platform-tests/css/css-position/hypothetical-dynamic-change-001-ref.html b/tests/wpt/web-platform-tests/css/css-position/hypothetical-dynamic-change-001-ref.html
new file mode 100644
index 00000000000..12e109bd0b2
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-position/hypothetical-dynamic-change-001-ref.html
@@ -0,0 +1,15 @@
+<!doctype html>
+<title>CSS test reference</title>
+<link rel="author" href="mailto:emilio@crisal.io" title="Emilio Cobos Álvarez">
+<link rel="author" href="https://mozilla.org" title="Mozilla">
+<style>
+ .ancestor {
+ width: 100px;
+ height: 100px;
+ position: fixed;
+ left: 100px;
+ top: 0;
+ background-color: green;
+ }
+</style>
+<div class="ancestor"></div>
diff --git a/tests/wpt/web-platform-tests/css/css-position/hypothetical-dynamic-change-001.html b/tests/wpt/web-platform-tests/css/css-position/hypothetical-dynamic-change-001.html
new file mode 100644
index 00000000000..996f439211c
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-position/hypothetical-dynamic-change-001.html
@@ -0,0 +1,30 @@
+<!doctype html>
+<title>CSS test: movement of fixed-position ancestor correctly moves fixed-position descendant depending on the static position</title>
+<link rel="help" href="https://drafts.csswg.org/css-position/#size-and-position-details">
+<link rel="match" href="hypothetical-dynamic-change-001-ref.html">
+<link rel="author" href="mailto:emilio@crisal.io" title="Emilio Cobos Álvarez">
+<link rel="author" href="https://mozilla.org" title="Mozilla">
+<style>
+ .ancestor, .child {
+ position: fixed;
+ width: 100px;
+ height: 100px;
+ background-color: green;
+ /* NOTE: child remains auto-positioned */
+ }
+ .ancestor {
+ left: 0;
+ top: 0;
+ background-color: red;
+ }
+</style>
+<div class="ancestor">
+ <div class="child"></div>
+</div>
+<script>
+onload = function() {
+ let ancestor = document.querySelector(".ancestor");
+ window.unused = ancestor.getBoundingClientRect();
+ ancestor.style.left = "100px";
+}
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-position/hypothetical-dynamic-change-002.html b/tests/wpt/web-platform-tests/css/css-position/hypothetical-dynamic-change-002.html
new file mode 100644
index 00000000000..114b48dc7fc
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-position/hypothetical-dynamic-change-002.html
@@ -0,0 +1,33 @@
+<!doctype html>
+<title>CSS test: movement of absolute-position ancestor correctly moves fixed-position descendant depending on the static position</title>
+<link rel="help" href="https://drafts.csswg.org/css-position/#size-and-position-details">
+<link rel="match" href="hypothetical-dynamic-change-001-ref.html">
+<link rel="author" href="mailto:emilio@crisal.io" title="Emilio Cobos Álvarez">
+<link rel="author" href="https://mozilla.org" title="Mozilla">
+<style>
+ .ancestor, .child {
+ width: 100px;
+ height: 100px;
+ background-color: green;
+ }
+ .child {
+ position: fixed;
+ /* NOTE: child remains auto-positioned */
+ }
+ .ancestor {
+ position: absolute;
+ left: 0;
+ top: 0;
+ background-color: red;
+ }
+</style>
+<div class="ancestor">
+ <div class="child"></div>
+</div>
+<script>
+onload = function() {
+ let ancestor = document.querySelector(".ancestor");
+ window.unused = ancestor.getBoundingClientRect();
+ ancestor.style.left = "100px";
+}
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-position/hypothetical-dynamic-change-003.html b/tests/wpt/web-platform-tests/css/css-position/hypothetical-dynamic-change-003.html
new file mode 100644
index 00000000000..26a27c26955
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-position/hypothetical-dynamic-change-003.html
@@ -0,0 +1,34 @@
+<!doctype html>
+<title>CSS test: movement of relative-position ancestor correctly moves fixed-position descendant depending on the static position</title>
+<link rel="help" href="https://drafts.csswg.org/css-position/#size-and-position-details">
+<link rel="match" href="hypothetical-dynamic-change-001-ref.html">
+<link rel="author" href="mailto:emilio@crisal.io" title="Emilio Cobos Álvarez">
+<link rel="author" href="https://mozilla.org" title="Mozilla">
+<style>
+ body { margin: 0 }
+ .ancestor, .child {
+ width: 100px;
+ height: 100px;
+ background-color: green;
+ }
+ .child {
+ position: fixed;
+ /* NOTE: child remains auto-positioned */
+ }
+ .ancestor {
+ position: relative;
+ left: 0;
+ top: 0;
+ background-color: red;
+ }
+</style>
+<div class="ancestor">
+ <div class="child"></div>
+</div>
+<script>
+onload = function() {
+ let ancestor = document.querySelector(".ancestor");
+ window.unused = ancestor.getBoundingClientRect();
+ ancestor.style.left = "100px";
+}
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-properties-values-api/var-reference-registered-properties-cycles.html b/tests/wpt/web-platform-tests/css/css-properties-values-api/var-reference-registered-properties-cycles.html
index 65d11697355..e94da5ddaef 100644
--- a/tests/wpt/web-platform-tests/css/css-properties-values-api/var-reference-registered-properties-cycles.html
+++ b/tests/wpt/web-platform-tests/css/css-properties-values-api/var-reference-registered-properties-cycles.html
@@ -142,3 +142,41 @@ test(function() {
assert_equals(computedStyle.transitionProperty, 'water');
}, "A var() cycle between a syntax:'*' property and an unregistered property is handled correctly.");
</script>
+
+<style>
+#test5_parent {
+ --registered-5-c:foo;
+ --registered-5-d:bar;
+ --registered-5-e:baz;
+ color: green;
+}
+#test5 {
+ --registered-5-a:var(--registered-5-b,hello);
+ --registered-5-b:var(--registered-5-a,world);
+
+ --registered-5-c:var(--registered-5-a);
+ --registered-5-d:var(--registered-5-b);
+ --registered-5-e:var(--unknown);
+ color: var(--registered-5-e);
+}
+</style>
+<div id=test5_parent>
+ <div id=test5></div>
+</div>
+<script>
+test(function() {
+ CSS.registerProperty({name: '--registered-5-a', syntax: '*', inherits: true});
+ CSS.registerProperty({name: '--registered-5-b', syntax: '*', inherits: true});
+ CSS.registerProperty({name: '--registered-5-c', syntax: '*', inherits: true});
+ CSS.registerProperty({name: '--registered-5-d', syntax: '*', inherits: true});
+ CSS.registerProperty({name: '--registered-5-e', syntax: '*', inherits: true});
+
+ let computedStyle = getComputedStyle(test5);
+ assert_equals(computedStyle.getPropertyValue('--registered-5-a'), '');
+ assert_equals(computedStyle.getPropertyValue('--registered-5-b'), '');
+ assert_equals(computedStyle.getPropertyValue('--registered-5-c'), 'foo');
+ assert_equals(computedStyle.getPropertyValue('--registered-5-d'), 'bar');
+ assert_equals(computedStyle.getPropertyValue('--registered-5-e'), 'baz');
+ assert_equals(computedStyle.getPropertyValue('color'), 'rgb(0, 128, 0)');
+}, "Invalid at computed-value time triggers 'unset' behavior");
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-scroll-anchoring/position-change-heuristic-display-none-to-abspos-change.html b/tests/wpt/web-platform-tests/css/css-scroll-anchoring/position-change-heuristic-display-none-to-abspos-change.html
new file mode 100644
index 00000000000..5cf27d9e6b1
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-scroll-anchoring/position-change-heuristic-display-none-to-abspos-change.html
@@ -0,0 +1,71 @@
+<!DOCTYPE html>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<link rel="author" title="Emilio Cobos Álvarez" href="mailto:emilio@crisal.io">
+<link rel="author" title="Mozilla" href="https://mozilla.org">
+<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1568778">
+<link rel="help" href="https://drafts.csswg.org/css-scroll-anchoring/#suppression-triggers">
+<style>
+#hidden {
+ display: none;
+ background: red;
+}
+#spacer {
+ height: calc(100vh + 200px); /* At least 200px of scroll range */
+}
+</style>
+<table>
+ <thead>
+ <tr>
+ <th>1
+ <th>1
+ <th>1
+ <th>1
+ </tr>
+ </thead>
+ <thead id="hidden">
+ <tr>
+ <th>1
+ <th>1
+ <th>1
+ <th>1
+ </tr>
+ </thead>
+ <tbody>
+ <tr><td>0 <td>0 <td>0 <td>0 </tr>
+ <tr><td>0 <td>0 <td>0 <td>0 </tr>
+ <tr><td>0 <td>0 <td>0 <td>0 </tr>
+ <tr><td>0 <td>0 <td>0 <td>0 </tr>
+ <tr><td>0 <td>0 <td>0 <td>0 </tr>
+ <tr><td>0 <td>0 <td>0 <td>0 </tr>
+ <tr><td>0 <td>0 <td>0 <td>0 </tr>
+ </tbody>
+</table>
+<div id="spacer"></div>
+<script>
+let isFirstEvent = true;
+const targetScrollPosition = 100;
+const hidden = document.querySelector("#hidden");
+const t = async_test("Scroll offset doesn't get stuck in infinite scroll events when an element goes back and forth to display: none while changing abspos style");
+window.onscroll = t.step_func(function() {
+ hidden.style.display = "block";
+ hidden.style.position = "absolute";
+ hidden.style.visibility = "hidden";
+ window.unused = hidden.offsetHeight;
+ hidden.style.display = "";
+ hidden.style.position = "";
+ hidden.style.visibility = "";
+
+ assert_true(isFirstEvent, "Shouldn't get more than one scroll event");
+ isFirstEvent = false;
+ requestAnimationFrame(t.step_func(function() {
+ requestAnimationFrame(t.step_func_done(function() {
+ assert_equals(document.scrollingElement.scrollTop, targetScrollPosition);
+ }));
+ }));
+});
+
+window.onload = t.step_func(function() {
+ window.scrollTo(0, targetScrollPosition);
+});
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/computed/get-auto-min-size.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/computed/get-auto-min-size.html
new file mode 100644
index 00000000000..3466fb21ca6
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/computed/get-auto-min-size.html
@@ -0,0 +1,57 @@
+<!doctype html>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#get-a-value-from-a-stylepropertymap">
+<link rel="help" href="https://drafts.csswg.org/css-sizing-3/#valdef-width-auto">
+<meta name="assert" content="Tests computed StylePropertyMap.get of auto minimum sizes." />
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<div style="display: flex;">
+ <div id="flex-inflow"></div>
+ <div id="flex-absolute" style="position: absolute;"></div>
+</div>
+<div style="display: grid;">
+ <div id="grid-inflow"></div>
+ <div id="grid-absolute" style="position: absolute;"></div>
+</div>
+<div id="block-inflow"></div>
+<div id="block-absolute" style="position: absolute;"></div>
+<script>
+'use strict';
+
+test(t => {
+ const targetMap = document.getElementById('flex-inflow').computedStyleMap();
+ assert_style_value_equals(targetMap.get('min-width'), new CSSKeywordValue('auto'));
+ assert_style_value_equals(targetMap.get('min-height'), new CSSKeywordValue('auto'));
+}, 'An inflow flex-item computed StylePropertyMap.get reports the auto minimum size correctly.');
+
+test(t => {
+ const targetMap = document.getElementById('flex-absolute').computedStyleMap();
+ assert_style_value_equals(targetMap.get('min-width'), new CSSKeywordValue('auto'));
+ assert_style_value_equals(targetMap.get('min-height'), new CSSKeywordValue('auto'));
+}, 'An absolute flex-child computed StylePropertyMap.get reports the auto minimum size correctly.');
+
+test(t => {
+ const targetMap = document.getElementById('grid-inflow').computedStyleMap();
+ assert_style_value_equals(targetMap.get('min-width'), new CSSKeywordValue('auto'));
+ assert_style_value_equals(targetMap.get('min-height'), new CSSKeywordValue('auto'));
+}, 'An inflow grid-item computed StylePropertyMap.get reports the auto minimum size correctly.');
+
+test(t => {
+ const targetMap = document.getElementById('grid-absolute').computedStyleMap();
+ assert_style_value_equals(targetMap.get('min-width'), new CSSKeywordValue('auto'));
+ assert_style_value_equals(targetMap.get('min-height'), new CSSKeywordValue('auto'));
+}, 'An absolute grid-child computed StylePropertyMap.get reports the auto minimum size correctly.');
+
+test(t => {
+ const targetMap = document.getElementById('block-inflow').computedStyleMap();
+ assert_style_value_equals(targetMap.get('min-width'), new CSSKeywordValue('auto'));
+ assert_style_value_equals(targetMap.get('min-height'), new CSSKeywordValue('auto'));
+}, 'An inflow block computed StylePropertyMap.get reports the auto minimum size correctly.');
+
+test(t => {
+ const targetMap = document.getElementById('block-absolute').computedStyleMap();
+ assert_style_value_equals(targetMap.get('min-width'), new CSSKeywordValue('auto'));
+ assert_style_value_equals(targetMap.get('min-height'), new CSSKeywordValue('auto'));
+}, 'An absolute block computed StylePropertyMap.get reports the auto minimum size correctly.');
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/support/wm-propagation-body-035-exp-res.png b/tests/wpt/web-platform-tests/css/css-writing-modes/support/wm-propagation-body-035-exp-res.png
new file mode 100644
index 00000000000..33f2820dafd
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-writing-modes/support/wm-propagation-body-035-exp-res.png
Binary files differ
diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-003-ref.xht b/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-003-ref.xht
deleted file mode 100644
index 1f83fdaea6e..00000000000
--- a/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-003-ref.xht
+++ /dev/null
@@ -1,37 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-
-<html xmlns="http://www.w3.org/1999/xhtml">
-
- <head>
-
- <title>CSS Reftest Reference</title>
-
- <link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/" />
-
- <meta content="image" name="flags" />
-
- <style type="text/css"><![CDATA[
- img
- {
- vertical-align: top;
- }
-
- img + img
- {
- padding-left: 1em;
- }
- ]]></style>
- </head>
-
- <body>
-
- <div><img src="support/swatch-orange.png" width="100" height="100" alt="Image download support must be enabled" /><img src="support/wm-propagation-body-003-exp-res.png" width="340" height="37" alt="Image download support must be enabled" /></div>
-
- <!--
- The image says:
- Test passes if there is an orange square
- in the <strong>upper-left corner</strong> of the page.
- -->
-
- </body>
-</html>
diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-006.xht b/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-006.xht
deleted file mode 100644
index 93b5236f138..00000000000
--- a/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-006.xht
+++ /dev/null
@@ -1,51 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-
-<html xmlns="http://www.w3.org/1999/xhtml">
-
- <head>
-
- <title>CSS Writing Modes Test: 'writing-mode: vertical-rl' set to body element propagates to viewport</title>
-
- <link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/" />
- <link rel="help" href="https://www.w3.org/TR/css-writing-modes-3/#principal-flow" title="8. The Principal Writing Mode" />
- <link rel="bookmark" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1102175" title="Bug 1102175: &lt;body&gt; with writing-mode: vertical-rl does not align children to the right " />
- <link rel="match" href="block-flow-direction-025-ref.xht" />
-
- <meta name="flags" content="image" />
- <meta name="assert" content="This test checks that when the root element has a &lt;body&gt; child element, then the principal writing mode is instead taken from the values of writing-mode and direction on the first such child element instead of taken from the root element." />
-
- <style type="text/css"><![CDATA[
- html
- {
- writing-mode: horizontal-tb;
- }
-
- body
- {
- writing-mode: vertical-rl;
- }
-
- div
- {
- background-color: blue;
- height: 100px;
- width: 100px;
- }
- ]]></style>
-
- </head>
-
- <body>
-
- <div></div>
-
- <p><img src="support/block-flow-direction-025-exp-res.png" width="359" height="36" alt="Image download support must be enabled" /></p>
-
- <!--
- The image says:
- Test passes if there is a blue square in the
- <strong>upper-right corner</strong> of the page.
- -->
-
- </body>
-</html>
diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-008.xht b/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-008.xht
deleted file mode 100644
index feeb8575ad9..00000000000
--- a/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-008.xht
+++ /dev/null
@@ -1,49 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-
-<html xmlns="http://www.w3.org/1999/xhtml">
-
- <head>
-
- <title>CSS Writing Modes Test: 'writing-mode: sideways-rl' set to body element propagates to viewport</title>
-
- <link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/" />
- <link rel="help" href="https://www.w3.org/TR/css-writing-modes-4/#principal-flow" title="8. The Principal Writing Mode" />
- <link rel="match" href="block-flow-direction-025-ref.xht" />
-
- <meta name="flags" content="image" />
- <meta name="assert" content="This test checks that when the root element has a &lt;body&gt; child element, then the principal writing mode is instead taken from the values of writing-mode and direction on the first such child element instead of taken from the root element." />
-
- <style type="text/css"><![CDATA[
- html
- {
- writing-mode: horizontal-tb;
- }
-
- body
- {
- writing-mode: sideways-rl;
- }
-
- div
- {
- background-color: blue;
- height: 100px;
- width: 100px;
- }
- ]]></style>
- </head>
-
- <body>
-
- <div></div>
-
- <p><img src="support/block-flow-direction-025-exp-res.png" width="359" height="36" alt="Image download support must be enabled" /></p>
-
- <!--
- The image says:
- Test passes if there is a blue square in the
- <strong>upper-right corner</strong> of the page.
- -->
-
- </body>
-</html>
diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-010.xht b/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-010.xht
deleted file mode 100644
index d74f5a6b06b..00000000000
--- a/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-010.xht
+++ /dev/null
@@ -1,48 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-
-<html xmlns="http://www.w3.org/1999/xhtml">
-
- <head>
-
- <title>CSS Writing Modes Test: 'writing-mode: horizontal-tb' set to body element propagates to viewport</title>
-
- <link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/" />
- <link rel="help" href="https://www.w3.org/TR/css-writing-modes-3/#principal-flow" title="8. The Principal Writing Mode" />
- <link rel="match" href="wm-propagation-body-003-ref.xht" />
-
- <meta name="flags" content="image" />
- <meta name="assert" content="This test checks that when the root element has a &lt;body&gt; child element, then the principal writing mode is instead taken from the values of writing-mode and direction on the first such child element instead of taken from the root element." />
-
- <style type="text/css"><![CDATA[
- html
- {
- writing-mode: vertical-rl;
- }
-
- body
- {
- writing-mode: horizontal-tb;
- }
-
- img#orange-square
- {
- height: 100px;
- padding-right: 1em;
- vertical-align: top;
- width: 100px;
- }
- ]]></style>
- </head>
-
- <body>
-
- <div><img id="orange-square" src="support/swatch-orange.png" alt="Image download support must be enabled" /><img src="support/wm-propagation-body-003-exp-res.png" width="340" height="37" alt="Image download support must be enabled" /></div>
-
- <!--
- The image says:
- Test passes if there is an orange square
- in the <strong>upper-left corner</strong> of the page.
- -->
-
- </body>
-</html>
diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-011.xht b/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-011.xht
deleted file mode 100644
index 40e181ba0fe..00000000000
--- a/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-011.xht
+++ /dev/null
@@ -1,49 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-
-<html xmlns="http://www.w3.org/1999/xhtml">
-
- <head>
-
- <title>CSS Writing Modes Test: 'writing-mode: vertical-lr' set to body element propagates to viewport</title>
-
- <link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/" />
- <link rel="help" href="https://www.w3.org/TR/css-writing-modes-3/#principal-flow" title="8. The Principal Writing Mode" />
- <link rel="match" href="wm-propagation-body-003-ref.xht" />
-
- <meta name="flags" content="image" />
- <meta name="assert" content="This test checks that when the root element has a &lt;body&gt; child element, then the principal writing mode is instead taken from the values of writing-mode and direction on the first such child element instead of taken from the root element." />
-
- <style type="text/css"><![CDATA[
- html
- {
- writing-mode: vertical-rl;
- }
-
- body
- {
- writing-mode: vertical-lr;
- }
-
- div
- {
- background-color: orange;
- height: 100px;
- width: 100px;
- }
- ]]></style>
- </head>
-
- <body>
-
- <div></div>
-
- <p><img src="support/wm-propagation-body-003-exp-res.png" width="340" height="37" alt="Image download support must be enabled" /></p>
-
- <!--
- The image says:
- Test passes if there is an orange square
- in the <strong>upper-left corner</strong> of the page.
- -->
-
- </body>
-</html>
diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-015.xht b/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-015.xht
deleted file mode 100644
index 82fae377826..00000000000
--- a/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-015.xht
+++ /dev/null
@@ -1,50 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-
-<html xmlns="http://www.w3.org/1999/xhtml">
-
- <head>
-
- <title>CSS Writing Modes Test: 'writing-mode: vertical-rl' set to body element propagates to viewport</title>
-
- <link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/" />
- <link rel="help" href="https://www.w3.org/TR/css-writing-modes-3/#principal-flow" title="8. The Principal Writing Mode" />
- <link rel="match" href="block-flow-direction-025-ref.xht" />
-
- <meta name="flags" content="image" />
- <meta name="assert" content="This test checks that when the root element has a &lt;body&gt; child element, then the principal writing mode is instead taken from the values of writing-mode and direction on the first such child element instead of taken from the root element." />
-
- <style type="text/css"><![CDATA[
- html
- {
- writing-mode: vertical-lr;
- }
-
- body
- {
- writing-mode: vertical-rl;
- }
-
- div
- {
- background-color: blue;
- height: 100px;
- width: 100px;
- }
- ]]></style>
-
- </head>
-
- <body>
-
- <div></div>
-
- <p><img src="support/block-flow-direction-025-exp-res.png" width="359" height="36" alt="Image download support must be enabled" /></p>
-
- <!--
- The image says:
- Test passes if there is a blue square in the
- <strong>upper-right corner</strong> of the page.
- -->
-
- </body>
-</html>
diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-032.html b/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-032.html
new file mode 100644
index 00000000000..ca5f0094c34
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-032.html
@@ -0,0 +1,81 @@
+<!DOCTYPE html>
+
+ <meta charset="UTF-8">
+
+ <title>CSS Writing Modes Test: 'writing-mode: vertical-rl' set to &lt;body&gt; element propagates to viewport</title>
+
+ <link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/">
+ <link rel="help" href="https://www.w3.org/TR/css-writing-modes-3/#principal-flow" title="8. The Principal Writing Mode">
+ <!--
+ Issue 3066: [css-writing-modes] Does vertical writing mode of an HTML body
+ element cause an orthogonal flow?
+ https://github.com/w3c/csswg-drafts/issues/3066
+ -->
+ <link rel="match" href="block-flow-direction-025-ref.xht">
+
+ <meta name="flags" content="">
+ <meta name="assert" content="This test checks that when the root element has a &lt;body&gt; child element, then the principal writing mode is instead taken from the values of writing-mode and direction on the first such child element instead of taken from the root element. Also, a small script in this test verifies that the computed value of 'writing-mode' of the root element itself is not affected by such propagation.">
+
+ <!--
+ Tests 032 to 035: html's writing-mode is not specified
+
+ Tests 036 to 039: html's writing-mode is specified as horizontal-tb
+
+ Tests 040 to 043: html's writing-mode is specified as vertical-rl
+
+ Tests 044 to 047: html's writing-mode is specified as vertical-lr
+
+ Tests 048 to 051: html's writing-mode is specified as sideways-rl
+
+ Tests 052 to 055: html's writing-mode is specified as sideways-lr
+ -->
+
+ <style>
+ body
+ {
+ writing-mode: vertical-rl;
+ }
+
+ div
+ {
+ background-color: blue;
+ height: 100px;
+ width: 100px;
+ }
+
+ h1#second-test-condition
+ {
+ background-color: red;
+ color: yellow;
+ }
+ </style>
+
+ <script>
+ function verifyComputedValueDocRoot()
+ {
+ if(getComputedStyle(document.documentElement)["writing-mode"] == "horizontal-tb")
+ {
+ document.getElementById("second-test-condition").style.display = "none";
+ };
+
+ /*
+ If the computed value of 'writing-mode' of the root element
+ itself is not affected by such propagation, then the big FAIL
+ word will not be displayed.
+ */
+ }
+ </script>
+
+ <body onload="verifyComputedValueDocRoot();">
+
+ <div></div>
+
+ <p><img src="support/block-flow-direction-025-exp-res.png" width="359" height="36" alt="Image download support must be enabled">
+
+ <!--
+ The image says:
+ Test passes if there is a blue square in the
+ <strong>upper-right corner</strong> of the page.
+ -->
+
+ <h1 id="second-test-condition">FAIL</h1>
diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-033-ref.html b/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-033-ref.html
new file mode 100644
index 00000000000..766c85701d0
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-033-ref.html
@@ -0,0 +1,27 @@
+<!DOCTYPE html>
+
+ <meta charset="UTF-8">
+
+ <title>CSS Reftest Reference</title>
+
+ <link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/">
+
+ <style>
+ img
+ {
+ vertical-align: top;
+ }
+
+ img + img
+ {
+ padding-left: 1em;
+ }
+ </style>
+
+ <div><img src="support/swatch-orange.png" width="100" height="100" alt="Image download support must be enabled"><img src="support/wm-propagation-body-003-exp-res.png" width="340" height="37" alt="Image download support must be enabled"></div>
+
+ <!--
+ The image says:
+ Test passes if there is an orange square
+ in the <strong>upper-left corner</strong> of the page.
+ -->
diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-033.html b/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-033.html
new file mode 100644
index 00000000000..b98a57912cf
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-033.html
@@ -0,0 +1,84 @@
+<!DOCTYPE html>
+
+ <meta charset="UTF-8">
+
+ <title>CSS Writing Modes Test: 'writing-mode: vertical-lr' set to &lt;body&gt; element propagates to viewport</title>
+
+ <link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/">
+ <link rel="help" href="https://www.w3.org/TR/css-writing-modes-3/#principal-flow" title="8. The Principal Writing Mode">
+ <!--
+ Issue 3066: [css-writing-modes] Does vertical writing mode of an HTML body
+ element cause an orthogonal flow?
+ https://github.com/w3c/csswg-drafts/issues/3066
+ -->
+ <link rel="match" href="wm-propagation-body-033-ref.html">
+
+ <meta name="flags" content="">
+ <meta name="assert" content="This test checks that when the root element has a &lt;body&gt; child element, then the principal writing mode is instead taken from the values of writing-mode and direction on the first such child element instead of taken from the root element. Also, a small script in this test verifies that the computed value of 'writing-mode' of the root element itself is not affected by such propagation.">
+
+ <!--
+ Tests 032 to 035: html's writing-mode is not specified
+
+ Tests 036 to 039: html's writing-mode is specified as horizontal-tb
+
+ Tests 040 to 043: html's writing-mode is specified as vertical-rl
+
+ Tests 044 to 047: html's writing-mode is specified as vertical-lr
+
+ Tests 048 to 051: html's writing-mode is specified as sideways-rl
+
+ Tests 052 to 055: html's writing-mode is specified as sideways-lr
+ -->
+
+ <style>
+ html::before
+ {
+ background-color: orange;
+ content: "";
+ display: block;
+ height: 100px;
+ margin-left: 8px;
+ margin-top: 8px;
+ margin-right: 1em;
+ width: 100px;
+ }
+
+ body
+ {
+ writing-mode: vertical-lr;
+ }
+
+ h1#second-test-condition
+ {
+ background-color: red;
+ color: yellow;
+ }
+ </style>
+
+ <script>
+ function verifyComputedValueDocRoot()
+ {
+ if(getComputedStyle(document.documentElement)["writing-mode"] == "horizontal-tb")
+ {
+ document.getElementById("second-test-condition").style.display = "none";
+ };
+
+ /*
+ If the computed value of 'writing-mode' of the root element
+ itself is not affected by such propagation, then the big FAIL
+ word will not be displayed.
+ */
+ }
+ </script>
+
+ <body onload="verifyComputedValueDocRoot();">
+
+ <div><img src="support/wm-propagation-body-003-exp-res.png" width="340" height="37" alt="Image download support must be enabled"></div>
+
+ <!--
+ The image says:
+ Test passes if there is an orange square
+ in the <strong>upper-left corner</strong> of the page.
+ -->
+
+ <h1 id="second-test-condition">FAIL</h1>
diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-034.html b/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-034.html
new file mode 100644
index 00000000000..aa3081daef2
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-034.html
@@ -0,0 +1,81 @@
+<!DOCTYPE html>
+
+ <meta charset="UTF-8">
+
+ <title>CSS Writing Modes Test: 'writing-mode: sideways-rl' set to &lt;body&gt; element propagates to viewport</title>
+
+ <link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/">
+ <link rel="help" href="https://www.w3.org/TR/css-writing-modes-4/#principal-flow" title="8. The Principal Writing Mode">
+ <!--
+ Issue 3066: [css-writing-modes] Does vertical writing mode of an HTML body
+ element cause an orthogonal flow?
+ https://github.com/w3c/csswg-drafts/issues/3066
+ -->
+ <link rel="match" href="block-flow-direction-025-ref.xht">
+
+ <meta name="flags" content="">
+ <meta name="assert" content="This test checks that when the root element has a &lt;body&gt; child element, then the principal writing mode is instead taken from the values of writing-mode and direction on the first such child element instead of taken from the root element. Also, a small script in this test verifies that the computed value of 'writing-mode' of the root element itself is not affected by such propagation.">
+
+ <!--
+ Tests 032 to 035: html's writing-mode is not specified
+
+ Tests 036 to 039: html's writing-mode is specified as horizontal-tb
+
+ Tests 040 to 043: html's writing-mode is specified as vertical-rl
+
+ Tests 044 to 047: html's writing-mode is specified as vertical-lr
+
+ Tests 048 to 051: html's writing-mode is specified as sideways-rl
+
+ Tests 052 to 055: html's writing-mode is specified as sideways-lr
+ -->
+
+ <style>
+ body
+ {
+ writing-mode: sideways-rl;
+ }
+
+ div
+ {
+ background-color: blue;
+ height: 100px;
+ width: 100px;
+ }
+
+ h1#second-test-condition
+ {
+ background-color: red;
+ color: yellow;
+ }
+ </style>
+
+ <script>
+ function verifyComputedValueDocRoot()
+ {
+ if(getComputedStyle(document.documentElement)["writing-mode"] == "horizontal-tb")
+ {
+ document.getElementById("second-test-condition").style.display = "none";
+ };
+
+ /*
+ If the computed value of 'writing-mode' of the root element
+ itself is not affected by such propagation, then the big FAIL
+ word will not be displayed.
+ */
+ }
+ </script>
+
+ <body onload="verifyComputedValueDocRoot();">
+
+ <div></div>
+
+ <p><img src="support/block-flow-direction-025-exp-res.png" width="359" height="36" alt="Image download support must be enabled">
+
+ <!--
+ The image says:
+ Test passes if there is a blue square in the
+ <strong>upper-right corner</strong> of the page.
+ -->
+
+ <h1 id="second-test-condition">FAIL</h1>
diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-035-ref.html b/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-035-ref.html
new file mode 100644
index 00000000000..c3fdba1b749
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-035-ref.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+
+ <meta charset="UTF-8">
+
+ <title>CSS Reftest Reference</title>
+
+ <link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/">
+
+ <style>
+ div
+ {
+ bottom: 8px;
+ left: auto;
+ position: absolute;
+ }
+
+ img
+ {
+ vertical-align: bottom;
+ }
+
+ img + img
+ {
+ padding-left: 1em;
+ }
+ </style>
+
+ <div><img src="support/swatch-teal.png" width="100" height="100" alt="Image download support must be enabled"><img src="support/wm-propagation-body-035-exp-res.png" width="322" height="38" alt="Image download support must be enabled"></div>
+
+ <!--
+ The image says:
+ Test passes if there is a teal square in
+ the <strong>lower-left corner</strong> of the page.
+ -->
diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-035.html b/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-035.html
new file mode 100644
index 00000000000..9771d485cc1
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-035.html
@@ -0,0 +1,81 @@
+<!DOCTYPE html>
+
+ <meta charset="UTF-8">
+
+ <title>CSS Writing Modes Test: 'writing-mode: sideways-lr' set to &lt;body&gt; element propagates to viewport</title>
+
+ <link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/">
+ <link rel="help" href="https://www.w3.org/TR/css-writing-modes-4/#principal-flow" title="8. The Principal Writing Mode">
+ <!--
+ Issue 3066: [css-writing-modes] Does vertical writing mode of an HTML body
+ element cause an orthogonal flow?
+ https://github.com/w3c/csswg-drafts/issues/3066
+ -->
+ <link rel="match" href="wm-propagation-body-035-ref.html">
+
+ <meta name="flags" content="">
+ <meta name="assert" content="This test checks that when the root element has a &lt;body&gt; child element, then the principal writing mode is instead taken from the values of writing-mode and direction on the first such child element instead of taken from the root element. Also, a small script in this test verifies that the computed value of 'writing-mode' of the root element itself is not affected by such propagation.">
+
+ <!--
+ Tests 032 to 035: html's writing-mode is not specified
+
+ Tests 036 to 039: html's writing-mode is specified as horizontal-tb
+
+ Tests 040 to 043: html's writing-mode is specified as vertical-rl
+
+ Tests 044 to 047: html's writing-mode is specified as vertical-lr
+
+ Tests 048 to 051: html's writing-mode is specified as sideways-rl
+
+ Tests 052 to 055: html's writing-mode is specified as sideways-lr
+ -->
+
+ <style>
+ body
+ {
+ writing-mode: sideways-lr;
+ }
+
+ div
+ {
+ background-color: teal;
+ height: 100px;
+ width: 100px;
+ }
+
+ h1#second-test-condition
+ {
+ background-color: red;
+ color: yellow;
+ }
+ </style>
+
+ <script>
+ function verifyComputedValueDocRoot()
+ {
+ if(getComputedStyle(document.documentElement)["writing-mode"] == "horizontal-tb")
+ {
+ document.getElementById("second-test-condition").style.display = "none";
+ };
+
+ /*
+ If the computed value of 'writing-mode' of the root element
+ itself is not affected by such propagation, then the big FAIL
+ word will not be displayed.
+ */
+ }
+ </script>
+
+ <body onload="verifyComputedValueDocRoot();">
+
+ <div></div>
+
+ <p><img src="support/wm-propagation-body-035-exp-res.png" width="322" height="38" alt="Image download support must be enabled">
+
+ <!--
+ The image says:
+ Test passes if there is a teal square in
+ the <strong>lower-left corner</strong> of the page.
+ -->
+
+ <h1 id="second-test-condition">FAIL</h1>
diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-036.html b/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-036.html
new file mode 100644
index 00000000000..b30e979fadb
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-036.html
@@ -0,0 +1,87 @@
+<!DOCTYPE html>
+
+ <meta charset="UTF-8">
+
+ <title>CSS Writing Modes Test: 'writing-mode: vertical-rl' set to &lt;body&gt; element propagates to viewport</title>
+
+ <link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/">
+ <link rel="help" href="https://www.w3.org/TR/css-writing-modes-3/#principal-flow" title="8. The Principal Writing Mode">
+ <!--
+ Issue 3066: [css-writing-modes] Does vertical writing mode of an HTML body
+ element cause an orthogonal flow?
+ https://github.com/w3c/csswg-drafts/issues/3066
+ -->
+ <link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1102175" title="Bug 1102175: &lt;body&gt; with writing-mode: vertical-rl does not align children to the right ">
+ <link rel="match" href="block-flow-direction-025-ref.xht">
+
+ <meta name="flags" content="">
+ <meta name="assert" content="This test checks that when the root element has a &lt;body&gt; child element, then the principal writing mode is instead taken from the values of writing-mode and direction on the first such child element instead of taken from the root element. Also, a small script in this test verifies that the computed value of 'writing-mode' of the root element itself is not affected by such propagation.">
+
+ <!--
+ Tests 032 to 035: html's writing-mode is not specified
+
+ Tests 036 to 039: html's writing-mode is specified as horizontal-tb
+
+ Tests 040 to 043: html's writing-mode is specified as vertical-rl
+
+ Tests 044 to 047: html's writing-mode is specified as vertical-lr
+
+ Tests 048 to 051: html's writing-mode is specified as sideways-rl
+
+ Tests 052 to 055: html's writing-mode is specified as sideways-lr
+ -->
+
+ <style>
+ html
+ {
+ writing-mode: horizontal-tb;
+ }
+
+ body
+ {
+ writing-mode: vertical-rl;
+ }
+
+ div
+ {
+ background-color: blue;
+ height: 100px;
+ width: 100px;
+ }
+
+ h1#second-test-condition
+ {
+ background-color: red;
+ color: yellow;
+ }
+ </style>
+
+ <script>
+ function verifyComputedValueDocRoot()
+ {
+ if(getComputedStyle(document.documentElement)["writing-mode"] == "horizontal-tb")
+ {
+ document.getElementById("second-test-condition").style.display = "none";
+ };
+
+ /*
+ If the computed value of 'writing-mode' of the root element
+ itself is not affected by such propagation, then the big FAIL
+ word will not be displayed.
+ */
+ }
+ </script>
+
+ <body onload="verifyComputedValueDocRoot();">
+
+ <div></div>
+
+ <p><img src="support/block-flow-direction-025-exp-res.png" width="359" height="36" alt="Image download support must be enabled">
+
+ <!--
+ The image says:
+ Test passes if there is a blue square in the
+ <strong>upper-right corner</strong> of the page.
+ -->
+
+ <h1 id="second-test-condition">FAIL</h1>
diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-037.html b/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-037.html
new file mode 100644
index 00000000000..63616de0709
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-037.html
@@ -0,0 +1,89 @@
+<!DOCTYPE html>
+
+ <meta charset="UTF-8">
+
+ <title>CSS Writing Modes Test: 'writing-mode: vertical-lr' set to &lt;body&gt; element propagates to viewport</title>
+
+ <link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/">
+ <link rel="help" href="https://www.w3.org/TR/css-writing-modes-3/#principal-flow" title="8. The Principal Writing Mode">
+ <!--
+ Issue 3066: [css-writing-modes] Does vertical writing mode of an HTML body
+ element cause an orthogonal flow?
+ https://github.com/w3c/csswg-drafts/issues/3066
+ -->
+ <link rel="match" href="wm-propagation-body-033-ref.html">
+
+ <meta name="flags" content="">
+ <meta name="assert" content="This test checks that when the root element has a &lt;body&gt; child element, then the principal writing mode is instead taken from the values of writing-mode and direction on the first such child element instead of taken from the root element. Also, a small script in this test verifies that the computed value of 'writing-mode' of the root element itself is not affected by such propagation.">
+
+ <!--
+ Tests 032 to 035: html's writing-mode is not specified
+
+ Tests 036 to 039: html's writing-mode is specified as horizontal-tb
+
+ Tests 040 to 043: html's writing-mode is specified as vertical-rl
+
+ Tests 044 to 047: html's writing-mode is specified as vertical-lr
+
+ Tests 048 to 051: html's writing-mode is specified as sideways-rl
+
+ Tests 052 to 055: html's writing-mode is specified as sideways-lr
+ -->
+
+ <style>
+ html
+ {
+ writing-mode: horizontal-tb;
+ }
+
+ html::before
+ {
+ background-color: orange;
+ content: "";
+ display: block;
+ height: 100px;
+ margin-left: 8px;
+ margin-top: 8px;
+ margin-right: 1em;
+ width: 100px;
+ }
+
+ body
+ {
+ writing-mode: vertical-lr;
+ }
+
+ h1#second-test-condition
+ {
+ background-color: red;
+ color: yellow;
+ }
+ </style>
+
+ <script>
+ function verifyComputedValueDocRoot()
+ {
+ if(getComputedStyle(document.documentElement)["writing-mode"] == "horizontal-tb")
+ {
+ document.getElementById("second-test-condition").style.display = "none";
+ };
+
+ /*
+ If the computed value of 'writing-mode' of the root element
+ itself is not affected by such propagation, then the big FAIL
+ word will not be displayed.
+ */
+ }
+ </script>
+
+ <body onload="verifyComputedValueDocRoot();">
+
+ <div><img src="support/wm-propagation-body-003-exp-res.png" width="340" height="37" alt="Image download support must be enabled"></div>
+
+ <!--
+ The image says:
+ Test passes if there is an orange square
+ in the <strong>upper-left corner</strong> of the page.
+ -->
+
+ <h1 id="second-test-condition">FAIL</h1>
diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-038.html b/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-038.html
new file mode 100644
index 00000000000..54889883558
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-038.html
@@ -0,0 +1,86 @@
+<!DOCTYPE html>
+
+ <meta charset="UTF-8">
+
+ <title>CSS Writing Modes Test: 'writing-mode: sideways-rl' set to &lt;body&gt; element propagates to viewport</title>
+
+ <link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/">
+ <link rel="help" href="https://www.w3.org/TR/css-writing-modes-4/#principal-flow" title="8. The Principal Writing Mode">
+ <!--
+ Issue 3066: [css-writing-modes] Does vertical writing mode of an HTML body
+ element cause an orthogonal flow?
+ https://github.com/w3c/csswg-drafts/issues/3066
+ -->
+ <link rel="match" href="block-flow-direction-025-ref.xht">
+
+ <meta name="flags" content="">
+ <meta name="assert" content="This test checks that when the root element has a &lt;body&gt; child element, then the principal writing mode is instead taken from the values of writing-mode and direction on the first such child element instead of taken from the root element. Also, a small script in this test verifies that the computed value of 'writing-mode' of the root element itself is not affected by such propagation.">
+
+ <!--
+ Tests 032 to 035: html's writing-mode is not specified
+
+ Tests 036 to 039: html's writing-mode is specified as horizontal-tb
+
+ Tests 040 to 043: html's writing-mode is specified as vertical-rl
+
+ Tests 044 to 047: html's writing-mode is specified as vertical-lr
+
+ Tests 048 to 051: html's writing-mode is specified as sideways-rl
+
+ Tests 052 to 055: html's writing-mode is specified as sideways-lr
+ -->
+
+ <style>
+ html
+ {
+ writing-mode: horizontal-tb;
+ }
+
+ body
+ {
+ writing-mode: sideways-rl;
+ }
+
+ div
+ {
+ background-color: blue;
+ height: 100px;
+ width: 100px;
+ }
+
+ h1#second-test-condition
+ {
+ background-color: red;
+ color: yellow;
+ }
+ </style>
+
+ <script>
+ function verifyComputedValueDocRoot()
+ {
+ if(getComputedStyle(document.documentElement)["writing-mode"] == "horizontal-tb")
+ {
+ document.getElementById("second-test-condition").style.display = "none";
+ };
+
+ /*
+ If the computed value of 'writing-mode' of the root element
+ itself is not affected by such propagation, then the big FAIL
+ word will not be displayed.
+ */
+ }
+ </script>
+
+ <body onload="verifyComputedValueDocRoot();">
+
+ <div></div>
+
+ <p><img src="support/block-flow-direction-025-exp-res.png" width="359" height="36" alt="Image download support must be enabled">
+
+ <!--
+ The image says:
+ Test passes if there is a blue square in the
+ <strong>upper-right corner</strong> of the page.
+ -->
+
+ <h1 id="second-test-condition">FAIL</h1>
diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-039.html b/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-039.html
new file mode 100644
index 00000000000..7462c26c1aa
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-039.html
@@ -0,0 +1,86 @@
+<!DOCTYPE html>
+
+ <meta charset="UTF-8">
+
+ <title>CSS Writing Modes Test: 'writing-mode: sideways-lr' set to &lt;body&gt; element propagates to viewport</title>
+
+ <link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/">
+ <link rel="help" href="https://www.w3.org/TR/css-writing-modes-4/#principal-flow" title="8. The Principal Writing Mode">
+ <!--
+ Issue 3066: [css-writing-modes] Does vertical writing mode of an HTML body
+ element cause an orthogonal flow?
+ https://github.com/w3c/csswg-drafts/issues/3066
+ -->
+ <link rel="match" href="wm-propagation-body-035-ref.html">
+
+ <meta name="flags" content="">
+ <meta name="assert" content="This test checks that when the root element has a &lt;body&gt; child element, then the principal writing mode is instead taken from the values of writing-mode and direction on the first such child element instead of taken from the root element. Also, a small script in this test verifies that the computed value of 'writing-mode' of the root element itself is not affected by such propagation.">
+
+ <!--
+ Tests 032 to 035: html's writing-mode is not specified
+
+ Tests 036 to 039: html's writing-mode is specified as horizontal-tb
+
+ Tests 040 to 043: html's writing-mode is specified as vertical-rl
+
+ Tests 044 to 047: html's writing-mode is specified as vertical-lr
+
+ Tests 048 to 051: html's writing-mode is specified as sideways-rl
+
+ Tests 052 to 055: html's writing-mode is specified as sideways-lr
+ -->
+
+ <style>
+ html
+ {
+ writing-mode: horizontal-tb;
+ }
+
+ body
+ {
+ writing-mode: sideways-lr;
+ }
+
+ div
+ {
+ background-color: teal;
+ height: 100px;
+ width: 100px;
+ }
+
+ h1#second-test-condition
+ {
+ background-color: red;
+ color: yellow;
+ }
+ </style>
+
+ <script>
+ function verifyComputedValueDocRoot()
+ {
+ if(getComputedStyle(document.documentElement)["writing-mode"] == "horizontal-tb")
+ {
+ document.getElementById("second-test-condition").style.display = "none";
+ };
+
+ /*
+ If the computed value of 'writing-mode' of the root element
+ itself is not affected by such propagation, then the big FAIL
+ word will not be displayed.
+ */
+ }
+ </script>
+
+ <body onload="verifyComputedValueDocRoot();">
+
+ <div></div>
+
+ <p><img src="support/wm-propagation-body-035-exp-res.png" width="322" height="38" alt="Image download support must be enabled">
+
+ <!--
+ The image says:
+ Test passes if there is a teal square in
+ the <strong>lower-left corner</strong> of the page.
+ -->
+
+ <h1 id="second-test-condition">FAIL</h1>
diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-040.html b/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-040.html
new file mode 100644
index 00000000000..a744a21e273
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-040.html
@@ -0,0 +1,85 @@
+<!DOCTYPE html>
+
+ <meta charset="UTF-8">
+
+ <title>CSS Writing Modes Test: 'writing-mode: horizontal-tb' set to &lt;body&gt; element propagates to viewport</title>
+
+ <link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/">
+ <link rel="help" href="https://www.w3.org/TR/css-writing-modes-3/#principal-flow" title="8. The Principal Writing Mode">
+ <!--
+ Issue 3066: [css-writing-modes] Does vertical writing mode of an HTML body
+ element cause an orthogonal flow?
+ https://github.com/w3c/csswg-drafts/issues/3066
+ -->
+ <link rel="match" href="wm-propagation-body-033-ref.html">
+
+ <meta name="flags" content="">
+ <meta name="assert" content="This test checks that when the root element has a &lt;body&gt; child element, then the principal writing mode is instead taken from the values of writing-mode and direction on the first such child element instead of taken from the root element. Also, a small script in this test verifies that the computed value of 'writing-mode' of the root element itself is not affected by such propagation.">
+
+ <!--
+ Tests 032 to 035: html's writing-mode is not specified
+
+ Tests 036 to 039: html's writing-mode is specified as horizontal-tb
+
+ Tests 040 to 043: html's writing-mode is specified as vertical-rl
+
+ Tests 044 to 047: html's writing-mode is specified as vertical-lr
+
+ Tests 048 to 051: html's writing-mode is specified as sideways-rl
+
+ Tests 052 to 055: html's writing-mode is specified as sideways-lr
+ -->
+
+ <style>
+ html
+ {
+ writing-mode: vertical-rl;
+ }
+
+ body
+ {
+ writing-mode: horizontal-tb;
+ }
+
+ img#orange-square
+ {
+ height: 100px;
+ padding-right: 1em;
+ vertical-align: top;
+ width: 100px;
+ }
+
+ h1#second-test-condition
+ {
+ background-color: red;
+ color: yellow;
+ }
+ </style>
+
+ <script>
+ function verifyComputedValueDocRoot()
+ {
+ if(getComputedStyle(document.documentElement)["writing-mode"] == "vertical-rl")
+ {
+ document.getElementById("second-test-condition").style.display = "none";
+ };
+
+ /*
+ If the computed value of 'writing-mode' of the root element
+ itself is not affected by such propagation, then the big FAIL
+ word will not be displayed.
+ */
+ }
+ </script>
+
+ <body onload="verifyComputedValueDocRoot();">
+
+ <div><img id="orange-square" src="support/swatch-orange.png" alt="Image download support must be enabled"><img src="support/wm-propagation-body-003-exp-res.png" width="340" height="37" alt="Image download support must be enabled"></div>
+
+ <!--
+ The image says:
+ Test passes if there is an orange square
+ in the <strong>upper-left corner</strong> of the page.
+ -->
+
+ <h1 id="second-test-condition">FAIL</h1>
diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-041.html b/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-041.html
new file mode 100644
index 00000000000..2e2f82fcae8
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-041.html
@@ -0,0 +1,86 @@
+<!DOCTYPE html>
+
+ <meta charset="UTF-8">
+
+ <title>CSS Writing Modes Test: 'writing-mode: vertical-lr' set to &lt;body&gt; element propagates to viewport</title>
+
+ <link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/">
+ <link rel="help" href="https://www.w3.org/TR/css-writing-modes-3/#principal-flow" title="8. The Principal Writing Mode">
+ <!--
+ Issue 3066: [css-writing-modes] Does vertical writing mode of an HTML body
+ element cause an orthogonal flow?
+ https://github.com/w3c/csswg-drafts/issues/3066
+ -->
+ <link rel="match" href="wm-propagation-body-033-ref.html">
+
+ <meta name="flags" content="">
+ <meta name="assert" content="This test checks that when the root element has a &lt;body&gt; child element, then the principal writing mode is instead taken from the values of writing-mode and direction on the first such child element instead of taken from the root element. Also, a small script in this test verifies that the computed value of 'writing-mode' of the root element itself is not affected by such propagation.">
+
+ <!--
+ Tests 032 to 035: html's writing-mode is not specified
+
+ Tests 036 to 039: html's writing-mode is specified as horizontal-tb
+
+ Tests 040 to 043: html's writing-mode is specified as vertical-rl
+
+ Tests 044 to 047: html's writing-mode is specified as vertical-lr
+
+ Tests 048 to 051: html's writing-mode is specified as sideways-rl
+
+ Tests 052 to 055: html's writing-mode is specified as sideways-lr
+ -->
+
+ <style>
+ html
+ {
+ writing-mode: vertical-rl;
+ }
+
+ body
+ {
+ writing-mode: vertical-lr;
+ }
+
+ div
+ {
+ background-color: orange;
+ height: 100px;
+ width: 100px;
+ }
+
+ h1#second-test-condition
+ {
+ background-color: red;
+ color: yellow;
+ }
+ </style>
+
+ <script>
+ function verifyComputedValueDocRoot()
+ {
+ if(getComputedStyle(document.documentElement)["writing-mode"] == "vertical-rl")
+ {
+ document.getElementById("second-test-condition").style.display = "none";
+ };
+
+ /*
+ If the computed value of 'writing-mode' of the root element
+ itself is not affected by such propagation, then the big FAIL
+ word will not be displayed.
+ */
+ }
+ </script>
+
+ <body onload="verifyComputedValueDocRoot();">
+
+ <div></div>
+
+ <p><img src="support/wm-propagation-body-003-exp-res.png" width="340" height="37" alt="Image download support must be enabled">
+
+ <!--
+ The image says:
+ Test passes if there is an orange square
+ in the <strong>upper-left corner</strong> of the page.
+ -->
+
+ <h1 id="second-test-condition">FAIL</h1>
diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-042-ref.html b/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-042-ref.html
new file mode 100644
index 00000000000..d86e926463c
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-042-ref.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html>
+
+ <meta charset="UTF-8">
+
+ <title>CSS Reftest Reference</title>
+
+ <link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/">
+
+ <style>
+ html
+ {
+ writing-mode: vertical-rl;
+ }
+ </style>
+
+ <img id="blue" src="support/swatch-blue.png" width="100" height="100" alt="Image download support must be enabled">
+
+ <p><img src="support/block-flow-direction-025-exp-res.png" width="359" height="36" alt="Image download support must be enabled">
+
+ <!--
+ The image says:
+ Test passes if there is a blue square in the
+ <strong>upper-right corner</strong> of the page.
+ -->
+
+ <p style=margin-top:-8px>This text must be written sideways: vertically, with letters rotated 90 degrees.
diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-042.html b/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-042.html
new file mode 100644
index 00000000000..1bfbca99514
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-042.html
@@ -0,0 +1,93 @@
+<!DOCTYPE html>
+
+ <meta charset="UTF-8">
+
+ <title>CSS Writing Modes Test: 'writing-mode: sideways-rl' set to &lt;body&gt; element propagates to viewport</title>
+
+ <link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/">
+ <link rel="help" href="https://www.w3.org/TR/css-writing-modes-4/#principal-flow" title="8. The Principal Writing Mode">
+ <!--
+ Issue 3066: [css-writing-modes] Does vertical writing mode of an HTML body
+ element cause an orthogonal flow?
+ https://github.com/w3c/csswg-drafts/issues/3066
+ -->
+ <link rel="match" href="wm-propagation-body-042-ref.html">
+
+ <meta name="flags" content="">
+ <meta name="assert" content="This test checks that when the root element has a &lt;body&gt; child element, then the principal writing mode is instead taken from the values of writing-mode and direction on the first such child element instead of taken from the root element. Also, a small script in this test verifies that the computed value of 'writing-mode' of the root element itself is not affected by such propagation. Finally, in order to make sure that the principal writing mode is indeed 'sideways-rl', the test checks that a simple text is not affected by 'text-orientation: upright' since 'text-orientation: upright' should have no impact and no rendering effect on it.">
+
+ <!--
+ Tests 032 to 035: html's writing-mode is not specified
+
+ Tests 036 to 039: html's writing-mode is specified as horizontal-tb
+
+ Tests 040 to 043: html's writing-mode is specified as vertical-rl
+
+ Tests 044 to 047: html's writing-mode is specified as vertical-lr
+
+ Tests 048 to 051: html's writing-mode is specified as sideways-rl
+
+ Tests 052 to 055: html's writing-mode is specified as sideways-lr
+ -->
+
+ <style>
+ html
+ {
+ writing-mode: vertical-rl;
+ }
+
+ html::after
+ {
+ content: "This text must be written sideways: vertically, with letters rotated 90 degrees.";
+ text-orientation: upright;
+ /* 'text-orientation: upright' has no effect with 'sideways-rl', but does with 'vertical-rl' */
+ }
+
+ body
+ {
+ writing-mode: sideways-rl;
+ }
+
+ div
+ {
+ background-color: blue;
+ height: 100px;
+ width: 100px;
+ }
+
+ h1#second-test-condition
+ {
+ background-color: red;
+ color: yellow;
+ }
+ </style>
+
+ <script>
+ function verifyComputedValueDocRoot()
+ {
+ if(getComputedStyle(document.documentElement)["writing-mode"] == "vertical-rl")
+ {
+ document.getElementById("second-test-condition").style.display = "none";
+ };
+
+ /*
+ If the computed value of 'writing-mode' of the root element
+ itself is not affected by such propagation, then the big FAIL
+ word will not be displayed.
+ */
+ }
+ </script>
+
+ <body onload="verifyComputedValueDocRoot();">
+
+ <div></div>
+
+ <p><img src="support/block-flow-direction-025-exp-res.png" width="359" height="36" alt="Image download support must be enabled">
+
+ <!--
+ The image says:
+ Test passes if there is a blue square in the
+ <strong>upper-right corner</strong> of the page.
+ -->
+
+ <h1 id="second-test-condition">FAIL</h1>
diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-043.html b/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-043.html
new file mode 100644
index 00000000000..61be8f79500
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-043.html
@@ -0,0 +1,86 @@
+<!DOCTYPE html>
+
+ <meta charset="UTF-8">
+
+ <title>CSS Writing Modes Test: 'writing-mode: sideways-lr' set to &lt;body&gt; element propagates to viewport</title>
+
+ <link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/">
+ <link rel="help" href="https://www.w3.org/TR/css-writing-modes-4/#principal-flow" title="8. The Principal Writing Mode">
+ <!--
+ Issue 3066: [css-writing-modes] Does vertical writing mode of an HTML body
+ element cause an orthogonal flow?
+ https://github.com/w3c/csswg-drafts/issues/3066
+ -->
+ <link rel="match" href="wm-propagation-body-035-ref.html">
+
+ <meta name="flags" content="">
+ <meta name="assert" content="This test checks that when the root element has a &lt;body&gt; child element, then the principal writing mode is instead taken from the values of writing-mode and direction on the first such child element instead of taken from the root element. Also, a small script in this test verifies that the computed value of 'writing-mode' of the root element itself is not affected by such propagation.">
+
+ <!--
+ Tests 032 to 035: html's writing-mode is not specified
+
+ Tests 036 to 039: html's writing-mode is specified as horizontal-tb
+
+ Tests 040 to 043: html's writing-mode is specified as vertical-rl
+
+ Tests 044 to 047: html's writing-mode is specified as vertical-lr
+
+ Tests 048 to 051: html's writing-mode is specified as sideways-rl
+
+ Tests 052 to 055: html's writing-mode is specified as sideways-lr
+ -->
+
+ <style>
+ html
+ {
+ writing-mode: vertical-rl;
+ }
+
+ body
+ {
+ writing-mode: sideways-lr;
+ }
+
+ div
+ {
+ background-color: teal;
+ height: 100px;
+ width: 100px;
+ }
+
+ h1#second-test-condition
+ {
+ background-color: red;
+ color: yellow;
+ }
+ </style>
+
+ <script>
+ function verifyComputedValueDocRoot()
+ {
+ if(getComputedStyle(document.documentElement)["writing-mode"] == "vertical-rl")
+ {
+ document.getElementById("second-test-condition").style.display = "none";
+ };
+
+ /*
+ If the computed value of 'writing-mode' of the root element
+ itself is not affected by such propagation, then the big FAIL
+ word will not be displayed.
+ */
+ }
+ </script>
+
+ <body onload="verifyComputedValueDocRoot();">
+
+ <div></div>
+
+ <p><img src="support/wm-propagation-body-035-exp-res.png" width="322" height="38" alt="Image download support must be enabled">
+
+ <!--
+ The image says:
+ Test passes if there is a teal square in
+ the <strong>lower-left corner</strong> of the page.
+ -->
+
+ <h1 id="second-test-condition">FAIL</h1>
diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-044-ref.html b/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-044-ref.html
new file mode 100644
index 00000000000..31e98673720
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-044-ref.html
@@ -0,0 +1,27 @@
+<!DOCTYPE html>
+
+ <meta charset="UTF-8">
+
+ <title>CSS Reftest Reference</title>
+
+ <link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/">
+
+ <style>
+
+ img#orange-square
+ {
+ padding-right: 16px;
+ vertical-align: top;
+ }
+ </style>
+
+
+ <p><img id="orange-square" src="support/swatch-orange.png" width="100" height="100" alt="Image download support must be enabled"><img src="support/wm-propagation-body-003-exp-res.png" width="340" height="37" alt="Image download support must be enabled">
+
+ <!--
+ The image says:
+ Test passes if there is an orange square
+ in the <strong>upper-left corner</strong> of the page.
+ -->
+
+ <div style=margin-left:-8px>This text must be written horizontally.</div>
diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-044.html b/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-044.html
new file mode 100644
index 00000000000..60d444ca8b2
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-044.html
@@ -0,0 +1,91 @@
+<!DOCTYPE html>
+
+ <meta charset="UTF-8">
+
+ <title>CSS Writing Modes Test: 'writing-mode: horizontal-tb' set to &lt;body&gt; element propagates to viewport</title>
+
+ <link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/">
+ <link rel="help" href="https://www.w3.org/TR/css-writing-modes-3/#principal-flow" title="8. The Principal Writing Mode">
+ <!--
+ Issue 3066: [css-writing-modes] Does vertical writing mode of an HTML body
+ element cause an orthogonal flow?
+ https://github.com/w3c/csswg-drafts/issues/3066
+ -->
+ <link rel="match" href="wm-propagation-body-044-ref.html">
+
+ <meta name="flags" content="">
+ <meta name="assert" content="This test checks that when the root element has a &lt;body&gt; child element, then the principal writing mode is instead taken from the values of writing-mode and direction on the first such child element instead of taken from the root element. Also, a small script in this test verifies that the computed value of 'writing-mode' of the root element itself is not affected by such propagation. Finally, in order to make sure that the principal writing mode is indeed 'horizontal-tb', the test checks that a generated text's inline axis is indeed horizontal and not vertical.">
+
+ <!--
+ Tests 032 to 035: html's writing-mode is not specified
+
+ Tests 036 to 039: html's writing-mode is specified as horizontal-tb
+
+ Tests 040 to 043: html's writing-mode is specified as vertical-rl
+
+ Tests 044 to 047: html's writing-mode is specified as vertical-lr
+
+ Tests 048 to 051: html's writing-mode is specified as sideways-rl
+
+ Tests 052 to 055: html's writing-mode is specified as sideways-lr
+ -->
+
+ <style>
+ html
+ {
+ writing-mode: vertical-lr;
+ }
+
+ html::after
+ {
+ content: "This text must be written horizontally.";
+ display: block;
+ }
+
+ body
+ {
+ writing-mode: horizontal-tb;
+ }
+
+ img#orange-square
+ {
+ height: 100px;
+ padding-right: 1em;
+ vertical-align: top;
+ width: 100px;
+ }
+
+ h1#second-test-condition
+ {
+ background-color: red;
+ color: yellow;
+ }
+ </style>
+
+ <script>
+ function verifyComputedValueDocRoot()
+ {
+ if(getComputedStyle(document.documentElement)["writing-mode"] == "vertical-lr")
+ {
+ document.getElementById("second-test-condition").style.display = "none";
+ };
+
+ /*
+ If the computed value of 'writing-mode' of the root element
+ itself is not affected by such propagation, then the big FAIL
+ word will not be displayed.
+ */
+ }
+ </script>
+
+ <body onload="verifyComputedValueDocRoot();">
+
+ <p><img id="orange-square" src="support/swatch-orange.png" alt="Image download support must be enabled"><img src="support/wm-propagation-body-003-exp-res.png" width="340" height="37" alt="Image download support must be enabled"></p>
+
+ <!--
+ The image says:
+ Test passes if there is an orange square
+ in the <strong>upper-left corner</strong> of the page.
+ -->
+
+ <h1 id="second-test-condition">FAIL</h1>
diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-045.html b/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-045.html
new file mode 100644
index 00000000000..75ea01644a6
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-045.html
@@ -0,0 +1,86 @@
+<!DOCTYPE html>
+
+ <meta charset="UTF-8">
+
+ <title>CSS Writing Modes Test: 'writing-mode: vertical-rl' set to &lt;body&gt; element propagates to viewport</title>
+
+ <link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/">
+ <link rel="help" href="https://www.w3.org/TR/css-writing-modes-3/#principal-flow" title="8. The Principal Writing Mode">
+ <!--
+ Issue 3066: [css-writing-modes] Does vertical writing mode of an HTML body
+ element cause an orthogonal flow?
+ https://github.com/w3c/csswg-drafts/issues/3066
+ -->
+ <link rel="match" href="block-flow-direction-025-ref.xht">
+
+ <meta name="flags" content="">
+ <meta name="assert" content="This test checks that when the root element has a &lt;body&gt; child element, then the principal writing mode is instead taken from the values of writing-mode and direction on the first such child element instead of taken from the root element. Also, a small script in this test verifies that the computed value of 'writing-mode' of the root element itself is not affected by such propagation.">
+
+ <!--
+ Tests 032 to 035: html's writing-mode is not specified
+
+ Tests 036 to 039: html's writing-mode is specified as horizontal-tb
+
+ Tests 040 to 043: html's writing-mode is specified as vertical-rl
+
+ Tests 044 to 047: html's writing-mode is specified as vertical-lr
+
+ Tests 048 to 051: html's writing-mode is specified as sideways-rl
+
+ Tests 052 to 055: html's writing-mode is specified as sideways-lr
+ -->
+
+ <style>
+ html
+ {
+ writing-mode: vertical-lr;
+ }
+
+ body
+ {
+ writing-mode: vertical-rl;
+ }
+
+ div
+ {
+ background-color: blue;
+ height: 100px;
+ width: 100px;
+ }
+
+ h1#second-test-condition
+ {
+ background-color: red;
+ color: yellow;
+ }
+ </style>
+
+ <script>
+ function verifyComputedValueDocRoot()
+ {
+ if(getComputedStyle(document.documentElement)["writing-mode"] == "vertical-lr")
+ {
+ document.getElementById("second-test-condition").style.display = "none";
+ };
+
+ /*
+ If the computed value of 'writing-mode' of the root element
+ itself is not affected by such propagation, then the big FAIL
+ word will not be displayed.
+ */
+ }
+ </script>
+
+ <body onload="verifyComputedValueDocRoot();">
+
+ <div></div>
+
+ <p><img src="support/block-flow-direction-025-exp-res.png" width="359" height="36" alt="Image download support must be enabled">
+
+ <!--
+ The image says:
+ Test passes if there is a blue square in the
+ <strong>upper-right corner</strong> of the page.
+ -->
+
+ <h1 id="second-test-condition">FAIL</h1>
diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-046.html b/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-046.html
new file mode 100644
index 00000000000..da89e881dc1
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-046.html
@@ -0,0 +1,86 @@
+<!DOCTYPE html>
+
+ <meta charset="UTF-8">
+
+ <title>CSS Writing Modes Test: 'writing-mode: sideways-rl' set to &lt;body&gt; element propagates to viewport</title>
+
+ <link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/">
+ <link rel="help" href="https://www.w3.org/TR/css-writing-modes-4/#principal-flow" title="8. The Principal Writing Mode">
+ <!--
+ Issue 3066: [css-writing-modes] Does vertical writing mode of an HTML body
+ element cause an orthogonal flow?
+ https://github.com/w3c/csswg-drafts/issues/3066
+ -->
+ <link rel="match" href="block-flow-direction-025-ref.xht">
+
+ <meta name="flags" content="">
+ <meta name="assert" content="This test checks that when the root element has a &lt;body&gt; child element, then the principal writing mode is instead taken from the values of writing-mode and direction on the first such child element instead of taken from the root element. Also, a small script in this test verifies that the computed value of 'writing-mode' of the root element itself is not affected by such propagation.">
+
+ <!--
+ Tests 032 to 035: html's writing-mode is not specified
+
+ Tests 036 to 039: html's writing-mode is specified as horizontal-tb
+
+ Tests 040 to 043: html's writing-mode is specified as vertical-rl
+
+ Tests 044 to 047: html's writing-mode is specified as vertical-lr
+
+ Tests 048 to 051: html's writing-mode is specified as sideways-rl
+
+ Tests 052 to 055: html's writing-mode is specified as sideways-lr
+ -->
+
+ <style>
+ html
+ {
+ writing-mode: vertical-lr;
+ }
+
+ body
+ {
+ writing-mode: sideways-rl;
+ }
+
+ div
+ {
+ background-color: blue;
+ height: 100px;
+ width: 100px;
+ }
+
+ h1#second-test-condition
+ {
+ background-color: red;
+ color: yellow;
+ }
+ </style>
+
+ <script>
+ function verifyComputedValueDocRoot()
+ {
+ if(getComputedStyle(document.documentElement)["writing-mode"] == "vertical-lr")
+ {
+ document.getElementById("second-test-condition").style.display = "none";
+ };
+
+ /*
+ If the computed value of 'writing-mode' of the root element
+ itself is not affected by such propagation, then the big FAIL
+ word will not be displayed.
+ */
+ }
+ </script>
+
+ <body onload="verifyComputedValueDocRoot();">
+
+ <div></div>
+
+ <p><img src="support/block-flow-direction-025-exp-res.png" width="359" height="36" alt="Image download support must be enabled">
+
+ <!--
+ The image says:
+ Test passes if there is a blue square in the
+ <strong>upper-right corner</strong> of the page.
+ -->
+
+ <h1 id="second-test-condition">FAIL</h1>
diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-047-ref.html b/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-047-ref.html
new file mode 100644
index 00000000000..80e95b35bef
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-047-ref.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+
+ <meta charset="UTF-8">
+
+ <title>CSS Reftest Reference</title>
+
+ <link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/">
+
+ <style>
+ html
+ {
+ writing-mode: sideways-lr;div
+ }
+
+ img
+ {
+ vertical-align: bottom;
+ }
+
+ div
+ {
+ margin-left: 1em;
+ margin-bottom: -8px;
+ }
+ </style>
+
+ <img src="support/swatch-teal.png" width="100" height="100" alt="Image download support must be enabled">
+ <p><img src="support/wm-propagation-body-035-exp-res.png" width="322" height="38" alt="Image download support must be enabled"></p>
+
+ <!--
+ The image says:
+ Test passes if there is a teal square in
+ the <strong>lower-left corner</strong> of the page.
+ -->
+
+ <div>This text must be written sideways: vertically, with letters rotated 90 degrees.</div>
diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-047.html b/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-047.html
new file mode 100644
index 00000000000..dac0da9d522
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-047.html
@@ -0,0 +1,99 @@
+<!DOCTYPE html>
+
+ <meta charset="UTF-8">
+
+ <title>CSS Writing Modes Test: 'writing-mode: sideways-lr' set to &lt;body&gt; element propagates to viewport</title>
+
+ <link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/">
+ <link rel="help" href="https://www.w3.org/TR/css-writing-modes-4/#principal-flow" title="8. The Principal Writing Mode">
+ <!--
+ Issue 3066: [css-writing-modes] Does vertical writing mode of an HTML body
+ element cause an orthogonal flow?
+ https://github.com/w3c/csswg-drafts/issues/3066
+ -->
+ <link rel="match" href="wm-propagation-body-047-ref.html">
+
+ <meta name="flags" content="">
+ <meta name="assert" content="This test checks that when the root element has a &lt;body&gt; child element, then the principal writing mode is instead taken from the values of writing-mode and direction on the first such child element instead of taken from the root element. Also, a small script in this test verifies that the computed value of 'writing-mode' of the root element itself is not affected by such propagation.">
+
+ <!--
+ Tests 032 to 035: html's writing-mode is not specified
+
+ Tests 036 to 039: html's writing-mode is specified as horizontal-tb
+
+ Tests 040 to 043: html's writing-mode is specified as vertical-rl
+
+ Tests 044 to 047: html's writing-mode is specified as vertical-lr
+
+ Tests 048 to 051: html's writing-mode is specified as sideways-rl
+
+ Tests 052 to 055: html's writing-mode is specified as sideways-lr
+ -->
+
+ <style>
+ html
+ {
+ writing-mode: vertical-lr;
+ }
+
+ body
+ {
+ writing-mode: sideways-lr;
+ }
+
+ html::after
+ {
+ content: "This text must be written sideways: vertically, with letters rotated 90 degrees.";
+ text-orientation: upright; /* this has no effect with sideways-rl, but does with vertical-rl*/
+ }
+
+ div
+ {
+ background-color: teal;
+ height: 100px;
+ width: 100px;
+ }
+ img
+ {
+ display: block;
+ margin-left: 1em;
+ margin-right: 1em;
+ }
+
+
+ h1#second-test-condition
+ {
+ background-color: red;
+ color: yellow;
+ }
+ </style>
+
+ <script>
+ function verifyComputedValueDocRoot()
+ {
+ if(getComputedStyle(document.documentElement)["writing-mode"] == "vertical-lr")
+ {
+ document.getElementById("second-test-condition").style.display = "none";
+ };
+
+ /*
+ If the computed value of 'writing-mode' of the root element
+ itself is not affected by such propagation, then the big FAIL
+ word will not be displayed.
+ */
+ }
+ </script>
+
+ <body onload="verifyComputedValueDocRoot();">
+
+ <div></div>
+
+ <img src="support/wm-propagation-body-035-exp-res.png" width="322" height="38" alt="Image download support must be enabled">
+
+ <!--
+ The image says:
+ Test passes if there is a teal square in
+ the <strong>lower-left corner</strong> of the page.
+ -->
+
+ <h1 id="second-test-condition">FAIL</h1>
diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-048.html b/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-048.html
new file mode 100644
index 00000000000..17e2a2d1f69
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-048.html
@@ -0,0 +1,85 @@
+<!DOCTYPE html>
+
+ <meta charset="UTF-8">
+
+ <title>CSS Writing Modes Test: 'writing-mode: horizontal-tb' set to &lt;body&gt; element propagates to viewport</title>
+
+ <link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/">
+ <link rel="help" href="https://www.w3.org/TR/css-writing-modes-4/#principal-flow" title="8. The Principal Writing Mode">
+ <!--
+ Issue 3066: [css-writing-modes] Does vertical writing mode of an HTML body
+ element cause an orthogonal flow?
+ https://github.com/w3c/csswg-drafts/issues/3066
+ -->
+ <link rel="match" href="wm-propagation-body-033-ref.html">
+
+ <meta name="flags" content="">
+ <meta name="assert" content="This test checks that when the root element has a &lt;body&gt; child element, then the principal writing mode is instead taken from the values of writing-mode and direction on the first such child element instead of taken from the root element. Also, a small script in this test verifies that the computed value of 'writing-mode' of the root element itself is not affected by such propagation.">
+
+ <!--
+ Tests 032 to 035: html's writing-mode is not specified
+
+ Tests 036 to 039: html's writing-mode is specified as horizontal-tb
+
+ Tests 040 to 043: html's writing-mode is specified as vertical-rl
+
+ Tests 044 to 047: html's writing-mode is specified as vertical-lr
+
+ Tests 048 to 051: html's writing-mode is specified as sideways-rl
+
+ Tests 052 to 055: html's writing-mode is specified as sideways-lr
+ -->
+
+ <style>
+ html
+ {
+ writing-mode: sideways-rl;
+ }
+
+ body
+ {
+ writing-mode: horizontal-tb;
+ }
+
+ img#orange-square
+ {
+ height: 100px;
+ padding-right: 1em;
+ vertical-align: top;
+ width: 100px;
+ }
+
+ h1#second-test-condition
+ {
+ background-color: red;
+ color: yellow;
+ }
+ </style>
+
+ <script>
+ function verifyComputedValueDocRoot()
+ {
+ if(getComputedStyle(document.documentElement)["writing-mode"] == "sideways-rl")
+ {
+ document.getElementById("second-test-condition").style.display = "none";
+ };
+
+ /*
+ If the computed value of 'writing-mode' of the root element
+ itself is not affected by such propagation, then the big FAIL
+ word will not be displayed.
+ */
+ }
+ </script>
+
+ <body onload="verifyComputedValueDocRoot();">
+
+ <div><img id="orange-square" src="support/swatch-orange.png" alt="Image download support must be enabled"><img src="support/wm-propagation-body-003-exp-res.png" width="340" height="37" alt="Image download support must be enabled"></div>
+
+ <!--
+ The image says:
+ Test passes if there is an orange square
+ in the <strong>upper-left corner</strong> of the page.
+ -->
+
+ <h1 id="second-test-condition">FAIL</h1>
diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-049-ref.html b/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-049-ref.html
new file mode 100644
index 00000000000..fb5f2a3c479
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-049-ref.html
@@ -0,0 +1,48 @@
+<!DOCTYPE html>
+
+ <meta charset="UTF-8">
+
+ <title>CSS Reftest Reference</title>
+
+ <link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/">
+
+ <style>
+ html
+ {
+ writing-mode: vertical-rl;
+ }
+
+ body
+ {
+ margin: 0px;
+ }
+
+ p
+ {
+ text-orientation: upright;
+ }
+
+ img
+ {
+ padding-top: 8px;
+ }
+
+ img#blue
+ {
+ padding-left: 16px;
+ padding-right: 8px;
+ }
+ </style>
+
+
+ <img id="blue" src="support/swatch-blue.png" width="100" height="100" alt="Image download support must be enabled">
+
+ <div><img src="support/block-flow-direction-025-exp-res.png" width="359" height="36" alt="Image download support must be enabled"></div>
+
+ <!--
+ The image says:
+ Test passes if there is a blue square in the
+ <strong>upper-right corner</strong> of the page.
+ -->
+
+ <p>This text must be vertical, with letters upright.
diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-049.html b/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-049.html
new file mode 100644
index 00000000000..a8b06c9040b
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-049.html
@@ -0,0 +1,93 @@
+<!DOCTYPE html>
+
+ <meta charset="UTF-8">
+
+ <title>CSS Writing Modes Test: 'writing-mode: vertical-rl' set to &lt;body&gt; element propagates to viewport</title>
+
+ <link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/">
+ <link rel="help" href="https://www.w3.org/TR/css-writing-modes-4/#principal-flow" title="8. The Principal Writing Mode">
+ <!--
+ Issue 3066: [css-writing-modes] Does vertical writing mode of an HTML body
+ element cause an orthogonal flow?
+ https://github.com/w3c/csswg-drafts/issues/3066
+ -->
+ <link rel="match" href="wm-propagation-body-049-ref.html">
+
+ <meta name="flags" content="">
+ <meta name="assert" content="This test checks that when the root element has a &lt;body&gt; child element, then the principal writing mode is instead taken from the values of writing-mode and direction on the first such child element instead of taken from the root element. Also, a small script in this test verifies that the computed value of 'writing-mode' of the root element itself is not affected by such propagation. Finally, in order to make sure that the principal writing mode is indeed 'vertical-rl', the test checks that a simple text is affected by 'text-orientation: upright' since 'text-orientation: upright' should have a rendering effect on it.">
+
+ <!--
+ Tests 032 to 035: html's writing-mode is not specified
+
+ Tests 036 to 039: html's writing-mode is specified as horizontal-tb
+
+ Tests 040 to 043: html's writing-mode is specified as vertical-rl
+
+ Tests 044 to 047: html's writing-mode is specified as vertical-lr
+
+ Tests 048 to 051: html's writing-mode is specified as sideways-rl
+
+ Tests 052 to 055: html's writing-mode is specified as sideways-lr
+ -->
+
+ <style>
+ html
+ {
+ writing-mode: sideways-rl;
+ }
+
+ html::after
+ {
+ content: "This text must be vertical, with letters upright.";
+ text-orientation: upright;
+ /* 'text-orientation: upright' has no effect with 'sideways-rl', but does with 'vertical-rl' */
+ }
+
+ body
+ {
+ writing-mode: vertical-rl;
+ }
+
+ div
+ {
+ background-color: blue;
+ height: 100px;
+ width: 100px;
+ }
+
+ h1#second-test-condition
+ {
+ background-color: red;
+ color: yellow;
+ }
+ </style>
+
+ <script>
+ function verifyComputedValueDocRoot()
+ {
+ if(getComputedStyle(document.documentElement)["writing-mode"] == "sideways-rl")
+ {
+ document.getElementById("second-test-condition").style.display = "none";
+ };
+
+ /*
+ If the computed value of 'writing-mode' of the root element
+ itself is not affected by such propagation, then the big FAIL
+ word will not be displayed.
+ */
+ }
+ </script>
+
+ <body onload="verifyComputedValueDocRoot();">
+
+ <div></div>
+
+ <p><img src="support/block-flow-direction-025-exp-res.png" width="359" height="36" alt="Image download support must be enabled">
+
+ <!--
+ The image says:
+ Test passes if there is a blue square in the
+ <strong>upper-right corner</strong> of the page.
+ -->
+
+ <h1 id="second-test-condition">FAIL</h1>
diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-050.html b/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-050.html
new file mode 100644
index 00000000000..0af948a8436
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-050.html
@@ -0,0 +1,86 @@
+<!DOCTYPE html>
+
+ <meta charset="UTF-8">
+
+ <title>CSS Writing Modes Test: 'writing-mode: vertical-lr' set to &lt;body&gt; element propagates to viewport</title>
+
+ <link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/">
+ <link rel="help" href="https://www.w3.org/TR/css-writing-modes-4/#principal-flow" title="8. The Principal Writing Mode">
+ <!--
+ Issue 3066: [css-writing-modes] Does vertical writing mode of an HTML body
+ element cause an orthogonal flow?
+ https://github.com/w3c/csswg-drafts/issues/3066
+ -->
+ <link rel="match" href="wm-propagation-body-033-ref.html">
+
+ <meta name="flags" content="">
+ <meta name="assert" content="This test checks that when the root element has a &lt;body&gt; child element, then the principal writing mode is instead taken from the values of writing-mode and direction on the first such child element instead of taken from the root element. Also, a small script in this test verifies that the computed value of 'writing-mode' of the root element itself is not affected by such propagation.">
+
+ <!--
+ Tests 032 to 035: html's writing-mode is not specified
+
+ Tests 036 to 039: html's writing-mode is specified as horizontal-tb
+
+ Tests 040 to 043: html's writing-mode is specified as vertical-rl
+
+ Tests 044 to 047: html's writing-mode is specified as vertical-lr
+
+ Tests 048 to 051: html's writing-mode is specified as sideways-rl
+
+ Tests 052 to 055: html's writing-mode is specified as sideways-lr
+ -->
+
+ <style>
+ html
+ {
+ writing-mode: sideways-rl;
+ }
+
+ body
+ {
+ writing-mode: vertical-lr;
+ }
+
+ div
+ {
+ background-color: orange;
+ height: 100px;
+ width: 100px;
+ }
+
+ h1#second-test-condition
+ {
+ background-color: red;
+ color: yellow;
+ }
+ </style>
+
+ <script>
+ function verifyComputedValueDocRoot()
+ {
+ if(getComputedStyle(document.documentElement)["writing-mode"] == "sideways-rl")
+ {
+ document.getElementById("second-test-condition").style.display = "none";
+ };
+
+ /*
+ If the computed value of 'writing-mode' of the root element
+ itself is not affected by such propagation, then the big FAIL
+ word will not be displayed.
+ */
+ }
+ </script>
+
+ <body onload="verifyComputedValueDocRoot();">
+
+ <div></div>
+
+ <p><img src="support/wm-propagation-body-003-exp-res.png" width="340" height="37" alt="Image download support must be enabled">
+
+ <!--
+ The image says:
+ Test passes if there is an orange square
+ in the <strong>upper-left corner</strong> of the page.
+ -->
+
+ <h1 id="second-test-condition">FAIL</h1>
diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-051.html b/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-051.html
new file mode 100644
index 00000000000..ce0680611a2
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-051.html
@@ -0,0 +1,86 @@
+<!DOCTYPE html>
+
+ <meta charset="UTF-8">
+
+ <title>CSS Writing Modes Test: 'writing-mode: sideways-lr' set to &lt;body&gt; element propagates to viewport</title>
+
+ <link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/">
+ <link rel="help" href="https://www.w3.org/TR/css-writing-modes-4/#principal-flow" title="8. The Principal Writing Mode">
+ <!--
+ Issue 3066: [css-writing-modes] Does vertical writing mode of an HTML body
+ element cause an orthogonal flow?
+ https://github.com/w3c/csswg-drafts/issues/3066
+ -->
+ <link rel="match" href="wm-propagation-body-035-ref.html">
+
+ <meta name="flags" content="">
+ <meta name="assert" content="This test checks that when the root element has a &lt;body&gt; child element, then the principal writing mode is instead taken from the values of writing-mode and direction on the first such child element instead of taken from the root element. Also, a small script in this test verifies that the computed value of 'writing-mode' of the root element itself is not affected by such propagation.">
+
+ <!--
+ Tests 032 to 035: html's writing-mode is not specified
+
+ Tests 036 to 039: html's writing-mode is specified as horizontal-tb
+
+ Tests 040 to 043: html's writing-mode is specified as vertical-rl
+
+ Tests 044 to 047: html's writing-mode is specified as vertical-lr
+
+ Tests 048 to 051: html's writing-mode is specified as sideways-rl
+
+ Tests 052 to 055: html's writing-mode is specified as sideways-lr
+ -->
+
+ <style>
+ html
+ {
+ writing-mode: sideways-rl;
+ }
+
+ body
+ {
+ writing-mode: sideways-lr;
+ }
+
+ div
+ {
+ background-color: teal;
+ height: 100px;
+ width: 100px;
+ }
+
+ h1#second-test-condition
+ {
+ background-color: red;
+ color: yellow;
+ }
+ </style>
+
+ <script>
+ function verifyComputedValueDocRoot()
+ {
+ if(getComputedStyle(document.documentElement)["writing-mode"] == "sideways-rl")
+ {
+ document.getElementById("second-test-condition").style.display = "none";
+ };
+
+ /*
+ If the computed value of 'writing-mode' of the root element
+ itself is not affected by such propagation, then the big FAIL
+ word will not be displayed.
+ */
+ }
+ </script>
+
+ <body onload="verifyComputedValueDocRoot();">
+
+ <div></div>
+
+ <p><img src="support/wm-propagation-body-035-exp-res.png" width="322" height="38" alt="Image download support must be enabled">
+
+ <!--
+ The image says:
+ Test passes if there is a teal square in
+ the <strong>lower-left corner</strong> of the page.
+ -->
+
+ <h1 id="second-test-condition">FAIL</h1>
diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-052.html b/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-052.html
new file mode 100644
index 00000000000..15a0bc63484
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-052.html
@@ -0,0 +1,85 @@
+<!DOCTYPE html>
+
+ <meta charset="UTF-8">
+
+ <title>CSS Writing Modes Test: 'writing-mode: horizontal-tb' set to &lt;body&gt; element propagates to viewport</title>
+
+ <link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/">
+ <link rel="help" href="https://www.w3.org/TR/css-writing-modes-4/#principal-flow" title="8. The Principal Writing Mode">
+ <!--
+ Issue 3066: [css-writing-modes] Does vertical writing mode of an HTML body
+ element cause an orthogonal flow?
+ https://github.com/w3c/csswg-drafts/issues/3066
+ -->
+ <link rel="match" href="wm-propagation-body-033-ref.html">
+
+ <meta name="flags" content="">
+ <meta name="assert" content="This test checks that when the root element has a &lt;body&gt; child element, then the principal writing mode is instead taken from the values of writing-mode and direction on the first such child element instead of taken from the root element. Also, a small script in this test verifies that the computed value of 'writing-mode' of the root element itself is not affected by such propagation.">
+
+ <!--
+ Tests 032 to 035: html's writing-mode is not specified
+
+ Tests 036 to 039: html's writing-mode is specified as horizontal-tb
+
+ Tests 040 to 043: html's writing-mode is specified as vertical-rl
+
+ Tests 044 to 047: html's writing-mode is specified as vertical-lr
+
+ Tests 048 to 051: html's writing-mode is specified as sideways-rl
+
+ Tests 052 to 055: html's writing-mode is specified as sideways-lr
+ -->
+
+ <style>
+ html
+ {
+ writing-mode: sideways-lr;
+ }
+
+ body
+ {
+ writing-mode: horizontal-tb;
+ }
+
+ img#orange-square
+ {
+ height: 100px;
+ padding-right: 1em;
+ vertical-align: top;
+ width: 100px;
+ }
+
+ h1#second-test-condition
+ {
+ background-color: red;
+ color: yellow;
+ }
+ </style>
+
+ <script>
+ function verifyComputedValueDocRoot()
+ {
+ if(getComputedStyle(document.documentElement)["writing-mode"] == "sideways-lr")
+ {
+ document.getElementById("second-test-condition").style.display = "none";
+ };
+
+ /*
+ If the computed value of 'writing-mode' of the root element
+ itself is not affected by such propagation, then the big FAIL
+ word will not be displayed.
+ */
+ }
+ </script>
+
+ <body onload="verifyComputedValueDocRoot();">
+
+ <div><img id="orange-square" src="support/swatch-orange.png" alt="Image download support must be enabled"><img src="support/wm-propagation-body-003-exp-res.png" width="340" height="37" alt="Image download support must be enabled"></div>
+
+ <!--
+ The image says:
+ Test passes if there is an orange square
+ in the <strong>upper-left corner</strong> of the page.
+ -->
+
+ <h1 id="second-test-condition">FAIL</h1>
diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-053.html b/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-053.html
new file mode 100644
index 00000000000..ea98953ae50
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-053.html
@@ -0,0 +1,86 @@
+<!DOCTYPE html>
+
+ <meta charset="UTF-8">
+
+ <title>CSS Writing Modes Test: 'writing-mode: vertical-rl' set to &lt;body&gt; element propagates to viewport</title>
+
+ <link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/">
+ <link rel="help" href="https://www.w3.org/TR/css-writing-modes-4/#principal-flow" title="8. The Principal Writing Mode">
+ <!--
+ Issue 3066: [css-writing-modes] Does vertical writing mode of an HTML body
+ element cause an orthogonal flow?
+ https://github.com/w3c/csswg-drafts/issues/3066
+ -->
+ <link rel="match" href="block-flow-direction-025-ref.xht">
+
+ <meta name="flags" content="">
+ <meta name="assert" content="This test checks that when the root element has a &lt;body&gt; child element, then the principal writing mode is instead taken from the values of writing-mode and direction on the first such child element instead of taken from the root element. Also, a small script in this test verifies that the computed value of 'writing-mode' of the root element itself is not affected by such propagation.">
+
+ <!--
+ Tests 032 to 035: html's writing-mode is not specified
+
+ Tests 036 to 039: html's writing-mode is specified as horizontal-tb
+
+ Tests 040 to 043: html's writing-mode is specified as vertical-rl
+
+ Tests 044 to 047: html's writing-mode is specified as vertical-lr
+
+ Tests 048 to 051: html's writing-mode is specified as sideways-rl
+
+ Tests 052 to 055: html's writing-mode is specified as sideways-lr
+ -->
+
+ <style>
+ html
+ {
+ writing-mode: sideways-lr;
+ }
+
+ body
+ {
+ writing-mode: vertical-rl;
+ }
+
+ div
+ {
+ background-color: blue;
+ height: 100px;
+ width: 100px;
+ }
+
+ h1#second-test-condition
+ {
+ background-color: red;
+ color: yellow;
+ }
+ </style>
+
+ <script>
+ function verifyComputedValueDocRoot()
+ {
+ if(getComputedStyle(document.documentElement)["writing-mode"] == "sideways-lr")
+ {
+ document.getElementById("second-test-condition").style.display = "none";
+ };
+
+ /*
+ If the computed value of 'writing-mode' of the root element
+ itself is not affected by such propagation, then the big FAIL
+ word will not be displayed.
+ */
+ }
+ </script>
+
+ <body onload="verifyComputedValueDocRoot();">
+
+ <div></div>
+
+ <p><img src="support/block-flow-direction-025-exp-res.png" width="359" height="36" alt="Image download support must be enabled">
+
+ <!--
+ The image says:
+ Test passes if there is a blue square in the
+ <strong>upper-right corner</strong> of the page.
+ -->
+
+ <h1 id="second-test-condition">FAIL</h1>
diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-054-ref.html b/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-054-ref.html
new file mode 100644
index 00000000000..1e6f6343b3c
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-054-ref.html
@@ -0,0 +1,32 @@
+<!DOCTYPE html>
+
+ <meta charset="UTF-8">
+
+ <title>CSS Reftest Reference</title>
+
+ <link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/">
+
+ <style>
+ html
+ {
+ writing-mode: vertical-lr;
+ }
+
+ div
+ {
+ text-orientation: upright;
+ }
+ </style>
+
+
+ <img id="orange" src="support/swatch-orange.png" width="100" height="100" alt="Image download support must be enabled">
+
+ <p><img src="support/wm-propagation-body-003-exp-res.png" width="340" height="37" alt="Image download support must be enabled">
+
+ <!--
+ The image says:
+ Test passes if there is an orange square
+ in the <strong>upper-left corner</strong> of the page.
+ -->
+
+ <div>This text must be vertical, with letters upright.</div>
diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-054.html b/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-054.html
new file mode 100644
index 00000000000..956913eeb58
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-054.html
@@ -0,0 +1,94 @@
+<!DOCTYPE html>
+
+ <meta charset="UTF-8">
+
+ <title>CSS Writing Modes Test: 'writing-mode: vertical-lr' set to &lt;body&gt; element propagates to viewport</title>
+
+ <link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/">
+ <link rel="help" href="https://www.w3.org/TR/css-writing-modes-4/#principal-flow" title="8. The Principal Writing Mode">
+ <!--
+ Issue 3066: [css-writing-modes] Does vertical writing mode of an HTML body
+ element cause an orthogonal flow?
+ https://github.com/w3c/csswg-drafts/issues/3066
+ -->
+ <link rel="match" href="wm-propagation-body-054-ref.html">
+
+ <meta name="flags" content="">
+ <meta name="assert" content="This test checks that when the root element has a &lt;body&gt; child element, then the principal writing mode is instead taken from the values of writing-mode and direction on the first such child element instead of taken from the root element. Also, a small script in this test verifies that the computed value of 'writing-mode' of the root element itself is not affected by such propagation. Finally, in order to make sure that the principal writing mode is indeed 'vertical-lr', the test checks that a simple text is affected by 'text-orientation: upright' since 'text-orientation: upright' should have a rendering effect on it.">
+
+ <!--
+ Tests 032 to 035: html's writing-mode is not specified
+
+ Tests 036 to 039: html's writing-mode is specified as horizontal-tb
+
+ Tests 040 to 043: html's writing-mode is specified as vertical-rl
+
+ Tests 044 to 047: html's writing-mode is specified as vertical-lr
+
+ Tests 048 to 051: html's writing-mode is specified as sideways-rl
+
+ Tests 052 to 055: html's writing-mode is specified as sideways-lr
+ -->
+
+ <style>
+ html
+ {
+ writing-mode: sideways-lr;
+ }
+
+ html::after
+ {
+ content: "This text must be vertical, with letters upright.";
+ text-orientation: upright;
+ /* 'text-orientation: upright' has no effect with 'sideways-lr', but does with 'vertical-lr' */
+ margin-top: 8px;
+ }
+
+ body
+ {
+ writing-mode: vertical-lr;
+ }
+
+ div
+ {
+ background-color: orange;
+ height: 100px;
+ width: 100px;
+ }
+
+ h1#second-test-condition
+ {
+ background-color: red;
+ color: yellow;
+ }
+ </style>
+
+ <script>
+ function verifyComputedValueDocRoot()
+ {
+ if(getComputedStyle(document.documentElement)["writing-mode"] == "sideways-lr")
+ {
+ document.getElementById("second-test-condition").style.display = "none";
+ };
+
+ /*
+ If the computed value of 'writing-mode' of the root element
+ itself is not affected by such propagation, then the big FAIL
+ word will not be displayed.
+ */
+ }
+ </script>
+
+ <body onload="verifyComputedValueDocRoot();">
+
+ <div></div>
+
+ <p><img src="support/wm-propagation-body-003-exp-res.png" width="340" height="37" alt="Image download support must be enabled">
+
+ <!--
+ The image says:
+ Test passes if there is an orange square
+ in the <strong>upper-left corner</strong> of the page.
+ -->
+
+ <h1 id="second-test-condition">FAIL</h1>
diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-055.html b/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-055.html
new file mode 100644
index 00000000000..080ddd6ddf1
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-body-055.html
@@ -0,0 +1,86 @@
+<!DOCTYPE html>
+
+ <meta charset="UTF-8">
+
+ <title>CSS Writing Modes Test: 'writing-mode: sideways-rl' set to &lt;body&gt; element propagates to viewport</title>
+
+ <link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/">
+ <link rel="help" href="https://www.w3.org/TR/css-writing-modes-4/#principal-flow" title="8. The Principal Writing Mode">
+ <!--
+ Issue 3066: [css-writing-modes] Does vertical writing mode of an HTML body
+ element cause an orthogonal flow?
+ https://github.com/w3c/csswg-drafts/issues/3066
+ -->
+ <link rel="match" href="block-flow-direction-025-ref.xht">
+
+ <meta name="flags" content="">
+ <meta name="assert" content="This test checks that when the root element has a &lt;body&gt; child element, then the principal writing mode is instead taken from the values of writing-mode and direction on the first such child element instead of taken from the root element. Also, a small script in this test verifies that the computed value of 'writing-mode' of the root element itself is not affected by such propagation.">
+
+ <!--
+ Tests 032 to 035: html's writing-mode is not specified
+
+ Tests 036 to 039: html's writing-mode is specified as horizontal-tb
+
+ Tests 040 to 043: html's writing-mode is specified as vertical-rl
+
+ Tests 044 to 047: html's writing-mode is specified as vertical-lr
+
+ Tests 048 to 051: html's writing-mode is specified as sideways-rl
+
+ Tests 052 to 055: html's writing-mode is specified as sideways-lr
+ -->
+
+ <style>
+ html
+ {
+ writing-mode: sideways-lr;
+ }
+
+ body
+ {
+ writing-mode: sideways-rl;
+ }
+
+ div
+ {
+ background-color: blue;
+ height: 100px;
+ width: 100px;
+ }
+
+ h1#second-test-condition
+ {
+ background-color: red;
+ color: yellow;
+ }
+ </style>
+
+ <script>
+ function verifyComputedValueDocRoot()
+ {
+ if(getComputedStyle(document.documentElement)["writing-mode"] == "sideways-lr")
+ {
+ document.getElementById("second-test-condition").style.display = "none";
+ };
+
+ /*
+ If the computed value of 'writing-mode' of the root element
+ itself is not affected by such propagation, then the big FAIL
+ word will not be displayed.
+ */
+ }
+ </script>
+
+ <body onload="verifyComputedValueDocRoot();">
+
+ <div></div>
+
+ <p><img src="support/block-flow-direction-025-exp-res.png" width="359" height="36" alt="Image download support must be enabled">
+
+ <!--
+ The image says:
+ Test passes if there is a blue square in the
+ <strong>upper-right corner</strong> of the page.
+ -->
+
+ <h1 id="second-test-condition">FAIL</h1>
diff --git a/tests/wpt/web-platform-tests/css/cssom-view/elementFromPoint-list-001.html b/tests/wpt/web-platform-tests/css/cssom-view/elementFromPoint-list-001.html
new file mode 100644
index 00000000000..e3c2c4d18f4
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/cssom-view/elementFromPoint-list-001.html
@@ -0,0 +1,32 @@
+<!DOCTYPE html>
+<title>Test elementFromPoint for list-item</title>
+<link rel="help" href="https://drafts.csswg.org/cssom-view/#dom-document-elementfrompoint">
+<link rel="author" title="Koji Ishii" href="mailto:kojii@chromium.org">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<style>
+ul.inside {
+ list-style-position: inside;
+}
+</style>
+<body>
+ <ul>
+ <li>Outside 1</li>
+ <li>Outside 2</li>
+ <li>Outside 3</li>
+ </ul>
+ <ul class="inside">
+ <li>Inside 1</li>
+ <li>Inside 2</li>
+ <li>Inside 3</li>
+ </ul>
+<script>
+for (let li of document.getElementsByTagName('li')) {
+ test(() => {
+ let bounds = li.getBoundingClientRect();
+ let target = document.elementFromPoint(bounds.x + 1, bounds.y + 1);
+ assert_equals(target, li);
+ }, `<li>${li.textContent}</li>`);
+}
+</script>
+</body>
diff --git a/tests/wpt/web-platform-tests/css/cssom-view/scrollIntoView-sideways-lr-writing-mode-and-rtl-direction.html b/tests/wpt/web-platform-tests/css/cssom-view/scrollIntoView-sideways-lr-writing-mode-and-rtl-direction.html
new file mode 100644
index 00000000000..8d435407f68
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/cssom-view/scrollIntoView-sideways-lr-writing-mode-and-rtl-direction.html
@@ -0,0 +1,106 @@
+<!DOCTYPE html>
+<title>CSSOM View - scrollIntoView considers sideways-lr writing mode and rtl direction</title>
+<meta charset="utf-8">
+<link rel="author" title="Cathie Chen" href="mailto:cathiechen@igalia.com">
+<link rel="help" href="https://drafts.csswg.org/cssom-view/#dom-element-scrollintoview">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+
+<style>
+.box {
+ float: left;
+ width: 200px;
+ height: 200px;
+}
+#scroller {
+ writing-mode: sideways-lr;
+ direction: rtl;
+ overflow: scroll;
+ width: 300px;
+ height: 300px;
+}
+#container{
+ width: 600px;
+ height: 600px;
+}
+#target {
+ background-color: #ff0;
+}
+</style>
+<body>
+<div id="scroller">
+ <div id="container">
+ <!-- ROW-1 -->
+ <div class="row">
+ <div class="box"></div>
+ <div class="box"></div>
+ <div class="box"></div>
+ </div>
+
+ <!-- ROW-2 -->
+ <div class="row">
+ <div class="box"></div>
+ <div class="box" id="target"></div>
+ <div class="box"></div>
+ </div>
+
+ <!-- ROW-3 -->
+ <div class="row">
+ <div class="box"></div>
+ <div class="box"></div>
+ <div class="box"></div>
+ </div>
+ </div>
+</div>
+
+<script>
+// In sideways-lr mode and rtl direction, X corresponds to the block axis and is oriented rightward.
+// Y corresponds to the inline axis and is oriented downward.
+// So the beginning edges are the top and left edges and the ending edges are the bottom and right edges.
+
+// This assumes that the horizontal scrollbar is on the bottom side and the vertical scrollbar is on the right side.
+
+var target = document.getElementById("target");
+var scroller = document.getElementById("scroller");
+var scrollbar_width = scroller.offsetWidth - scroller.clientWidth;
+
+var scroller_width = scroller.offsetWidth;
+var scroller_height = scroller.offsetHeight;
+var box_width = target.offsetWidth;
+var box_height = target.offsetHeight;
+
+var expectedX = {
+ blockStart: box_width,
+ blockCenter: (3*box_width - scroller_width)/2 + scrollbar_width/2,
+ blockEnd: 2*box_width - scroller_width + scrollbar_width,
+};
+
+var expectedY = {
+ inlineStart: box_height,
+ inlineCenter: (3*box_height - scroller_height)/2 + scrollbar_width/2,
+ inlineEnd: 2*box_height - scroller_height + scrollbar_width,
+};
+
+[
+ [{block: "start", inline: "start"}, expectedX.blockStart, expectedY.inlineStart],
+ [{block: "start", inline: "center"}, expectedX.blockStart, expectedY.inlineCenter],
+ [{block: "start", inline: "end"}, expectedX.blockStart, expectedY.inlineEnd],
+ [{block: "center", inline: "start"}, expectedX.blockCenter, expectedY.inlineStart],
+ [{block: "center", inline: "center"}, expectedX.blockCenter, expectedY.inlineCenter],
+ [{block: "center", inline: "end"}, expectedX.blockCenter, expectedY.inlineEnd],
+ [{block: "end", inline: "start"}, expectedX.blockEnd, expectedY.inlineStart],
+ [{block: "end", inline: "center"}, expectedX.blockEnd, expectedY.inlineCenter],
+ [{block: "end", inline: "end"}, expectedX.blockEnd, expectedY.inlineEnd],
+].forEach(([input, expectedX, expectedY]) => {
+ test(() => {
+ scroller.scrollTo(0, 0);
+ target.scrollIntoView(input);
+ assert_approx_equals(scroller.scrollLeft, expectedX, 0.5, "scrollX");
+ assert_approx_equals(scroller.scrollTop, expectedY, 0.5, "scrollY");
+ }, `scrollIntoView(${JSON.stringify(input)})`);
+})
+
+</script>
+
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/cssom-view/scrollIntoView-sideways-lr-writing-mode.html b/tests/wpt/web-platform-tests/css/cssom-view/scrollIntoView-sideways-lr-writing-mode.html
new file mode 100644
index 00000000000..0659dec8c1a
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/cssom-view/scrollIntoView-sideways-lr-writing-mode.html
@@ -0,0 +1,108 @@
+<!DOCTYPE html>
+<title>CSSOM View - scrollIntoView considers sideways-rl writing mode</title>
+<meta charset="utf-8">
+<link rel="author" title="Cathie Chen" href="mailto:cathiechen@igalia.com">
+<link rel="help" href="https://drafts.csswg.org/cssom-view/#dom-element-scrollintoview">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+
+<style>
+.box {
+ float: left;
+ width: 200px;
+ height: 200px;
+}
+#scroller {
+ writing-mode: sideways-lr;
+ overflow: scroll;
+ width: 300px;
+ height: 300px;
+}
+#container{
+ width: 600px;
+ height: 600px;
+}
+#target {
+ background-color: #ff0;
+}
+</style>
+<body>
+<div id="scroller">
+ <div id="container">
+ <!-- ROW-1 -->
+ <div class="row">
+ <div class="box"></div>
+ <div class="box"></div>
+ <div class="box"></div>
+ </div>
+
+ <!-- ROW-2 -->
+ <div class="row">
+ <div class="box"></div>
+ <div class="box" id="target"></div>
+ <div class="box"></div>
+ </div>
+
+ <!-- ROW-3 -->
+ <div class="row">
+ <div class="box"></div>
+ <div class="box"></div>
+ <div class="box"></div>
+ </div>
+ </div>
+</div>
+
+<script>
+// In sideways-lr mode, X corresponds to the block axis and is oriented rightward.
+// Y corresponds to the inline axis and is oriented upward.
+// So the beginning edges are the bottom and left edges and the ending edges are the top and right edges.
+
+// According to the spec, y be min(0, max(y, element padding edge height - element scrolling area height)).
+// So y is nonpositive and decreases upward.
+
+// This assumes that the horizontal scrollbar is on the bottom side and the vertical scrollbar is on the right side.
+
+var target = document.getElementById("target");
+var scroller = document.getElementById("scroller");
+var scrollbar_width = scroller.offsetWidth - scroller.clientWidth;
+
+var scroller_width = scroller.offsetWidth;
+var scroller_height = scroller.offsetHeight;
+var box_width = target.offsetWidth;
+var box_height = target.offsetHeight;
+
+var expectedX = {
+ blockStart: box_width,
+ blockCenter: (3*box_width - scroller_width)/2 + scrollbar_width/2,
+ blockEnd: 2*box_width - scroller_width + scrollbar_width,
+};
+
+var expectedY = {
+ inlineStart: -box_height,
+ inlineCenter: -((3*box_height - scroller_height)/2) - scrollbar_width/2,
+ inlineEnd: -(2*box_height - scroller_height) - scrollbar_width,
+};
+
+[
+ [{block: "start", inline: "start"}, expectedX.blockStart, expectedY.inlineStart],
+ [{block: "start", inline: "center"}, expectedX.blockStart, expectedY.inlineCenter],
+ [{block: "start", inline: "end"}, expectedX.blockStart, expectedY.inlineEnd],
+ [{block: "center", inline: "start"}, expectedX.blockCenter, expectedY.inlineStart],
+ [{block: "center", inline: "center"}, expectedX.blockCenter, expectedY.inlineCenter],
+ [{block: "center", inline: "end"}, expectedX.blockCenter, expectedY.inlineEnd],
+ [{block: "end", inline: "start"}, expectedX.blockEnd, expectedY.inlineStart],
+ [{block: "end", inline: "center"}, expectedX.blockEnd, expectedY.inlineCenter],
+ [{block: "end", inline: "end"}, expectedX.blockEnd, expectedY.inlineEnd],
+].forEach(([input, expectedX, expectedY]) => {
+ test(() => {
+ scroller.scrollTo(0, 0);
+ target.scrollIntoView(input);
+ assert_approx_equals(scroller.scrollLeft, expectedX, 0.5, "scrollX");
+ assert_approx_equals(scroller.scrollTop, expectedY, 0.5, "scrollY");
+ }, `scrollIntoView(${JSON.stringify(input)})`);
+})
+
+</script>
+
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/cssom-view/scrollIntoView-sideways-rl-writing-mode-and-rtl-direction.html b/tests/wpt/web-platform-tests/css/cssom-view/scrollIntoView-sideways-rl-writing-mode-and-rtl-direction.html
new file mode 100644
index 00000000000..82e43eb4859
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/cssom-view/scrollIntoView-sideways-rl-writing-mode-and-rtl-direction.html
@@ -0,0 +1,111 @@
+<!DOCTYPE html>
+<title>CSSOM View - scrollIntoView considers sideways-rl writing mode and rtl direction</title>
+<meta charset="utf-8">
+<link rel="author" title="Cathie Chen" href="mailto:cathiechen@igalia.com">
+<link rel="help" href="https://drafts.csswg.org/cssom-view/#dom-element-scrollintoview">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+
+<style>
+.box {
+ float: left;
+ width: 200px;
+ height: 200px;
+}
+#scroller {
+ writing-mode: sideways-rl;
+ direction: rtl;
+ overflow: scroll;
+ width: 300px;
+ height: 300px;
+}
+#container{
+ width: 600px;
+ height: 600px;
+}
+#target {
+ background-color: #ff0;
+}
+</style>
+<body>
+<div id="scroller">
+ <div id="container">
+ <!-- ROW-1 -->
+ <div class="row">
+ <div class="box"></div>
+ <div class="box"></div>
+ <div class="box"></div>
+ </div>
+
+ <!-- ROW-2 -->
+ <div class="row">
+ <div class="box"></div>
+ <div class="box" id="target"></div>
+ <div class="box"></div>
+ </div>
+
+ <!-- ROW-3 -->
+ <div class="row">
+ <div class="box"></div>
+ <div class="box"></div>
+ <div class="box"></div>
+ </div>
+ </div>
+</div>
+
+<script>
+// In sideways-rl mode and rtl direction, X corresponds to the block axis and is oriented leftward.
+// Y corresponds to the inline axis and is oriented upward.
+// So the beginning edges are the bottom and right edges and the ending edges are the top and left edges.
+
+// According to the spec, x be min(0, max(x, element padding edge width - element scrolling area width)).
+// So x is nonpositive and decreases leftward.
+// According to the spec, y be min(0, max(y, element padding edge height - element scrolling area height)).
+// So y is nonpositive and decreases upward.
+
+// This assumes that the horizontal scrollbar is on the bottom side and the vertical scrollbar is on the left side.
+
+var target = document.getElementById("target");
+var scroller = document.getElementById("scroller");
+var scrollbar_width = scroller.offsetWidth - scroller.clientWidth;
+
+var scroller_width = scroller.offsetWidth;
+var scroller_height = scroller.offsetHeight;
+var box_width = target.offsetWidth;
+var box_height = target.offsetHeight;
+
+var expectedX = {
+ blockStart: -box_width,
+ blockCenter: -((3*box_width - scroller_width)/2) - scrollbar_width/2,
+ blockEnd: -(2*box_width - scroller_width) - scrollbar_width,
+};
+
+var expectedY = {
+ inlineStart: -box_height,
+ inlineCenter: -((3*box_height - scroller_height)/2) - scrollbar_width/2,
+ inlineEnd: -(2*box_height - scroller_height) - scrollbar_width,
+};
+
+[
+ [{block: "start", inline: "start"}, expectedX.blockStart, expectedY.inlineStart],
+ [{block: "start", inline: "center"}, expectedX.blockStart, expectedY.inlineCenter],
+ [{block: "start", inline: "end"}, expectedX.blockStart, expectedY.inlineEnd],
+ [{block: "center", inline: "start"}, expectedX.blockCenter, expectedY.inlineStart],
+ [{block: "center", inline: "center"}, expectedX.blockCenter, expectedY.inlineCenter],
+ [{block: "center", inline: "end"}, expectedX.blockCenter, expectedY.inlineEnd],
+ [{block: "end", inline: "start"}, expectedX.blockEnd, expectedY.inlineStart],
+ [{block: "end", inline: "center"}, expectedX.blockEnd, expectedY.inlineCenter],
+ [{block: "end", inline: "end"}, expectedX.blockEnd, expectedY.inlineEnd],
+].forEach(([input, expectedX, expectedY]) => {
+ test(() => {
+ scroller.scrollTo(0, 0);
+ target.scrollIntoView(input);
+ assert_approx_equals(scroller.scrollLeft, expectedX, 0.5, "scrollX");
+ assert_approx_equals(scroller.scrollTop, expectedY, 0.5, "scrollY");
+ }, `scrollIntoView(${JSON.stringify(input)})`);
+})
+
+</script>
+
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/cssom-view/scrollIntoView-sideways-rl-writing-mode.html b/tests/wpt/web-platform-tests/css/cssom-view/scrollIntoView-sideways-rl-writing-mode.html
new file mode 100644
index 00000000000..9d7fda63e6e
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/cssom-view/scrollIntoView-sideways-rl-writing-mode.html
@@ -0,0 +1,108 @@
+<!DOCTYPE html>
+<title>CSSOM View - scrollIntoView considers sideways-rl writing mode</title>
+<meta charset="utf-8">
+<link rel="author" title="Cathie Chen" href="mailto:cathiechen@igalia.com">
+<link rel="help" href="https://drafts.csswg.org/cssom-view/#dom-element-scrollintoview">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+
+<style>
+.box {
+ float: left;
+ width: 200px;
+ height: 200px;
+}
+#scroller {
+ writing-mode: sideways-rl;
+ overflow: scroll;
+ width: 300px;
+ height: 300px;
+}
+#container{
+ width: 600px;
+ height: 600px;
+}
+#target {
+ background-color: #ff0;
+}
+</style>
+<body>
+<div id="scroller">
+ <div id="container">
+ <!-- ROW-1 -->
+ <div class="row">
+ <div class="box"></div>
+ <div class="box"></div>
+ <div class="box"></div>
+ </div>
+
+ <!-- ROW-2 -->
+ <div class="row">
+ <div class="box"></div>
+ <div class="box" id="target"></div>
+ <div class="box"></div>
+ </div>
+
+ <!-- ROW-3 -->
+ <div class="row">
+ <div class="box"></div>
+ <div class="box"></div>
+ <div class="box"></div>
+ </div>
+ </div>
+</div>
+
+<script>
+// In sideways-rl mode, X corresponds to the block axis and is oriented leftward.
+// Y corresponds to the inline axis and is oriented downward.
+// So the beginning edges are the top and right edges and the ending edges are the bottom and left edges.
+
+// According to the spec, x be min(0, max(x, element padding edge width - element scrolling area width)).
+// So x is nonpositive and decreases leftward.
+
+// This assumes that the horizontal scrollbar is on the bottom side and the vertical scrollbar is on the left side.
+
+var target = document.getElementById("target");
+var scroller = document.getElementById("scroller");
+var scrollbar_width = scroller.offsetWidth - scroller.clientWidth;
+
+var scroller_width = scroller.offsetWidth;
+var scroller_height = scroller.offsetHeight;
+var box_width = target.offsetWidth;
+var box_height = target.offsetHeight;
+
+var expectedX = {
+ blockStart: -box_width,
+ blockCenter: -((3*box_width - scroller_width)/2) - scrollbar_width/2,
+ blockEnd: -(2*box_width - scroller_width) - scrollbar_width,
+};
+
+var expectedY = {
+ inlineStart: box_height,
+ inlineCenter: ((3*box_height - scroller_height)/2) + (scrollbar_width/2),
+ inlineEnd: ((2*box_height) - scroller_height) + scrollbar_width,
+};
+
+[
+ [{block: "start", inline: "start"}, expectedX.blockStart, expectedY.inlineStart],
+ [{block: "start", inline: "center"}, expectedX.blockStart, expectedY.inlineCenter],
+ [{block: "start", inline: "end"}, expectedX.blockStart, expectedY.inlineEnd],
+ [{block: "center", inline: "start"}, expectedX.blockCenter, expectedY.inlineStart],
+ [{block: "center", inline: "center"}, expectedX.blockCenter, expectedY.inlineCenter],
+ [{block: "center", inline: "end"}, expectedX.blockCenter, expectedY.inlineEnd],
+ [{block: "end", inline: "start"}, expectedX.blockEnd, expectedY.inlineStart],
+ [{block: "end", inline: "center"}, expectedX.blockEnd, expectedY.inlineCenter],
+ [{block: "end", inline: "end"}, expectedX.blockEnd, expectedY.inlineEnd],
+].forEach(([input, expectedX, expectedY]) => {
+ test(() => {
+ scroller.scrollTo(0, 0);
+ target.scrollIntoView(input);
+ assert_approx_equals(scroller.scrollLeft, expectedX, 0.5, "scrollX");
+ assert_approx_equals(scroller.scrollTop, expectedY, 0.5, "scrollY");
+ }, `scrollIntoView(${JSON.stringify(input)})`);
+})
+
+</script>
+
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/motion/offset-anchor-transform-box-fill-box-001.html b/tests/wpt/web-platform-tests/css/motion/offset-anchor-transform-box-fill-box-001.html
new file mode 100644
index 00000000000..ac893bae652
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/motion/offset-anchor-transform-box-fill-box-001.html
@@ -0,0 +1,17 @@
+<!DOCTYPE html>
+<title>CSS Motion Path: Default offset-anchor with transform-box: fill-box</title>
+<link rel="help" href="https://drafts.fxtf.org/motion-1/#offset-anchor-property">
+<link rel="match" href="offset-anchor-transform-box-fill-box-ref.html">
+<meta name="assert" content="Tests default offset-anchor together with a fill-box transform-box">
+<style>
+#target {
+ transform-box: fill-box;
+ transform-origin: 25% 25%;
+ offset-path: path("M75,-25v100");
+ offset-distance: 50%;
+}
+</style>
+<svg width="400" height="400">
+ <rect width="100" height="100" fill="red"/>
+ <rect id="target" x="150" y="100" width="100" height="100" fill="green"/>
+</svg>
diff --git a/tests/wpt/web-platform-tests/css/motion/offset-anchor-transform-box-fill-box.html b/tests/wpt/web-platform-tests/css/motion/offset-anchor-transform-box-fill-box-002.html
index 563ffdaf1a1..563ffdaf1a1 100644
--- a/tests/wpt/web-platform-tests/css/motion/offset-anchor-transform-box-fill-box.html
+++ b/tests/wpt/web-platform-tests/css/motion/offset-anchor-transform-box-fill-box-002.html
diff --git a/tests/wpt/web-platform-tests/css/selectors/selectors-case-sensitive-001.html b/tests/wpt/web-platform-tests/css/selectors/selectors-case-sensitive-001.html
new file mode 100644
index 00000000000..d0214078bdd
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/selectors/selectors-case-sensitive-001.html
@@ -0,0 +1,40 @@
+<!DOCTYPE html>
+<title>Test element names are case-insensitive only in ASCII range</title>
+<link rel="help" href="https://www.w3.org/TR/selectors-4/#case-sensitive">
+<link rel="author" title="Koji Ishii" href="mailto:kojii@chromium.org">
+<script src='/resources/testharness.js'></script>
+<script src='/resources/testharnessreport.js'></script>
+<style>
+\212A {
+ display: block;
+ background: lime;
+ width: 200px;
+ height: 100px;
+}
+</style>
+<body>
+ <p>You should see a green square below.</p>
+ <div id="container"></div>
+<script>
+// Insert from JavaScript to avoid parser doing something special.
+let test_element = document.createElement('\u212A');
+container.appendChild(test_element);
+let test_element_with_ns = document.createElementNS('https://dummy.ns', '\u212A');
+container.appendChild(test_element_with_ns);
+
+test(() => {
+ assert_equals(test_element.offsetHeight, 100);
+}, 'CSS selector should match for Unicode uppercase element');
+
+test(() => {
+ // Elements in different namespace cannot compute style or height.
+ // Test the height of the container instead.
+ assert_equals(container.offsetHeight, 200);
+}, 'Elements with namespace should work the same way');
+
+test(() => {
+ let e = document.querySelector('k');
+ assert_equals(e, null);
+}, '`querySelector` should not use Unicode case-foldering');
+</script>
+</body>
diff --git a/tests/wpt/web-platform-tests/html/browsers/history/the-location-interface/location_hash.html b/tests/wpt/web-platform-tests/html/browsers/history/the-location-interface/location_hash.html
index ef6f6331389..c063e285ea6 100644
--- a/tests/wpt/web-platform-tests/html/browsers/history/the-location-interface/location_hash.html
+++ b/tests/wpt/web-platform-tests/html/browsers/history/the-location-interface/location_hash.html
@@ -28,8 +28,6 @@
var frameWin = document.getElementById("srcdoc-iframe").contentWindow;
assert_equals(frameWin.location.href, "about:srcdoc");
assert_equals(frameWin.scrollY, 0, "Should not have scrolled yet");
- frameWin.location.hash = "";
- assert_equals(frameWin.location.href, "about:srcdoc#", "Setting an empty hash should result in an empty fragment, not no fragment.");
frameWin.location.hash = "test";
assert_equals(frameWin.location.href, "about:srcdoc#test");
assert_true(frameWin.scrollY > frameWin.innerHeight,
diff --git a/tests/wpt/web-platform-tests/html/semantics/forms/the-select-element/selected-index.html b/tests/wpt/web-platform-tests/html/semantics/forms/the-select-element/selected-index.html
index 70f6772b876..7f7fd9a1a2e 100644
--- a/tests/wpt/web-platform-tests/html/semantics/forms/the-select-element/selected-index.html
+++ b/tests/wpt/web-platform-tests/html/semantics/forms/the-select-element/selected-index.html
@@ -30,6 +30,11 @@
<option style="display:none"></option>
<option></option>
</select>
+
+ <select id=minus-one>
+ <option value=1>1</option>
+ <option value=2>2</option>
+ </select>
</form>
<script>
@@ -38,6 +43,10 @@ function assertSelectedIndex(select, value) {
assert_equals(select.options.selectedIndex, value);
}
+function assertSelectValue(select, value) {
+ assert_equals(select.value, value);
+}
+
test(function () {
var select = document.getElementById('empty');
assertSelectedIndex(select, -1);
@@ -120,4 +129,15 @@ test(function () {
select.options[1].selected = false;
assertSelectedIndex(select, 0);
}, "reset to display:none");
+
+test(function() {
+ var select = document.getElementById("minus-one");
+ assertSelectedIndex(select, 0);
+
+ select.selectedIndex = -1;
+
+ assertSelectedIndex(select, -1);
+ assertSelectValue(select, "");
+
+}, "set selectedIndex=-1");
</script>
diff --git a/tests/wpt/web-platform-tests/interfaces/DOM-Parsing.idl b/tests/wpt/web-platform-tests/interfaces/DOM-Parsing.idl
index c5de42b0cfc..7c93a52d2a7 100644
--- a/tests/wpt/web-platform-tests/interfaces/DOM-Parsing.idl
+++ b/tests/wpt/web-platform-tests/interfaces/DOM-Parsing.idl
@@ -17,7 +17,6 @@ enum SupportedType {
};
[Constructor, Exposed=Window]
-
interface XMLSerializer {
DOMString serializeToString(Node root);
};
diff --git a/tests/wpt/web-platform-tests/interfaces/animation-worklet.idl b/tests/wpt/web-platform-tests/interfaces/animation-worklet.idl
index 32988e11506..615a21c76fd 100644
--- a/tests/wpt/web-platform-tests/interfaces/animation-worklet.idl
+++ b/tests/wpt/web-platform-tests/interfaces/animation-worklet.idl
@@ -8,16 +8,6 @@ partial namespace CSS {
[SameObject] readonly attribute Worklet animationWorklet;
};
-[Exposed=AnimationWorklet, Global=AnimationWorklet, Constructor (optional any options)]
-interface StatelessAnimator {
-};
-
-[Exposed=AnimationWorklet, Global=AnimationWorklet,
-Constructor (optional any options, optional any state)]
-interface StatefulAnimator {
- any state();
-};
-
[ Global=(Worklet,AnimationWorklet), Exposed=AnimationWorklet ]
interface AnimationWorkletGlobalScope : WorkletGlobalScope {
void registerAnimator(DOMString name, AnimatorInstanceConstructor animatorCtor);
diff --git a/tests/wpt/web-platform-tests/interfaces/geolocation-API.idl b/tests/wpt/web-platform-tests/interfaces/geolocation-API.idl
index 8bb3dd748dd..802e76ce85f 100644
--- a/tests/wpt/web-platform-tests/interfaces/geolocation-API.idl
+++ b/tests/wpt/web-platform-tests/interfaces/geolocation-API.idl
@@ -4,55 +4,54 @@
// Source: Geolocation API Specification 2nd Edition (https://www.w3.org/TR/geolocation-API/)
partial interface Navigator {
- readonly attribute Geolocation geolocation;
- };
+ readonly attribute Geolocation geolocation;
+};
[NoInterfaceObject]
- interface Geolocation {
+interface Geolocation {
+ void getCurrentPosition(PositionCallback successCallback,
+ optional PositionErrorCallback errorCallback,
+ optional PositionOptions options);
- void getCurrentPosition(PositionCallback successCallback,
- optional PositionErrorCallback errorCallback,
- optional PositionOptions options);
+ long watchPosition(PositionCallback successCallback,
+ optional PositionErrorCallback errorCallback,
+ optional PositionOptions options);
- long watchPosition(PositionCallback successCallback,
- optional PositionErrorCallback errorCallback,
- optional PositionOptions options);
+ void clearWatch(long watchId);
+};
- void clearWatch(long watchId);
- };
+callback PositionCallback = void (Position position);
- callback PositionCallback = void (Position position);
-
- callback PositionErrorCallback = void (PositionError positionError);
+callback PositionErrorCallback = void (PositionError positionError);
dictionary PositionOptions {
- boolean enableHighAccuracy = false;
- [Clamp] unsigned long timeout = 0xFFFFFFFF;
- [Clamp] unsigned long maximumAge = 0;
- };
+ boolean enableHighAccuracy = false;
+ [Clamp] unsigned long timeout = 0xFFFFFFFF;
+ [Clamp] unsigned long maximumAge = 0;
+};
[NoInterfaceObject]
- interface Position {
- readonly attribute Coordinates coords;
- readonly attribute DOMTimeStamp timestamp;
- };
+interface Position {
+ readonly attribute Coordinates coords;
+ readonly attribute DOMTimeStamp timestamp;
+};
[NoInterfaceObject]
- interface Coordinates {
- readonly attribute double latitude;
- readonly attribute double longitude;
- readonly attribute double? altitude;
- readonly attribute double accuracy;
- readonly attribute double? altitudeAccuracy;
- readonly attribute double? heading;
- readonly attribute double? speed;
- };
+interface Coordinates {
+ readonly attribute double latitude;
+ readonly attribute double longitude;
+ readonly attribute double? altitude;
+ readonly attribute double accuracy;
+ readonly attribute double? altitudeAccuracy;
+ readonly attribute double? heading;
+ readonly attribute double? speed;
+};
[NoInterfaceObject]
- interface PositionError {
- const unsigned short PERMISSION_DENIED = 1;
- const unsigned short POSITION_UNAVAILABLE = 2;
- const unsigned short TIMEOUT = 3;
- readonly attribute unsigned short code;
- readonly attribute DOMString message;
- };
+interface PositionError {
+ const unsigned short PERMISSION_DENIED = 1;
+ const unsigned short POSITION_UNAVAILABLE = 2;
+ const unsigned short TIMEOUT = 3;
+ readonly attribute unsigned short code;
+ readonly attribute DOMString message;
+};
diff --git a/tests/wpt/web-platform-tests/interfaces/media-capabilities.idl b/tests/wpt/web-platform-tests/interfaces/media-capabilities.idl
index 00a9e62028a..e66309187f4 100644
--- a/tests/wpt/web-platform-tests/interfaces/media-capabilities.idl
+++ b/tests/wpt/web-platform-tests/interfaces/media-capabilities.idl
@@ -1,7 +1,7 @@
// GENERATED CONTENT - DO NOT EDIT
// Content was automatically extracted by Reffy into reffy-reports
// (https://github.com/tidoust/reffy-reports)
-// Source: Media Capabilities (https://wicg.github.io/media-capabilities/)
+// Source: Media Capabilities (https://w3c.github.io/media-capabilities/)
dictionary MediaConfiguration {
VideoConfiguration video;
diff --git a/tests/wpt/web-platform-tests/interfaces/media-playback-quality.idl b/tests/wpt/web-platform-tests/interfaces/media-playback-quality.idl
new file mode 100644
index 00000000000..12b2c74e618
--- /dev/null
+++ b/tests/wpt/web-platform-tests/interfaces/media-playback-quality.idl
@@ -0,0 +1,15 @@
+// GENERATED CONTENT - DO NOT EDIT
+// Content was automatically extracted by Reffy into reffy-reports
+// (https://github.com/tidoust/reffy-reports)
+// Source: Media Playback Quality (https://w3c.github.io/media-playback-quality/)
+
+partial interface HTMLVideoElement {
+ VideoPlaybackQuality getVideoPlaybackQuality();
+};
+
+interface VideoPlaybackQuality {
+ readonly attribute DOMHighResTimeStamp creationTime;
+ readonly attribute unsigned long corruptedVideoFrames;
+ readonly attribute unsigned long droppedVideoFrames;
+ readonly attribute unsigned long totalVideoFrames;
+};
diff --git a/tests/wpt/web-platform-tests/interfaces/mediacapture-streams.idl b/tests/wpt/web-platform-tests/interfaces/mediacapture-streams.idl
index c07b7e33012..d83777c5d29 100644
--- a/tests/wpt/web-platform-tests/interfaces/mediacapture-streams.idl
+++ b/tests/wpt/web-platform-tests/interfaces/mediacapture-streams.idl
@@ -8,185 +8,184 @@
Constructor(MediaStream stream),
Constructor(sequence<MediaStreamTrack> tracks)]
interface MediaStream : EventTarget {
- readonly attribute DOMString id;
- sequence<MediaStreamTrack> getAudioTracks();
- sequence<MediaStreamTrack> getVideoTracks();
- sequence<MediaStreamTrack> getTracks();
- MediaStreamTrack? getTrackById(DOMString trackId);
- void addTrack(MediaStreamTrack track);
- void removeTrack(MediaStreamTrack track);
- MediaStream clone();
- readonly attribute boolean active;
- attribute EventHandler onaddtrack;
- attribute EventHandler onremovetrack;
+ readonly attribute DOMString id;
+ sequence<MediaStreamTrack> getAudioTracks();
+ sequence<MediaStreamTrack> getVideoTracks();
+ sequence<MediaStreamTrack> getTracks();
+ MediaStreamTrack? getTrackById(DOMString trackId);
+ void addTrack(MediaStreamTrack track);
+ void removeTrack(MediaStreamTrack track);
+ MediaStream clone();
+ readonly attribute boolean active;
+ attribute EventHandler onaddtrack;
+ attribute EventHandler onremovetrack;
};
[Exposed=Window]
interface MediaStreamTrack : EventTarget {
- readonly attribute DOMString kind;
- readonly attribute DOMString id;
- readonly attribute DOMString label;
- attribute boolean enabled;
- readonly attribute boolean muted;
- attribute EventHandler onmute;
- attribute EventHandler onunmute;
- readonly attribute MediaStreamTrackState readyState;
- attribute EventHandler onended;
- MediaStreamTrack clone();
- void stop();
- MediaTrackCapabilities getCapabilities();
- MediaTrackConstraints getConstraints();
- MediaTrackSettings getSettings();
- Promise<void> applyConstraints(optional MediaTrackConstraints constraints);
+ readonly attribute DOMString kind;
+ readonly attribute DOMString id;
+ readonly attribute DOMString label;
+ attribute boolean enabled;
+ readonly attribute boolean muted;
+ attribute EventHandler onmute;
+ attribute EventHandler onunmute;
+ readonly attribute MediaStreamTrackState readyState;
+ attribute EventHandler onended;
+ MediaStreamTrack clone();
+ void stop();
+ MediaTrackCapabilities getCapabilities();
+ MediaTrackConstraints getConstraints();
+ MediaTrackSettings getSettings();
+ Promise<void> applyConstraints(optional MediaTrackConstraints constraints);
};
enum MediaStreamTrackState {
- "live",
- "ended"
+ "live",
+ "ended"
};
dictionary MediaTrackSupportedConstraints {
- boolean width = true;
- boolean height = true;
- boolean aspectRatio = true;
- boolean frameRate = true;
- boolean facingMode = true;
- boolean resizeMode = true;
- boolean sampleRate = true;
- boolean sampleSize = true;
- boolean echoCancellation = true;
- boolean autoGainControl = true;
- boolean noiseSuppression = true;
- boolean latency = true;
- boolean channelCount = true;
- boolean deviceId = true;
- boolean groupId = true;
+ boolean width = true;
+ boolean height = true;
+ boolean aspectRatio = true;
+ boolean frameRate = true;
+ boolean facingMode = true;
+ boolean resizeMode = true;
+ boolean sampleRate = true;
+ boolean sampleSize = true;
+ boolean echoCancellation = true;
+ boolean autoGainControl = true;
+ boolean noiseSuppression = true;
+ boolean latency = true;
+ boolean channelCount = true;
+ boolean deviceId = true;
+ boolean groupId = true;
};
dictionary MediaTrackCapabilities {
- ULongRange width;
- ULongRange height;
- DoubleRange aspectRatio;
- DoubleRange frameRate;
- sequence<DOMString> facingMode;
- sequence<DOMString> resizeMode;
- ULongRange sampleRate;
- ULongRange sampleSize;
- sequence<boolean> echoCancellation;
- sequence<boolean> autoGainControl;
- sequence<boolean> noiseSuppression;
- DoubleRange latency;
- ULongRange channelCount;
- DOMString deviceId;
- DOMString groupId;
+ ULongRange width;
+ ULongRange height;
+ DoubleRange aspectRatio;
+ DoubleRange frameRate;
+ sequence<DOMString> facingMode;
+ sequence<DOMString> resizeMode;
+ ULongRange sampleRate;
+ ULongRange sampleSize;
+ sequence<boolean> echoCancellation;
+ sequence<boolean> autoGainControl;
+ sequence<boolean> noiseSuppression;
+ DoubleRange latency;
+ ULongRange channelCount;
+ DOMString deviceId;
+ DOMString groupId;
};
dictionary MediaTrackConstraints : MediaTrackConstraintSet {
- sequence<MediaTrackConstraintSet> advanced;
+ sequence<MediaTrackConstraintSet> advanced;
};
dictionary MediaTrackConstraintSet {
- ConstrainULong width;
- ConstrainULong height;
- ConstrainDouble aspectRatio;
- ConstrainDouble frameRate;
- ConstrainDOMString facingMode;
- ConstrainDOMString resizeMode;
- ConstrainULong sampleRate;
- ConstrainULong sampleSize;
- ConstrainBoolean echoCancellation;
- ConstrainBoolean autoGainControl;
- ConstrainBoolean noiseSuppression;
- ConstrainDouble latency;
- ConstrainULong channelCount;
- ConstrainDOMString deviceId;
- ConstrainDOMString groupId;
+ ConstrainULong width;
+ ConstrainULong height;
+ ConstrainDouble aspectRatio;
+ ConstrainDouble frameRate;
+ ConstrainDOMString facingMode;
+ ConstrainDOMString resizeMode;
+ ConstrainULong sampleRate;
+ ConstrainULong sampleSize;
+ ConstrainBoolean echoCancellation;
+ ConstrainBoolean autoGainControl;
+ ConstrainBoolean noiseSuppression;
+ ConstrainDouble latency;
+ ConstrainULong channelCount;
+ ConstrainDOMString deviceId;
+ ConstrainDOMString groupId;
};
dictionary MediaTrackSettings {
- long width;
- long height;
- double aspectRatio;
- double frameRate;
- DOMString facingMode;
- DOMString resizeMode;
- long sampleRate;
- long sampleSize;
- boolean echoCancellation;
- boolean autoGainControl;
- boolean noiseSuppression;
- double latency;
- long channelCount;
- DOMString deviceId;
- DOMString groupId;
+ long width;
+ long height;
+ double aspectRatio;
+ double frameRate;
+ DOMString facingMode;
+ DOMString resizeMode;
+ long sampleRate;
+ long sampleSize;
+ boolean echoCancellation;
+ boolean autoGainControl;
+ boolean noiseSuppression;
+ double latency;
+ long channelCount;
+ DOMString deviceId;
+ DOMString groupId;
};
enum VideoFacingModeEnum {
- "user",
- "environment",
- "left",
- "right"
+ "user",
+ "environment",
+ "left",
+ "right"
};
enum VideoResizeModeEnum {
- "none",
- "crop-and-scale"
+ "none",
+ "crop-and-scale"
};
-[Exposed=Window,
- Constructor(DOMString type, MediaStreamTrackEventInit eventInitDict)]
+[Exposed=Window, Constructor(DOMString type, MediaStreamTrackEventInit eventInitDict)]
interface MediaStreamTrackEvent : Event {
- [SameObject]
- readonly attribute MediaStreamTrack track;
+ [SameObject] readonly attribute MediaStreamTrack track;
};
dictionary MediaStreamTrackEventInit : EventInit {
- required MediaStreamTrack track;
+ required MediaStreamTrack track;
};
partial interface Navigator {
- [SameObject, SecureContext]
- readonly attribute MediaDevices mediaDevices;
+ [SameObject, SecureContext] readonly attribute MediaDevices mediaDevices;
};
[Exposed=Window, SecureContext]
interface MediaDevices : EventTarget {
- attribute EventHandler ondevicechange;
- Promise<sequence<MediaDeviceInfo>> enumerateDevices();
+ attribute EventHandler ondevicechange;
+ Promise<sequence<MediaDeviceInfo>> enumerateDevices();
};
[Exposed=Window, SecureContext]
interface MediaDeviceInfo {
- readonly attribute DOMString deviceId;
- readonly attribute MediaDeviceKind kind;
- readonly attribute DOMString label;
- readonly attribute DOMString groupId;
- [Default] object toJSON();
+ readonly attribute DOMString deviceId;
+ readonly attribute MediaDeviceKind kind;
+ readonly attribute DOMString label;
+ readonly attribute DOMString groupId;
+ [Default] object toJSON();
};
enum MediaDeviceKind {
- "audioinput",
- "audiooutput",
- "videoinput"
+ "audioinput",
+ "audiooutput",
+ "videoinput"
};
-[Exposed=Window] interface InputDeviceInfo : MediaDeviceInfo {
- MediaTrackCapabilities getCapabilities();
+[Exposed=Window]
+interface InputDeviceInfo : MediaDeviceInfo {
+ MediaTrackCapabilities getCapabilities();
};
partial interface Navigator {
- [SecureContext]
- void getUserMedia(MediaStreamConstraints constraints, NavigatorUserMediaSuccessCallback successCallback, NavigatorUserMediaErrorCallback errorCallback);
+ [SecureContext] void getUserMedia(MediaStreamConstraints constraints,
+ NavigatorUserMediaSuccessCallback successCallback,
+ NavigatorUserMediaErrorCallback errorCallback);
};
partial interface MediaDevices {
- MediaTrackSupportedConstraints getSupportedConstraints();
- Promise<MediaStream> getUserMedia(optional MediaStreamConstraints constraints);
+ MediaTrackSupportedConstraints getSupportedConstraints();
+ Promise<MediaStream> getUserMedia(optional MediaStreamConstraints constraints);
};
dictionary MediaStreamConstraints {
- (boolean or MediaTrackConstraints) video = false;
- (boolean or MediaTrackConstraints) audio = false;
+ (boolean or MediaTrackConstraints) video = false;
+ (boolean or MediaTrackConstraints) audio = false;
};
callback NavigatorUserMediaSuccessCallback = void (MediaStream stream);
@@ -196,33 +195,33 @@ callback NavigatorUserMediaErrorCallback = void (MediaStreamError error);
typedef object MediaStreamError;
dictionary DoubleRange {
- double max;
- double min;
+ double max;
+ double min;
};
dictionary ConstrainDoubleRange : DoubleRange {
- double exact;
- double ideal;
+ double exact;
+ double ideal;
};
dictionary ULongRange {
- [Clamp] unsigned long max;
- [Clamp] unsigned long min;
+ [Clamp] unsigned long max;
+ [Clamp] unsigned long min;
};
dictionary ConstrainULongRange : ULongRange {
- [Clamp] unsigned long exact;
- [Clamp] unsigned long ideal;
+ [Clamp] unsigned long exact;
+ [Clamp] unsigned long ideal;
};
dictionary ConstrainBooleanParameters {
- boolean exact;
- boolean ideal;
+ boolean exact;
+ boolean ideal;
};
dictionary ConstrainDOMStringParameters {
- (DOMString or sequence<DOMString>) exact;
- (DOMString or sequence<DOMString>) ideal;
+ (DOMString or sequence<DOMString>) exact;
+ (DOMString or sequence<DOMString>) ideal;
};
typedef ([Clamp] unsigned long or ConstrainULongRange) ConstrainULong;
@@ -231,17 +230,16 @@ typedef (double or ConstrainDoubleRange) ConstrainDouble;
typedef (boolean or ConstrainBooleanParameters) ConstrainBoolean;
-typedef (DOMString or sequence<DOMString> or ConstrainDOMStringParameters) ConstrainDOMString;
+typedef (DOMString or
+sequence<DOMString> or
+ConstrainDOMStringParameters) ConstrainDOMString;
-dictionary Capabilities {
-};
+dictionary Capabilities {};
-dictionary Settings {
-};
+dictionary Settings {};
-dictionary ConstraintSet {
-};
+dictionary ConstraintSet {};
dictionary Constraints : ConstraintSet {
- sequence<ConstraintSet> advanced;
+ sequence<ConstraintSet> advanced;
};
diff --git a/tests/wpt/web-platform-tests/interfaces/mediasession.idl b/tests/wpt/web-platform-tests/interfaces/mediasession.idl
index 565eab7b027..5466300b6b4 100644
--- a/tests/wpt/web-platform-tests/interfaces/mediasession.idl
+++ b/tests/wpt/web-platform-tests/interfaces/mediasession.idl
@@ -1,7 +1,7 @@
// GENERATED CONTENT - DO NOT EDIT
// Content was automatically extracted by Reffy into reffy-reports
// (https://github.com/tidoust/reffy-reports)
-// Source: Media Session Standard (https://wicg.github.io/mediasession/)
+// Source: Media Session Standard (https://w3c.github.io/mediasession/)
[Exposed=Window]
partial interface Navigator {
diff --git a/tests/wpt/web-platform-tests/interfaces/payment-request.idl b/tests/wpt/web-platform-tests/interfaces/payment-request.idl
index f8bd336dbe3..fefdc6f3617 100644
--- a/tests/wpt/web-platform-tests/interfaces/payment-request.idl
+++ b/tests/wpt/web-platform-tests/interfaces/payment-request.idl
@@ -3,7 +3,7 @@
// (https://github.com/tidoust/reffy-reports)
// Source: Payment Request API (https://w3c.github.io/payment-request/)
-[Constructor(sequence<PaymentMethodData> methodData, PaymentDetailsInit details, optional PaymentOptions options),
+[Constructor(sequence<PaymentMethodData> methodData, PaymentDetailsInit details, optional PaymentOptions options = {}),
SecureContext, Exposed=Window]
interface PaymentRequest : EventTarget {
[NewObject]
@@ -138,7 +138,7 @@ enum PaymentComplete {
};
[SecureContext, Exposed=Window]
-interface PaymentResponse : EventTarget {
+interface PaymentResponse : EventTarget {
[Default] object toJSON();
readonly attribute DOMString requestId;
@@ -153,7 +153,7 @@ interface PaymentResponse : EventTarget {
[NewObject]
Promise<void> complete(optional PaymentComplete result = "unknown");
[NewObject]
- Promise<void> retry(optional PaymentValidationErrors errorFields);
+ Promise<void> retry(optional PaymentValidationErrors errorFields = {});
attribute EventHandler onpayerdetailchange;
};
@@ -171,7 +171,7 @@ dictionary PayerErrors {
DOMString phone;
};
-[Constructor(DOMString type, optional MerchantValidationEventInit eventInitDict),
+[Constructor(DOMString type, optional MerchantValidationEventInit eventInitDict = {}),
SecureContext, Exposed=Window]
interface MerchantValidationEvent : Event {
readonly attribute DOMString methodName;
@@ -184,7 +184,7 @@ dictionary MerchantValidationEventInit : EventInit {
USVString validationURL = "";
};
-[Constructor(DOMString type, optional PaymentMethodChangeEventInit eventInitDict), SecureContext, Exposed=Window]
+[Constructor(DOMString type, optional PaymentMethodChangeEventInit eventInitDict = {}), SecureContext, Exposed=Window]
interface PaymentMethodChangeEvent : PaymentRequestUpdateEvent {
readonly attribute DOMString methodName;
readonly attribute object? methodDetails;
@@ -195,7 +195,7 @@ dictionary PaymentMethodChangeEventInit : PaymentRequestUpdateEventInit {
object? methodDetails = null;
};
-[Constructor(DOMString type, optional PaymentRequestUpdateEventInit eventInitDict), SecureContext, Exposed=Window]
+[Constructor(DOMString type, optional PaymentRequestUpdateEventInit eventInitDict = {}), SecureContext, Exposed=Window]
interface PaymentRequestUpdateEvent : Event {
void updateWith(Promise<PaymentDetailsUpdate> detailsPromise);
};
diff --git a/tests/wpt/web-platform-tests/interfaces/picture-in-picture.idl b/tests/wpt/web-platform-tests/interfaces/picture-in-picture.idl
index 164ec02a9cf..09b3b50c19b 100644
--- a/tests/wpt/web-platform-tests/interfaces/picture-in-picture.idl
+++ b/tests/wpt/web-platform-tests/interfaces/picture-in-picture.idl
@@ -1,7 +1,7 @@
// GENERATED CONTENT - DO NOT EDIT
// Content was automatically extracted by Reffy into reffy-reports
// (https://github.com/tidoust/reffy-reports)
-// Source: Picture-in-Picture (https://wicg.github.io/picture-in-picture/)
+// Source: Picture-in-Picture (https://w3c.github.io/picture-in-picture/)
partial interface HTMLVideoElement {
[NewObject] Promise<PictureInPictureWindow> requestPictureInPicture();
diff --git a/tests/wpt/web-platform-tests/interfaces/push-api.idl b/tests/wpt/web-platform-tests/interfaces/push-api.idl
index 2fd5e27896c..74725a30256 100644
--- a/tests/wpt/web-platform-tests/interfaces/push-api.idl
+++ b/tests/wpt/web-platform-tests/interfaces/push-api.idl
@@ -12,9 +12,9 @@ partial interface ServiceWorkerRegistration {
interface PushManager {
[SameObject] static readonly attribute FrozenArray<DOMString> supportedContentEncodings;
- Promise<PushSubscription> subscribe(optional PushSubscriptionOptionsInit options);
+ Promise<PushSubscription> subscribe(optional PushSubscriptionOptionsInit options = {});
Promise<PushSubscription?> getSubscription();
- Promise<PushPermissionState> permissionState(optional PushSubscriptionOptionsInit options);
+ Promise<PushPermissionState> permissionState(optional PushSubscriptionOptionsInit options = {});
};
[Exposed=(Window,Worker), SecureContext]
@@ -64,7 +64,7 @@ partial interface ServiceWorkerGlobalScope {
attribute EventHandler onpushsubscriptionchange;
};
-[Constructor(DOMString type, optional PushEventInit eventInitDict), Exposed=ServiceWorker, SecureContext]
+[Constructor(DOMString type, optional PushEventInit eventInitDict = {}), Exposed=ServiceWorker, SecureContext]
interface PushEvent : ExtendableEvent {
readonly attribute PushMessageData? data;
};
@@ -75,13 +75,13 @@ dictionary PushEventInit : ExtendableEventInit {
PushMessageDataInit data;
};
-[Constructor(DOMString type, optional PushSubscriptionChangeInit eventInitDict), Exposed=ServiceWorker, SecureContext]
+[Constructor(DOMString type, optional PushSubscriptionChangeEventInit eventInitDict = {}), Exposed=ServiceWorker, SecureContext]
interface PushSubscriptionChangeEvent : ExtendableEvent {
readonly attribute PushSubscription? newSubscription;
readonly attribute PushSubscription? oldSubscription;
};
-dictionary PushSubscriptionChangeInit : ExtendableEventInit {
+dictionary PushSubscriptionChangeEventInit : ExtendableEventInit {
PushSubscription newSubscription = null;
PushSubscription oldSubscription = null;
};
diff --git a/tests/wpt/web-platform-tests/interfaces/wake-lock.idl b/tests/wpt/web-platform-tests/interfaces/wake-lock.idl
index 21a3406f589..5bccbe8f9b7 100644
--- a/tests/wpt/web-platform-tests/interfaces/wake-lock.idl
+++ b/tests/wpt/web-platform-tests/interfaces/wake-lock.idl
@@ -9,10 +9,10 @@ dictionary WakeLockPermissionDescriptor : PermissionDescriptor {
enum WakeLockType { "screen", "system" };
-[SecureContext, Exposed=(DedicatedWorker,Window)]
+[SecureContext, Exposed=(DedicatedWorker, Window)]
interface WakeLock {
[Exposed=Window] static Promise<PermissionState> requestPermission(WakeLockType type);
- static Promise<void> request(WakeLockType type, optional WakeLockRequestOptions options);
+ static Promise<void> request(WakeLockType type, optional WakeLockRequestOptions options = {});
};
dictionary WakeLockRequestOptions {
diff --git a/tests/wpt/web-platform-tests/interfaces/web-nfc.idl b/tests/wpt/web-platform-tests/interfaces/web-nfc.idl
index a50d53b57cd..365b38ff191 100644
--- a/tests/wpt/web-platform-tests/interfaces/web-nfc.idl
+++ b/tests/wpt/web-platform-tests/interfaces/web-nfc.idl
@@ -3,14 +3,29 @@
// (https://github.com/tidoust/reffy-reports)
// Source: Web NFC API (https://w3c.github.io/web-nfc/)
-dictionary NDEFMessage {
+[Constructor(NDEFMessageInit messageInit), Exposed=Window]
+interface NDEFMessage {
+ readonly attribute USVString url;
+ readonly attribute FrozenArray<NDEFRecord> records;
+};
+
+dictionary NDEFMessageInit {
USVString url;
- sequence<NDEFRecord> records;
+ sequence<NDEFRecordInit> records;
};
typedef (DOMString or unrestricted double or ArrayBuffer or Dictionary) NDEFRecordData;
-dictionary NDEFRecord {
+[Constructor(NDEFRecordInit recordInit), Exposed=Window]
+interface NDEFRecord {
+ readonly attribute NDEFRecordType recordType;
+ readonly attribute USVString mediaType;
+ USVString toText();
+ [NewObject] ArrayBuffer toArrayBuffer();
+ [NewObject] object toJSON();
+};
+
+dictionary NDEFRecordInit {
NDEFRecordType recordType;
USVString mediaType;
NDEFRecordData data;
@@ -24,14 +39,14 @@ enum NDEFRecordType {
"opaque"
};
-typedef (DOMString or ArrayBuffer or NDEFMessage) NDEFMessageSource;
+typedef (DOMString or ArrayBuffer or NDEFMessageInit) NDEFMessageSource;
[Constructor(), SecureContext, Exposed=Window]
interface NFCWriter {
- Promise<void> push(NDEFMessageSource message, optional NFCPushOptions options);
+ Promise<void> push(NDEFMessageSource message, optional NFCPushOptions options={});
};
-[Constructor(optional NFCReaderOptions options), SecureContext, Exposed=Window]
+[Constructor(optional NFCReaderOptions options={}), SecureContext, Exposed=Window]
interface NFCReader : EventTarget {
attribute EventHandler onreading;
attribute EventHandler onerror;
@@ -43,12 +58,12 @@ interface NFCReader : EventTarget {
[Constructor(DOMString type, NFCReadingEventInit readingEventInitDict), SecureContext, Exposed=Window]
interface NFCReadingEvent : Event {
readonly attribute DOMString serialNumber;
- readonly attribute object message; // NDEFMessage
+ [SameObject] readonly attribute NDEFMessage message;
};
dictionary NFCReadingEventInit : EventInit {
DOMString? serialNumber = "";
- required NDEFMessage message;
+ required NDEFMessageInit message;
};
[Constructor(DOMString type, NFCErrorEventInit errorEventInitDict), SecureContext, Exposed=Window]
diff --git a/tests/wpt/web-platform-tests/interfaces/webaudio.idl b/tests/wpt/web-platform-tests/interfaces/webaudio.idl
index aa137c12f01..19d80789423 100644
--- a/tests/wpt/web-platform-tests/interfaces/webaudio.idl
+++ b/tests/wpt/web-platform-tests/interfaces/webaudio.idl
@@ -116,8 +116,8 @@ interface AudioBuffer {
readonly attribute double duration;
readonly attribute unsigned long numberOfChannels;
Float32Array getChannelData (unsigned long channel);
- void copyFromChannel (Float32Array destination, unsigned long channelNumber, optional unsigned long startInChannel = 0);
- void copyToChannel (Float32Array source, unsigned long channelNumber, optional unsigned long startInChannel = 0);
+ void copyFromChannel (Float32Array destination, unsigned long channelNumber, optional unsigned long bufferOffset = 0);
+ void copyToChannel (Float32Array source, unsigned long channelNumber, optional unsigned long bufferOffset = 0);
};
dictionary AudioBufferOptions {
@@ -581,7 +581,7 @@ dictionary AudioWorkletNodeOptions : AudioNodeOptions {
unsigned long numberOfOutputs = 1;
sequence<unsigned long> outputChannelCount;
record<DOMString, double> parameterData;
- object? processorOptions = null;
+ object processorOptions;
};
[Exposed=AudioWorklet,
diff --git a/tests/wpt/web-platform-tests/interfaces/webrtc-stats.idl b/tests/wpt/web-platform-tests/interfaces/webrtc-stats.idl
index 29604eafc2f..48ebc187bc4 100644
--- a/tests/wpt/web-platform-tests/interfaces/webrtc-stats.idl
+++ b/tests/wpt/web-platform-tests/interfaces/webrtc-stats.idl
@@ -65,26 +65,26 @@ dictionary RTCReceivedRtpStreamStats : RTCRtpStreamStats {
};
dictionary RTCInboundRtpStreamStats : RTCReceivedRtpStreamStats {
- DOMString trackId;
- DOMString receiverId;
- DOMString remoteId;
- unsigned long framesDecoded;
- unsigned long keyFramesDecoded;
- unsigned long long qpSum;
- double totalDecodeTime;
- DOMHighResTimeStamp lastPacketReceivedTimestamp;
- double averageRtcpInterval;
- unsigned long fecPacketsReceived;
- unsigned long fecPacketsDiscarded;
- unsigned long long bytesReceived;
- unsigned long packetsFailedDecryption;
- unsigned long packetsDuplicated;
- record<USVString, unsigned long> perDscpPacketsReceived;
- unsigned long nackCount;
- unsigned long firCount;
- unsigned long pliCount;
- unsigned long sliCount;
- };
+ DOMString trackId;
+ DOMString receiverId;
+ DOMString remoteId;
+ unsigned long framesDecoded;
+ unsigned long keyFramesDecoded;
+ unsigned long long qpSum;
+ double totalDecodeTime;
+ DOMHighResTimeStamp lastPacketReceivedTimestamp;
+ double averageRtcpInterval;
+ unsigned long fecPacketsReceived;
+ unsigned long fecPacketsDiscarded;
+ unsigned long long bytesReceived;
+ unsigned long packetsFailedDecryption;
+ unsigned long packetsDuplicated;
+ record<USVString, unsigned long> perDscpPacketsReceived;
+ unsigned long nackCount;
+ unsigned long firCount;
+ unsigned long pliCount;
+ unsigned long sliCount;
+};
dictionary RTCRemoteInboundRtpStreamStats : RTCReceivedRtpStreamStats {
DOMString localId;
@@ -126,11 +126,11 @@ dictionary RTCOutboundRtpStreamStats : RTCSentRtpStreamStats {
};
enum RTCQualityLimitationReason {
- "none",
- "cpu",
- "bandwidth",
- "other",
- };
+ "none",
+ "cpu",
+ "bandwidth",
+ "other",
+};
dictionary RTCRemoteOutboundRtpStreamStats : RTCSentRtpStreamStats {
DOMString localId;
@@ -277,7 +277,6 @@ dictionary RTCIceCandidateStats : RTCStats {
long priority;
DOMString url;
DOMString relayProtocol;
- boolean deleted = false;
};
enum RTCNetworkType {
@@ -336,24 +335,24 @@ dictionary RTCCertificateStats : RTCStats {
};
dictionary RTCStunServerConnectionStats : RTCStats {
- DOMString url;
- long port;
- DOMString protocol;
- RTCNetworkType networkType;
- unsigned long totalRequestsSent;
- unsigned long totalResponsesReceived;
- double totalRoundTripTime;
- };
+ DOMString url;
+ long port;
+ DOMString protocol;
+ RTCNetworkType networkType;
+ unsigned long totalRequestsSent;
+ unsigned long totalResponsesReceived;
+ double totalRoundTripTime;
+};
partial dictionary RTCIceCandidateStats {
- boolean isRemote;
- };
+ boolean isRemote;
+};
partial dictionary RTCIceCandidatePairStats {
- double totalRtt;
- double currentRtt;
- unsigned long long priority;
- };
+double totalRtt;
+double currentRtt;
+unsigned long long priority;
+};
partial dictionary RTCRtpStreamStats {
DOMString mediaType;
diff --git a/tests/wpt/web-platform-tests/interfaces/webrtc.idl b/tests/wpt/web-platform-tests/interfaces/webrtc.idl
index faccd6f47d3..f56ff803890 100644
--- a/tests/wpt/web-platform-tests/interfaces/webrtc.idl
+++ b/tests/wpt/web-platform-tests/interfaces/webrtc.idl
@@ -95,11 +95,11 @@ enum RTCIceConnectionState {
interface RTCPeerConnection : EventTarget {
Promise<RTCSessionDescriptionInit> createOffer(optional RTCOfferOptions options);
Promise<RTCSessionDescriptionInit> createAnswer(optional RTCAnswerOptions options);
- Promise<void> setLocalDescription(RTCSessionDescriptionInit description);
+ Promise<void> setLocalDescription(optional RTCSessionDescriptionInit description);
readonly attribute RTCSessionDescription? localDescription;
readonly attribute RTCSessionDescription? currentLocalDescription;
readonly attribute RTCSessionDescription? pendingLocalDescription;
- Promise<void> setRemoteDescription(RTCSessionDescriptionInit description);
+ Promise<void> setRemoteDescription(optional RTCSessionDescriptionInit description);
readonly attribute RTCSessionDescription? remoteDescription;
readonly attribute RTCSessionDescription? currentRemoteDescription;
readonly attribute RTCSessionDescription? pendingRemoteDescription;
@@ -127,12 +127,12 @@ partial interface RTCPeerConnection {
Promise<void> createOffer(RTCSessionDescriptionCallback successCallback,
RTCPeerConnectionErrorCallback failureCallback,
optional RTCOfferOptions options);
- Promise<void> setLocalDescription(RTCSessionDescriptionInit description,
+ Promise<void> setLocalDescription(optional RTCSessionDescriptionInit description,
VoidFunction successCallback,
RTCPeerConnectionErrorCallback failureCallback);
Promise<void> createAnswer(RTCSessionDescriptionCallback successCallback,
RTCPeerConnectionErrorCallback failureCallback);
- Promise<void> setRemoteDescription(RTCSessionDescriptionInit description,
+ Promise<void> setRemoteDescription(optional RTCSessionDescriptionInit description,
VoidFunction successCallback,
RTCPeerConnectionErrorCallback failureCallback);
Promise<void> addIceCandidate(RTCIceCandidateInit candidate,
@@ -156,7 +156,7 @@ enum RTCSdpType {
"rollback"
};
-[Exposed=Window, Constructor(RTCSessionDescriptionInit descriptionInitDict)]
+[Exposed=Window, Constructor(optional RTCSessionDescriptionInit descriptionInitDict)]
interface RTCSessionDescription {
readonly attribute RTCSdpType type;
readonly attribute DOMString sdp;
@@ -164,7 +164,7 @@ interface RTCSessionDescription {
};
dictionary RTCSessionDescriptionInit {
- required RTCSdpType type;
+ RTCSdpType type;
DOMString sdp = "";
};
diff --git a/tests/wpt/web-platform-tests/loading/lazyload/common.js b/tests/wpt/web-platform-tests/loading/lazyload/common.js
index f5013fc288f..0a7b408b649 100644
--- a/tests/wpt/web-platform-tests/loading/lazyload/common.js
+++ b/tests/wpt/web-platform-tests/loading/lazyload/common.js
@@ -3,8 +3,9 @@
class ElementLoadPromise {
constructor(element_id) {
this.element_id = element_id;
- this.promise = new Promise(resolve => {
+ this.promise = new Promise((resolve, reject) => {
this.resolve = resolve
+ this.reject = reject
});
}
element() {
diff --git a/tests/wpt/web-platform-tests/loading/lazyload/original-base-url-applied-tentative.html b/tests/wpt/web-platform-tests/loading/lazyload/original-base-url-applied-tentative.html
index 06f9c257ee9..28d43fd5e3f 100644
--- a/tests/wpt/web-platform-tests/loading/lazyload/original-base-url-applied-tentative.html
+++ b/tests/wpt/web-platform-tests/loading/lazyload/original-base-url-applied-tentative.html
@@ -13,6 +13,7 @@ Marked as tentative until https://github.com/whatwg/html/pull/3752 is landed.
<script>
const below_viewport_iframe = new ElementLoadPromise("below_viewport_iframe");
+ const below_viewport_img = new ElementLoadPromise("below_viewport_img");
// Change the base URL and scroll down to load the deferred elements.
window.addEventListener("load", () => {
@@ -26,6 +27,15 @@ Marked as tentative until https://github.com/whatwg/html/pull/3752 is landed.
assert_true(below_viewport_iframe.element().contentDocument.body.innerHTML.includes("<p>Subframe</p>"));
}));
}, "Test that when deferred iframe is loaded, it uses the base URL computed at parse time.");
+
+ async_test(function(t) {
+ below_viewport_img.promise.then(
+ t.step_func_done(function() {
+ assert_true(below_viewport_img.element().complete);
+ assert_greater_than(below_viewport_img.element().naturalWidth, 0);
+ })
+ ).catch(t.unreached_func("The image load should not fail, trying to load with invalid base URL."));
+ }, "Test that when deferred img is loaded, it uses the base URL computed at parse time.");
</script>
<body>
@@ -37,4 +47,6 @@ Marked as tentative until https://github.com/whatwg/html/pull/3752 is landed.
</script>
<iframe id="below_viewport_iframe" src="subframe.html" loading="lazy" width="200px" height="100px" onload="below_viewport_iframe.resolve();">
</iframe>
+ <img id="below_viewport_img" src="image.png" loading="lazy" onload="below_viewport_img.resolve();"
+ onerror="below_viewport_img.reject();">
</body>
diff --git a/tests/wpt/web-platform-tests/loading/lazyload/original-crossorigin-applied-tentative.sub.html b/tests/wpt/web-platform-tests/loading/lazyload/original-crossorigin-applied-tentative.sub.html
new file mode 100644
index 00000000000..dc3cff783e1
--- /dev/null
+++ b/tests/wpt/web-platform-tests/loading/lazyload/original-crossorigin-applied-tentative.sub.html
@@ -0,0 +1,46 @@
+<!DOCTYPE html>
+<head>
+ <title>Deferred images with loading='lazy' use the original crossorigin attribute specified at the parse time</title>
+ <link rel="author" title="Raj T" href="mailto:rajendrant@chromium.org">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="common.js"></script>
+</head>
+
+<!--
+Marked as tentative until https://github.com/whatwg/html/pull/3752 is landed.
+-->
+
+<script>
+ const crossorigin_img = new ElementLoadPromise("crossorigin_img");
+
+ // Set the crossorigin and scroll down to load the deferred image.
+ window.addEventListener("load", () => {
+ crossorigin_img.element().crossOrigin = 'anonymous';
+ crossorigin_img.element().scrollIntoView();
+ });
+
+ async_test(function(t) {
+ crossorigin_img.promise.then(t.step_func_done(() => {
+ // The image originally did not had crossOrigin property set, so CORS will
+ // not be involved in fetching that. So drawing the image in a canvas will
+ // make it tainted. Verify that the image did not load with CORS headers
+ // due to the updated crossOrigin property.
+ const img_element = crossorigin_img.element();
+ const canvas = document.createElement('canvas');
+ const context = canvas.getContext('2d');
+ canvas.width = img_element.width;
+ canvas.height = img_element.height;
+ context.drawImage(img_element, 0, 0);
+ assert_throws('SecurityError', () => canvas.toDataURL());
+ })
+ ).catch(t.unreached_func("The image load should not fail, trying to load with CORS headers set."));
+ }, "Test that when deferred image is loaded, it uses the crossorigin attribute specified at parse time.");
+</script>
+
+<body>
+ <div style="height:10000px;"></div>
+ <img id="crossorigin_img" loading="lazy"
+ src='http://{{hosts[alt][www]}}:{{ports[http][0]}}/loading/lazyload/resources/image.png'
+ onload="crossorigin_img.resolve();" onerror="crossorigin_img.reject();">
+</body>
diff --git a/tests/wpt/web-platform-tests/loading/lazyload/original-referrer-policy-applied-tentative.sub.html b/tests/wpt/web-platform-tests/loading/lazyload/original-referrer-policy-applied-tentative.sub.html
index 2ffbc821c66..15ff8e5ef24 100644
--- a/tests/wpt/web-platform-tests/loading/lazyload/original-referrer-policy-applied-tentative.sub.html
+++ b/tests/wpt/web-platform-tests/loading/lazyload/original-referrer-policy-applied-tentative.sub.html
@@ -14,10 +14,12 @@ Marked as tentative until https://github.com/whatwg/html/pull/3752 is landed.
<script>
const below_viewport_iframe = new ElementLoadPromise("below_viewport_iframe");
+ const below_viewport_img = new ElementLoadPromise("below_viewport_img");
// Change the referrer-policy and scroll down to load the deferred elements.
window.addEventListener("load", () => {
below_viewport_iframe.element().referrerPolicy = "no-referrer";
+ below_viewport_img.element().referrerPolicy = "no-referrer";
document.getElementById("below_viewport_iframe").scrollIntoView();
});
@@ -28,9 +30,19 @@ Marked as tentative until https://github.com/whatwg/html/pull/3752 is landed.
// at parse time), and not the origin (as specified in meta referrer
// tag) or null (as overridden by iframe referrerpolicy=no-referrer).
assert_true(below_viewport_iframe.element().contentDocument.body.innerHTML
- .includes("Referer: http://{{host}}:{{ports[http][0]}}/loading/lazyload/"));
+ .includes("Referer: http://{{location[host]}}{{location[path]}}"));
}));
}, "Test that when deferred iframe is loaded, it uses the referrer-policy specified at parse time.");
+
+ async_test(function(t) {
+ below_viewport_img.promise.then(
+ t.step_func_done(function() {
+ // The image will load successfully if the full URL is sent as referrer.
+ assert_true(below_viewport_img.element().complete);
+ assert_greater_than(below_viewport_img.element().naturalWidth, 0);
+ })
+ ).catch(t.unreached_func("The image load should not fail, by sending the wrong referer header."));
+ }, "Test that when deferred img is loaded, it uses the referrer-policy specified at parse time.");
</script>
<body>
@@ -38,4 +50,6 @@ Marked as tentative until https://github.com/whatwg/html/pull/3752 is landed.
<div style="height:10000px;"></div>
<iframe id="below_viewport_iframe" src="/xhr/resources/echo-headers.py" loading="lazy" width="200px" height="100px" referrerpolicy="unsafe-url" onload="below_viewport_iframe.resolve();">
</iframe>
+ <img id="below_viewport_img" src="resources/referrer-checker-img.py?expected_referrer=http://{{location[host]}}{{location[path]}}"
+ loading="lazy" referrerpolicy="unsafe-url" onload="below_viewport_img.resolve();" onerror="below_viewport_img.reject();">
</body>
diff --git a/tests/wpt/web-platform-tests/loading/lazyload/resources/referrer-checker-img.py b/tests/wpt/web-platform-tests/loading/lazyload/resources/referrer-checker-img.py
new file mode 100644
index 00000000000..0597268d839
--- /dev/null
+++ b/tests/wpt/web-platform-tests/loading/lazyload/resources/referrer-checker-img.py
@@ -0,0 +1,12 @@
+import os
+
+# Returns a valid image response when request's |referrer| matches
+# |expected_referrer|.
+def main(request, response):
+ referrer = request.headers.get("referer", "")
+ expected_referrer = request.GET.first("expected_referrer", "")
+ response_headers = [("Content-Type", "image/png")]
+ if referrer == expected_referrer:
+ image_path = os.path.join(os.path.dirname(__file__), "image.png")
+ return (200, response_headers, open(image_path, mode='rb').read())
+ return (404, response_headers, "Not found")
diff --git a/tests/wpt/web-platform-tests/mathml/presentation-markup/direction/direction-overall-ref.html b/tests/wpt/web-platform-tests/mathml/presentation-markup/direction/direction-overall-ref.html
index 1f823e5b0c3..5ce6c5c42bb 100644
--- a/tests/wpt/web-platform-tests/mathml/presentation-markup/direction/direction-overall-ref.html
+++ b/tests/wpt/web-platform-tests/mathml/presentation-markup/direction/direction-overall-ref.html
@@ -36,16 +36,5 @@
</math>
</p>
- <p>
- msqrt:
- <math>
- <msqrt>
- <mspace width="25px" height="25px" mathbackground="red"/>
- <mspace width="25px" height="25px" mathbackground="green"/>
- <mspace width="25px" height="25px" mathbackground="blue"/>
- </msqrt>
- </math>
- </p>
-
</body>
</html>
diff --git a/tests/wpt/web-platform-tests/mathml/presentation-markup/direction/direction-overall.html b/tests/wpt/web-platform-tests/mathml/presentation-markup/direction/direction-overall.html
index f668c55dbae..8cf5474e3b2 100644
--- a/tests/wpt/web-platform-tests/mathml/presentation-markup/direction/direction-overall.html
+++ b/tests/wpt/web-platform-tests/mathml/presentation-markup/direction/direction-overall.html
@@ -8,7 +8,6 @@
<link rel="help" href="https://mathml-refresh.github.io/mathml-core/#the-top-level-math-element">
<link rel="help" href="https://mathml-refresh.github.io/mathml-core/#horizontally-group-sub-expressions-mrow">
<link rel="help" href="https://mathml-refresh.github.io/mathml-core/#style-change-mstyle">
- <link rel="help" href="https://mathml-refresh.github.io/mathml-core/#radicals-msqrt-mroot">
<meta name="assert" content="Verify dir attribute on various containers.">
<link rel="match" href="direction-overall-ref.html">
</head>
@@ -48,20 +47,6 @@
</math>
</p>
- <!-- dir="rtl" on <msqrt> should be ignored. The rectangle
- inside this element should be displayed left-to-right. -->
-
- <p>
- msqrt:
- <math>
- <msqrt dir="rtl">
- <mspace width="25px" height="25px" mathbackground="red"/>
- <mspace width="25px" height="25px" mathbackground="green"/>
- <mspace width="25px" height="25px" mathbackground="blue"/>
- </msqrt>
- </math>
- </p>
-
<script src="/mathml/support/feature-detection.js"></script>
<script>MathMLFeatureDetection.ensure_for_match_reftest("has_mspace");</script>
</body>
diff --git a/tests/wpt/web-platform-tests/mathml/presentation-markup/fractions/frac-numalign-denomalign-001-ref.html b/tests/wpt/web-platform-tests/mathml/presentation-markup/fractions/frac-numalign-denomalign-001-ref.html
index 2fa978624dc..09b83e9efba 100644
--- a/tests/wpt/web-platform-tests/mathml/presentation-markup/fractions/frac-numalign-denomalign-001-ref.html
+++ b/tests/wpt/web-platform-tests/mathml/presentation-markup/fractions/frac-numalign-denomalign-001-ref.html
@@ -5,16 +5,15 @@
<title>Fraction numalign denomalign</title>
</head>
<body>
- <p>This test passes if you see 3 fractions with a numerator respectively
- aligned left/center/right with respect to the denominator ;
- followed by 3 fractions with a denominator respectively aligned
- left/center/right with respect to the numerator.</p>
+ <p>This test passes if you see 6 fractions with numerators and
+ denominators horizontally centered.</p>
<p>
<math>
<mfrac>
<mrow>
+ <mspace width="10px" height="20px"></mspace>
<mspace width="10px" height="20px" style="background: blue;"></mspace>
- <mspace width="20px" height="20px"></mspace>
+ <mspace width="10px" height="20px"></mspace>
</mrow>
<mspace width="30px" height="20px" style="background: cyan;"></mspace>
</mfrac>
@@ -32,8 +31,9 @@
<math>
<mfrac>
<mrow>
- <mspace width="20px" height="20px"></mspace>
+ <mspace width="10px" height="20px"></mspace>
<mspace width="10px" height="20px" style="background: blue;"></mspace>
+ <mspace width="10px" height="20px"></mspace>
</mrow>
<mspace width="30px" height="20px" style="background: cyan;"></mspace>
</mfrac>
@@ -44,8 +44,9 @@
<mfrac>
<mspace width="30px" height="20px" style="background: cyan;"></mspace>
<mrow>
+ <mspace width="10px" height="20px"></mspace>
<mspace width="10px" height="20px" style="background: blue;"></mspace>
- <mspace width="20px" height="20px"></mspace>
+ <mspace width="10px" height="20px"></mspace>
</mrow>
</mfrac>
</math>
@@ -63,8 +64,9 @@
<mfrac>
<mspace width="30px" height="20px" style="background: cyan;"></mspace>
<mrow>
- <mspace width="20px" height="20px"></mspace>
+ <mspace width="10px" height="20px"></mspace>
<mspace width="10px" height="20px" style="background: blue;"></mspace>
+ <mspace width="10px" height="20px"></mspace>
</mrow>
</mfrac>
</math>
diff --git a/tests/wpt/web-platform-tests/mathml/presentation-markup/fractions/frac-numalign-denomalign-001.html b/tests/wpt/web-platform-tests/mathml/presentation-markup/fractions/frac-numalign-denomalign-001.html
index 78c95c28755..bc9a2f90844 100644
--- a/tests/wpt/web-platform-tests/mathml/presentation-markup/fractions/frac-numalign-denomalign-001.html
+++ b/tests/wpt/web-platform-tests/mathml/presentation-markup/fractions/frac-numalign-denomalign-001.html
@@ -4,14 +4,12 @@
<meta charset="utf-8">
<title>Fraction numalign denomalign</title>
<link rel="help" href="https://mathml-refresh.github.io/mathml-core/#fractions-mfrac">
- <meta name="assert" content="This fraction alignment with the numalign/denomalign attributes.">
+ <meta name="assert" content="Check that legacy numalign/denomalign attributes are ignored.">
<link rel="match" href="frac-numalign-denomalign-001-ref.html">
</head>
<body>
- <p>This test passes if you see 3 fractions with a numerator respectively
- aligned left/center/right with respect to the denominator ;
- followed by 3 fractions with a denominator respectively aligned
- left/center/right with respect to the numerator.</p>
+ <p>This test passes if you see 6 fractions with numerators and
+ denominators horizontally centered.</p>
<p>
<math>
<mfrac numalign="left">
diff --git a/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/mo-movablelimits.html b/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/mo-movablelimits.html
index 9be866fabee..ebb5cde6f13 100644
--- a/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/mo-movablelimits.html
+++ b/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/mo-movablelimits.html
@@ -15,7 +15,7 @@
</munder>
<munder>
<mo lspace="0px" rspace="0px" movablelimits="false">A</mo>
- <mi>C</mi>
+ <mi>B</mi>
</munder>
</math>
<math displaystyle="true">
diff --git a/tests/wpt/web-platform-tests/mathml/relations/css-styling/attribute-mapping-001.html b/tests/wpt/web-platform-tests/mathml/relations/css-styling/attribute-mapping-001.html
index 347b571b1d6..c7afa7a112a 100644
--- a/tests/wpt/web-platform-tests/mathml/relations/css-styling/attribute-mapping-001.html
+++ b/tests/wpt/web-platform-tests/mathml/relations/css-styling/attribute-mapping-001.html
@@ -31,24 +31,44 @@
assert_equals(style.getPropertyValue("direction"), "ltr", "no attribute");
element.setAttribute("dir", "rtl");
assert_equals(style.getPropertyValue("direction"), "rtl", "attribute specified");
+ element.setAttribute("dir", "RtL");
+ assert_equals(style.getPropertyValue("direction"), "rtl", "case insensitive");
}, `dir on the ${tag} element is mapped to CSS direction`)
test(function() {
- assert_equals(style.getPropertyValue("color"), "rgb(0, 0, 255)", "no attribute");
+ assert_equals(style.getPropertyValue("color"),
+ tag === "merror" ?
+ "rgb(255, 0, 0)" : "rgb(0, 0, 255)",
+ "no attribute");
element.setAttribute("mathcolor", "black");
assert_equals(style.getPropertyValue("color"), "rgb(0, 0, 0)", "attribute specified");
+ // The color names are case-insensitive.
+ // See https://www.w3.org/TR/css-color-3/#html4
+ element.setAttribute("mathcolor", "GrEeN");
+ assert_equals(style.getPropertyValue("color"), "rgb(0, 128, 0)", "case insensitive");
}, `mathcolor on the ${tag} element is mapped to CSS color`);
test(function() {
- assert_equals(style.getPropertyValue("background-color"), "rgba(0, 0, 0, 0)", "no attribute");
+ assert_equals(style.getPropertyValue("background-color"),
+ tag === "merror" ?
+ "rgb(255, 255, 224)" : "rgba(0, 0, 0, 0)",
+ "no attribute");
element.setAttribute("mathbackground", "lightblue");
assert_equals(style.getPropertyValue("background-color"), "rgb(173, 216, 230)", "attribute specified");
+ // The color names are case-insensitive.
+ // See https://www.w3.org/TR/css-color-3/#html4
+ element.setAttribute("mathbackground", "YeLlOw");
+ assert_equals(style.getPropertyValue("background-color"), "rgb(255, 255, 0)", "case insensitive");
}, `mathbackground on the ${tag} element is mapped to CSS background-color`);
test(function() {
assert_equals(style.getPropertyValue("font-size"), "50px", "no attribute");
element.setAttribute("mathsize", "20px");
assert_equals(style.getPropertyValue("font-size"), "20px", "attribute specified");
+ // unit identifiers are ASCII case-insensitive.
+ // https://www.w3.org/TR/css-values-3/#typedef-dimension
+ element.setAttribute("mathsize", "30Px");
+ assert_equals(style.getPropertyValue("font-size"), "30px", "case insensitive");
}, `mathsize on the ${tag} element is mapped to CSS font-size`);
});
diff --git a/tests/wpt/web-platform-tests/mathml/relations/css-styling/attribute-mapping-002.html b/tests/wpt/web-platform-tests/mathml/relations/css-styling/attribute-mapping-002.html
index 1a8b7ca16d1..329578dc95a 100644
--- a/tests/wpt/web-platform-tests/mathml/relations/css-styling/attribute-mapping-002.html
+++ b/tests/wpt/web-platform-tests/mathml/relations/css-styling/attribute-mapping-002.html
@@ -22,9 +22,13 @@
var style = window.getComputedStyle(element);
test(function() {
- assert_equals(style.getPropertyValue("text-transform"), "none", "no attribute");
+ assert_equals(style.getPropertyValue("text-transform"),
+ tag === "mi" ? "math-auto" : "none",
+ "no attribute");
element.setAttribute("mathvariant", "fraktur");
assert_equals(style.getPropertyValue("text-transform"), "math-fraktur", "attribute specified");
+ element.setAttribute("mathvariant", "DoUbLe-StRuCk");
+ assert_equals(style.getPropertyValue("text-transform"), "math-double-struck", "case insensitive");
}, `mathvariant on the ${tag} element is mapped to CSS text-transform`)
test(function() {
@@ -37,6 +41,8 @@
assert_equals(style.getPropertyValue("math-style"), "inline", "no attribute");
element.setAttribute("displaystyle", "true");
assert_equals(style.getPropertyValue("math-style"), "display", "attribute specified");
+ element.setAttribute("displaystyle", "TrUe");
+ assert_equals(style.getPropertyValue("math-style"), "display", "case insensitive");
}, `displaystyle on the ${tag} element is mapped to CSS math-style`);
});
diff --git a/tests/wpt/web-platform-tests/mathml/relations/css-styling/displaystyle-1.html b/tests/wpt/web-platform-tests/mathml/relations/css-styling/displaystyle-1.html
index 12108836ce9..c59e690f162 100644
--- a/tests/wpt/web-platform-tests/mathml/relations/css-styling/displaystyle-1.html
+++ b/tests/wpt/web-platform-tests/mathml/relations/css-styling/displaystyle-1.html
@@ -23,14 +23,11 @@
setup({ explicit_done: true });
var emToPx = 10 / 1000; // font-size: 10px, font.em = 1000
var epsilon = 5;
- function verify_displaystyle(element, displaystyle, description) {
- if (typeof element === "string")
- element = document.getElementById(element);
- var elementSize = element.getBoundingClientRect().height;
- if (displaystyle)
- assert_approx_equals(elementSize, 5000 * emToPx, epsilon, description);
- else
- assert_approx_equals(elementSize, 1000 * emToPx, epsilon, description);
+ function verify_displaystyle(elementId, displaystyle, description) {
+ var expectedSize = (displaystyle ? 5000 : 1000) * emToPx;
+ var elementSize = document.getElementById(elementId).
+ getBoundingClientRect().height;
+ assert_approx_equals(elementSize, expectedSize, epsilon, description);
}
window.addEventListener("load", function() {
@@ -45,6 +42,8 @@
verify_displaystyle("math_block", true, "explicit display block");
verify_displaystyle("math_false", false, "explicit displaystyle false");
verify_displaystyle("math_true", true, "explicit displaystyle true");
+ verify_displaystyle("math_block_false", false, "explicit display block and displaystyle false");
+ verify_displaystyle("math_block_true", true, "explicit display block and displaystyle true");
}, "math element");
test(function() {
verify_displaystyle("mstyle_false", false, "explicit displaystyle false");
@@ -101,6 +100,12 @@
<math display="block"><mo id="math_block">&#x2AFF;</mo></math>
<math displaystyle="false"><mo id="math_false">&#x2AFF;</mo></math>
<math displaystyle="true"><mo id="math_true">&#x2AFF;</mo></math>
+ <math display="block" displaystyle="false">
+ <mo id="math_block_false">&#x2AFF;</mo>
+ </math>
+ <math display="block" displaystyle="true">
+ <mo id="math_block_true">&#x2AFF;</mo>
+ </math>
<math><mstyle displaystyle="false"><mo id="mstyle_false">&#x2AFF;</mo></mstyle></math>
<math><mstyle displaystyle="true"><mo id="mstyle_true">&#x2AFF;</mo></mstyle></math>
<math displaystyle="true"><mtable><mtr><mtd><mo id="mtable_default">&#x2AFF;</mo></mtd></mtr></mtable></math>
diff --git a/tests/wpt/web-platform-tests/mathml/relations/css-styling/displaystyle-2.html b/tests/wpt/web-platform-tests/mathml/relations/css-styling/displaystyle-2.html
new file mode 100644
index 00000000000..f89ade019b5
--- /dev/null
+++ b/tests/wpt/web-platform-tests/mathml/relations/css-styling/displaystyle-2.html
@@ -0,0 +1,206 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>displaystyle</title>
+<link rel="help" href="https://mathml-refresh.github.io/mathml-core/#css-styling">
+<link rel="help" href="https://mathml-refresh.github.io/mathml-core/#the-displaystyle-and-scriptlevel-attributes">
+<link rel="help" href="https://mathml-refresh.github.io/mathml-core/#the-math-style-property">
+<meta name="assert" content="Verify interaction between automatic displaystyle and specified displaystyle on descendants.">
+<style>
+ @font-face {
+ font-family: TestFont;
+ src: url("/fonts/math/largeop-displayoperatorminheight5000.woff");
+ }
+ math, math * {
+ font-family: TestFont;
+ font-size: 10px;
+ }
+</style>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script>
+ setup({ explicit_done: true });
+ var emToPx = 10 / 1000; // font-size: 10px, font.em = 1000
+ var epsilon = 5;
+ function verify_displaystyle(elementId, displaystyle, description) {
+ var expectedSize = (displaystyle ? 5000 : 1000) * emToPx;
+ var elementSize = document.getElementById(elementId).
+ getBoundingClientRect().height;
+ assert_approx_equals(elementSize, expectedSize, epsilon, description);
+ }
+
+ window.addEventListener("load", function() {
+ // Delay the check to workaround WebKit's bug https://webkit.org/b/174030.
+ requestAnimationFrame(() => { document.fonts.ready.then(runTests); });
+ });
+
+ function runTests() {
+ test(function() {
+ verify_displaystyle("cell_false", false, "cell with displaystyle false");
+ verify_displaystyle("cell_true", true, "cell with displaystyle true");
+ }, "mtable element");
+ test(function() {
+ verify_displaystyle("mfrac_numerator", true, "numerator");
+ verify_displaystyle("mfrac_denominator", true, "denominator");
+ }, "mfrac element");
+ test(function() {
+ verify_displaystyle("mroot_base", false, "base");
+ verify_displaystyle("mroot_index", true, "index");
+ }, "mroot element");
+ test(function() {
+ verify_displaystyle("msub_base", false, "base");
+ verify_displaystyle("msub_subscript", true, "subscript");
+ }, "msub element");
+ test(function() {
+ verify_displaystyle("msup_base", false, "base");
+ verify_displaystyle("msup_superscript", true, "superscript");
+ }, "msup element");
+ test(function() {
+ verify_displaystyle("msubsup_base", false, "base");
+ verify_displaystyle("msubsup_subscript", true, "subscript");
+ verify_displaystyle("msubsup_superscript", true, "superscript");
+ }, "msubsup element");
+ test(function() {
+ verify_displaystyle("munder_base", false, "base");
+ verify_displaystyle("munder_underscript", true, "underscript");
+ }, "munder element");
+ test(function() {
+ verify_displaystyle("mover_base", false, "base");
+ verify_displaystyle("mover_overscript", true, "overscript");
+ }, "mover element");
+ test(function() {
+ verify_displaystyle("munderover_base", false, "base");
+ verify_displaystyle("munderover_underscript", true, "underscript");
+ verify_displaystyle("munderover_overscript", true, "overscript");
+ }, "munderover element");
+ done();
+ }
+</script>
+</head>
+<body>
+ <div id="log"></div>
+ <math displaystyle="true">
+ <mtable>
+ <mtr>
+ <mtd>
+ <mstyle displaystyle="false">
+ <mo id="cell_false">&#x2AFF;</mo>
+ </mstyle>
+ </mtd>
+ <mtd>
+ <mstyle displaystyle="true">
+ <mo id="cell_true">&#x2AFF;</mo>
+ </mstyle>
+ </mtd>
+ </mtr>
+ </mtable>
+ </math>
+ <math>
+ <mfrac>
+ <mstyle displaystyle="true">
+ <mo id="mfrac_numerator">&#x2AFF;</mo>
+ </mstyle>
+ <mstyle displaystyle="true">
+ <mo id="mfrac_denominator">&#x2AFF;</mo>
+ </mstyle>
+ </mfrac>
+ </math>
+ <math displaystyle="true">
+ <mroot>
+ <mstyle displaystyle="false">
+ <mo id="mroot_base">&#x2AFF;</mo>
+ </mstyle>
+ <mstyle displaystyle="true">
+ <mo id="mroot_index">&#x2AFF;</mo>
+ </mstyle>
+ </mroot>
+ </math>
+ <math displaystyle="true">
+ <msub>
+ <mstyle displaystyle="false">
+ <mo id="msub_base">&#x2AFF;</mo>
+ </mstyle>
+ <mstyle displaystyle="true">
+ <mo id="msub_subscript">&#x2AFF;</mo>
+ </mstyle>
+ </msub>
+ </math>
+ <math displaystyle="true">
+ <msup>
+ <mstyle displaystyle="false">
+ <mo id="msup_base">&#x2AFF;</mo>
+ </mstyle>
+ <mstyle displaystyle="true">
+ <mo id="msup_superscript">&#x2AFF;</mo>
+ </mstyle>
+ </msup>
+ </math>
+ <math displaystyle="true">
+ <msubsup>
+ <mstyle displaystyle="false">
+ <mo id="msubsup_base">&#x2AFF;</mo>
+ </mstyle>
+ <mstyle displaystyle="true">
+ <mo id="msubsup_subscript">&#x2AFF;</mo>
+ </mstyle>
+ <mstyle displaystyle="true">
+ <mo id="msubsup_superscript">&#x2AFF;</mo>
+ </mstyle>
+ </msubsup>
+ </math>
+ <math displaystyle="true">
+ <mmultiscripts>
+ <mstyle displaystyle="false">
+ <mo id="mmultiscripts_base">&#x2AFF;</mo>
+ </mstyle>
+ <mstyle displaystyle="true">
+ <mo id="mmultiscripts_subscript">&#x2AFF;</mo>
+ </mstyle>
+ <mstyle displaystyle="true">
+ <mo id="mmultiscripts_superscript">&#x2AFF;</mo>
+ </mstyle>
+ <mprescripts/>
+ <mstyle displaystyle="true">
+ <mo id="mmultiscripts_presubscript">&#x2AFF;</mo>
+ </mstyle>
+ <mstyle displaystyle="true">
+ <mo id="mmultiscripts_presuperscript">&#x2AFF;</mo>
+ </mstyle>
+ </mmultiscripts>
+ </math>
+ <math displaystyle="true">
+ <munder>
+ <mstyle displaystyle="false">
+ <mo id="munder_base">&#x2AFF;</mo>
+ </mstyle>
+ <mstyle displaystyle="true">
+ <mo id="munder_underscript">&#x2AFF;</mo>
+ </mstyle>
+ </munder>
+ </math>
+ <math displaystyle="true">
+ <mover>
+ <mstyle displaystyle="false">
+ <mo id="mover_base">&#x2AFF;</mo>
+ </mstyle>
+ <mstyle displaystyle="true">
+ <mo id="mover_overscript">&#x2AFF;</mo>
+ </mstyle>
+ </mover>
+ </math>
+ <math displaystyle="true">
+ <munderover>
+ <mstyle displaystyle="false">
+ <mo id="munderover_base">&#x2AFF;</mo>
+ </mstyle>
+ <mstyle displaystyle="true">
+ <mo id="munderover_underscript">&#x2AFF;</mo>
+ </mstyle>
+ <mstyle displaystyle="true">
+ <mo id="munderover_overscript">&#x2AFF;</mo>
+ </mstyle>
+ </munderover>
+ </math>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/mathml/relations/css-styling/mathsize-attribute-legacy-values-ref.html b/tests/wpt/web-platform-tests/mathml/relations/css-styling/mathsize-attribute-legacy-values-ref.html
new file mode 100644
index 00000000000..687efa49beb
--- /dev/null
+++ b/tests/wpt/web-platform-tests/mathml/relations/css-styling/mathsize-attribute-legacy-values-ref.html
@@ -0,0 +1,16 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="utf-8"/>
+ <title>Legacy mathsize values</title>
+ </head>
+ <body>
+ <p>Test passes if you see four "A" of equal size:</p>
+ <math>
+ <mtext>A</mtext>
+ <mtext>A</mtext>
+ <mtext>A</mtext>
+ <mtext>A</mtext>
+ </math>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/mathml/relations/css-styling/mathsize-attribute-legacy-values.html b/tests/wpt/web-platform-tests/mathml/relations/css-styling/mathsize-attribute-legacy-values.html
new file mode 100644
index 00000000000..745b1033718
--- /dev/null
+++ b/tests/wpt/web-platform-tests/mathml/relations/css-styling/mathsize-attribute-legacy-values.html
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="utf-8"/>
+ <title>Legacy mathsize values</title>
+ <link rel="help" href="https://mathml-refresh.github.io/mathml-core/#css-styling">
+ <link rel="help" href="https://mathml-refresh.github.io/mathml-core/#legacy-mathml-style-attributes">
+ <meta name="assert" content="Verify that legacy values for mathsize have no effect.">
+ <link rel="match" href="mathsize-attribute-legacy-values-ref.html">
+ </head>
+ <body>
+ <p>Test passes if you see four "A" of equal size:</p>
+ <math>
+ <mtext>A</mtext>
+ <mtext mathsize="small">A</mtext>
+ <mtext mathsize="medium">A</mtext>
+ <mtext mathsize="big">A</mtext>
+ </math>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/mathml/relations/css-styling/padding-border-margin/border-001.html b/tests/wpt/web-platform-tests/mathml/relations/css-styling/padding-border-margin/border-001.html
index 8efb6a5ab0e..784491cf2e1 100644
--- a/tests/wpt/web-platform-tests/mathml/relations/css-styling/padding-border-margin/border-001.html
+++ b/tests/wpt/web-platform-tests/mathml/relations/css-styling/padding-border-margin/border-001.html
@@ -7,7 +7,8 @@
<meta name="assert" content="Verify that border is taken into account.">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
-<script src="helper.js"></script>
+<script src="/mathml/support/feature-detection.js"></script>
+<script src="/mathml/support/box-comparison.js"></script>
<script>
var epsilon = 1;
@@ -16,35 +17,83 @@
function runTests() {
test(function() {
+ assert_true(MathMLFeatureDetection.has_mspace());
var s = measureSpaceAround("mrow-border")
assert_approx_equals(s.left, 20, epsilon, "left border");
assert_approx_equals(s.right, 30, epsilon, "right border");
assert_approx_equals(s.top, 40, epsilon, "top border");
assert_approx_equals(s.bottom, 50, epsilon, "bottom border");
+ var b = document.getElementById("mrow-border").
+ getBoundingClientRect();
+ assert_approx_equals(b.width, 20 + 50 + 30, epsilon, "element width");
+ assert_approx_equals(b.height, 40 + 50 + 50, epsilon, "element height");
}, "Border properties on mrow");
test(function() {
+ assert_true(MathMLFeatureDetection.has_mspace());
+ assert_true(MathMLFeatureDetection.has_dir());
+ var s = measureSpaceAround("mrow-border-rtl")
+ assert_approx_equals(s.left, 20, epsilon, "left border");
+ assert_approx_equals(s.right, 30, epsilon, "right border");
+ assert_approx_equals(s.top, 40, epsilon, "top border");
+ assert_approx_equals(s.bottom, 50, epsilon, "bottom border");
+ var b = document.getElementById("mrow-border-rtl").
+ getBoundingClientRect();
+ assert_approx_equals(b.width, 20 + 50 + 30, epsilon, "element width");
+ assert_approx_equals(b.height, 40 + 50 + 50, epsilon, "element height");
+ }, "Border properties on mrow (rtl)");
+
+ test(function() {
+ assert_true(MathMLFeatureDetection.has_mspace());
var s = measureSpaceAround("mrow-border-shorthand")
assert_approx_equals(s.left, 20, epsilon, "left border");
assert_approx_equals(s.right, 20, epsilon, "right border");
assert_approx_equals(s.top, 20, epsilon, "top border");
assert_approx_equals(s.bottom, 20, epsilon, "bottom border");
+ var b = document.getElementById("mrow-border-shorthand").
+ getBoundingClientRect();
+ assert_approx_equals(b.width, 20 + 50 + 20, epsilon, "element width");
+ assert_approx_equals(b.height, 20 + 50 + 20, epsilon, "element height");
}, "Border properties on mrow (shorthand)");
test(function() {
+ assert_true(MathMLFeatureDetection.has_mspace());
var s = measureSpaceAround("mrow-border-logical")
assert_approx_equals(s.left, 20, epsilon, "left border");
assert_approx_equals(s.right, 30, epsilon, "right border");
assert_approx_equals(s.top, 40, epsilon, "top border");
assert_approx_equals(s.bottom, 50, epsilon, "bottom border");
+ var b = document.getElementById("mrow-border-logical").
+ getBoundingClientRect();
+ assert_approx_equals(b.width, 20 + 50 + 30, epsilon, "element width");
+ assert_approx_equals(b.height, 40 + 50 + 50, epsilon, "element height");
}, "Border properties on mrow (logical)");
test(function() {
+ assert_true(MathMLFeatureDetection.has_mspace());
+ assert_true(MathMLFeatureDetection.has_dir());
+ var s = measureSpaceAround("mrow-border-logical-rtl")
+ assert_approx_equals(s.left, 30, epsilon, "left border");
+ assert_approx_equals(s.right, 20, epsilon, "right border");
+ assert_approx_equals(s.top, 40, epsilon, "top border");
+ assert_approx_equals(s.bottom, 50, epsilon, "bottom border");
+ var b = document.getElementById("mrow-border-logical-rtl").
+ getBoundingClientRect();
+ assert_approx_equals(b.width, 20 + 50 + 30, epsilon, "element width");
+ assert_approx_equals(b.height, 40 + 50 + 50, epsilon, "element height");
+ }, "Border properties on mrow (logical, rtl)");
+
+ test(function() {
+ assert_true(MathMLFeatureDetection.has_mspace());
var s = measureSpaceAround("mrow-border-logical-shorthand")
assert_approx_equals(s.left, 20, epsilon, "left border");
assert_approx_equals(s.right, 20, epsilon, "right border");
assert_approx_equals(s.top, 30, epsilon, "top border");
assert_approx_equals(s.bottom, 30, epsilon, "bottom border");
+ var b = document.getElementById("mrow-border-logical-shorthand").
+ getBoundingClientRect();
+ assert_approx_equals(b.width, 20 + 50 + 20, epsilon, "element width");
+ assert_approx_equals(b.height, 30 + 50 + 30, epsilon, "element height");
}, "Border properties on mrow (logical, shorthand)");
done();
@@ -67,6 +116,19 @@
</math>
</p>
<p>
+ <math dir="rtl">
+ <mrow>
+ <mrow id="mrow-border-rtl"
+ style="border-left: 20px solid transparent;
+ border-right: 30px solid transparent;
+ border-top: 40px solid transparent;
+ border-bottom: 50px solid transparent;">
+ <mspace width="50px" height="50px"></mspace>
+ </mrow>
+ </mrow>
+ </math>
+ </p>
+ <p>
<math>
<mrow>
<mrow id="mrow-border-shorthand"
@@ -90,6 +152,19 @@
</math>
</p>
<p>
+ <math dir="rtl">
+ <mrow>
+ <mrow id="mrow-border-logical-rtl"
+ style="border-inline-start: 20px solid transparent;
+ border-inline-end: 30px solid transparent;
+ border-block-start: 40px solid transparent;
+ border-block-end: 50px solid transparent;">
+ <mspace width="50px" height="50px"></mspace>
+ </mrow>
+ </mrow>
+ </math>
+ </p>
+ <p>
<math>
<mrow>
<mrow id="mrow-border-logical-shorthand"
diff --git a/tests/wpt/web-platform-tests/mathml/relations/css-styling/padding-border-margin/border-002.html b/tests/wpt/web-platform-tests/mathml/relations/css-styling/padding-border-margin/border-002.html
index 4168c3cdb94..85a3dc2e2ac 100644
--- a/tests/wpt/web-platform-tests/mathml/relations/css-styling/padding-border-margin/border-002.html
+++ b/tests/wpt/web-platform-tests/mathml/relations/css-styling/padding-border-margin/border-002.html
@@ -8,7 +8,7 @@
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/mathml/support/mathml-fragments.js"></script>
-<script src="helper.js"></script>
+<script src="/mathml/support/box-comparison.js"></script>
<script>
var epsilon = 1;
@@ -22,12 +22,13 @@
continue;
var style = "border-left: 30px solid; border-right: 40px solid; border-top: 50px solid; border-bottom: 60px solid;";
+ var styleRTL = `direction: rtl; ${style}`;
if (FragmentHelper.isEmpty(tag)) {
test(function() {
var s = compareSizeWithAndWithoutStyle(tag, style);
- assert_approx_equals(s.width_delta, 30 + 40, epsilon, "left/right border");
- assert_approx_equals(s.height_delta, 50 + 60, epsilon, "top/bottom border");
+ assert_approx_equals(s.element_width_delta, 30 + 40, epsilon, "left/right border");
+ assert_approx_equals(s.element_height_delta, 50 + 60, epsilon, "top/bottom border");
}, `Border properties on ${tag}`);
continue;
}
@@ -38,7 +39,19 @@
assert_approx_equals(s.right_delta, 40, epsilon, "right border");
assert_approx_equals(s.top_delta, 50, epsilon, "top border");
assert_approx_equals(s.bottom_delta, 60, epsilon, "bottom border");
+ assert_approx_equals(s.element_width_delta, 30 + 40, epsilon, "element width");
+ assert_approx_equals(s.element_height_delta, 50 + 60, epsilon, "element height");
}, `Border properties on ${tag}`);
+
+ test(function() {
+ var s = compareSpaceWithAndWithoutStyle(tag, styleRTL);
+ assert_approx_equals(s.left_delta, 30, epsilon, "left border");
+ assert_approx_equals(s.right_delta, 40, epsilon, "right border");
+ assert_approx_equals(s.top_delta, 50, epsilon, "top border");
+ assert_approx_equals(s.bottom_delta, 60, epsilon, "bottom border");
+ assert_approx_equals(s.element_width_delta, 30 + 40, epsilon, "element width");
+ assert_approx_equals(s.element_height_delta, 50 + 60, epsilon, "element height");
+ }, `Border properties on ${tag} (rtl)`);
}
done();
diff --git a/tests/wpt/web-platform-tests/mathml/relations/css-styling/padding-border-margin/margin-001.html b/tests/wpt/web-platform-tests/mathml/relations/css-styling/padding-border-margin/margin-001.html
index dc3a2b4a150..67146882319 100644
--- a/tests/wpt/web-platform-tests/mathml/relations/css-styling/padding-border-margin/margin-001.html
+++ b/tests/wpt/web-platform-tests/mathml/relations/css-styling/padding-border-margin/margin-001.html
@@ -7,7 +7,8 @@
<meta name="assert" content="Verify that margin is taken into account.">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
-<script src="helper.js"></script>
+<script src="/mathml/support/feature-detection.js"></script>
+<script src="/mathml/support/box-comparison.js"></script>
<script>
var epsilon = 1;
@@ -16,35 +17,83 @@
function runTests() {
test(function() {
+ assert_true(MathMLFeatureDetection.has_mspace());
var s = measureSpaceAround("mrow-margin")
assert_approx_equals(s.left, 20, epsilon, "left margin");
assert_approx_equals(s.right, 30, epsilon, "right margin");
assert_approx_equals(s.top, 40, epsilon, "top margin");
assert_approx_equals(s.bottom, 50, epsilon, "bottom margin");
+ var b = document.getElementById("mrow-margin").
+ getBoundingClientRect();
+ assert_approx_equals(b.width, 50, epsilon, "element width");
+ assert_approx_equals(b.height, 50, epsilon, "element height");
}, "Margin properties on mrow");
test(function() {
+ assert_true(MathMLFeatureDetection.has_mspace());
+ assert_true(MathMLFeatureDetection.has_dir());
+ var s = measureSpaceAround("mrow-margin-rtl")
+ assert_approx_equals(s.left, 20, epsilon, "left margin");
+ assert_approx_equals(s.right, 30, epsilon, "right margin");
+ assert_approx_equals(s.top, 40, epsilon, "top margin");
+ assert_approx_equals(s.bottom, 50, epsilon, "bottom margin");
+ var b = document.getElementById("mrow-margin-rtl").
+ getBoundingClientRect();
+ assert_approx_equals(b.width, 50, epsilon, "element width");
+ assert_approx_equals(b.height, 50, epsilon, "element height");
+ }, "Margin properties on mrow (rtl)");
+
+ test(function() {
+ assert_true(MathMLFeatureDetection.has_mspace());
var s = measureSpaceAround("mrow-margin-shorthand")
assert_approx_equals(s.left, 20, epsilon, "left margin");
assert_approx_equals(s.right, 20, epsilon, "right margin");
assert_approx_equals(s.top, 20, epsilon, "top margin");
assert_approx_equals(s.bottom, 20, epsilon, "bottom margin");
+ var b = document.getElementById("mrow-margin-shorthand").
+ getBoundingClientRect();
+ assert_approx_equals(b.width, 50, epsilon, "element width");
+ assert_approx_equals(b.height, 50, epsilon, "element height");
}, "Margin properties on mrow (shorthand)");
test(function() {
+ assert_true(MathMLFeatureDetection.has_mspace());
var s = measureSpaceAround("mrow-margin-logical")
assert_approx_equals(s.left, 20, epsilon, "left margin");
assert_approx_equals(s.right, 30, epsilon, "right margin");
assert_approx_equals(s.top, 40, epsilon, "top margin");
assert_approx_equals(s.bottom, 50, epsilon, "bottom margin");
+ var b = document.getElementById("mrow-margin-logical").
+ getBoundingClientRect();
+ assert_approx_equals(b.width, 50, epsilon, "element width");
+ assert_approx_equals(b.height, 50, epsilon, "element height");
}, "Margin properties on mrow (logical)");
test(function() {
+ assert_true(MathMLFeatureDetection.has_mspace());
+ assert_true(MathMLFeatureDetection.has_dir());
+ var s = measureSpaceAround("mrow-margin-logical-rtl")
+ assert_approx_equals(s.left, 20, epsilon, "left margin");
+ assert_approx_equals(s.right, 30, epsilon, "right margin");
+ assert_approx_equals(s.top, 40, epsilon, "top margin");
+ assert_approx_equals(s.bottom, 50, epsilon, "bottom margin");
+ var b = document.getElementById("mrow-margin-logical-rtl").
+ getBoundingClientRect();
+ assert_approx_equals(b.width, 50, epsilon, "element width");
+ assert_approx_equals(b.height, 50, epsilon, "element height");
+ }, "Margin properties on mrow (logical, rtl)");
+
+ test(function() {
+ assert_true(MathMLFeatureDetection.has_mspace());
var s = measureSpaceAround("mrow-margin-logical-shorthand")
assert_approx_equals(s.left, 20, epsilon, "left margin");
assert_approx_equals(s.right, 20, epsilon, "right margin");
assert_approx_equals(s.top, 30, epsilon, "top margin");
assert_approx_equals(s.bottom, 30, epsilon, "bottom margin");
+ var b = document.getElementById("mrow-margin-logical-shorthand").
+ getBoundingClientRect();
+ assert_approx_equals(b.width, 50, epsilon, "element width");
+ assert_approx_equals(b.height, 50, epsilon, "element height");
}, "Margin properties on mrow (logical, shorthand)");
done();
@@ -67,6 +116,19 @@
</math>
</p>
<p>
+ <math dir="rtl">
+ <mrow>
+ <mrow id="mrow-margin-rtl"
+ style="margin-left: 20px;
+ margin-right: 30px;
+ margin-top: 40px;
+ margin-bottom: 50px;">
+ <mspace width="50px" height="50px"></mspace>
+ </mrow>
+ </mrow>
+ </math>
+ </p>
+ <p>
<math>
<mrow>
<mrow id="mrow-margin-shorthand"
@@ -90,6 +152,19 @@
</math>
</p>
<p>
+ <math dir="rtl">
+ <mrow>
+ <mrow id="mrow-margin-logical-rtl"
+ style="margin-inline-start: 20px;
+ margin-inline-end: 30px;
+ margin-block-start: 40px;
+ margin-block-end: 50px;">
+ <mspace width="50px" height="50px"></mspace>
+ </mrow>
+ </mrow>
+ </math>
+ </p>
+ <p>
<math>
<mrow>
<mrow id="mrow-margin-logical-shorthand"
diff --git a/tests/wpt/web-platform-tests/mathml/relations/css-styling/padding-border-margin/margin-002.html b/tests/wpt/web-platform-tests/mathml/relations/css-styling/padding-border-margin/margin-002.html
index 8631be586e4..87583b584a3 100644
--- a/tests/wpt/web-platform-tests/mathml/relations/css-styling/padding-border-margin/margin-002.html
+++ b/tests/wpt/web-platform-tests/mathml/relations/css-styling/padding-border-margin/margin-002.html
@@ -8,7 +8,7 @@
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/mathml/support/mathml-fragments.js"></script>
-<script src="helper.js"></script>
+<script src="/mathml/support/box-comparison.js"></script>
<script>
var epsilon = 1;
@@ -22,12 +22,15 @@
continue;
var style = "margin-left: 30px; margin-right: 40px; margin-top: 50px; margin-bottom: 60px;";
+ var styleRTL = `direction: rtl; ${style}`;
if (FragmentHelper.isEmpty(tag)) {
test(function() {
var s = compareSizeWithAndWithoutStyle(tag, style);
assert_approx_equals(s.width_delta, 30 + 40, epsilon, "left/right margin");
assert_approx_equals(s.height_delta, 50 + 60, epsilon, "top/bottom margin");
+ assert_approx_equals(s.element_width_delta, 0, epsilon, "element width");
+ assert_approx_equals(s.element_height_delta, 0, epsilon, "element height");
}, `Margin properties on ${tag}`);
continue;
}
@@ -38,7 +41,31 @@
assert_approx_equals(s.right_delta, 40, epsilon, "right margin");
assert_approx_equals(s.top_delta, 50, epsilon, "top margin");
assert_approx_equals(s.bottom_delta, 60, epsilon, "bottom margin");
+ assert_approx_equals(s.element_width_delta, 0, epsilon, "element width");
+ assert_approx_equals(s.element_height_delta, 0, epsilon, "element height");
}, `Margin properties on ${tag}`);
+
+ test(function() {
+ var s = compareSpaceWithAndWithoutStyle(tag, styleRTL);
+ assert_approx_equals(s.left_delta, 30, epsilon, "left margin");
+ assert_approx_equals(s.right_delta, 40, epsilon, "right margin");
+ assert_approx_equals(s.top_delta, 50, epsilon, "top margin");
+ assert_approx_equals(s.bottom_delta, 60, epsilon, "bottom margin");
+ assert_approx_equals(s.element_width_delta, 0, epsilon, "element width");
+ assert_approx_equals(s.element_height_delta, 0, epsilon, "element height");
+ }, `Margin properties on ${tag} (rtl)`);
+
+ test(function() {
+ // Apply the same margin style on the parent mrow.
+ // The margins are not collapsed so they should be added twice.
+ var s = compareSpaceWithAndWithoutStyle(tag, style, style);
+ assert_approx_equals(s.left_delta, 30 * 2, epsilon, "left margin");
+ assert_approx_equals(s.right_delta, 40 * 2, epsilon, "right margin");
+ assert_approx_equals(s.top_delta, 50 * 2, epsilon, "top margin");
+ assert_approx_equals(s.bottom_delta, 60 * 2, epsilon, "bottom margin");
+ assert_approx_equals(s.element_width_delta, 0, epsilon, "element width");
+ assert_approx_equals(s.element_height_delta, 0, epsilon, "element height");
+ }, `Margin properties on ${tag} (no margin-collapsing)`);
}
done();
diff --git a/tests/wpt/web-platform-tests/mathml/relations/css-styling/padding-border-margin/padding-001.html b/tests/wpt/web-platform-tests/mathml/relations/css-styling/padding-border-margin/padding-001.html
index 1f8875f657d..afcd9304526 100644
--- a/tests/wpt/web-platform-tests/mathml/relations/css-styling/padding-border-margin/padding-001.html
+++ b/tests/wpt/web-platform-tests/mathml/relations/css-styling/padding-border-margin/padding-001.html
@@ -7,7 +7,8 @@
<meta name="assert" content="Verify that padding is taken into account.">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
-<script src="helper.js"></script>
+<script src="/mathml/support/feature-detection.js"></script>
+<script src="/mathml/support/box-comparison.js"></script>
<script>
var epsilon = 1;
@@ -16,35 +17,83 @@
function runTests() {
test(function() {
+ assert_true(MathMLFeatureDetection.has_mspace());
var s = measureSpaceAround("mrow-padding")
assert_approx_equals(s.left, 20, epsilon, "left padding");
assert_approx_equals(s.right, 30, epsilon, "right padding");
assert_approx_equals(s.top, 40, epsilon, "top padding");
assert_approx_equals(s.bottom, 50, epsilon, "bottom padding");
+ var b = document.getElementById("mrow-padding").
+ getBoundingClientRect();
+ assert_approx_equals(b.width, 20 + 50 + 30, epsilon, "element width");
+ assert_approx_equals(b.height, 40 + 50 + 50, epsilon, "element height");
}, "Padding properties on mrow");
test(function() {
+ assert_true(MathMLFeatureDetection.has_mspace());
+ assert_true(MathMLFeatureDetection.has_dir());
+ var s = measureSpaceAround("mrow-padding-rtl")
+ assert_approx_equals(s.left, 20, epsilon, "left padding");
+ assert_approx_equals(s.right, 30, epsilon, "right padding");
+ assert_approx_equals(s.top, 40, epsilon, "top padding");
+ assert_approx_equals(s.bottom, 50, epsilon, "bottom padding");
+ var b = document.getElementById("mrow-padding-rtl").
+ getBoundingClientRect();
+ assert_approx_equals(b.width, 20 + 50 + 30, epsilon, "element width");
+ assert_approx_equals(b.height, 40 + 50 + 50, epsilon, "element height");
+ }, "Padding properties on mrow (rtl)");
+
+ test(function() {
+ assert_true(MathMLFeatureDetection.has_mspace());
var s = measureSpaceAround("mrow-padding-shorthand")
assert_approx_equals(s.left, 20, epsilon, "left padding");
assert_approx_equals(s.right, 20, epsilon, "right padding");
assert_approx_equals(s.top, 20, epsilon, "top padding");
assert_approx_equals(s.bottom, 20, epsilon, "bottom padding");
+ var b = document.getElementById("mrow-padding-shorthand").
+ getBoundingClientRect();
+ assert_approx_equals(b.width, 20 + 50 + 20, epsilon, "element width");
+ assert_approx_equals(b.height, 20 + 50 + 20, epsilon, "element height");
}, "Padding properties on mrow (shorthand)");
test(function() {
+ assert_true(MathMLFeatureDetection.has_mspace());
var s = measureSpaceAround("mrow-padding-logical")
assert_approx_equals(s.left, 20, epsilon, "left padding");
assert_approx_equals(s.right, 30, epsilon, "right padding");
assert_approx_equals(s.top, 40, epsilon, "top padding");
assert_approx_equals(s.bottom, 50, epsilon, "bottom padding");
+ var b = document.getElementById("mrow-padding-logical").
+ getBoundingClientRect();
+ assert_approx_equals(b.width, 20 + 50 + 30, epsilon, "element width");
+ assert_approx_equals(b.height, 40 + 50 + 50, epsilon, "element height");
}, "Padding properties on mrow (logical)");
test(function() {
+ assert_true(MathMLFeatureDetection.has_mspace());
+ assert_true(MathMLFeatureDetection.has_dir());
+ var s = measureSpaceAround("mrow-padding-logical-rtl")
+ assert_approx_equals(s.left, 30, epsilon, "left padding");
+ assert_approx_equals(s.right, 20, epsilon, "right padding");
+ assert_approx_equals(s.top, 40, epsilon, "top padding");
+ assert_approx_equals(s.bottom, 50, epsilon, "bottom padding");
+ var b = document.getElementById("mrow-padding-logical-rtl").
+ getBoundingClientRect();
+ assert_approx_equals(b.width, 20 + 50 + 30, epsilon, "element width");
+ assert_approx_equals(b.height, 40 + 50 + 50, epsilon, "element height");
+ }, "Padding properties on mrow (logical, rtl)");
+
+ test(function() {
+ assert_true(MathMLFeatureDetection.has_mspace());
var s = measureSpaceAround("mrow-padding-logical-shorthand")
assert_approx_equals(s.left, 20, epsilon, "left padding");
assert_approx_equals(s.right, 20, epsilon, "right padding");
assert_approx_equals(s.top, 30, epsilon, "top padding");
assert_approx_equals(s.bottom, 30, epsilon, "bottom padding");
+ var b = document.getElementById("mrow-padding-logical-shorthand").
+ getBoundingClientRect();
+ assert_approx_equals(b.width, 20 + 50 + 20, epsilon, "element width");
+ assert_approx_equals(b.height, 30 + 50 + 30, epsilon, "element height");
}, "Padding properties on mrow (logical, shorthand)");
done();
@@ -67,6 +116,19 @@
</math>
</p>
<p>
+ <math dir="rtl">
+ <mrow>
+ <mrow id="mrow-padding-rtl"
+ style="padding-left: 20px;
+ padding-right: 30px;
+ padding-top: 40px;
+ padding-bottom: 50px;">
+ <mspace width="50px" height="50px"></mspace>
+ </mrow>
+ </mrow>
+ </math>
+ </p>
+ <p>
<math>
<mrow>
<mrow id="mrow-padding-shorthand"
@@ -90,6 +152,19 @@
</math>
</p>
<p>
+ <math dir="rtl">
+ <mrow>
+ <mrow id="mrow-padding-logical-rtl"
+ style="padding-inline-start: 20px;
+ padding-inline-end: 30px;
+ padding-block-start: 40px;
+ padding-block-end: 50px;">
+ <mspace width="50px" height="50px"></mspace>
+ </mrow>
+ </mrow>
+ </math>
+ </p>
+ <p>
<math>
<mrow>
<mrow id="mrow-padding-logical-shorthand"
diff --git a/tests/wpt/web-platform-tests/mathml/relations/css-styling/padding-border-margin/padding-002.html b/tests/wpt/web-platform-tests/mathml/relations/css-styling/padding-border-margin/padding-002.html
index eadff36b460..c634e4076e0 100644
--- a/tests/wpt/web-platform-tests/mathml/relations/css-styling/padding-border-margin/padding-002.html
+++ b/tests/wpt/web-platform-tests/mathml/relations/css-styling/padding-border-margin/padding-002.html
@@ -8,7 +8,7 @@
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/mathml/support/mathml-fragments.js"></script>
-<script src="helper.js"></script>
+<script src="/mathml/support/box-comparison.js"></script>
<script>
var epsilon = 1;
@@ -22,12 +22,13 @@
continue;
var style = "padding-left: 30px; padding-right: 40px; padding-top: 50px; padding-bottom: 60px;";
+ var styleRTL = `direction: rtl; ${style}`;
if (FragmentHelper.isEmpty(tag)) {
test(function() {
var s = compareSizeWithAndWithoutStyle(tag, style);
- assert_approx_equals(s.width_delta, 30 + 40, epsilon, "left/right padding");
- assert_approx_equals(s.height_delta, 50 + 60, epsilon, "top/bottom padding");
+ assert_approx_equals(s.element_width_delta, 30 + 40, epsilon, "left/right padding");
+ assert_approx_equals(s.element_height_delta, 50 + 60, epsilon, "top/bottom padding");
}, `Padding properties on ${tag}`);
continue;
}
@@ -38,7 +39,19 @@
assert_approx_equals(s.right_delta, 40, epsilon, "right padding");
assert_approx_equals(s.top_delta, 50, epsilon, "top padding");
assert_approx_equals(s.bottom_delta, 60, epsilon, "bottom padding");
+ assert_approx_equals(s.element_width_delta, 30 + 40, epsilon, "element width");
+ assert_approx_equals(s.element_height_delta, 50 + 60, epsilon, "element height");
}, `Padding properties on ${tag}`);
+
+ test(function() {
+ var s = compareSpaceWithAndWithoutStyle(tag, styleRTL);
+ assert_approx_equals(s.left_delta, 30, epsilon, "left padding");
+ assert_approx_equals(s.right_delta, 40, epsilon, "right padding");
+ assert_approx_equals(s.top_delta, 50, epsilon, "top padding");
+ assert_approx_equals(s.bottom_delta, 60, epsilon, "bottom padding");
+ assert_approx_equals(s.element_width_delta, 30 + 40, epsilon, "element width");
+ assert_approx_equals(s.element_height_delta, 50 + 60, epsilon, "element height");
+ }, `Padding properties on ${tag} (rtl)`);
}
done();
diff --git a/tests/wpt/web-platform-tests/mathml/relations/css-styling/padding-border-margin/padding-003.html b/tests/wpt/web-platform-tests/mathml/relations/css-styling/padding-border-margin/padding-003.html
deleted file mode 100644
index cad4a990b1d..00000000000
--- a/tests/wpt/web-platform-tests/mathml/relations/css-styling/padding-border-margin/padding-003.html
+++ /dev/null
@@ -1,39 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-<meta charset="utf-8">
-<title>padding</title>
-<link rel="help" href="https://mathml-refresh.github.io/mathml-core/#layout-algorithms">
-<meta name="assert" content="Verify that padding is taken into account.">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="/mathml/support/mathml-fragments.js"></script>
-<script src="helper.js"></script>
-<script>
- var epsilon = 1;
-
- setup({ explicit_done: true });
- window.addEventListener("load", runTests);
-
- function runTests() {
-
- for (tag in MathMLFragments) {
- if (!FragmentHelper.isEmpty(tag))
- continue;
-
- test(function() {
- var style = "padding-left: 10px; padding-right: 20px; padding-top: 15px; padding-bottom: 25px;";
- var s = compareSizeWithAndWithoutStyle(tag, style);
- assert_approx_equals(s.width_delta, 10 + 20, epsilon, "padding left/right");
- assert_approx_equals(s.height_delta, 15 + 25, epsilon, "padding top/bottom");
- }, `Padding properties on ${tag}`);
- }
-
- done();
- }
-</script>
-</head>
-<body>
- <div id="log"></div>
-</body>
-</html>
diff --git a/tests/wpt/web-platform-tests/mathml/relations/css-styling/padding-border-margin/padding-border-margin-001-ref.html b/tests/wpt/web-platform-tests/mathml/relations/css-styling/padding-border-margin/padding-border-margin-001-ref.html
new file mode 100644
index 00000000000..150a650bc28
--- /dev/null
+++ b/tests/wpt/web-platform-tests/mathml/relations/css-styling/padding-border-margin/padding-border-margin-001-ref.html
@@ -0,0 +1,17 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8"/>
+<title>Padding/border/margin</title>
+<body>
+ <p>This test passes if you see a purple square of side 100px, surrounded by a
+ 10px blue padding, surrounded by a 10px blue/yellow dashed border, itself
+ surrounded by a 10px pink margin.</p>
+ </div>
+ <div style="background: pink; position: absolute; left: 10px; top: 3em;">
+ <div style="background: blue; border: 10px dashed yellow; padding: 10px; margin: 10px;">
+ <div style="width: 100px; height: 100px; background: purple;"></div>
+ </div>
+ </div>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/mathml/relations/css-styling/padding-border-margin/padding-border-margin-001.html b/tests/wpt/web-platform-tests/mathml/relations/css-styling/padding-border-margin/padding-border-margin-001.html
new file mode 100644
index 00000000000..be918dee510
--- /dev/null
+++ b/tests/wpt/web-platform-tests/mathml/relations/css-styling/padding-border-margin/padding-border-margin-001.html
@@ -0,0 +1,22 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8"/>
+<title>Padding/border/margin</title>
+<link rel="help" href="https://mathml-refresh.github.io/mathml-core/#layout-algorithms">
+<link rel="help" href="https://mathml-refresh.github.io/mathml-core/#layout-of-mrow">
+<link rel="match" href="padding-border-margin-001-ref.html"/>
+<meta name="assert" content="Verify visual rendering of padding/border/margin on the mrow element.">
+<body>
+ <p>This test passes if you see a purple square of side 100px, surrounded by a
+ 10px blue padding, surrounded by a 10px blue/yellow dashed border, itself
+ surrounded by a 10px pink margin.</p>
+ <div style="background: pink; position: absolute; left: 10px; top: 3em;">
+ <math>
+ <mrow style="background: blue; border: 10px dashed yellow; padding: 10px; margin: 10px;">
+ <mspace width="100px" height="100px" style="background: purple;"></mspace>
+ </mrow>
+ </math>
+ </div>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/mathml/relations/css-styling/width-height-001.html b/tests/wpt/web-platform-tests/mathml/relations/css-styling/width-height-001.html
new file mode 100644
index 00000000000..8d52f48a2d9
--- /dev/null
+++ b/tests/wpt/web-platform-tests/mathml/relations/css-styling/width-height-001.html
@@ -0,0 +1,50 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>width, height, inline-size and block-size</title>
+<link rel="help" href="https://mathml-refresh.github.io/mathml-core/#layout-algorithms">
+<meta name="assert" content="Verify that width, height, inline-size and block-size properties are ignored.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/mathml/support/mathml-fragments.js"></script>
+<script src="/mathml/support/box-comparison.js"></script>
+<script>
+ var epsilon = 1;
+
+ setup({ explicit_done: true });
+ window.addEventListener("load", runTests);
+
+ function runTests() {
+
+ for (tag in MathMLFragments) {
+ if (!FragmentHelper.isValidChildOfMrow(tag) || tag === "mtable")
+ continue;
+
+ test(function() {
+ var style = "width: 500px; height: 400px;";
+ var s = compareSizeWithAndWithoutStyle(tag, style);
+ assert_approx_equals(s.width_delta, 0, epsilon, "width");
+ assert_approx_equals(s.height_delta, 0, epsilon, "height");
+ assert_approx_equals(s.element_width_delta, 0, epsilon, "element width");
+ assert_approx_equals(s.element_height_delta, 0, epsilon, "element height");
+ }, `width and height properties on ${tag}`);
+
+ test(function() {
+ var style = "inline-size: 500px; block-size: 400px;";
+ var s = compareSizeWithAndWithoutStyle(tag, style);
+ assert_approx_equals(s.width_delta, 0, epsilon, "width");
+ assert_approx_equals(s.height_delta, 0, epsilon, "height");
+ assert_approx_equals(s.element_width_delta, 0, epsilon, "element width");
+ assert_approx_equals(s.element_height_delta, 0, epsilon, "element height");
+ }, `inline-size and block-size properties on ${tag}`);
+ }
+
+ done();
+ }
+</script>
+</head>
+<body>
+ <div id="log"></div>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/mathml/relations/css-styling/writing-mode/writing-mode-001.html b/tests/wpt/web-platform-tests/mathml/relations/css-styling/writing-mode/writing-mode-001.html
new file mode 100644
index 00000000000..01a93eb15f0
--- /dev/null
+++ b/tests/wpt/web-platform-tests/mathml/relations/css-styling/writing-mode/writing-mode-001.html
@@ -0,0 +1,121 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>writing mode</title>
+<link rel="help" href="https://mathml-refresh.github.io/mathml-core/#layout-algorithms">
+<meta name="assert" content="Verify CSS writing mode (writing-mode and directionproperties) for mrow.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/mathml/support/feature-detection.js"></script>
+<script src="/mathml/support/layout-comparison.js"></script>
+<script>
+ var epsilon = 1;
+
+ setup({ explicit_done: true });
+ window.addEventListener("load", runTests);
+
+ function runTests() {
+ var reference = document.getElementById("horizontal-tb_ltr");
+
+ ["horizontal-tb_rtl",
+ "vertical-lr_ltr",
+ "vertical-lr_rtl",
+ "vertical-rl_ltr",
+ "vertical-rl_rtl"].forEach(id => {
+ var element = document.getElementById(id);
+
+ test(function() {
+ var style = window.getComputedStyle(element);
+ var writingMode = id.split("_");
+ assert_equals(style.getPropertyValue("writing-mode"),
+ writingMode[0], "writing-mode");
+ assert_equals(style.getPropertyValue("direction"),
+ writingMode[1], "direction");
+ }, `Inheritance of CSS writing-mode and direction (id='${id}')`);
+
+ test(function() {
+ assert_true(MathMLFeatureDetection.has_mspace());
+ compareLayout(element, reference, epsilon);
+ }, `Layout of mrow (id='${id}')`);
+ });
+ done();
+ }
+</script>
+</head>
+<body>
+ <div id="log"></div>
+ <p>
+ <math>
+ <mrow id="horizontal-tb_ltr">
+ <mspace style="background: blue"
+ width="20px" height="30px" depth="40px"></mspace>
+ <mspace style="background: black"
+ width="50px" depth="60px"></mspace>
+ <mspace style="background: yellow"
+ width="70px" height="80px"></mspace>
+ </mrow>
+ </math>
+ </p>
+ <p>
+ <math style="direction: rtl;">
+ <mrow id="horizontal-tb_rtl">
+ <mspace style="background: blue"
+ width="20px" height="30px" depth="40px"></mspace>
+ <mspace style="background: black"
+ width="50px" depth="60px"></mspace>
+ <mspace style="background: yellow"
+ width="70px" height="80px"></mspace>
+ </mrow>
+ </math>
+ </p>
+ <p>
+ <math style="writing-mode: vertical-lr;">
+ <mrow id="vertical-lr_ltr">
+ <mspace style="background: blue"
+ width="20px" height="30px" depth="40px"></mspace>
+ <mspace style="background: black"
+ width="50px" depth="60px"></mspace>
+ <mspace style="background: yellow"
+ width="70px" height="80px"></mspace>
+ </mrow>
+ </math>
+ </p>
+ <p>
+ <math style="writing-mode: vertical-lr; direction: rtl;">
+ <mrow id="vertical-lr_rtl">
+ <mspace style="background: blue"
+ width="20px" height="30px" depth="40px"></mspace>
+ <mspace style="background: black"
+ width="50px" depth="60px"></mspace>
+ <mspace style="background: yellow"
+ width="70px" height="80px"></mspace>
+ </mrow>
+ </math>
+ </p>
+ <p>
+ <math style="writing-mode: vertical-rl;">
+ <mrow id="vertical-rl_ltr">
+ <mspace style="background: blue"
+ width="20px" height="30px" depth="40px"></mspace>
+ <mspace style="background: black"
+ width="50px" depth="60px"></mspace>
+ <mspace style="background: yellow"
+ width="70px" height="80px"></mspace>
+ </mrow>
+ </math>
+ </p>
+ <p>
+ <math style="writing-mode: vertical-rl; direction: rtl;">
+ <mrow id="vertical-rl_rtl">
+ <mspace style="background: blue"
+ width="20px" height="30px" depth="40px"></mspace>
+ <mspace style="background: black"
+ width="50px" depth="60px"></mspace>
+ <mspace style="background: yellow"
+ width="70px" height="80px"></mspace>
+ </mrow>
+ </math>
+ </p>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/mathml/relations/css-styling/writing-mode/writing-mode-002.html b/tests/wpt/web-platform-tests/mathml/relations/css-styling/writing-mode/writing-mode-002.html
new file mode 100644
index 00000000000..97be6292eb0
--- /dev/null
+++ b/tests/wpt/web-platform-tests/mathml/relations/css-styling/writing-mode/writing-mode-002.html
@@ -0,0 +1,86 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>writing mode</title>
+<link rel="help" href="https://mathml-refresh.github.io/mathml-core/#layout-algorithms">
+<meta name="assert" content="Verify CSS writing mode (writing-mode and direction properties) for mrow.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/mathml/support/feature-detection.js"></script>
+<script src="/mathml/support/layout-comparison.js"></script>
+<script src="/mathml/support/mathml-fragments.js"></script>
+<script>
+ var epsilon = 1;
+
+ setup({ explicit_done: true });
+ window.addEventListener("load", runTests);
+
+ function runTests() {
+ for (tag in MathMLFragments) {
+ if (tag == "annotation" || tag == "annotation-xml")
+ continue; // These tags have display: none.
+
+ ["horizontal-tb_rtl",
+ "vertical-lr_ltr",
+ "vertical-lr_rtl",
+ "vertical-rl_ltr",
+ "vertical-rl_rtl"].forEach(id => {
+ var writingMode = id.split("_");
+ var writingModeString = `writing-mode: ${writingMode[0]}; direction: ${writingMode[1]};`;
+
+ document.body.insertAdjacentHTML("beforeend", `<div>\
+<math>${MathMLFragments[tag]}</math>\
+<math>${MathMLFragments[tag]}</math>\
+</div>`);
+ var div = document.body.lastElementChild;
+
+ var styleMath = div.firstElementChild;
+ styleMath.setAttribute("style", writingModeString);
+ var styleElement = FragmentHelper.element(styleMath);
+
+ var referenceMath = div.lastElementChild;
+ var referenceElement = FragmentHelper.element(referenceMath);
+
+ [styleMath, referenceMath].forEach(math => {
+ Array.from(math.getElementsByClassName("mathml-container")).forEach(container => {
+ container.insertAdjacentHTML("beforeend", "\
+<mspace style='background: blue'\
+ width='20px' height='30px' depth='40px'></mspace>\
+<mspace style='background: black'\
+ width='50px' depth='60px'></mspace>\
+<mspace style='background: yellow'\
+ width='70px' height='80px'></mspace>");
+ });
+ Array.from(math.getElementsByClassName("foreign-container")).forEach(container => {
+ container.insertAdjacentHTML("beforeend", "\
+<span style='display: inline-block; background: lightblue;\
+ inline-size: 20px; block-size: 30px;\
+ vertical-align: bottom;'></span>\
+<span style='display: inline-block; background: pink;\
+ inline-size: 40px; block-size: 50px;\
+ vertical-align: bottom;'></span>");
+ });
+ });
+
+ test(function() {
+ assert_true(MathMLFeatureDetection.has_mspace());
+ var style = window.getComputedStyle(styleElement);
+ assert_equals(style.getPropertyValue("writing-mode"),
+ writingMode[0], "writing-mode");
+ assert_equals(style.getPropertyValue("direction"),
+ writingMode[1], "direction");
+ compareLayout(styleElement, referenceElement, epsilon);
+ }, `Layout of ${tag} (${writingModeString})`);
+
+ div.style = "display: none;"; // Hide the div after testing.
+ });
+ }
+ done();
+ }
+</script>
+</head>
+<body>
+ <div id="log"></div>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/mathml/relations/css-styling/padding-border-margin/helper.js b/tests/wpt/web-platform-tests/mathml/support/box-comparison.js
index d3f4b261a75..b1e91cdd99a 100644
--- a/tests/wpt/web-platform-tests/mathml/relations/css-styling/padding-border-margin/helper.js
+++ b/tests/wpt/web-platform-tests/mathml/support/box-comparison.js
@@ -15,31 +15,36 @@ function measureSpaceAround(id) {
return spaceBetween(childBox, parentBox);
}
-function compareSpaceWithAndWithoutStyle(tag, style) {
+function compareSpaceWithAndWithoutStyle(tag, style, parentStyle) {
if (!FragmentHelper.isValidChildOfMrow(tag) ||
FragmentHelper.isEmpty(tag))
throw `Invalid argument: ${tag}`;
document.body.insertAdjacentHTML("beforeend", `<div>\
-<math>${MathMLFragments[tag]}</math>\
-<math>${MathMLFragments[tag]}</math>\
+<math><mrow>${MathMLFragments[tag]}</mrow></math>\
+<math><mrow>${MathMLFragments[tag]}</mrow></math>\
</div>`);
var div = document.body.lastElementChild;
var styleMath = div.firstElementChild;
+ var styleParent = styleMath.firstElementChild;
+ if (parentStyle)
+ styleParent.setAttribute("style", parentStyle);
var styleElement = FragmentHelper.element(styleMath);
styleElement.setAttribute("style", style);
var styleChild = FragmentHelper.forceNonEmptyElement(styleElement);
- var styleBox = styleMath.getBoundingClientRect();
+ var styleMathBox = styleMath.getBoundingClientRect();
+ var styleElementBox = styleElement.getBoundingClientRect();
var styleChildBox = styleChild.getBoundingClientRect();
- var styleSpace = spaceBetween(styleChildBox, styleBox);
+ var styleSpace = spaceBetween(styleChildBox, styleMathBox);
var noStyleMath = div.lastElementChild;
var noStyleElement = FragmentHelper.element(noStyleMath);
var noStyleChild = FragmentHelper.forceNonEmptyElement(noStyleElement);
- var noStyleBox = noStyleMath.getBoundingClientRect();
+ var noStyleMathBox = noStyleMath.getBoundingClientRect();
+ var noStyleElementBox = noStyleElement.getBoundingClientRect();
var noStyleChildBox = noStyleChild.getBoundingClientRect();
- var noStyleSpace = spaceBetween(noStyleChildBox, noStyleBox);
+ var noStyleSpace = spaceBetween(noStyleChildBox, noStyleMathBox);
div.style = "display: none;"; // Hide the div after measurement.
@@ -47,7 +52,9 @@ function compareSpaceWithAndWithoutStyle(tag, style) {
left_delta: styleSpace.left - noStyleSpace.left,
right_delta: styleSpace.right - noStyleSpace.right,
top_delta: styleSpace.top - noStyleSpace.top,
- bottom_delta: styleSpace.bottom - noStyleSpace.bottom
+ bottom_delta: styleSpace.bottom - noStyleSpace.bottom,
+ element_width_delta: styleElementBox.width - noStyleElementBox.width,
+ element_height_delta: styleElementBox.height - noStyleElementBox.height
};
}
@@ -64,16 +71,20 @@ function compareSizeWithAndWithoutStyle(tag, style) {
var styleMath = div.firstElementChild;
var styleElement = FragmentHelper.element(styleMath);
styleElement.setAttribute("style", style);
- var styleBox = styleMath.getBoundingClientRect();
+ var styleMathBox = styleMath.getBoundingClientRect();
+ var styleElementBox = styleElement.getBoundingClientRect();
var noStyleMath = div.lastElementChild;
var noStyleElement = FragmentHelper.element(noStyleMath);
- var noStyleBox = noStyleMath.getBoundingClientRect();
+ var noStyleMathBox = noStyleMath.getBoundingClientRect();
+ var noStyleElementBox = noStyleElement.getBoundingClientRect();
div.style = "display: none;"; // Hide the div after measurement.
return {
- width_delta: styleBox.width - noStyleBox.width,
- height_delta: styleBox.height - noStyleBox.height
+ width_delta: styleMathBox.width - noStyleMathBox.width,
+ height_delta: styleMathBox.height - noStyleMathBox.height,
+ element_width_delta: styleElementBox.width - noStyleElementBox.width,
+ element_height_delta: styleElementBox.height - noStyleElementBox.height
};
};
diff --git a/tests/wpt/web-platform-tests/mathml/support/layout-comparison.js b/tests/wpt/web-platform-tests/mathml/support/layout-comparison.js
new file mode 100644
index 00000000000..b1a68995178
--- /dev/null
+++ b/tests/wpt/web-platform-tests/mathml/support/layout-comparison.js
@@ -0,0 +1,95 @@
+function getWritingMode(element, reference) {
+ var style = window.getComputedStyle(reference);
+ if (style.getPropertyValue("writing-mode") !== "horizontal-tb" ||
+ style.getPropertyValue("direction") !== "ltr")
+ throw "Reference should have writing mode horizontal-tb and ltr";
+
+ style = window.getComputedStyle(element);
+ var param = {
+ rtl: style.getPropertyValue("direction") === "rtl",
+ mode: style.getPropertyValue("writing-mode")
+ };
+
+ return param;
+}
+
+function compareSize(element, reference, epsilon) {
+ var param = getWritingMode(element, reference);
+ var elementBox = element.getBoundingClientRect();
+ var referenceBox = reference.getBoundingClientRect();
+
+ switch(param.mode) {
+ case "horizontal-tb":
+ assert_approx_equals(elementBox.width, referenceBox.width, epsilon,
+ "inline size");
+ assert_approx_equals(elementBox.height, referenceBox.height, epsilon,
+ "block size");
+ break;
+ case "vertical-lr":
+ case "vertical-rl":
+ assert_approx_equals(elementBox.width, referenceBox.height, epsilon,
+ "inline size");
+ assert_approx_equals(elementBox.height, referenceBox.width, epsilon,
+ "block size");
+ break;
+ default:
+ throw "compareSize: Unrecognized writing-mode value";
+ }
+}
+
+function compareLayout(element, reference, epsilon) {
+ if (element.children.length != reference.children.length)
+ throw "Reference should have the same number of children."
+
+ // Compare sizes of elements and children.
+ var param = getWritingMode(element, reference);
+
+ compareSize(element, reference, epsilon);
+ var elementBox = element.getBoundingClientRect();
+ var referenceBox = reference.getBoundingClientRect();
+ for (var i = 0; i < element.children.length; i++) {
+ var childDisplay = window.
+ getComputedStyle(element.children[i]).getPropertyValue("display");
+ var referenceChildDisplay = window.
+ getComputedStyle(reference.children[i]).getPropertyValue("display");
+ if (referenceChildDisplay !== childDisplay)
+ throw "compareLayout: children of reference should have the same display values.";
+ if (childDisplay === "none")
+ continue;
+
+ compareSize(element.children[i], reference.children[i], epsilon);
+
+ var childBox = element.children[i].getBoundingClientRect();
+ var referenceChildBox = reference.children[i].getBoundingClientRect();
+
+ switch(param.mode) {
+ case "horizontal-tb":
+ if (!param.rtl)
+ throw "compareLayout: unexpected writing-mode value";
+ assert_approx_equals(elementBox.right - childBox.right,
+ referenceChildBox.left - referenceBox.left,
+ epsilon,
+ `inline position (child ${i})`);
+ assert_approx_equals(childBox.top - elementBox.top,
+ referenceChildBox.top - referenceBox.top,
+ epsilon,
+ `block position (child ${i})`);
+ break;
+ case "vertical-lr":
+ case "vertical-rl":
+ assert_approx_equals(param.rtl ?
+ elementBox.bottom - childBox.bottom :
+ childBox.top - elementBox.top,
+ referenceChildBox.left - referenceBox.left,
+ epsilon,
+ `inline position (child ${i})`);
+ assert_approx_equals(elementBox.right - childBox.right,
+ referenceChildBox.top - referenceBox.top,
+ epsilon,
+ `block position (child ${i})`);
+ break;
+ default:
+ throw "compareLayout: Unrecognized writing-mode value";
+ }
+ }
+}
diff --git a/tests/wpt/web-platform-tests/mathml/support/mathml-fragments.js b/tests/wpt/web-platform-tests/mathml/support/mathml-fragments.js
index 3753c3460ec..097ca8690b4 100644
--- a/tests/wpt/web-platform-tests/mathml/support/mathml-fragments.js
+++ b/tests/wpt/web-platform-tests/mathml/support/mathml-fragments.js
@@ -55,18 +55,18 @@ var MathMLFragments = {
"msqrt": "<msqrt class='element mathml-container'></msqrt>",
"mstyle": "<mstyle class='element mathml-container'></mstyle>",
"msub": "\
-<msub class='element mathml-container'>\
+<msub class='element'>\
<mrow class='mathml-container'></mrow>\
<mrow class='mathml-container'></mrow>\
</msub>",
"msubsup": "\
-<msubsup class='element mathml-container'>\
+<msubsup class='element'>\
<mrow class='mathml-container'></mrow>\
<mrow class='mathml-container'></mrow>\
<mrow class='mathml-container'></mrow>\
</msubsup>",
"msup": "\
-<msup class='element mathml-container'>\
+<msup class='element'>\
<mrow class='mathml-container'></mrow>\
<mrow class='mathml-container'></mrow>\
</msup>",
diff --git a/tests/wpt/web-platform-tests/media-playback-quality/META.yml b/tests/wpt/web-platform-tests/media-playback-quality/META.yml
new file mode 100644
index 00000000000..51b1b4e07ed
--- /dev/null
+++ b/tests/wpt/web-platform-tests/media-playback-quality/META.yml
@@ -0,0 +1,3 @@
+spec: https://w3c.github.io/media-playback-quality/
+suggested_reviewers:
+ - mounirlamouri
diff --git a/tests/wpt/web-platform-tests/media-playback-quality/idlharness.window.js b/tests/wpt/web-platform-tests/media-playback-quality/idlharness.window.js
new file mode 100644
index 00000000000..2444e30c704
--- /dev/null
+++ b/tests/wpt/web-platform-tests/media-playback-quality/idlharness.window.js
@@ -0,0 +1,20 @@
+// META: script=/resources/WebIDLParser.js
+// META: script=/resources/idlharness.js
+
+// https://w3c.github.io/media-playback-quality/
+
+'use strict';
+
+idl_test(
+ ['media-playback-quality'],
+ ['html', 'dom'],
+ idl_array => {
+ idl_array.add_objects({
+ HTMLVideoElement: ['video'],
+ VideoPlaybackQuality: ['videoPlaybackQuality']
+ });
+
+ self.video = document.createElement('video');
+ self.videoPlaybackQuality = video.getVideoPlaybackQuality();
+ }
+);
diff --git a/tests/wpt/web-platform-tests/native-file-system/FileSystemWriter.tentative.https.window.js b/tests/wpt/web-platform-tests/native-file-system/FileSystemWriter.tentative.https.window.js
index f2c2fc82866..acc0be1c521 100644
--- a/tests/wpt/web-platform-tests/native-file-system/FileSystemWriter.tentative.https.window.js
+++ b/tests/wpt/web-platform-tests/native-file-system/FileSystemWriter.tentative.https.window.js
@@ -136,3 +136,156 @@ promise_test(async t => {
assert_equals(await getFileContents(handle), 'abc\0\0');
assert_equals(await getFileSize(handle), 5);
}, 'truncate() to grow a file');
+
+promise_test(async t => {
+ const root = await FileSystemDirectoryHandle.getSystemDirectory({ type: 'sandbox' });
+ const dir = await createDirectory(t, 'parent_dir', root);
+ const file_name = 'create_writer_fails_when_dir_removed.txt';
+ const handle = await createEmptyFile(t, file_name, dir);
+
+ await root.removeEntry('parent_dir', {recursive: true});
+ await promise_rejects(t, 'NotFoundError', handle.createWriter());
+}, 'createWriter() fails when parent directory is removed');
+
+promise_test(async t => {
+ const root = await FileSystemDirectoryHandle.getSystemDirectory({ type: 'sandbox' });
+ const dir = await createDirectory(t, 'parent_dir', root);
+ const file_name = 'write_fails_when_dir_removed.txt';
+ const handle = await createEmptyFile(t, file_name, dir);
+ const writer = await handle.createWriter();
+
+ await root.removeEntry('parent_dir', {recursive: true});
+ await promise_rejects(t, 'NotFoundError', writer.write(0, new Blob(['foo'])));
+}, 'write() fails when parent directory is removed');
+
+promise_test(async t => {
+ const root = await FileSystemDirectoryHandle.getSystemDirectory({ type: 'sandbox' });
+ const dir = await createDirectory(t, 'parent_dir', root);
+ const file_name = 'truncate_fails_when_dir_removed.txt';
+ const handle = await createEmptyFile(t, file_name, dir);
+ const writer = await handle.createWriter();
+
+ await root.removeEntry('parent_dir', {recursive: true});
+ await promise_rejects(t, 'NotFoundError', writer.truncate(0));
+}, 'truncate() fails when parent directory is removed');
+
+promise_test(async t => {
+ const root = await FileSystemDirectoryHandle.getSystemDirectory({ type: 'sandbox' });
+ const dir = await createDirectory(t, 'parent_dir', root);
+ const file_name = 'close_fails_when_dir_removed.txt';
+ const handle = await createEmptyFile(t, file_name, dir);
+ const writer = await handle.createWriter();
+ await writer.write(0, new Blob(['foo']));
+
+ await root.removeEntry('parent_dir', {recursive: true});
+ await promise_rejects(t, 'NotFoundError', writer.close());
+}, 'atomic writes: close() fails when parent directory is removed');
+
+promise_test(async t => {
+ const handle = await createEmptyFile(t, 'atomic_writes.txt');
+ const writer = await handle.createWriter();
+ await writer.write(0, new Blob(['foox']));
+
+ const writer2 = await handle.createWriter();
+ await writer2.write(0, new Blob(['bar']));
+
+ assert_equals(await getFileSize(handle), 0);
+
+ await writer2.close();
+ assert_equals(await getFileContents(handle), 'bar');
+ assert_equals(await getFileSize(handle), 3);
+
+ await writer.close();
+ assert_equals(await getFileContents(handle), 'foox');
+ assert_equals(await getFileSize(handle), 4);
+}, 'atomic writes: writers make atomic changes on close');
+
+promise_test(async t => {
+ const handle = await createEmptyFile(t, 'atomic_write_after_close.txt');
+ const writer = await handle.createWriter();
+ await writer.write(0, new Blob(['foo']));
+
+ await writer.close();
+ assert_equals(await getFileContents(handle), 'foo');
+ assert_equals(await getFileSize(handle), 3);
+
+ await promise_rejects(t, 'InvalidStateError', writer.write(0, new Blob(['abc'])));
+}, 'atomic writes: write() after close() fails');
+
+promise_test(async t => {
+ const handle = await createEmptyFile(t, 'atomic_truncate_after_close.txt');
+ const writer = await handle.createWriter();
+ await writer.write(0, new Blob(['foo']));
+
+ await writer.close();
+ assert_equals(await getFileContents(handle), 'foo');
+ assert_equals(await getFileSize(handle), 3);
+
+ await promise_rejects(t, 'InvalidStateError', writer.truncate(0));
+}, 'atomic writes: truncate() after close() fails');
+
+promise_test(async t => {
+ const handle = await createEmptyFile(t, 'atomic_close_after_close.txt');
+ const writer = await handle.createWriter();
+ await writer.write(0, new Blob(['foo']));
+
+ await writer.close();
+ assert_equals(await getFileContents(handle), 'foo');
+ assert_equals(await getFileSize(handle), 3);
+
+ await promise_rejects(t, 'InvalidStateError', writer.close());
+}, 'atomic writes: close() after close() fails');
+
+promise_test(async t => {
+ const handle = await createEmptyFile(t, 'there_can_be_only_one.txt');
+ const writer = await handle.createWriter();
+ await writer.write(0, new Blob(['foo']));
+
+ // This test might be flaky if there is a race condition allowing
+ // close() to be called multiple times.
+ let success_promises = [...Array(100)].map(() => writer
+ .close()
+ .then(() => 1)
+ .catch(() => 0));
+ let close_attempts = await Promise.all(success_promises);
+ let success_count = close_attempts.reduce((x,y) => x + y);
+ assert_equals(success_count, 1);
+}, 'atomic writes: only one close() operation may succeed');
+
+promise_test(async t => {
+ const handle = await createFileWithContents(t, 'atomic_file_is_copied.txt', 'fooks');
+ const writer = await handle.createWriter({keepExistingData: true});
+
+ await writer.write(0, new Blob(['bar']));
+ await writer.close();
+ assert_equals(await getFileContents(handle), 'barks');
+ assert_equals(await getFileSize(handle), 5);
+}, 'createWriter({keepExistingData: true}): atomic writer initialized with source contents');
+
+promise_test(async t => {
+ const handle = await createFileWithContents(t, 'atomic_file_is_not_copied.txt', 'very long string');
+ const writer = await handle.createWriter({keepExistingData: false});
+
+ await writer.write(0, new Blob(['bar']));
+ assert_equals(await getFileContents(handle), 'very long string');
+ await writer.close();
+ assert_equals(await getFileContents(handle), 'bar');
+ assert_equals(await getFileSize(handle), 3);
+}, 'createWriter({keepExistingData: false}): atomic writer initialized with empty file');
+
+promise_test(async t => {
+ const root = await FileSystemDirectoryHandle.getSystemDirectory({ type: 'sandbox' });
+ const dir = await createDirectory(t, 'parent_dir', root);
+ const file_name = 'atomic_writer_persists_removed.txt';
+ const handle = await createFileWithContents(t, file_name, 'foo', dir);
+
+ const writer = await handle.createWriter();
+ await writer.write(0, new Blob(['bar']));
+
+ await dir.removeEntry(file_name);
+ await promise_rejects(t, 'NotFoundError', getFileContents(handle));
+
+ await writer.close();
+ assert_equals(await getFileContents(handle), 'bar');
+ assert_equals(await getFileSize(handle), 3);
+}, 'atomic writes: writer persists file on close, even if file is removed');
diff --git a/tests/wpt/web-platform-tests/native-file-system/resources/test-helpers.js b/tests/wpt/web-platform-tests/native-file-system/resources/test-helpers.js
index 56c93b59750..b794cee0c5f 100644
--- a/tests/wpt/web-platform-tests/native-file-system/resources/test-helpers.js
+++ b/tests/wpt/web-platform-tests/native-file-system/resources/test-helpers.js
@@ -84,6 +84,7 @@ async function createFileWithContents(test, name, contents, parent) {
const handle = await createEmptyFile(test, name, parent);
const writer = await handle.createWriter();
await writer.write(0, new Blob([contents]));
+ await writer.close();
return handle;
}
@@ -91,4 +92,4 @@ function garbageCollect() {
// TODO(https://github.com/web-platform-tests/wpt/issues/7899): Change to
// some sort of cross-browser GC trigger.
if (self.gc) self.gc();
-}; \ No newline at end of file
+};
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 16a859a8ef3..43857bdc695 100644
--- a/tests/wpt/web-platform-tests/resources/chromium/webxr-test.js
+++ b/tests/wpt/web-platform-tests/resources/chromium/webxr-test.js
@@ -78,7 +78,7 @@ class ChromeXRTest {
// Mocking class definitions
-// Mock service implements both the VRService and XRDevice mojo interfaces.
+// Mock service implements the VRService mojo interface.
class MockVRService {
constructor() {
this.bindingSet_ = new mojo.BindingSet(device.mojom.VRService);
@@ -122,24 +122,14 @@ class MockVRService {
}
}
- // VRService implementation.
- requestDevice() {
- if (this.runtimes_.length > 0) {
- let devicePtr = new device.mojom.XRDevicePtr();
- new mojo.Binding(
- device.mojom.XRDevice, this, mojo.makeRequest(devicePtr));
-
- return Promise.resolve({device: devicePtr});
- } else {
- return Promise.resolve({device: null});
+ setClient(client) {
+ if (this.client_) {
+ throw new Error("setClient should only be called once");
}
- }
- setClient(client) {
this.client_ = client;
}
- // XRDevice implementation.
requestSession(sessionOptions, was_activation) {
let requests = [];
// Request a session from all the runtimes.
diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/import-scripts-404-after-update-plus-update-worker.js b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/import-scripts-404-after-update-plus-update-worker.js
new file mode 100644
index 00000000000..e9899d8e727
--- /dev/null
+++ b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/import-scripts-404-after-update-plus-update-worker.js
@@ -0,0 +1,8 @@
+// This worker imports a script that returns 200 on the first request and 404
+// on the second request, and a script that is updated every time when
+// requesting it.
+const params = new URLSearchParams(location.search);
+const key = params.get('Key');
+const additional_key = params.get('AdditionalKey');
+importScripts(`update-worker.py?Key=${key}&Mode=not_found`,
+ `update-worker.py?Key=${additional_key}&Mode=normal`);
diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/import-scripts-404-after-update.js b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/import-scripts-404-after-update.js
new file mode 100644
index 00000000000..b569346035a
--- /dev/null
+++ b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/import-scripts-404-after-update.js
@@ -0,0 +1,6 @@
+// This worker imports a script that returns 200 on the first request and 404
+// on the second request. The resulting body also changes each time it is
+// requested.
+const params = new URLSearchParams(location.search);
+const key = params.get('Key');
+importScripts(`update-worker.py?Key=${key}&Mode=not_found`);
diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/import-scripts-404.js b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/import-scripts-404.js
new file mode 100644
index 00000000000..19c7a4b8e56
--- /dev/null
+++ b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/import-scripts-404.js
@@ -0,0 +1 @@
+importScripts('404.py');
diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/update-worker.py b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/update-worker.py
index 446d547ca78..d25179304a7 100644
--- a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/update-worker.py
+++ b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/update-worker.py
@@ -15,6 +15,9 @@ def redirect_response(request, response, visited_count):
],
'/* %s */' % str(visited_count))
+def not_found_response():
+ return 404, [('Content-Type', 'text/plain')], "Page not found"
+
def ok_response(request, response, visited_count,
extra_body='', mime_type='application/javascript'):
# |visited_count| is used as a unique id to differentiate responses
@@ -45,10 +48,13 @@ def main(request, response):
return ok_response(request, response, visited_count)
if mode == 'bad_mime_type':
return ok_response(request, response, visited_count, mime_type='text/html')
+ if mode == 'not_found':
+ return not_found_response()
if mode == 'redirect':
return redirect_response(request, response, visited_count)
if mode == 'syntax_error':
return ok_response(request, response, visited_count, extra_body='badsyntax(isbad;')
if mode == 'throw_install':
return ok_response(request, response, visited_count, extra_body="addEventListener('install', function(e) { throw new Error('boom'); });")
+
return ok_response(request, response, visited_count)
diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/unregister-then-register-new-script.https.html b/tests/wpt/web-platform-tests/service-workers/service-worker/unregister-then-register-new-script.https.html
index a07da7d398f..444a5c36577 100644
--- a/tests/wpt/web-platform-tests/service-workers/service-worker/unregister-then-register-new-script.https.html
+++ b/tests/wpt/web-platform-tests/service-workers/service-worker/unregister-then-register-new-script.https.html
@@ -22,8 +22,8 @@ promise_test(async function(t) {
t.add_cleanup(() => newRegistration.unregister());
assert_equals(
- registration.installing.scriptURL,
- normalizeURL(newWorkerURL),
+ registration.installing,
+ null,
'before activated registration.installing'
);
assert_equals(
@@ -47,13 +47,13 @@ promise_test(async function(t) {
'before activated newRegistration.waiting'
);
assert_equals(
- newRegistration.active.scriptURL,
- normalizeURL(worker_url),
+ newRegistration.active,
+ null,
'before activated newRegistration.active'
);
iframe.remove();
- await wait_for_state(t, registration.installing, 'activated');
+ await wait_for_state(t, newRegistration.installing, 'activated');
assert_equals(
newRegistration.installing,
@@ -129,7 +129,8 @@ promise_test(async function(t) {
assert_equals(registration.installing, null, 'registration.installing');
assert_equals(registration.waiting, null, 'registration.waiting');
- assert_equals(registration.active, null, 'registration.active');
+ assert_equals(registration.active.scriptURL, normalizeURL(worker_url),
+ 'registration.active');
assert_not_equals(registration, newRegistration, 'New registration is different');
}, 'Registering a new script URL that fails to install does not resurrect unregistered registration');
</script>
diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/unregister-then-register.https.html b/tests/wpt/web-platform-tests/service-workers/service-worker/unregister-then-register.https.html
index 5fd2cf97095..b61608c8419 100644
--- a/tests/wpt/web-platform-tests/service-workers/service-worker/unregister-then-register.https.html
+++ b/tests/wpt/web-platform-tests/service-workers/service-worker/unregister-then-register.https.html
@@ -66,7 +66,7 @@ promise_test(function(t) {
.then(function() {
return navigator.serviceWorker.register(worker_url, { scope: scope });
})
- .then(function(registration) {
+ .then(function(newRegistration) {
assert_equals(registration.installing, null,
'installing version is null');
assert_equals(registration.waiting, null, 'waiting version is null');
diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/update-import-scripts.https.html b/tests/wpt/web-platform-tests/service-workers/service-worker/update-import-scripts.https.html
new file mode 100644
index 00000000000..e0bbb12bd67
--- /dev/null
+++ b/tests/wpt/web-platform-tests/service-workers/service-worker/update-import-scripts.https.html
@@ -0,0 +1,127 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Tests for importScripts: import scripts ignored error</title>
+<script src="/common/utils.js"></script>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="resources/test-helpers.sub.js"></script>
+<body>
+<script>
+// This file contains tests to check if imported scripts appropriately updated.
+
+const SCOPE = 'resources/simple.txt';
+
+// Create a service worker (update-worker-from-file.py), which is initially
+// |initial_worker| and |updated_worker| later.
+async function prepare_ready_update_worker_from_file(
+ t, initial_worker, updated_worker) {
+ const key = token();
+ const worker_url = `resources/update-worker-from-file.py?` +
+ `First=${initial_worker}&Second=${updated_worker}&Key=${key}`;
+ const expected_url = normalizeURL(worker_url);
+
+ const registration = await service_worker_unregister_and_register(
+ t, worker_url, SCOPE);
+ await wait_for_state(t, registration.installing, 'activated');
+ assert_equals(registration.installing, null,
+ 'prepare_ready: installing');
+ assert_equals(registration.waiting, null,
+ 'prepare_ready: waiting');
+ assert_equals(registration.active.scriptURL, expected_url,
+ 'prepare_ready: active');
+ return [registration, expected_url];
+}
+
+// Create a service worker using the script under resources/.
+async function prepare_ready_normal_worker(t, filename, additional_params='') {
+ const key = token();
+ const worker_url = `resources/${filename}?Key=${key}&${additional_params}`;
+ const expected_url = normalizeURL(worker_url);
+
+ const registration = await service_worker_unregister_and_register(
+ t, worker_url, SCOPE);
+ await wait_for_state(t, registration.installing, 'activated');
+ assert_equals(registration.installing, null,
+ 'prepare_ready: installing');
+ assert_equals(registration.waiting, null,
+ 'prepare_ready: waiting');
+ assert_equals(registration.active.scriptURL, expected_url,
+ 'prepare_ready: active');
+ return [registration, expected_url];
+}
+
+function assert_installing_and_active(registration, expected_url) {
+ assert_equals(registration.installing.scriptURL, expected_url,
+ 'assert_installing_and_active: installing');
+ assert_equals(registration.waiting, null,
+ 'assert_installing_and_active: waiting');
+ assert_equals(registration.active.scriptURL, expected_url,
+ 'assert_installing_and_active: active');
+}
+
+function assert_waiting_and_active(registration, expected_url) {
+ assert_equals(registration.installing, null,
+ 'assert_waiting_and_active: installing');
+ assert_equals(registration.waiting.scriptURL, expected_url,
+ 'assert_waiting_and_active: waiting');
+ assert_equals(registration.active.scriptURL, expected_url,
+ 'assert_waiting_and_active: active');
+}
+
+function assert_active_only(registration, expected_url) {
+ assert_equals(registration.installing, null,
+ 'assert_active_only: installing');
+ assert_equals(registration.waiting, null,
+ 'assert_active_only: waiting');
+ assert_equals(registration.active.scriptURL, expected_url,
+ 'assert_active_only: active');
+}
+
+promise_test(async t => {
+ const [registration, expected_url] =
+ await prepare_ready_update_worker_from_file(
+ t, 'empty.js', 'import-scripts-404.js');
+ t.add_cleanup(() => registration.unregister());
+
+ await promise_rejects(t, new TypeError(), registration.update());
+ assert_active_only(registration, expected_url);
+}, 'update() should fail when a new worker imports an unavailable script.');
+
+promise_test(async t => {
+ const [registration, expected_url] =
+ await prepare_ready_update_worker_from_file(
+ t, 'import-scripts-404-after-update.js', 'empty.js');
+ t.add_cleanup(() => registration.unregister());
+
+ await Promise.all([registration.update(), wait_for_update(t, registration)]);
+ assert_installing_and_active(registration, expected_url);
+
+ await wait_for_state(t, registration.installing, 'installed');
+ assert_waiting_and_active(registration, expected_url);
+
+ await wait_for_state(t, registration.waiting, 'activated');
+ assert_active_only(registration, expected_url);
+}, 'update() should succeed when the old imported script no longer exist but ' +
+ "the new worker doesn't import it.");
+
+promise_test(async t => {
+ const [registration, expected_url] = await prepare_ready_normal_worker(
+ t, 'import-scripts-404-after-update.js');
+ t.add_cleanup(() => registration.unregister());
+
+ await registration.update();
+ assert_active_only(registration, expected_url);
+}, 'update() should treat 404 on imported scripts as no change.');
+
+promise_test(async t => {
+ const [registration, expected_url] = await prepare_ready_normal_worker(
+ t, 'import-scripts-404-after-update-plus-update-worker.js',
+ `AdditionalKey=${token()}`);
+ t.add_cleanup(() => registration.unregister());
+
+ await promise_rejects(t, new TypeError(), registration.update());
+ assert_active_only(registration, expected_url);
+}, 'update() should find an update in an imported script but update() should ' +
+ 'result in failure due to missing the other imported script.');
+</script>
+</body>
diff --git a/tests/wpt/web-platform-tests/shape-detection/detected-boundingBox-read-only.html b/tests/wpt/web-platform-tests/shape-detection/detected-boundingBox-read-only.https.html
index 86b88892260..86b88892260 100644
--- a/tests/wpt/web-platform-tests/shape-detection/detected-boundingBox-read-only.html
+++ b/tests/wpt/web-platform-tests/shape-detection/detected-boundingBox-read-only.https.html
diff --git a/tests/wpt/web-platform-tests/shape-detection/detection-HTMLCanvasElement.html b/tests/wpt/web-platform-tests/shape-detection/detection-HTMLCanvasElement.https.html
index 4e9615a03d0..4e9615a03d0 100644
--- a/tests/wpt/web-platform-tests/shape-detection/detection-HTMLCanvasElement.html
+++ b/tests/wpt/web-platform-tests/shape-detection/detection-HTMLCanvasElement.https.html
diff --git a/tests/wpt/web-platform-tests/shape-detection/detection-HTMLImageElement.html b/tests/wpt/web-platform-tests/shape-detection/detection-HTMLImageElement.https.html
index 979efabdcb0..979efabdcb0 100644
--- a/tests/wpt/web-platform-tests/shape-detection/detection-HTMLImageElement.html
+++ b/tests/wpt/web-platform-tests/shape-detection/detection-HTMLImageElement.https.html
diff --git a/tests/wpt/web-platform-tests/shape-detection/detection-HTMLVideoElement.html b/tests/wpt/web-platform-tests/shape-detection/detection-HTMLVideoElement.https.html
index 7b3736d02e9..7b3736d02e9 100644
--- a/tests/wpt/web-platform-tests/shape-detection/detection-HTMLVideoElement.html
+++ b/tests/wpt/web-platform-tests/shape-detection/detection-HTMLVideoElement.https.html
diff --git a/tests/wpt/web-platform-tests/shape-detection/detection-ImageBitmap.html b/tests/wpt/web-platform-tests/shape-detection/detection-ImageBitmap.https.html
index a7157c0960e..a7157c0960e 100644
--- a/tests/wpt/web-platform-tests/shape-detection/detection-ImageBitmap.html
+++ b/tests/wpt/web-platform-tests/shape-detection/detection-ImageBitmap.https.html
diff --git a/tests/wpt/web-platform-tests/shape-detection/detection-ImageData-detached.html b/tests/wpt/web-platform-tests/shape-detection/detection-ImageData-detached.https.html
index 6b6060f089e..6b6060f089e 100644
--- a/tests/wpt/web-platform-tests/shape-detection/detection-ImageData-detached.html
+++ b/tests/wpt/web-platform-tests/shape-detection/detection-ImageData-detached.https.html
diff --git a/tests/wpt/web-platform-tests/shape-detection/detection-ImageData.html b/tests/wpt/web-platform-tests/shape-detection/detection-ImageData.https.html
index a74c2afbe1b..a74c2afbe1b 100644
--- a/tests/wpt/web-platform-tests/shape-detection/detection-ImageData.html
+++ b/tests/wpt/web-platform-tests/shape-detection/detection-ImageData.https.html
diff --git a/tests/wpt/web-platform-tests/shape-detection/detection-getSupportedFormats.html b/tests/wpt/web-platform-tests/shape-detection/detection-getSupportedFormats.https.html
index 4ccb5ab7661..4ccb5ab7661 100644
--- a/tests/wpt/web-platform-tests/shape-detection/detection-getSupportedFormats.html
+++ b/tests/wpt/web-platform-tests/shape-detection/detection-getSupportedFormats.https.html
diff --git a/tests/wpt/web-platform-tests/shape-detection/detection-on-worker.worker.js b/tests/wpt/web-platform-tests/shape-detection/detection-on-worker.https.worker.js
index 6b440af7b81..6b440af7b81 100644
--- a/tests/wpt/web-platform-tests/shape-detection/detection-on-worker.worker.js
+++ b/tests/wpt/web-platform-tests/shape-detection/detection-on-worker.https.worker.js
diff --git a/tests/wpt/web-platform-tests/shape-detection/detection-options.html b/tests/wpt/web-platform-tests/shape-detection/detection-options.https.html
index 704faf72929..704faf72929 100644
--- a/tests/wpt/web-platform-tests/shape-detection/detection-options.html
+++ b/tests/wpt/web-platform-tests/shape-detection/detection-options.https.html
diff --git a/tests/wpt/web-platform-tests/shape-detection/detection-security-test.html b/tests/wpt/web-platform-tests/shape-detection/detection-security-test.https.html
index b3f458e23ee..b3f458e23ee 100644
--- a/tests/wpt/web-platform-tests/shape-detection/detection-security-test.html
+++ b/tests/wpt/web-platform-tests/shape-detection/detection-security-test.https.html
diff --git a/tests/wpt/web-platform-tests/shape-detection/detector-same-object.html b/tests/wpt/web-platform-tests/shape-detection/detector-same-object.https.html
index 52540271d27..52540271d27 100644
--- a/tests/wpt/web-platform-tests/shape-detection/detector-same-object.html
+++ b/tests/wpt/web-platform-tests/shape-detection/detector-same-object.https.html
diff --git a/tests/wpt/web-platform-tests/shape-detection/idlharness.https.any.js b/tests/wpt/web-platform-tests/shape-detection/idlharness.https.any.js
index 8886e356baa..e7f2cc8ff86 100644
--- a/tests/wpt/web-platform-tests/shape-detection/idlharness.https.any.js
+++ b/tests/wpt/web-platform-tests/shape-detection/idlharness.https.any.js
@@ -61,4 +61,4 @@ function createTestImage() {
imgctx.fillStyle = "#0F0";
imgctx.fillRect(0, 0, 1, 1);
return image;
-}
+} \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/shape-detection/resources/shapedetection-helpers.js b/tests/wpt/web-platform-tests/shape-detection/resources/shapedetection-helpers.js
index de1e681de9f..eed448428d0 100644
--- a/tests/wpt/web-platform-tests/shape-detection/resources/shapedetection-helpers.js
+++ b/tests/wpt/web-platform-tests/shape-detection/resources/shapedetection-helpers.js
@@ -21,8 +21,8 @@ let loadChromiumResources = Promise.resolve().then(() => {
[
'/gen/layout_test_data/mojo/public/js/mojo_bindings.js',
'/gen/mojo/public/mojom/base/big_buffer.mojom.js',
- '/gen/skia/public/interfaces/image_info.mojom.js',
- '/gen/skia/public/interfaces/bitmap.mojom.js',
+ '/gen/skia/public/mojom/image_info.mojom.js',
+ '/gen/skia/public/mojom/bitmap.mojom.js',
'/gen/ui/gfx/geometry/mojom/geometry.mojom.js',
`${prefix}/barcodedetection.mojom.js`,
`${prefix}/barcodedetection_provider.mojom.js`,
diff --git a/tests/wpt/web-platform-tests/shape-detection/shapedetection-cross-origin.sub.html b/tests/wpt/web-platform-tests/shape-detection/shapedetection-cross-origin.sub.https.html
index c9d86430356..c9d86430356 100644
--- a/tests/wpt/web-platform-tests/shape-detection/shapedetection-cross-origin.sub.html
+++ b/tests/wpt/web-platform-tests/shape-detection/shapedetection-cross-origin.sub.https.html
diff --git a/tests/wpt/web-platform-tests/shape-detection/shapedetection-empty-input.html b/tests/wpt/web-platform-tests/shape-detection/shapedetection-empty-input.https.html
index 601c992ed85..601c992ed85 100644
--- a/tests/wpt/web-platform-tests/shape-detection/shapedetection-empty-input.html
+++ b/tests/wpt/web-platform-tests/shape-detection/shapedetection-empty-input.https.html
diff --git a/tests/wpt/web-platform-tests/tools/serve/serve.py b/tests/wpt/web-platform-tests/tools/serve/serve.py
index 77675dbeb32..1868b1a36e5 100644
--- a/tests/wpt/web-platform-tests/tools/serve/serve.py
+++ b/tests/wpt/web-platform-tests/tools/serve/serve.py
@@ -48,6 +48,15 @@ def replace_end(s, old, new):
return s[:-len(old)] + new
+def domains_are_distinct(a, b):
+ a_parts = a.split(".")
+ b_parts = b.split(".")
+ min_length = min(len(a_parts), len(b_parts))
+ slice_index = -1 * min_length
+
+ return a_parts[slice_index:] != b_parts[slice_index:]
+
+
class WrapperHandler(object):
__meta__ = abc.ABCMeta
@@ -798,6 +807,14 @@ class ConfigBuilder(config.ConfigBuilder):
*args,
**kwargs
)
+ with self as c:
+ browser_host = c.get("browser_host")
+ alternate_host = c.get("alternate_hosts", {}).get("alt")
+
+ if not domains_are_distinct(browser_host, alternate_host):
+ raise ValueError(
+ "Alternate host must be distinct from browser host"
+ )
def _get_ws_doc_root(self, data):
if data["ws_doc_root"] is not None:
diff --git a/tests/wpt/web-platform-tests/tools/serve/test_serve.py b/tests/wpt/web-platform-tests/tools/serve/test_serve.py
index 62a6e74f980..d6c082a9703 100644
--- a/tests/wpt/web-platform-tests/tools/serve/test_serve.py
+++ b/tests/wpt/web-platform-tests/tools/serve/test_serve.py
@@ -84,3 +84,24 @@ def test_config_json_length():
with ConfigBuilder() as c:
data = json.dumps(c.as_dict())
assert len(data) <= 0x7FFF
+
+def test_alternate_host_unspecified():
+ ConfigBuilder(browser_host="web-platform.test")
+
+@pytest.mark.parametrize("primary, alternate", [
+ ("web-platform.test", "web-platform.test"),
+ ("a.web-platform.test", "web-platform.test"),
+ ("web-platform.test", "a.web-platform.test"),
+ ("a.web-platform.test", "a.web-platform.test"),
+])
+def test_alternate_host_invalid(primary, alternate):
+ with pytest.raises(ValueError):
+ ConfigBuilder(browser_host=primary, alternate_hosts={"alt": alternate})
+
+@pytest.mark.parametrize("primary, alternate", [
+ ("web-platform.test", "not-web-platform.test"),
+ ("a.web-platform.test", "b.web-platform.test"),
+ ("web-platform-tests.dev", "web-platform-tests.live"),
+])
+def test_alternate_host_valid(primary, alternate):
+ ConfigBuilder(browser_host=primary, alternate_hosts={"alt": alternate})
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptmanifest/node.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptmanifest/node.py
index 33e9796c430..24d523f924a 100644
--- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptmanifest/node.py
+++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptmanifest/node.py
@@ -58,7 +58,8 @@ class DataNode(Node):
while index > 0 and isinstance(self.children[index - 1], DataNode):
index -= 1
for i in xrange(index):
- assert other.data != self.children[i].data
+ if other.data == self.children[i].data:
+ raise ValueError("Duplicate key %s" % self.children[i].data)
self.children.insert(index, other)
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptmanifest/parser.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptmanifest/parser.py
index a8e2bd6db2f..8f1897b08f3 100644
--- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptmanifest/parser.py
+++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptmanifest/parser.py
@@ -520,11 +520,18 @@ class Parser(object):
self.expr_builders = []
def parse(self, input):
- self.reset()
- self.token_generator = self.tokenizer.tokenize(input)
- self.consume()
- self.manifest()
- return self.tree.node
+ try:
+ self.reset()
+ self.token_generator = self.tokenizer.tokenize(input)
+ self.consume()
+ self.manifest()
+ return self.tree.node
+ except Exception as e:
+ if not isinstance(e, ParseError):
+ raise ParseError(self.tokenizer.filename,
+ self.tokenizer.line_number,
+ str(e))
+ raise
def consume(self):
self.token = self.token_generator.next()
diff --git a/tests/wpt/web-platform-tests/web-nfc/NFCReader.html b/tests/wpt/web-platform-tests/web-nfc/NFCReader.https.html
index 5a0e88433f2..3032b652edf 100644
--- a/tests/wpt/web-platform-tests/web-nfc/NFCReader.html
+++ b/tests/wpt/web-platform-tests/web-nfc/NFCReader.https.html
@@ -12,28 +12,29 @@
"use strict";
-promise_test(async t => {
- const reader = new NFCReader({url: "www.a.com"});
+function waitSyntaxErrorPromise(t, reader) {
const readerWatcher = new EventWatcher(t, reader, ["reading", "error"]);
+ const promise = readerWatcher.wait_for("error").then(event => {
+ assert_equals(event.error.name, 'SyntaxError');
+ });
+ // NFCReader#start() synchronously dispatches the syntax error event.
reader.start();
- const event = await readerWatcher.wait_for("error");
- assert_equals(event.error.name, 'SyntaxError');
+ return promise;
+}
+
+promise_test(t => {
+ const reader = new NFCReader({url: "www.a.com"});
+ return waitSyntaxErrorPromise(t, reader);
}, 'Test that NFCReader.start fails if NFCReaderOptions.url is missing components.');
-promise_test(async t => {
+promise_test(t => {
const reader = new NFCReader({url: "invalid"});
- const readerWatcher = new EventWatcher(t, reader, ["reading", "error"]);
- reader.start();
- const event = await readerWatcher.wait_for("error");
- assert_equals(event.error.name, 'SyntaxError');
+ return waitSyntaxErrorPromise(t, reader);
}, 'Test that NFCReader.start fails if NFCReaderOptions.url is invalid.');
-promise_test(async t => {
+promise_test(t => {
const reader = new NFCReader({url: "http://a.com"});
- const readerWatcher = new EventWatcher(t, reader, ["reading", "error"]);
- reader.start();
- const event = await readerWatcher.wait_for("error");
- assert_equals(event.error.name, 'SyntaxError');
+ return waitSyntaxErrorPromise(t, reader);
}, 'Test that NFCReader.start fails if NFCReaderOptions.url has wrong protocol.');
</script>
diff --git a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audiobuffer-interface/audiobuffer-copy-channel.html b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audiobuffer-interface/audiobuffer-copy-channel.html
index a1a5f3fce54..4f9a998c6de 100644
--- a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audiobuffer-interface/audiobuffer-copy-channel.html
+++ b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audiobuffer-interface/audiobuffer-copy-channel.html
@@ -137,7 +137,7 @@
;
should(() => {
buffer.copyFromChannel(x, 0, -1);
- }, '5: buffer.copyFromChannel(x, 0, -1)').throw(DOMException, 'IndexSizeError');
+ }, '5: buffer.copyFromChannel(x, 0, -1)').notThrow();
should(
() => {
buffer.copyFromChannel(x, 0, bufferLength);
@@ -192,7 +192,7 @@
.throw(DOMException, 'IndexSizeError');
should(() => {
buffer.copyToChannel(x, 0, -1);
- }, '4: buffer.copyToChannel(x, 0, -1)').throw(DOMException, 'IndexSizeError');
+ }, '4: buffer.copyToChannel(x, 0, -1)').notThrow();
should(
() => {
buffer.copyToChannel(x, 0, bufferLength);
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
index 43e5ac8e9bb..2e04ab6a3f2 100644
--- 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
@@ -57,6 +57,8 @@
const twoTrackSource = ac.createMediaStreamSource(twoTrackMediaStream);
const analyser = ac.createAnalyser();
+ // Don't do smoothing so that the frequency data changes quickly
+ analyser.smoothingTimeConstant = 0;
twoTrackSource.connect(analyser);
diff --git a/tests/wpt/web-platform-tests/webrtc-svc/RTCRtpParameters-scalability.html b/tests/wpt/web-platform-tests/webrtc-svc/RTCRtpParameters-scalability.html
new file mode 100644
index 00000000000..98a8b3da81f
--- /dev/null
+++ b/tests/wpt/web-platform-tests/webrtc-svc/RTCRtpParameters-scalability.html
@@ -0,0 +1,47 @@
+<!doctype html>
+<meta charset=utf-8>
+<title>RTCRtpParameters encodings</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/webrtc/dictionary-helper.js"></script>
+<script src="/webrtc/RTCRtpParameters-helper.js"></script>
+<script>
+ 'use strict';
+
+ // Test is based on the following editor draft:
+ // https://w3c.github.io/webrtc-svc/
+
+ // Get the first encoding in param.encodings.
+ // Asserts that param.encodings has at least one element.
+ function getFirstEncoding(param) {
+ const { encodings } = param;
+ assert_equals(encodings.length, 1);
+ return encodings[0];
+ }
+
+ promise_test(async t => {
+ const pc = new RTCPeerConnection();
+ t.add_cleanup(() => pc.close());
+ const { sender } = pc.addTransceiver('video', {
+ sendEncodings: [{scalabilityMode: 'L1T3'}],
+ });
+
+ const param = sender.getParameters();
+ const encoding = getFirstEncoding(param);
+
+ assert_equals(encoding.scalabilityMode, 'L1T3');
+
+ }, `Setting scalabilityMode to a legal value should be accepted`);
+
+ promise_test(async t => {
+ const capabilities = RTCRtpSender.getCapabilities('video');
+ var svcSupported = false;
+ for (const codec of capabilities.codecs) {
+ if ('scalabilityModes' in codec && codec.scalabilityModes.length > 0) {
+ svcSupported = true;
+ }
+ }
+ assert_true(svcSupported);
+ }, `Sender capabilities should include at least some scalability modes`);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/webxr/resources/webxr_util.js b/tests/wpt/web-platform-tests/webxr/resources/webxr_util.js
index f8c7f0f81c7..61b25991b37 100644
--- a/tests/wpt/web-platform-tests/webxr/resources/webxr_util.js
+++ b/tests/wpt/web-platform-tests/webxr/resources/webxr_util.js
@@ -74,6 +74,7 @@ function xr_session_promise_test(
let glLayer = new XRWebGLLayer(session, gl, {
compositionDisabled: session.mode == 'inline'
});
+ glLayer.context = gl;
// Session must have a baseLayer or frame requests
// will be ignored.
session.updateRenderState({
@@ -113,7 +114,6 @@ function forEachWebxrObject(callback) {
callback(window.XRView, 'XRView');
callback(window.XRViewport, 'XRViewport');
callback(window.XRViewerPose, 'XRViewerPose');
- callback(window.XRLayer, 'XRLayer');
callback(window.XRWebGLLayer, 'XRWebGLLayer');
callback(window.XRWebGLLayerInit, 'XRWebGLLayerInit');
callback(window.XRCoordinateSystem, 'XRCoordinateSystem');
@@ -138,8 +138,8 @@ let loadChromiumResources = Promise.resolve().then(() => {
'/gen/gpu/ipc/common/sync_token.mojom.js',
'/gen/ui/display/mojom/display.mojom.js',
'/gen/ui/gfx/geometry/mojom/geometry.mojom.js',
- '/gen/ui/gfx/mojo/gpu_fence_handle.mojom.js',
- '/gen/ui/gfx/mojo/transform.mojom.js',
+ '/gen/ui/gfx/mojom/gpu_fence_handle.mojom.js',
+ '/gen/ui/gfx/mojom/transform.mojom.js',
'/gen/device/vr/public/mojom/vr_service.mojom.js',
'/resources/chromium/webxr-test.js',
'/resources/testdriver.js',
diff --git a/tests/wpt/web-platform-tests/webxr/xrInputSource_gamepad_disconnect.https.html b/tests/wpt/web-platform-tests/webxr/xrInputSource_gamepad_disconnect.https.html
index a43bdaae0f9..9ec349adeb9 100644
--- a/tests/wpt/web-platform-tests/webxr/xrInputSource_gamepad_disconnect.https.html
+++ b/tests/wpt/web-platform-tests/webxr/xrInputSource_gamepad_disconnect.https.html
@@ -75,6 +75,8 @@ let testFunction = function(session, fakeDeviceController, t) {
"Expect to get a cached_input_source, iteration: " + inputChangeEvents);
assert_not_equals(cached_input_source.gamepad, null,
"Expect to have a gamepad, iteration: " + inputChangeEvents);
+ assert_equals(cached_input_source.gamepad.index, -1,
+ "WebXR Gamepad.index must be -1, iteration: " + inputChangeEvents);
assert_true(cached_input_source.gamepad.connected,
"Expect the gamepad to be connected, iteration: " + inputChangeEvents);
}
@@ -84,6 +86,8 @@ let testFunction = function(session, fakeDeviceController, t) {
"Expect to have a cached_input_source, iteration: " + inputChangeEvents);
assert_not_equals(cached_input_source.gamepad, null,
"Expect to have a gamepad on cached_input_source, iteration: " + inputChangeEvents);
+ assert_equals(cached_input_source.gamepad.index, -1,
+ "WebXR Gamepad.index must be -1, iteration: " + inputChangeEvents);
assert_false(cached_input_source.gamepad.connected,
"Expect cached gamepad to be disconnected, iteration: " + inputChangeEvents);
}
diff --git a/tests/wpt/web-platform-tests/webxr/xrInputSource_gamepad_input_registered.https.html b/tests/wpt/web-platform-tests/webxr/xrInputSource_gamepad_input_registered.https.html
index f3e0c75a128..9213657a367 100644
--- a/tests/wpt/web-platform-tests/webxr/xrInputSource_gamepad_input_registered.https.html
+++ b/tests/wpt/web-platform-tests/webxr/xrInputSource_gamepad_input_registered.https.html
@@ -52,6 +52,7 @@ let testFunction = function(session, fakeDeviceController, t) {
function assertSameObjects() {
assert_equals(session.inputSources[0], cached_input_source);
assert_equals(cached_input_source.gamepad, cached_gamepad);
+ assert_equals(cached_gamepad.index, -1);
}
// Input events and gamepad state changes (button presses, axis movements)
@@ -72,6 +73,7 @@ let testFunction = function(session, fakeDeviceController, t) {
cached_input_source = session.inputSources[0];
cached_gamepad = cached_input_source.gamepad;
t.step(() => {
+ assert_equals(cached_gamepad.index, -1);
assert_equals(cached_gamepad.buttons.length, 3);
assert_equals(cached_gamepad.axes.length, 2);
// Initially, the button should not be pressed and the axes values should
diff --git a/tests/wpt/web-platform-tests/webxr/xrWebGLLayer_framebuffer.https.html b/tests/wpt/web-platform-tests/webxr/xrWebGLLayer_framebuffer.https.html
deleted file mode 100644
index ba6b7dc0b92..00000000000
--- a/tests/wpt/web-platform-tests/webxr/xrWebGLLayer_framebuffer.https.html
+++ /dev/null
@@ -1,69 +0,0 @@
-<!DOCTYPE html>
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="resources/webxr_test_constants.js"></script>
-<script src="resources/webxr_util.js"></script>
-<canvas></canvas>
-
-<script>
-
-let immersiveTestName = "XRWebGLLayer reports a valid framebuffer for immersive sessions";
-let inlineTestName = "XRWebGLLayer reports a valid framebuffer for inline sessions";
-
-let fakeDeviceInitParams = TRACKED_IMMERSIVE_DEVICE;
-
-let testFunction = function(session, fakeDeviceController, t) {
- return session.requestReferenceSpace('viewer')
- .then((space) => new Promise((resolve) => {
- function onFrame(time, xrFrame) {
- let layer = xrFrame.session.renderState.baseLayer;
- let gl = layer.context;
-
- // The layer's framebuffer is a WebGL framebuffer
- t.step(() => {
- assert_not_equals(layer.framebuffer, null);
- assert_true(layer.framebuffer instanceof WebGLFramebuffer);
-
- // The XR framebuffer is not bound to the GL context by default.
- assert_not_equals(layer.framebuffer, gl.getParameter(gl.FRAMEBUFFER_BINDING));
- });
-
- // The XR framebuffer can be bound to the GL context.
- gl.bindFramebuffer(gl.FRAMEBUFFER, layer.framebuffer);
-
- t.step(() => {
- assert_equals(layer.framebuffer, gl.getParameter(gl.FRAMEBUFFER_BINDING));
- });
-
- // The XR framebuffer has a 2D texture
- let attachment = gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE);
-
- t.step(() => {
- assert_equals(attachment, gl.TEXTURE);
- });
-
- // Check that each viewport fits inside the framebuffer dimensions
- let viewer_pose = xrFrame.getViewerPose(space);
- for (view of viewer_pose.views) {
- let viewport = layer.getViewport(view);
-
- t.step(() => {
- assert_less_than_equal(viewport.x + viewport.width, layer.framebufferWidth);
- assert_less_than_equal(viewport.y + viewport.height, layer.framebufferHeight);
- });
- }
-
- // Finished test.
- resolve();
- }
-
- session.requestAnimationFrame(onFrame);
- }));
-};
-
-xr_session_promise_test(immersiveTestName, testFunction,
- fakeDeviceInitParams, 'immersive-vr');
-xr_session_promise_test(inlineTestName, testFunction,
- fakeDeviceInitParams, 'inline');
-
-</script>
diff --git a/tests/wpt/web-platform-tests/webxr/xrWebGLLayer_opaque_framebuffer.https.html b/tests/wpt/web-platform-tests/webxr/xrWebGLLayer_opaque_framebuffer.https.html
index ceff6251d56..37955f3988d 100644
--- a/tests/wpt/web-platform-tests/webxr/xrWebGLLayer_opaque_framebuffer.https.html
+++ b/tests/wpt/web-platform-tests/webxr/xrWebGLLayer_opaque_framebuffer.https.html
@@ -31,6 +31,10 @@ let testFunction =
}
assert_not_equals(xrFramebuffer, null);
+
+ // The XR framebuffer is not bound to the GL context by default.
+ assert_not_equals(xrFramebuffer, gl.getParameter(gl.FRAMEBUFFER_BINDING));
+
assert_greater_than(webglLayer.framebufferWidth, 0);
assert_greater_than(webglLayer.framebufferHeight, 0);