diff options
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 Binary files differnew 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 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: <body> 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 <body> 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 <body> 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 <body> 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 <body> 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 <body> 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 <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"> + <!-- + 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 <body> 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 <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"> + <!-- + 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 <body> 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 <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"> + <!-- + 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 <body> 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 <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"> + <!-- + 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 <body> 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 <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"> + <!-- + 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: <body> 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 <body> 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 <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"> + <!-- + 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 <body> 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 <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"> + <!-- + 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 <body> 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 <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"> + <!-- + 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 <body> 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 <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"> + <!-- + 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 <body> 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 <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"> + <!-- + 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 <body> 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 <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"> + <!-- + 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 <body> 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 <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"> + <!-- + 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 <body> 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 <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"> + <!-- + 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 <body> 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 <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"> + <!-- + 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 <body> 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 <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"> + <!-- + 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 <body> 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 <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"> + <!-- + 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 <body> 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 <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"> + <!-- + 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 <body> 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 <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"> + <!-- + 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 <body> 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 <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"> + <!-- + 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 <body> 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 <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"> + <!-- + 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 <body> 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 <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"> + <!-- + 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 <body> 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 <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"> + <!-- + 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 <body> 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 <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"> + <!-- + 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 <body> 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 <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"> + <!-- + 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 <body> 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">⫿</mo></math> <math displaystyle="false"><mo id="math_false">⫿</mo></math> <math displaystyle="true"><mo id="math_true">⫿</mo></math> + <math display="block" displaystyle="false"> + <mo id="math_block_false">⫿</mo> + </math> + <math display="block" displaystyle="true"> + <mo id="math_block_true">⫿</mo> + </math> <math><mstyle displaystyle="false"><mo id="mstyle_false">⫿</mo></mstyle></math> <math><mstyle displaystyle="true"><mo id="mstyle_true">⫿</mo></mstyle></math> <math displaystyle="true"><mtable><mtr><mtd><mo id="mtable_default">⫿</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">⫿</mo> + </mstyle> + </mtd> + <mtd> + <mstyle displaystyle="true"> + <mo id="cell_true">⫿</mo> + </mstyle> + </mtd> + </mtr> + </mtable> + </math> + <math> + <mfrac> + <mstyle displaystyle="true"> + <mo id="mfrac_numerator">⫿</mo> + </mstyle> + <mstyle displaystyle="true"> + <mo id="mfrac_denominator">⫿</mo> + </mstyle> + </mfrac> + </math> + <math displaystyle="true"> + <mroot> + <mstyle displaystyle="false"> + <mo id="mroot_base">⫿</mo> + </mstyle> + <mstyle displaystyle="true"> + <mo id="mroot_index">⫿</mo> + </mstyle> + </mroot> + </math> + <math displaystyle="true"> + <msub> + <mstyle displaystyle="false"> + <mo id="msub_base">⫿</mo> + </mstyle> + <mstyle displaystyle="true"> + <mo id="msub_subscript">⫿</mo> + </mstyle> + </msub> + </math> + <math displaystyle="true"> + <msup> + <mstyle displaystyle="false"> + <mo id="msup_base">⫿</mo> + </mstyle> + <mstyle displaystyle="true"> + <mo id="msup_superscript">⫿</mo> + </mstyle> + </msup> + </math> + <math displaystyle="true"> + <msubsup> + <mstyle displaystyle="false"> + <mo id="msubsup_base">⫿</mo> + </mstyle> + <mstyle displaystyle="true"> + <mo id="msubsup_subscript">⫿</mo> + </mstyle> + <mstyle displaystyle="true"> + <mo id="msubsup_superscript">⫿</mo> + </mstyle> + </msubsup> + </math> + <math displaystyle="true"> + <mmultiscripts> + <mstyle displaystyle="false"> + <mo id="mmultiscripts_base">⫿</mo> + </mstyle> + <mstyle displaystyle="true"> + <mo id="mmultiscripts_subscript">⫿</mo> + </mstyle> + <mstyle displaystyle="true"> + <mo id="mmultiscripts_superscript">⫿</mo> + </mstyle> + <mprescripts/> + <mstyle displaystyle="true"> + <mo id="mmultiscripts_presubscript">⫿</mo> + </mstyle> + <mstyle displaystyle="true"> + <mo id="mmultiscripts_presuperscript">⫿</mo> + </mstyle> + </mmultiscripts> + </math> + <math displaystyle="true"> + <munder> + <mstyle displaystyle="false"> + <mo id="munder_base">⫿</mo> + </mstyle> + <mstyle displaystyle="true"> + <mo id="munder_underscript">⫿</mo> + </mstyle> + </munder> + </math> + <math displaystyle="true"> + <mover> + <mstyle displaystyle="false"> + <mo id="mover_base">⫿</mo> + </mstyle> + <mstyle displaystyle="true"> + <mo id="mover_overscript">⫿</mo> + </mstyle> + </mover> + </math> + <math displaystyle="true"> + <munderover> + <mstyle displaystyle="false"> + <mo id="munderover_base">⫿</mo> + </mstyle> + <mstyle displaystyle="true"> + <mo id="munderover_underscript">⫿</mo> + </mstyle> + <mstyle displaystyle="true"> + <mo id="munderover_overscript">⫿</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); |