diff options
author | bors-servo <lbergstrom+bors@mozilla.com> | 2019-10-04 01:26:34 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-10-04 01:26:34 -0400 |
commit | 1ab4dd135121291d838b0b764617f7aaa865cb90 (patch) | |
tree | a0cd579b111f1bb7e35d4dee7804e35cdf6bd85c | |
parent | bbc94d256c65402afd435c17a3f6c6aaf021342f (diff) | |
parent | 555167ffdb0067e0b2491a255e0ea7d61f0ad7a8 (diff) | |
download | servo-1ab4dd135121291d838b0b764617f7aaa865cb90.tar.gz servo-1ab4dd135121291d838b0b764617f7aaa865cb90.zip |
Auto merge of #24358 - servo-wpt-sync:wpt_update_03-10-2019, r=servo-wpt-sync
Sync WPT with upstream (03-10-2019)
Automated downstream sync of changes from upstream as of 03-10-2019.
[no-wpt-sync]
r? @servo-wpt-sync
<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/24358)
<!-- Reviewable:end -->
141 files changed, 3097 insertions, 1282 deletions
diff --git a/tests/wpt/metadata/FileAPI/url/url-in-tags-revoke.window.js.ini b/tests/wpt/metadata/FileAPI/url/url-in-tags-revoke.window.js.ini index 76b398963ae..a9e46713244 100644 --- a/tests/wpt/metadata/FileAPI/url/url-in-tags-revoke.window.js.ini +++ b/tests/wpt/metadata/FileAPI/url/url-in-tags-revoke.window.js.ini @@ -7,7 +7,7 @@ expected: FAIL [Opening a blob URL in a new window immediately before revoking it works.] - expected: FAIL + expected: TIMEOUT [Opening a blob URL in a noopener about:blank window immediately before revoking it works.] expected: FAIL diff --git a/tests/wpt/metadata/MANIFEST.json b/tests/wpt/metadata/MANIFEST.json index 7182b446c23..30fa6ef6cc5 100644 --- a/tests/wpt/metadata/MANIFEST.json +++ b/tests/wpt/metadata/MANIFEST.json @@ -76551,6 +76551,18 @@ {} ] ], + "css/CSS2/positioning/abspos-block-level-001.html": [ + [ + "css/CSS2/positioning/abspos-block-level-001.html", + [ + [ + "/css/CSS2/positioning/abspos-block-level-001-ref.html", + "==" + ] + ], + {} + ] + ], "css/CSS2/positioning/abspos-containing-block-001.xht": [ [ "css/CSS2/positioning/abspos-containing-block-001.xht", @@ -80091,6 +80103,18 @@ {} ] ], + "css/CSS2/positioning/toogle-abspos-on-relpos-inline-child.html": [ + [ + "css/CSS2/positioning/toogle-abspos-on-relpos-inline-child.html", + [ + [ + "/css/CSS2/reference/ref-filled-green-100px-square.xht", + "==" + ] + ], + {} + ] + ], "css/CSS2/positioning/top-004.xht": [ [ "css/CSS2/positioning/top-004.xht", @@ -143633,9 +143657,9 @@ {} ] ], - "css/css-tables/calc-percent-plus-0px.html": [ + "css/css-tables/calc-percent-plus-0px-auto.html": [ [ - "css/css-tables/calc-percent-plus-0px.html", + "css/css-tables/calc-percent-plus-0px-auto.html", [ [ "/css/css-tables/calc-percent-plus-0px-ref.html", @@ -143645,6 +143669,18 @@ {} ] ], + "css/css-tables/calc-percent-plus-0px-fixed.html": [ + [ + "css/css-tables/calc-percent-plus-0px-fixed.html", + [ + [ + "/css/css-tables/calc-percent-plus-0px-fixed-ref.html", + "==" + ] + ], + {} + ] + ], "css/css-tables/dynamic-table-cell-height.html": [ [ "css/css-tables/dynamic-table-cell-height.html", @@ -145078,7 +145114,7 @@ "css/css-text/hyphens/hyphens-out-of-flow-001.html", [ [ - "/css/css-text/hyphens/reference/hyphens-span-001-ref.html", + "/css/css-text/hyphens/reference/hyphens-out-of-flow-001-ref.html", "==" ] ], @@ -185135,6 +185171,18 @@ {} ] ], + "css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-align-self-baseline-horiz-008.xhtml": [ + [ + "css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-align-self-baseline-horiz-008.xhtml", + [ + [ + "/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-align-self-baseline-horiz-008-ref.xhtml", + "==" + ] + ], + {} + ] + ], "css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-align-self-horiz-001-block.xhtml": [ [ "css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-align-self-horiz-001-block.xhtml", @@ -197711,6 +197759,18 @@ {} ] ], + "css/vendor-imports/mozilla/mozilla-central-reftests/will-change/will-change-fixpos-cb-translate-1.html": [ + [ + "css/vendor-imports/mozilla/mozilla-central-reftests/will-change/will-change-fixpos-cb-translate-1.html", + [ + [ + "/css/vendor-imports/mozilla/mozilla-central-reftests/will-change/green-square-100-by-100-offset-ref.html", + "==" + ] + ], + {} + ] + ], "css/vendor-imports/mozilla/mozilla-central-reftests/will-change/will-change-stacking-context-clip-path-1.html": [ [ "css/vendor-imports/mozilla/mozilla-central-reftests/will-change/will-change-stacking-context-clip-path-1.html", @@ -197843,6 +197903,18 @@ {} ] ], + "css/vendor-imports/mozilla/mozilla-central-reftests/will-change/will-change-stacking-context-translate-1.html": [ + [ + "css/vendor-imports/mozilla/mozilla-central-reftests/will-change/will-change-stacking-context-translate-1.html", + [ + [ + "/css/vendor-imports/mozilla/mozilla-central-reftests/will-change/green-square-100-by-100-ref.html", + "==" + ] + ], + {} + ] + ], "css/vendor-imports/mozilla/mozilla-central-reftests/will-change/will-change-stacking-context-z-index-1.html": [ [ "css/vendor-imports/mozilla/mozilla-central-reftests/will-change/will-change-stacking-context-z-index-1.html", @@ -202983,6 +203055,18 @@ {} ] ], + "mathml/presentation-markup/fractions/frac-legacy-bevelled-attribute.tentative.html": [ + [ + "mathml/presentation-markup/fractions/frac-legacy-bevelled-attribute.tentative.html", + [ + [ + "/mathml/presentation-markup/fractions/frac-legacy-bevelled-attribute.tentative-ref.html", + "==" + ] + ], + {} + ] + ], "mathml/presentation-markup/fractions/frac-linethickness-001.html": [ [ "mathml/presentation-markup/fractions/frac-linethickness-001.html", @@ -203151,6 +203235,18 @@ {} ] ], + "mathml/presentation-markup/mrow/legacy-mfenced-element-001.html": [ + [ + "mathml/presentation-markup/mrow/legacy-mfenced-element-001.html", + [ + [ + "/mathml/presentation-markup/mrow/legacy-mfenced-element-001-ref.html", + "==" + ] + ], + {} + ] + ], "mathml/presentation-markup/mrow/legacy-mrow-like-elements-002.html": [ [ "mathml/presentation-markup/mrow/legacy-mrow-like-elements-002.html", @@ -203283,6 +203379,18 @@ {} ] ], + "mathml/presentation-markup/scripts/subsup-legacy-scriptshift-attributes-001.tentative.html": [ + [ + "mathml/presentation-markup/scripts/subsup-legacy-scriptshift-attributes-001.tentative.html", + [ + [ + "/mathml/presentation-markup/scripts/subsup-legacy-scriptshift-attributes-001.tentative-ref.html", + "==" + ] + ], + {} + ] + ], "mathml/presentation-markup/scripts/underover-legacy-align-attribute-001.html": [ [ "mathml/presentation-markup/scripts/underover-legacy-align-attribute-001.html", @@ -210165,10 +210273,7 @@ ".github/META.yml": [ [] ], - ".github/workflows/pull_request.yml": [ - [] - ], - ".github/workflows/push-build-publish-documentation-website.yml": [ + ".github/workflows/build-publish-documentation-website.yml": [ [] ], ".github/workflows/push-build-release-manifest.yml": [ @@ -227607,6 +227712,9 @@ "cookie-store/serviceworker_cookieStore_subscriptions_mismatch.js": [ [] ], + "cookie-store/serviceworker_cookieStore_subscriptions_reset.sub.js": [ + [] + ], "cookies/META.yml": [ [] ], @@ -236304,6 +236412,9 @@ "css/CSS2/positioning/abspos-028-ref.xht": [ [] ], + "css/CSS2/positioning/abspos-block-level-001-ref.html": [ + [] + ], "css/CSS2/positioning/abspos-containing-block-001-ref.xht": [ [] ], @@ -253542,6 +253653,9 @@ "css/css-tables/border-conflict-resolution-ref.html": [ [] ], + "css/css-tables/calc-percent-plus-0px-fixed-ref.html": [ + [] + ], "css/css-tables/calc-percent-plus-0px-ref.html": [ [] ], @@ -253857,6 +253971,9 @@ "css/css-text/hyphens/reference/hyphens-auto-001-ref.html": [ [] ], + "css/css-text/hyphens/reference/hyphens-out-of-flow-001-ref.html": [ + [] + ], "css/css-text/hyphens/reference/hyphens-overflow-001-ref.html": [ [] ], @@ -261546,6 +261663,9 @@ "css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-align-self-baseline-horiz-007-ref.xhtml": [ [] ], + "css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-align-self-baseline-horiz-008-ref.xhtml": [ + [] + ], "css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-align-self-horiz-001-ref.xhtml": [ [] ], @@ -272136,6 +272256,9 @@ "html/semantics/scripting-1/the-script-element/is-script-goal.js": [ [] ], + "html/semantics/scripting-1/the-script-element/json-module/README.md": [ + [] + ], "html/semantics/scripting-1/the-script-element/json-module/array.json": [ [] ], @@ -274239,6 +274362,9 @@ "mathml/presentation-markup/fractions/frac-default-padding-ref.html": [ [] ], + "mathml/presentation-markup/fractions/frac-legacy-bevelled-attribute.tentative-ref.html": [ + [] + ], "mathml/presentation-markup/fractions/frac-linethickness-001-ref.html": [ [] ], @@ -274281,6 +274407,9 @@ "mathml/presentation-markup/menclose/legacy-menclose-radical-notation-ref.html": [ [] ], + "mathml/presentation-markup/mrow/legacy-mfenced-element-001-ref.html": [ + [] + ], "mathml/presentation-markup/mrow/legacy-mrow-like-elements-002-ref.html": [ [] ], @@ -274314,6 +274443,9 @@ "mathml/presentation-markup/radicals/radical-rendering-from-in-flow-ref.html": [ [] ], + "mathml/presentation-markup/scripts/subsup-legacy-scriptshift-attributes-001.tentative-ref.html": [ + [] + ], "mathml/presentation-markup/scripts/underover-legacy-align-attribute-001-ref.html": [ [] ], @@ -275532,6 +275664,9 @@ "native-file-system/script-tests/FileSystemDirectoryHandle-getDirectory.js": [ [] ], + "native-file-system/script-tests/FileSystemDirectoryHandle-getEntries.js": [ + [] + ], "native-file-system/script-tests/FileSystemDirectoryHandle-getFile.js": [ [] ], @@ -281694,12 +281829,6 @@ "tools/ci/tests/test_run_tc.py": [ [] ], - "tools/ci/tests/test_update_pr_preview.py": [ - [] - ], - "tools/ci/update_pr_preview.py": [ - [] - ], "tools/ci/website_build.sh": [ [] ], @@ -281712,6 +281841,12 @@ "tools/docker/Dockerfile": [ [] ], + "tools/docker/Dockerfile.webkitgtk": [ + [] + ], + "tools/docker/README.md": [ + [] + ], "tools/docker/__init__.py": [ [] ], @@ -288840,6 +288975,9 @@ "webxr/resources/webxr_util.js": [ [] ], + "webxr/webxr_feature_policy.https.html.headers": [ + [] + ], "workers/META.yml": [ [] ], @@ -308441,6 +308579,12 @@ } ] ], + "compat/webkit-gradient-comma.html": [ + [ + "compat/webkit-gradient-comma.html", + {} + ] + ], "compat/webkit-radial-gradient-radii.html": [ [ "compat/webkit-radial-gradient-radii.html", @@ -311896,6 +312040,12 @@ {} ] ], + "cookie-store/serviceworker_cookieStore_subscriptions_reset.tentative.https.html": [ + [ + "cookie-store/serviceworker_cookieStore_subscriptions_reset.tentative.https.html", + {} + ] + ], "cookies/cookie-enabled-noncookie-frame.html": [ [ "cookies/cookie-enabled-noncookie-frame.html", @@ -313831,6 +313981,18 @@ {} ] ], + "css/css-backgrounds/animations/background-position-x-interpolation.html": [ + [ + "css/css-backgrounds/animations/background-position-x-interpolation.html", + {} + ] + ], + "css/css-backgrounds/animations/background-position-y-interpolation.html": [ + [ + "css/css-backgrounds/animations/background-position-y-interpolation.html", + {} + ] + ], "css/css-backgrounds/animations/background-size-interpolation.html": [ [ "css/css-backgrounds/animations/background-size-interpolation.html", @@ -313879,6 +314041,12 @@ {} ] ], + "css/css-backgrounds/animations/box-shadow-interpolation.html": [ + [ + "css/css-backgrounds/animations/box-shadow-interpolation.html", + {} + ] + ], "css/css-backgrounds/background-331.html": [ [ "css/css-backgrounds/background-331.html", @@ -319855,6 +320023,12 @@ {} ] ], + "css/css-overflow/overflow-padding.html": [ + [ + "css/css-overflow/overflow-padding.html", + {} + ] + ], "css/css-overflow/overflow-shorthand-001.html": [ [ "css/css-overflow/overflow-shorthand-001.html", @@ -321031,6 +321205,12 @@ {} ] ], + "css/css-scroll-anchoring/scroll-padding-affects-anchoring.html": [ + [ + "css/css-scroll-anchoring/scroll-padding-affects-anchoring.html", + {} + ] + ], "css/css-scroll-anchoring/start-edge-in-block-layout-direction.html": [ [ "css/css-scroll-anchoring/start-edge-in-block-layout-direction.html", @@ -322603,6 +322783,12 @@ {} ] ], + "css/css-tables/auto-layout-calc-width-001.html": [ + [ + "css/css-tables/auto-layout-calc-width-001.html", + {} + ] + ], "css/css-tables/border-spacing-included-in-sizes-001.html": [ [ "css/css-tables/border-spacing-included-in-sizes-001.html", @@ -323809,12 +323995,6 @@ {} ] ], - "css/css-text/i18n/css3-text-line-break-baspglwj-094.html": [ - [ - "css/css-text/i18n/css3-text-line-break-baspglwj-094.html", - {} - ] - ], "css/css-text/i18n/css3-text-line-break-baspglwj-095.html": [ [ "css/css-text/i18n/css3-text-line-break-baspglwj-095.html", @@ -325009,6 +325189,12 @@ {} ] ], + "css/css-text/white-space/trailing-space-position-001.html": [ + [ + "css/css-text/white-space/trailing-space-position-001.html", + {} + ] + ], "css/css-text/white-space/white-space-collapse-000.html": [ [ "css/css-text/white-space/white-space-collapse-000.html", @@ -329715,6 +329901,18 @@ {} ] ], + "css/cssom-view/table-border-collapse-client-width-height.html": [ + [ + "css/cssom-view/table-border-collapse-client-width-height.html", + {} + ] + ], + "css/cssom-view/table-border-separate-client-width-height.html": [ + [ + "css/cssom-view/table-border-separate-client-width-height.html", + {} + ] + ], "css/cssom-view/table-client-props.html": [ [ "css/cssom-view/table-client-props.html", @@ -329733,6 +329931,12 @@ {} ] ], + "css/cssom-view/table-with-border-client-width-height.html": [ + [ + "css/cssom-view/table-with-border-client-width-height.html", + {} + ] + ], "css/cssom-view/ttwf-js-cssomview-getclientrects-length.html": [ [ "css/cssom-view/ttwf-js-cssomview-getclientrects-length.html", @@ -353607,9 +353811,9 @@ {} ] ], - "html/rendering/replaced-elements/attributes-for-embedded-content-and-images/img-aspect-ratio.tentative.html": [ + "html/rendering/replaced-elements/attributes-for-embedded-content-and-images/img-aspect-ratio.html": [ [ - "html/rendering/replaced-elements/attributes-for-embedded-content-and-images/img-aspect-ratio.tentative.html", + "html/rendering/replaced-elements/attributes-for-embedded-content-and-images/img-aspect-ratio.html", {} ] ], @@ -360031,21 +360235,21 @@ {} ] ], - "html/semantics/scripting-1/the-script-element/json-module/invalid-content-type.html": [ + "html/semantics/scripting-1/the-script-element/json-module/invalid-content-type.tentative.html": [ [ - "html/semantics/scripting-1/the-script-element/json-module/invalid-content-type.html", + "html/semantics/scripting-1/the-script-element/json-module/invalid-content-type.tentative.html", {} ] ], - "html/semantics/scripting-1/the-script-element/json-module/module.html": [ + "html/semantics/scripting-1/the-script-element/json-module/module.tentative.html": [ [ - "html/semantics/scripting-1/the-script-element/json-module/module.html", + "html/semantics/scripting-1/the-script-element/json-module/module.tentative.html", {} ] ], - "html/semantics/scripting-1/the-script-element/json-module/non-object.any.js": [ + "html/semantics/scripting-1/the-script-element/json-module/non-object.tentative.any.js": [ [ - "html/semantics/scripting-1/the-script-element/json-module/non-object.any.html", + "html/semantics/scripting-1/the-script-element/json-module/non-object.tentative.any.html", { "script_metadata": [ [ @@ -360056,7 +360260,7 @@ } ], [ - "html/semantics/scripting-1/the-script-element/json-module/non-object.any.serviceworker.html", + "html/semantics/scripting-1/the-script-element/json-module/non-object.tentative.any.serviceworker.html", { "script_metadata": [ [ @@ -360067,7 +360271,7 @@ } ], [ - "html/semantics/scripting-1/the-script-element/json-module/non-object.any.sharedworker.html", + "html/semantics/scripting-1/the-script-element/json-module/non-object.tentative.any.sharedworker.html", { "script_metadata": [ [ @@ -360078,7 +360282,7 @@ } ], [ - "html/semantics/scripting-1/the-script-element/json-module/non-object.any.worker.html", + "html/semantics/scripting-1/the-script-element/json-module/non-object.tentative.any.worker.html", { "script_metadata": [ [ @@ -360089,21 +360293,21 @@ } ] ], - "html/semantics/scripting-1/the-script-element/json-module/parse-error.html": [ + "html/semantics/scripting-1/the-script-element/json-module/parse-error.tentative.html": [ [ - "html/semantics/scripting-1/the-script-element/json-module/parse-error.html", + "html/semantics/scripting-1/the-script-element/json-module/parse-error.tentative.html", {} ] ], - "html/semantics/scripting-1/the-script-element/json-module/utf8.html": [ + "html/semantics/scripting-1/the-script-element/json-module/utf8.tentative.html": [ [ - "html/semantics/scripting-1/the-script-element/json-module/utf8.html", + "html/semantics/scripting-1/the-script-element/json-module/utf8.tentative.html", {} ] ], - "html/semantics/scripting-1/the-script-element/json-module/valid-content-type.html": [ + "html/semantics/scripting-1/the-script-element/json-module/valid-content-type.tentative.html": [ [ - "html/semantics/scripting-1/the-script-element/json-module/valid-content-type.html", + "html/semantics/scripting-1/the-script-element/json-module/valid-content-type.tentative.html", {} ] ], @@ -370586,6 +370790,31 @@ } ] ], + "native-file-system/native_FileSystemDirectoryHandle-getEntries.tentative.https.manual.window.js": [ + [ + "native-file-system/native_FileSystemDirectoryHandle-getEntries.tentative.https.manual.window.html", + { + "script_metadata": [ + [ + "script", + "/resources/testdriver.js" + ], + [ + "script", + "resources/test-helpers.js" + ], + [ + "script", + "resources/native-fs-test-helpers.js" + ], + [ + "script", + "script-tests/FileSystemDirectoryHandle-getEntries.js" + ] + ] + } + ] + ], "native-file-system/native_FileSystemDirectoryHandle-getFile.tentative.https.manual.window.js": [ [ "native-file-system/native_FileSystemDirectoryHandle-getFile.tentative.https.manual.window.html", @@ -370701,6 +370930,46 @@ } ] ], + "native-file-system/sandboxed_FileSystemDirectoryHandle-getEntries.tentative.https.any.js": [ + [ + "native-file-system/sandboxed_FileSystemDirectoryHandle-getEntries.tentative.https.any.html", + { + "script_metadata": [ + [ + "script", + "resources/test-helpers.js" + ], + [ + "script", + "resources/sandboxed-fs-test-helpers.js" + ], + [ + "script", + "script-tests/FileSystemDirectoryHandle-getEntries.js" + ] + ] + } + ], + [ + "native-file-system/sandboxed_FileSystemDirectoryHandle-getEntries.tentative.https.any.worker.html", + { + "script_metadata": [ + [ + "script", + "resources/test-helpers.js" + ], + [ + "script", + "resources/sandboxed-fs-test-helpers.js" + ], + [ + "script", + "script-tests/FileSystemDirectoryHandle-getEntries.js" + ] + ] + } + ] + ], "native-file-system/sandboxed_FileSystemDirectoryHandle-getFile.tentative.https.any.js": [ [ "native-file-system/sandboxed_FileSystemDirectoryHandle-getFile.tentative.https.any.html", @@ -405305,6 +405574,12 @@ {} ] ], + "svg/animations/interval-restart-events.html": [ + [ + "svg/animations/interval-restart-events.html", + {} + ] + ], "svg/animations/keysplines-x-limits.html": [ [ "svg/animations/keysplines-x-limits.html", @@ -418752,6 +419027,100 @@ {} ] ], + "websockets/stream-tentative/abort.any.js": [ + [ + "websockets/stream-tentative/abort.any.html", + { + "script_metadata": [ + [ + "script", + "../websocket.sub.js" + ], + [ + "script", + "resources/url-constants.js" + ], + [ + "script", + "/common/utils.js" + ], + [ + "global", + "window,worker" + ] + ] + } + ], + [ + "websockets/stream-tentative/abort.any.serviceworker.html", + { + "script_metadata": [ + [ + "script", + "../websocket.sub.js" + ], + [ + "script", + "resources/url-constants.js" + ], + [ + "script", + "/common/utils.js" + ], + [ + "global", + "window,worker" + ] + ] + } + ], + [ + "websockets/stream-tentative/abort.any.sharedworker.html", + { + "script_metadata": [ + [ + "script", + "../websocket.sub.js" + ], + [ + "script", + "resources/url-constants.js" + ], + [ + "script", + "/common/utils.js" + ], + [ + "global", + "window,worker" + ] + ] + } + ], + [ + "websockets/stream-tentative/abort.any.worker.html", + { + "script_metadata": [ + [ + "script", + "../websocket.sub.js" + ], + [ + "script", + "resources/url-constants.js" + ], + [ + "script", + "/common/utils.js" + ], + [ + "global", + "window,worker" + ] + ] + } + ] + ], "websockets/stream-tentative/backpressure-receive.any.js": [ [ "websockets/stream-tentative/backpressure-receive.any.html", @@ -420467,6 +420836,12 @@ {} ] ], + "webxr/getViewerPose_emulatedPosition.https.html": [ + [ + "webxr/getViewerPose_emulatedPosition.https.html", + {} + ] + ], "webxr/idlharness.https.window.js": [ [ "webxr/idlharness.https.window.html", @@ -420526,6 +420901,12 @@ {} ] ], + "webxr/webxr_feature_policy.https.html": [ + [ + "webxr/webxr_feature_policy.https.html", + {} + ] + ], "webxr/xrBoundedReferenceSpace_updates.https.html": [ [ "webxr/xrBoundedReferenceSpace_updates.https.html", @@ -420640,6 +421021,12 @@ {} ] ], + "webxr/xrInputSource_emulatedPosition.https.html": [ + [ + "webxr/xrInputSource_emulatedPosition.https.html", + {} + ] + ], "webxr/xrInputSource_gamepad_disconnect.https.html": [ [ "webxr/xrInputSource_gamepad_disconnect.https.html", @@ -446479,15 +446866,11 @@ "support" ], ".github/META.yml": [ - "06083d1cd0ec0085ec9b4acbab4baad9aa133a33", - "support" - ], - ".github/workflows/pull_request.yml": [ - "81a53c67f4b11ca3c7ddde916dcebb35cf83a021", + "19878fa5991f4828d18df719f2eb51566fd4dfcb", "support" ], - ".github/workflows/push-build-publish-documentation-website.yml": [ - "f6a1401a3dd161168d3869dd143527969e8300c1", + ".github/workflows/build-publish-documentation-website.yml": [ + "c368b8a117ae9baa2ec3aa1c87ff9fb80fd3c745", "support" ], ".github/workflows/push-build-release-manifest.yml": [ @@ -454655,7 +455038,7 @@ "reftest" ], "animation-worklet/worklet-animation-with-scroll-timeline-and-display-none.https.html": [ - "6f981854d38877d42b1c7b63afdb9ec989a32d42", + "7dea4609b942c9b3fa00313ca9c1e4e56b83a537", "reftest" ], "animation-worklet/worklet-animation-with-scroll-timeline-and-overflow-hidden-ref.html": [ @@ -454679,7 +455062,7 @@ "reftest" ], "animation-worklet/worklet-animation-with-scroll-timeline.https.html": [ - "000517162af20406e39831afc0b6cefa0b367f2c", + "7006f8f84a695924c1d341f2725c05b4676c10e1", "reftest" ], "animation-worklet/worklet-animation-without-target.https.html": [ @@ -458442,6 +458825,10 @@ "06e728342cdb63a72b420423b40b6e32ae3e2162", "reftest" ], + "compat/webkit-gradient-comma.html": [ + "b288a9a43fe8eba26a4ef37bd5439cbe75047885", + "testharness" + ], "compat/webkit-linear-gradient-line-bottom.html": [ "21e1c8948bfedb697e64627d7c2372163cd5bb28", "reftest" @@ -458459,7 +458846,7 @@ "reftest" ], "compat/webkit-radial-gradient-radii.html": [ - "bff414a44e2aeff1276d99ca015288142de09f4e", + "f34e352318596ccd036394665a0c7a6c9cb7db01", "testharness" ], "compat/webkit-text-fill-color-currentColor.html": [ @@ -479226,6 +479613,14 @@ "b8ad46a57101386bd84b391953e76228249eff29", "testharness" ], + "cookie-store/serviceworker_cookieStore_subscriptions_reset.sub.js": [ + "7fc8eabc5701e2e7bb0edacb57bbf90783ba10db", + "support" + ], + "cookie-store/serviceworker_cookieStore_subscriptions_reset.tentative.https.html": [ + "a0923548c78d5b25aa9efe521aa5f341166fef9c", + "testharness" + ], "cookies/META.yml": [ "d0743949b6a122d8bd0adf7b1ed0181f0c51429d", "support" @@ -517478,6 +517873,14 @@ "acff4106f1cea9fe9db4f5124966e779be6477bc", "reftest" ], + "css/CSS2/positioning/abspos-block-level-001-ref.html": [ + "58f605dc7475d85e9cf03e2d1be55aab3bb200cf", + "support" + ], + "css/CSS2/positioning/abspos-block-level-001.html": [ + "c55fb3d3947b5b5742af07f39b0fd39d7bc1a80a", + "reftest" + ], "css/CSS2/positioning/abspos-containing-block-001-ref.xht": [ "238d2860c33d06ff6d129d119fb47951c2dc0eb6", "support" @@ -519274,6 +519677,10 @@ "59843ae54b64f6ce4f7e616d4be491c911ea84cf", "support" ], + "css/CSS2/positioning/toogle-abspos-on-relpos-inline-child.html": [ + "7ea2a25bf5d79aa4f2195b243831681efc2867c4", + "reftest" + ], "css/CSS2/positioning/top-004.xht": [ "243153bdc8f67feaeccc1a5d37bc850991dec8b6", "reftest" @@ -542714,6 +543121,14 @@ "c6b84ca2aef0a8222b4b4c5713d1998beff799db", "testharness" ], + "css/css-backgrounds/animations/background-position-x-interpolation.html": [ + "a66c1ea078b98cb7eb03fb237ac88efc53bec41d", + "testharness" + ], + "css/css-backgrounds/animations/background-position-y-interpolation.html": [ + "c272a71226f7072d36c6460484b4943a62ca30e4", + "testharness" + ], "css/css-backgrounds/animations/background-size-interpolation.html": [ "f6a480c7bd2ccc4a6c46fa2eade5e7231fab4938", "testharness" @@ -542746,6 +543161,10 @@ "11f92f41652a9f1b167c5a399849d1e1e61c4df7", "testharness" ], + "css/css-backgrounds/animations/box-shadow-interpolation.html": [ + "d99e08faf137e05c48ad68938a83666fd3473a8f", + "testharness" + ], "css/css-backgrounds/background-331.html": [ "121623453a61599fcc494a9582c31a79f78cfeb1", "testharness" @@ -564667,7 +565086,7 @@ "testharness" ], "css/css-grid/grid-definition/grid-inline-support-grid-template-areas-001.html": [ - "d647c2613af97afd9bc3bc92dc437b7a744a319a", + "1573fa496f62335048050f6ee8168d31dce71329", "testharness" ], "css/css-grid/grid-definition/grid-inline-support-grid-template-columns-rows-001.html": [ @@ -564679,7 +565098,7 @@ "testharness" ], "css/css-grid/grid-definition/grid-inline-support-repeat-001.html": [ - "68ca0bd9b7cf7ca8e5e756a3ca2de7f4e719302f", + "465e5e8cd826306ce2c5b6661e086df6eb9e96a1", "testharness" ], "css/css-grid/grid-definition/grid-inline-template-columns-rows-resolved-values-001.html": [ @@ -564727,7 +565146,7 @@ "testharness" ], "css/css-grid/grid-definition/grid-support-repeat-001.html": [ - "78a44e287a7f92cbdd08816838a6b432ae19c689", + "c2c8be0c5910f6bb0b16f33ac536955b63cca0c3", "testharness" ], "css/css-grid/grid-definition/grid-support-repeat-002.html": [ @@ -571126,6 +571545,10 @@ "4df7b6389432cc6c65bae3fe3b5b9c2f00ba7bde", "testharness" ], + "css/css-overflow/overflow-padding.html": [ + "963192f6f431cd073f5d8fddc2294259ad62962b", + "testharness" + ], "css/css-overflow/overflow-shorthand-001.html": [ "f425636c3bb4297e4e6564d1c2629dc10dde5607", "testharness" @@ -572595,7 +573018,7 @@ "testharness" ], "css/css-position/position-absolute-replaced-minmax.html": [ - "ff6757aeea32a875f0f7a7a7d38cf7da5bc1066c", + "a5c0d516472b9a2a1be4d391f38cac412e6aa7d1", "testharness" ], "css/css-position/position-fixed-at-bottom-right-on-viewport.html": [ @@ -576206,6 +576629,10 @@ "b36b211f586782a7616c222fce04aa98817f35c4", "testharness" ], + "css/css-scroll-anchoring/scroll-padding-affects-anchoring.html": [ + "e2c8741d88914d7346148bf11831889c5d3dcdd7", + "testharness" + ], "css/css-scroll-anchoring/start-edge-in-block-layout-direction.html": [ "638993f079d09c5a0a7476023242ed46f7850d47", "testharness" @@ -578850,6 +579277,10 @@ "99d2cfc239fb15f26c58bc1da7c258ae3d6d9fbc", "reftest" ], + "css/css-tables/auto-layout-calc-width-001.html": [ + "dbd35d8af1761428b2d8c8c5db9c1c9e4da0872e", + "testharness" + ], "css/css-tables/border-collapse-double-border-notref.html": [ "8f4222211d76fb8f6be9cb61a7b9979a3b7b89a7", "support" @@ -578890,14 +579321,22 @@ "188257af443a235e8ad5d5804058cbf0bcc07a94", "testharness" ], - "css/css-tables/calc-percent-plus-0px-ref.html": [ - "7dc722cc2e7bded73e74b44d7b8fa6f7c3af20f1", + "css/css-tables/calc-percent-plus-0px-auto.html": [ + "ec6e9ccfdd702963a8c1b35c8c6c64576189de77", + "reftest" + ], + "css/css-tables/calc-percent-plus-0px-fixed-ref.html": [ + "ec862ff1e08e96aff25237f56682dc0df830e39a", "support" ], - "css/css-tables/calc-percent-plus-0px.html": [ - "6f04a2c0c62b2ec77e7bddc035b02795a968361b", + "css/css-tables/calc-percent-plus-0px-fixed.html": [ + "bcdb6721d4c9fdaca37f961ad5cfedabc85a6194", "reftest" ], + "css/css-tables/calc-percent-plus-0px-ref.html": [ + "7dc722cc2e7bded73e74b44d7b8fa6f7c3af20f1", + "support" + ], "css/css-tables/caption-side-1.html": [ "302e51ae239307a49c239bf0ad5ade17a5c9d940", "testharness" @@ -578923,7 +579362,7 @@ "testharness" ], "css/css-tables/fixed-layout-calc-width-001.html": [ - "dd70db0a7565c7377880cfc9064fcb9b03e20336", + "ac6f9fc1a96dd2325f6d435cc518b7efa0100366", "testharness" ], "css/css-tables/fixed-layout-excess-width-distribution-001.html": [ @@ -580579,7 +581018,7 @@ "reftest" ], "css/css-text/hyphens/hyphens-out-of-flow-001.html": [ - "05d78b2c6cc974eb736983d5e9e054ca7db7c95a", + "844071126b02d01a68ab2f5df098b653dcf00541", "reftest" ], "css/css-text/hyphens/hyphens-out-of-flow-002.html": [ @@ -580610,6 +581049,10 @@ "c1355d0abba28491a126533c24039cffc6ee4eb0", "support" ], + "css/css-text/hyphens/reference/hyphens-out-of-flow-001-ref.html": [ + "73394479247fc3491ba37e50ec85b8dd00f8eadc", + "support" + ], "css/css-text/hyphens/reference/hyphens-overflow-001-ref.html": [ "08d521d33960ea5d495de39ce9bb2be5fc5c29a0", "support" @@ -580927,7 +581370,7 @@ "testharness" ], "css/css-text/i18n/css3-text-line-break-baspglwj-083.html": [ - "5d389995d2ad5fea63b3bca726a154be3120a8ed", + "48f9151c45903f0f1f635d2f455031feb19fe15e", "testharness" ], "css/css-text/i18n/css3-text-line-break-baspglwj-084.html": [ @@ -580958,10 +581401,6 @@ "a7c70c559978881a3c713a74e3f3ca4acef2e575", "testharness" ], - "css/css-text/i18n/css3-text-line-break-baspglwj-094.html": [ - "a38ad72667d0423ba609be4c8f286a149ac4fcff", - "testharness" - ], "css/css-text/i18n/css3-text-line-break-baspglwj-095.html": [ "e0fcf33c5dd8621ac20b6b7ad2e5f9fa273918a7", "testharness" @@ -582843,7 +583282,7 @@ "reftest" ], "css/css-text/line-break/line-break-anywhere-002.html": [ - "ddbf554730740798b119e3e34e321c094be2742f", + "53df344ff8d90cfdad48dbc0710eca936f1fed44", "reftest" ], "css/css-text/line-break/line-break-anywhere-003.html": [ @@ -583503,11 +583942,11 @@ "testharness" ], "css/css-text/overflow-wrap/overflow-wrap-cluster-001.html": [ - "7911a1b214c04490e16418e71ff733f8f228b45c", + "797883b1478b1f6bbdae09f5a17c3f6f513d1311", "reftest" ], "css/css-text/overflow-wrap/overflow-wrap-cluster-002.html": [ - "bd5c9a60d87aaff978d45c31fe9cfd51cc8823e9", + "70349b9c9afbcfe3ddbba22b85b190da8ba0f6aa", "reftest" ], "css/css-text/overflow-wrap/overflow-wrap-min-content-size-001.html": [ @@ -583559,7 +583998,7 @@ "support" ], "css/css-text/overflow-wrap/reference/overflow-wrap-cluster-001-ref.html": [ - "5a00d7284b2b8d3c592340819599e83f0bf4c216", + "97393cc1761f950579dc0c561a3cf4988c59852b", "support" ], "css/css-text/overflow-wrap/reference/overflow-wrap-min-content-size-001-ref.html": [ @@ -583623,7 +584062,7 @@ "testharness" ], "css/css-text/parsing/letter-spacing-computed.html": [ - "9f54f9f56f4b0556697f18b6f60667d0123d828e", + "45417d1b4a83c3e0cbb6fcead8a38cd19900e64a", "testharness" ], "css/css-text/parsing/letter-spacing-invalid.html": [ @@ -583907,7 +584346,7 @@ "support" ], "css/css-text/shaping/reference/shaping-024-ref.html": [ - "2a955ae1e16c6ffce27f3dbaaa67703958647734", + "7f6cbf97a0ec1ed488531747b4a69bad96680272", "reftest_node" ], "css/css-text/shaping/reference/shaping-024-sanity-2-ref.html": [ @@ -583919,7 +584358,7 @@ "support" ], "css/css-text/shaping/reference/shaping-025-ref.html": [ - "19d45f49830a8bd4f8134367eba10d64defe25cd", + "0418c263ebc87829930e4bf9ee5ced9c19d299b3", "reftest_node" ], "css/css-text/shaping/reference/shaping-025-sanity-2-ref.html": [ @@ -584791,7 +585230,7 @@ "reftest" ], "css/css-text/text-indent/text-indent-percentage-004.html": [ - "3323e2f40732012fcb45216e6ea209475f4404d3", + "c0842687349883ac2f70c22d12cd9fa033545f42", "reftest" ], "css/css-text/text-indent/text-indent-tab-positions-001.html": [ @@ -585083,7 +585522,7 @@ "support" ], "css/css-text/text-transform/reference/text-transform-fullwidth-001-ref.xht": [ - "9525b994a8f0c296bc703b19baf91bef4f84c686", + "e8a5f1acc3cea9f84cd038b71fd6dbe16ce1c85f", "support" ], "css/css-text/text-transform/reference/text-transform-fullwidth-006-ref.html": [ @@ -585439,7 +585878,7 @@ "reftest" ], "css/css-text/text-transform/text-transform-fullwidth-001.xht": [ - "9ee7b6c42d22f9b53cfd67ab157010dbaff8db0b", + "a7fe63c83502e09b3b4d398d14c6b4122b21a51d", "reftest" ], "css/css-text/text-transform/text-transform-fullwidth-002-ref.xht": [ @@ -585831,7 +586270,7 @@ "reftest" ], "css/css-text/white-space/break-spaces-tab-004.html": [ - "4ccbdd0f21ae4232effc200784dcbe4f3373ea21", + "bee61597fa1ac8a1c043660a9af0e9c2f8783a4c", "reftest" ], "css/css-text/white-space/break-spaces-tab-005.html": [ @@ -586455,7 +586894,7 @@ "support" ], "css/css-text/white-space/reference/white-space-intrinsic-size-001-ref.html": [ - "232360ba387005386f6bb8840bc020f8a0c91ad8", + "3fbc32b1b1e654068ae8ce28b547f27acde1a458", "support" ], "css/css-text/white-space/reference/white-space-intrinsic-size-002-ref.html": [ @@ -586463,7 +586902,7 @@ "support" ], "css/css-text/white-space/reference/white-space-intrinsic-size-003-ref.html": [ - "c551c608be114918d2028a503260c6ff797302bc", + "0047109982c7593375afcccd06ae0530728e526f", "support" ], "css/css-text/white-space/reference/white-space-intrinsic-size-004-ref.html": [ @@ -586754,6 +587193,10 @@ "fcc2bdfa43633783151aaa8c0f65458d13e764f1", "testharness" ], + "css/css-text/white-space/trailing-space-position-001.html": [ + "648ae23dccbeb5d79a30fd14506a6f4164b2f26f", + "testharness" + ], "css/css-text/white-space/white-space-collapse-000.html": [ "224a350cc7c66a55f7ac8eda4e99326abc85c4f2", "testharness" @@ -587139,19 +587582,19 @@ "reftest" ], "css/css-text/word-break/word-break-keep-all-005.html": [ - "4bb523ab7ca395b36204148755ee5e6d9243761a", + "1e71ec711174f825648b60a6120041a3d2576fb4", "reftest" ], "css/css-text/word-break/word-break-keep-all-006.html": [ - "8845ea21edd09bb9a7165643ff8148a4f516bb01", + "7bf9a15a9ccf252bb72f8f9719b650c7f779da9b", "reftest" ], "css/css-text/word-break/word-break-keep-all-007.html": [ - "e1bc9a5205319322ff103a6fc6880adba8cb3323", + "443cccbc9da5102579a59527f5b60c40fc543a87", "reftest" ], "css/css-text/word-break/word-break-keep-all-008.html": [ - "16529b0619ee28b905dcc6cf91a5e62ad56fdc8c", + "6532e41609ff6eb2870003ad6761b45f2b60fdae", "reftest" ], "css/css-text/word-break/word-break-normal-001.html": [ @@ -587299,7 +587742,7 @@ "testharness" ], "css/css-transforms/animation/rotate-interpolation.html": [ - "dbf66a734f443eb608d92980ec38304cc7283530", + "1ce74f76d25d18a99561357c3ecea9d8262c7e4d", "testharness" ], "css/css-transforms/animation/scale-interpolation.html": [ @@ -592587,7 +593030,7 @@ "testharness" ], "css/css-typed-om/stylevalue-subclasses/numeric-objects/parse.tentative.html": [ - "98384b6fcc5efd446833e7d8a9f4d8a7ff61167c", + "c4904ded6b6e12618852369dcba0aaebe4620d13", "testharness" ], "css/css-typed-om/stylevalue-subclasses/numeric-objects/resources/testhelper.js": [ @@ -605202,6 +605645,14 @@ "59843ae54b64f6ce4f7e616d4be491c911ea84cf", "support" ], + "css/cssom-view/table-border-collapse-client-width-height.html": [ + "a7a1a435b2279ccb07136ed295dcc25b38c2c87c", + "testharness" + ], + "css/cssom-view/table-border-separate-client-width-height.html": [ + "d960d713dcf508134ea6551147d74a8b0b45f0e6", + "testharness" + ], "css/cssom-view/table-client-props.html": [ "4af06d6bf71f0df75d3710ec0906445e943d340d", "testharness" @@ -605214,6 +605665,10 @@ "fd7f0d347b5ae9f5ddd2a2735759bc32cac595cd", "testharness" ], + "css/cssom-view/table-with-border-client-width-height.html": [ + "4e9a5deed2e97107a9d953732cf0e1aca1228964", + "testharness" + ], "css/cssom-view/ttwf-js-cssomview-getclientrects-length.html": [ "bc873174568c84dd9fb1f83a9515a5a562fc66cf", "testharness" @@ -612342,6 +612797,14 @@ "50d74f5ebf645f078682f217eb514e59ebebab42", "reftest" ], + "css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-align-self-baseline-horiz-008-ref.xhtml": [ + "19049d3895c7611c665161058f1c31b5e5414a04", + "support" + ], + "css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-align-self-baseline-horiz-008.xhtml": [ + "00bc4d9fce8033483de8f6e9172a166842a8ccf0", + "reftest" + ], "css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-align-self-horiz-001-block.xhtml": [ "365354506f86a16a2f2313296d5d99fa284400ab", "reftest" @@ -613723,7 +614186,7 @@ "reftest" ], "css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/reftest.list": [ - "6f90914621b37a9aa9c627f0b4cdbd9aeba679e2", + "2493ab155b06d9ce974c8d0348e2f2582eb7daec", "support" ], "css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/support/Ahem.ttf": [ @@ -619031,7 +619494,7 @@ "support" ], "css/vendor-imports/mozilla/mozilla-central-reftests/will-change/reftest.list": [ - "b8373487ae8147a821f95a028c0a30c7c5bc2d90", + "d3031a49b89da4fe0913e52d86f45413d3083c84", "support" ], "css/vendor-imports/mozilla/mozilla-central-reftests/will-change/will-change-fixpos-cb-contain-1.html": [ @@ -619062,6 +619525,10 @@ "808f7d8cd0957e2f157b327ce6a29b384640391b", "reftest" ], + "css/vendor-imports/mozilla/mozilla-central-reftests/will-change/will-change-fixpos-cb-translate-1.html": [ + "7ff0dfe768a43d06740dd2fb338aab855ff0a175", + "reftest" + ], "css/vendor-imports/mozilla/mozilla-central-reftests/will-change/will-change-stacking-context-clip-path-1.html": [ "673d1a895b5a62ad205c10a5883c5862e171eee6", "reftest" @@ -619106,6 +619573,10 @@ "f8e50c60c13ee88005d5e2821d03ba28f0cc5db7", "reftest" ], + "css/vendor-imports/mozilla/mozilla-central-reftests/will-change/will-change-stacking-context-translate-1.html": [ + "1e1e8355d6c54e845d36fc708bbcd1eba782cea2", + "reftest" + ], "css/vendor-imports/mozilla/mozilla-central-reftests/will-change/will-change-stacking-context-z-index-1.html": [ "bcb9ea0a1d62a1ceeb5b6e60e7f90b97bf5b03ed", "reftest" @@ -619923,7 +620394,7 @@ "support" ], "docs/writing-tests/test-templates.md": [ - "f34b1d8d3334302d05bc4599e70a00c5e17dcdd0", + "858758b4c8e022afe53d76184a65a44da8106a1b", "support" ], "docs/writing-tests/testdriver-tutorial.md": [ @@ -623719,7 +624190,7 @@ "testharness" ], "encoding/streams/backpressure.any.js": [ - "f17e149ed9e5b949d8b3d6a54b48093232e7da52", + "718942fd8f42c9bd67051285648f2fa3a613eecd", "testharness" ], "encoding/streams/decode-attributes.any.js": [ @@ -625827,19 +626298,19 @@ "support" ], "feature-policy/reporting/xr-report-only.https.html": [ - "d999c977dbe361cf8b3fbf520fb8bb3fe9f3bc4f", + "872db22849545c174b385543e4e12747574a34af", "testharness" ], "feature-policy/reporting/xr-report-only.https.html.headers": [ - "47b7c824b355f13ddea3eb0bb5825e4fb69c8beb", + "45df4936e27521f3bfa455bf37b498fbbb093fb8", "support" ], "feature-policy/reporting/xr-reporting.https.html": [ - "68a3e4e737b85959a54895491682b08368c9fe5d", + "edc75e824003c5f51ed832e01c51c45bd952b2f9", "testharness" ], "feature-policy/reporting/xr-reporting.https.html.headers": [ - "ea8722131ce0d9ca4a05390500d03b8f94394401", + "2c758962332e723453f31a6cb8d3dfc3ac292d44", "support" ], "feature-policy/resources/autoplay.js": [ @@ -638686,7 +639157,7 @@ "1d231d52cde8b4758cf834db42231720c374b060", "testharness" ], - "html/rendering/replaced-elements/attributes-for-embedded-content-and-images/img-aspect-ratio.tentative.html": [ + "html/rendering/replaced-elements/attributes-for-embedded-content-and-images/img-aspect-ratio.html": [ "c9ce86869e10e367a4aadf99d86d1c407ebd1ccf", "testharness" ], @@ -645114,6 +645585,10 @@ "069363dd400da159b74847a3ea4299292a92d4f5", "support" ], + "html/semantics/scripting-1/the-script-element/json-module/README.md": [ + "204fd59dcb1b5012034717a0b80d493cce6def93", + "support" + ], "html/semantics/scripting-1/the-script-element/json-module/array.json": [ "e77e32d3382e0a40e9682d11664a3c0d9f354523", "support" @@ -645122,19 +645597,19 @@ "c508d5366f70bba37fcc09d128b6537c4adb2c79", "support" ], - "html/semantics/scripting-1/the-script-element/json-module/invalid-content-type.html": [ + "html/semantics/scripting-1/the-script-element/json-module/invalid-content-type.tentative.html": [ "e6da2db7ebc03ac7753b19dce4e9c3fc38a30014", "testharness" ], - "html/semantics/scripting-1/the-script-element/json-module/module.html": [ - "93243853226806c86ac360766fe3e86d30325c06", - "testharness" - ], "html/semantics/scripting-1/the-script-element/json-module/module.json": [ "f834b2a4e8fab045a4b224caa485e0ee666f04c6", "support" ], - "html/semantics/scripting-1/the-script-element/json-module/non-object.any.js": [ + "html/semantics/scripting-1/the-script-element/json-module/module.tentative.html": [ + "93243853226806c86ac360766fe3e86d30325c06", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/json-module/non-object.tentative.any.js": [ "dcbe60f2c2f9dc8478711a1cb4ed2e82defe7107", "testharness" ], @@ -645142,14 +645617,14 @@ "19765bd501b636fce433540d9e6735f51d66151d", "support" ], - "html/semantics/scripting-1/the-script-element/json-module/parse-error.html": [ - "68d3ef0a9ad3e6d033579c948faf5a8c2b23beb6", - "testharness" - ], "html/semantics/scripting-1/the-script-element/json-module/parse-error.json": [ "98232c64fce9360c79f119cf6de8f670f69f1c44", "support" ], + "html/semantics/scripting-1/the-script-element/json-module/parse-error.tentative.html": [ + "68d3ef0a9ad3e6d033579c948faf5a8c2b23beb6", + "testharness" + ], "html/semantics/scripting-1/the-script-element/json-module/string.json": [ "ace2d72d9d3d24dbfaa1462949b0688ff326fc9b", "support" @@ -645158,15 +645633,15 @@ "27ba77ddaf61532f217964734769a42cdabc17dc", "support" ], - "html/semantics/scripting-1/the-script-element/json-module/utf8.html": [ - "1c0360b17e3f9e5d1a5e8d0c65eb9e4a13d144ae", - "testharness" - ], "html/semantics/scripting-1/the-script-element/json-module/utf8.json": [ "7bb9edd2f79e820e08e28e13e0ad6998c7a4c826", "support" ], - "html/semantics/scripting-1/the-script-element/json-module/valid-content-type.html": [ + "html/semantics/scripting-1/the-script-element/json-module/utf8.tentative.html": [ + "1c0360b17e3f9e5d1a5e8d0c65eb9e4a13d144ae", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/json-module/valid-content-type.tentative.html": [ "78e8b1d23fed229e800a4efef9d18e43697c023f", "testharness" ], @@ -650131,7 +650606,7 @@ "support" ], "interfaces/css-typed-om.idl": [ - "b54a16338ec7f9397e1d3f97cc43569acc753709", + "df9669e5637f18de89792facba8fabe234d658f8", "support" ], "interfaces/cssom-view.idl": [ @@ -650523,7 +650998,7 @@ "support" ], "interfaces/webrtc-stats.idl": [ - "c2dc1f7a0b0a482d226b881995414b558fbe2baf", + "e41d7357b1a20328cd543c118005f2d9f77f0773", "support" ], "interfaces/webrtc.idl": [ @@ -651578,6 +652053,14 @@ "b68bb873ced58ee1b4a349400b4e7520e5631d7d", "reftest" ], + "mathml/presentation-markup/fractions/frac-legacy-bevelled-attribute.tentative-ref.html": [ + "f0b355c7bd981ececd2ef2d6f0240898b45d11e5", + "support" + ], + "mathml/presentation-markup/fractions/frac-legacy-bevelled-attribute.tentative.html": [ + "1f14044106e0c311eb68b3102d6b12767d2b5c4f", + "reftest" + ], "mathml/presentation-markup/fractions/frac-linethickness-001-ref.html": [ "d4be8ea03bfc29506af0e26a3d94d5eeafaaf472", "support" @@ -651710,6 +652193,14 @@ "b6a51762dfda0b05cbcc272b9fb5cedad0c66a94", "testharness" ], + "mathml/presentation-markup/mrow/legacy-mfenced-element-001-ref.html": [ + "00c781b6e4fc8f51e98583a35f76d61a3d104440", + "support" + ], + "mathml/presentation-markup/mrow/legacy-mfenced-element-001.html": [ + "7cc3e2ed840abeb7f1dbbf7c83103d5ecdb0ec10", + "reftest" + ], "mathml/presentation-markup/mrow/legacy-mrow-like-elements-001.html": [ "ad9f2d2a47caa6477d6dfbf2c103af76aefb34a4", "testharness" @@ -651850,6 +652341,14 @@ "566b0133ec68d12c69e6f70d8a9205e2336f8936", "testharness" ], + "mathml/presentation-markup/scripts/subsup-legacy-scriptshift-attributes-001.tentative-ref.html": [ + "c1bf2e46954ee28d260371fb4fb981e9030e3051", + "support" + ], + "mathml/presentation-markup/scripts/subsup-legacy-scriptshift-attributes-001.tentative.html": [ + "532271dbe049cbc12ced9f751a9099ec2a3bd220", + "reftest" + ], "mathml/presentation-markup/scripts/subsup-parameters-1.html": [ "0c6610cc18fe6f71523f6c2209b8f02328ffa634", "testharness" @@ -656354,6 +656853,10 @@ "cfe729cd1f1dd4b53f00b3b13cd53f64f84ca409", "testharness" ], + "native-file-system/native_FileSystemDirectoryHandle-getEntries.tentative.https.manual.window.js": [ + "f27a44d12459cccbbe7192fe13104d77c68795ae", + "testharness" + ], "native-file-system/native_FileSystemDirectoryHandle-getFile.tentative.https.manual.window.js": [ "0455cb800919ee353b7f2e87bf47b76ba075519b", "testharness" @@ -656382,6 +656885,10 @@ "6fcf566e31fbf061e7545280198562d9e41cad11", "testharness" ], + "native-file-system/sandboxed_FileSystemDirectoryHandle-getEntries.tentative.https.any.js": [ + "da620e2a3b17a97bc4db3872484f217a3fa2c582", + "testharness" + ], "native-file-system/sandboxed_FileSystemDirectoryHandle-getFile.tentative.https.any.js": [ "65ae891cd44418554800e12801617097f6a72c91", "testharness" @@ -656398,6 +656905,10 @@ "c2c128f5eded06f440e634051fac021e20061e0d", "support" ], + "native-file-system/script-tests/FileSystemDirectoryHandle-getEntries.js": [ + "571683ccfd1182631a0398017a9f67fa04bb255c", + "support" + ], "native-file-system/script-tests/FileSystemDirectoryHandle-getFile.js": [ "4d8ee96c3d033130f5940306d6f09737db7b0e9c", "support" @@ -676875,7 +677386,7 @@ "support" ], "resources/chromium/webusb-test.js": [ - "c4d4e8f1ac47a2f8c5ea02fa737a01b36aca6329", + "8bccfd1f724cc622619e024b95c7068b2899ff07", "support" ], "resources/chromium/webusb-test.js.headers": [ @@ -676883,7 +677394,7 @@ "support" ], "resources/chromium/webxr-test.js": [ - "eae4d64b446ecc53ac1ed5210b8ce2c783d08f9e", + "df91abf6d7f2c2cb10dfd5798f27a7d96a6ad339", "support" ], "resources/chromium/webxr-test.js.headers": [ @@ -680975,7 +681486,7 @@ "testharness" ], "shadow-dom/Element-interface-attachShadow-custom-element.html": [ - "5d862c49244b4f5be33c9b6adc113e7400fcdd84", + "123d9c14c55a3063a98eddd2f864ad04d8e8cc0b", "testharness" ], "shadow-dom/Element-interface-attachShadow.html": [ @@ -683034,6 +683545,10 @@ "7a60e0280baa67ef8731b7bdc737788d326c3c24", "testharness" ], + "svg/animations/interval-restart-events.html": [ + "3c3ad89a3230bb03048dc3fc9727558de511bee9", + "testharness" + ], "svg/animations/keysplines-x-limits.html": [ "3c9ba65059f99dfbad262a4df65cf1eba0a4f0d8", "testharness" @@ -687702,14 +688217,6 @@ "a72dcfe5cfdd516528312488c0d731557fb85492", "support" ], - "tools/ci/tests/test_update_pr_preview.py": [ - "056add73a92d4a4bb196c31d3f0a1cdbe963c184", - "support" - ], - "tools/ci/update_pr_preview.py": [ - "eca4a30678cf82aede0d90db9b63ee94b6393f78", - "support" - ], "tools/ci/website_build.sh": [ "e99fcb0cc9fb8b7451301a1e2d318daa631baf62", "support" @@ -687726,6 +688233,14 @@ "3d41834cfb41430b4a9aa05fa8c6d6b6f2010b51", "support" ], + "tools/docker/Dockerfile.webkitgtk": [ + "8d792b36a473059c41d9e68789bab7ba8a7c2855", + "support" + ], + "tools/docker/README.md": [ + "c444e4a957fd0ba55e0d51a0e87b9562550e0add", + "support" + ], "tools/docker/__init__.py": [ "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391", "support" @@ -687751,7 +688266,7 @@ "support" ], "tools/docker/start.sh": [ - "2e5f69d40710f7fa6dfd17be0951b3de1ffdbf60", + "3427670cc9fa16a0ae23e2da1ecafcfe75789072", "support" ], "tools/gitignore/__init__.py": [ @@ -692431,7 +692946,7 @@ "support" ], "tools/tox.ini": [ - "52e749e4bdc4c7626df8ba67fb08a6209ea35ff2", + "63fb8ed9832ba9d11dae965e3c335e3d26289720", "support" ], "tools/webdriver/.gitignore": [ @@ -696311,7 +696826,7 @@ "testharness" ], "web-animations/interfaces/Document/getAnimations.html": [ - "f5df980cc053e55c05b07992a44a87f7d02826ff", + "f6a6c3edd447ccf42da4598db7e771a0ab99b04f", "testharness" ], "web-animations/interfaces/Document/timeline.html": [ @@ -699783,7 +700298,7 @@ "testharness" ], "webrtc/RTCPeerConnection-createDataChannel.html": [ - "8a13155358de3dab22a77f50172aae5bf0789b43", + "58e757bce076e9b5ad16c5943ff3065b91305fae", "testharness" ], "webrtc/RTCPeerConnection-createOffer.html": [ @@ -699815,7 +700330,7 @@ "testharness" ], "webrtc/RTCPeerConnection-iceConnectionState.https.html": [ - "8e853e4acbc1eee978ce6b482f514b2ac39a1994", + "9dd364ed3271283d71f784c3c37abddf09e68c68", "testharness" ], "webrtc/RTCPeerConnection-iceGatheringState.html": [ @@ -701138,6 +701653,10 @@ "6c5158877417a3271ff0179449eace740cf157a1", "support" ], + "websockets/stream-tentative/abort.any.js": [ + "2392188eaff6431366ae99907ee135d85b62458f", + "testharness" + ], "websockets/stream-tentative/backpressure-receive.any.js": [ "11f4bd9d35016b6a36cb1532e4071f42e2f1b817", "testharness" @@ -701579,7 +702098,7 @@ "testharness" ], "webusb/usbDevice.https.any.js": [ - "03dbe8f441369f824e17a850dffdfa3b616c63b0", + "b41687079e5746ded100f0ec47c9b3f153d9adaf", "testharness" ], "webusb/usbEndpoint.https.any.js": [ @@ -704718,6 +705237,10 @@ "c8545999080892701858b425d8141ae0d3b3c469", "testharness" ], + "webxr/getViewerPose_emulatedPosition.https.html": [ + "201a9b72208fae4f64ded8082b7ba11000517313", + "testharness" + ], "webxr/idlharness.https.window.js": [ "3e54e367787cb95dada398790fe23b10174df29f", "testharness" @@ -704751,7 +705274,7 @@ "support" ], "webxr/resources/webxr_util.js": [ - "935f49a1fc911ffbb735a424c37d71c9a1b95c8a", + "85821d4d3d5d7fd953cace5e7ea7bacc9d3b7dab", "support" ], "webxr/webGLCanvasContext_create_xrcompatible.https.html": [ @@ -704763,13 +705286,21 @@ "testharness" ], "webxr/webxr-supported-by-feature-policy.html": [ - "d1f8252977f7aa1b87e4139c640ae6788db607ae", + "2843849a34a818a1a7abd73ea873917a1739988d", "testharness" ], "webxr/webxr_availability.http.sub.html": [ "515b2ad1a8d015120032ea56c473922a2af73e85", "testharness" ], + "webxr/webxr_feature_policy.https.html": [ + "ea1bf82adb35d59618c79b8199aa22897015f28c", + "testharness" + ], + "webxr/webxr_feature_policy.https.html.headers": [ + "2c758962332e723453f31a6cb8d3dfc3ac292d44", + "support" + ], "webxr/xrBoundedReferenceSpace_updates.https.html": [ "812acf457c155c64bd47341ba3b710d696993a8c", "testharness" @@ -704846,6 +705377,10 @@ "4c50670c70ec87754a777cc0bcfe8272e794ca07", "testharness" ], + "webxr/xrInputSource_emulatedPosition.https.html": [ + "7b0fda4508748c81a0865d137847fd7f13a3ff97", + "testharness" + ], "webxr/xrInputSource_gamepad_disconnect.https.html": [ "66faf8699640fe3cef81a84d1f290988c35c3e14", "testharness" diff --git a/tests/wpt/metadata/css/CSS2/positioning/abspos-block-level-001.html.ini b/tests/wpt/metadata/css/CSS2/positioning/abspos-block-level-001.html.ini new file mode 100644 index 00000000000..288e23b6065 --- /dev/null +++ b/tests/wpt/metadata/css/CSS2/positioning/abspos-block-level-001.html.ini @@ -0,0 +1,2 @@ +[abspos-block-level-001.html] + expected: FAIL diff --git a/tests/wpt/metadata/css/CSS2/positioning/toogle-abspos-on-relpos-inline-child.html.ini b/tests/wpt/metadata/css/CSS2/positioning/toogle-abspos-on-relpos-inline-child.html.ini new file mode 100644 index 00000000000..928300474c1 --- /dev/null +++ b/tests/wpt/metadata/css/CSS2/positioning/toogle-abspos-on-relpos-inline-child.html.ini @@ -0,0 +1,2 @@ +[toogle-abspos-on-relpos-inline-child.html] + expected: FAIL diff --git a/tests/wpt/metadata/css/css-backgrounds/animations/background-position-x-interpolation.html.ini b/tests/wpt/metadata/css/css-backgrounds/animations/background-position-x-interpolation.html.ini new file mode 100644 index 00000000000..3beb283012a --- /dev/null +++ b/tests/wpt/metadata/css/css-backgrounds/animations/background-position-x-interpolation.html.ini @@ -0,0 +1,4 @@ +[background-position-x-interpolation.html] + [background-position-x-interpolation] + expected: FAIL + diff --git a/tests/wpt/metadata/css/css-backgrounds/animations/background-position-y-interpolation.html.ini b/tests/wpt/metadata/css/css-backgrounds/animations/background-position-y-interpolation.html.ini new file mode 100644 index 00000000000..0baa50c7671 --- /dev/null +++ b/tests/wpt/metadata/css/css-backgrounds/animations/background-position-y-interpolation.html.ini @@ -0,0 +1,4 @@ +[background-position-y-interpolation.html] + [background-position-y-interpolation] + expected: FAIL + diff --git a/tests/wpt/metadata/css/css-backgrounds/animations/box-shadow-interpolation.html.ini b/tests/wpt/metadata/css/css-backgrounds/animations/box-shadow-interpolation.html.ini new file mode 100644 index 00000000000..88df625ed31 --- /dev/null +++ b/tests/wpt/metadata/css/css-backgrounds/animations/box-shadow-interpolation.html.ini @@ -0,0 +1,4 @@ +[box-shadow-interpolation.html] + [box-shadow-interpolation] + expected: FAIL + diff --git a/tests/wpt/metadata/css/css-text/i18n/css3-text-line-break-baspglwj-094.html.ini b/tests/wpt/metadata/css/css-text/i18n/css3-text-line-break-baspglwj-094.html.ini deleted file mode 100644 index 07ab7384011..00000000000 --- a/tests/wpt/metadata/css/css-text/i18n/css3-text-line-break-baspglwj-094.html.ini +++ /dev/null @@ -1,5 +0,0 @@ -[css3-text-line-break-baspglwj-094.html] - type: testharness - [ ] - expected: FAIL - diff --git a/tests/wpt/metadata/css/css-text/shaping/shaping-024.html.ini b/tests/wpt/metadata/css/css-text/shaping/shaping-024.html.ini deleted file mode 100644 index 0d4e1eba867..00000000000 --- a/tests/wpt/metadata/css/css-text/shaping/shaping-024.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[shaping-024.html] - expected: FAIL diff --git a/tests/wpt/metadata/css/css-text/shaping/shaping-025.html.ini b/tests/wpt/metadata/css/css-text/shaping/shaping-025.html.ini deleted file mode 100644 index 23a42235a3b..00000000000 --- a/tests/wpt/metadata/css/css-text/shaping/shaping-025.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[shaping-025.html] - expected: FAIL diff --git a/tests/wpt/metadata/css/css-text/white-space/trailing-space-position-001.html.ini b/tests/wpt/metadata/css/css-text/white-space/trailing-space-position-001.html.ini new file mode 100644 index 00000000000..50c6f89078e --- /dev/null +++ b/tests/wpt/metadata/css/css-text/white-space/trailing-space-position-001.html.ini @@ -0,0 +1,7 @@ +[trailing-space-position-001.html] + [CSS Test: Positions of trailing collapsible spaces] + expected: FAIL + + [CSS Test: Positions of trailing collapsible spaces 2] + expected: FAIL + diff --git a/tests/wpt/metadata/css/cssom-view/matchMedia-display-none-iframe.html.ini b/tests/wpt/metadata/css/cssom-view/matchMedia-display-none-iframe.html.ini new file mode 100644 index 00000000000..e6e1f29e274 --- /dev/null +++ b/tests/wpt/metadata/css/cssom-view/matchMedia-display-none-iframe.html.ini @@ -0,0 +1,2 @@ +[matchMedia-display-none-iframe.html] + expected: ERROR diff --git a/tests/wpt/metadata/css/cssom-view/table-with-border-client-width-height.html.ini b/tests/wpt/metadata/css/cssom-view/table-with-border-client-width-height.html.ini new file mode 100644 index 00000000000..3127bb7a068 --- /dev/null +++ b/tests/wpt/metadata/css/cssom-view/table-with-border-client-width-height.html.ini @@ -0,0 +1,4 @@ +[table-with-border-client-width-height.html] + [Table's clientWidth/Height and OffsetWidth/Height should be the same] + expected: FAIL + diff --git a/tests/wpt/metadata/encoding/streams/backpressure.any.js.ini b/tests/wpt/metadata/encoding/streams/backpressure.any.js.ini index 57e9dd17391..e1b71d7aeb4 100644 --- a/tests/wpt/metadata/encoding/streams/backpressure.any.js.ini +++ b/tests/wpt/metadata/encoding/streams/backpressure.any.js.ini @@ -2,6 +2,7 @@ [backpressure] expected: FAIL + [backpressure.any.sharedworker.html] [backpressure] expected: FAIL @@ -11,7 +12,32 @@ [backpressure] expected: FAIL + [write() should not complete until read relieves backpressure for TextEncoderStream] + expected: FAIL + + [additional writes should wait for backpressure to be relieved for class TextDecoderStream] + expected: FAIL + + [write() should not complete until read relieves backpressure for TextDecoderStream] + expected: FAIL + + [additional writes should wait for backpressure to be relieved for class TextEncoderStream] + expected: FAIL + + [backpressure.any.worker.html] [backpressure] expected: FAIL + [write() should not complete until read relieves backpressure for TextEncoderStream] + expected: FAIL + + [additional writes should wait for backpressure to be relieved for class TextDecoderStream] + expected: FAIL + + [write() should not complete until read relieves backpressure for TextDecoderStream] + expected: FAIL + + [additional writes should wait for backpressure to be relieved for class TextEncoderStream] + 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 c335c5163e1..9aa8d1390da 100644 --- a/tests/wpt/metadata/fetch/content-type/response.window.js.ini +++ b/tests/wpt/metadata/fetch/content-type/response.window.js.ini @@ -315,18 +315,12 @@ [<iframe>: combined response Content-Type: text/html */*] expected: FAIL - [<iframe>: separate response Content-Type: text/html;" text/plain] - expected: FAIL - [<iframe>: separate response Content-Type: text/html */*;charset=gbk] expected: FAIL - [<iframe>: separate response Content-Type: text/html */*] - expected: FAIL - - [<iframe>: separate response Content-Type: text/plain */*] + [<iframe>: separate response Content-Type: text/html;" \\" text/plain] expected: FAIL - [<iframe>: separate response Content-Type: text/html;" \\" text/plain] + [<iframe>: combined response Content-Type: text/html */*;charset=gbk] expected: FAIL diff --git a/tests/wpt/metadata/fetch/content-type/script.window.js.ini b/tests/wpt/metadata/fetch/content-type/script.window.js.ini index b2ffc8abf78..c7413d589dc 100644 --- a/tests/wpt/metadata/fetch/content-type/script.window.js.ini +++ b/tests/wpt/metadata/fetch/content-type/script.window.js.ini @@ -56,6 +56,9 @@ [separate text/javascript x/x] expected: FAIL - [separate text/javascript error] + [separate text/javascript;charset=windows-1252 error text/javascript] + expected: FAIL + + [separate text/javascript;charset=windows-1252 text/javascript] expected: FAIL diff --git a/tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini b/tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini index 87c807a49ff..b2cd43ef76c 100644 --- a/tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini +++ b/tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini @@ -11,3 +11,9 @@ [X-Content-Type-Options%3A%20nosniff%0C] expected: FAIL + [X-Content-Type-Options%3A%20'NosniFF'] + expected: FAIL + + [X-Content-Type-Options%3A%0D%0AX-Content-Type-Options%3A%20nosniff] + expected: FAIL + diff --git a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_4.html.ini b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_4.html.ini deleted file mode 100644 index 385376c7321..00000000000 --- a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_4.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[traverse_the_history_4.html] - [Multiple history traversals, last would be aborted] - expected: FAIL - diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-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/rendering/replaced-elements/attributes-for-embedded-content-and-images/img-aspect-ratio.tentative.html.ini b/tests/wpt/metadata/html/rendering/replaced-elements/attributes-for-embedded-content-and-images/img-aspect-ratio.html.ini index ee272462a13..4003864dc8f 100644 --- a/tests/wpt/metadata/html/rendering/replaced-elements/attributes-for-embedded-content-and-images/img-aspect-ratio.tentative.html.ini +++ b/tests/wpt/metadata/html/rendering/replaced-elements/attributes-for-embedded-content-and-images/img-aspect-ratio.html.ini @@ -1,4 +1,4 @@ -[img-aspect-ratio.tentative.html] +[img-aspect-ratio.html] [Image width and height attributes are used to infer aspect-ratio] expected: FAIL diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/non-active-document.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/non-active-document.html.ini deleted file mode 100644 index 8cc42056d34..00000000000 --- a/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/non-active-document.html.ini +++ /dev/null @@ -1,10 +0,0 @@ -[non-active-document.html] - [DOMParser] - expected: FAIL - - [createHTMLDocument] - expected: FAIL - - [<template>] - expected: FAIL - diff --git a/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/json-module/invalid-content-type.html.ini b/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/json-module/invalid-content-type.html.ini deleted file mode 100644 index 5957e152111..00000000000 --- a/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/json-module/invalid-content-type.html.ini +++ /dev/null @@ -1,20 +0,0 @@ -[invalid-content-type.html] - expected: TIMEOUT - [text/json+blah] - expected: TIMEOUT - - [application/json+blah] - expected: TIMEOUT - - [application/json+protobuf] - expected: TIMEOUT - - [application/blahjson] - expected: TIMEOUT - - [image/json] - expected: TIMEOUT - - [text/x-json] - expected: TIMEOUT - diff --git a/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/json-module/module.html.ini b/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/json-module/module.html.ini deleted file mode 100644 index efdbfb19a7d..00000000000 --- a/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/json-module/module.html.ini +++ /dev/null @@ -1,5 +0,0 @@ -[module.html] - expected: TIMEOUT - [JSON modules] - expected: NOTRUN - diff --git a/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/json-module/non-object.any.js.ini b/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/json-module/non-object.any.js.ini deleted file mode 100644 index 29dde1a522d..00000000000 --- a/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/json-module/non-object.any.js.ini +++ /dev/null @@ -1,19 +0,0 @@ -[non-object.any.html] - [non-object] - expected: FAIL - - -[non-object.any.worker.html] - [non-object] - expected: FAIL - - -[non-object.any.serviceworker.html] - [non-object] - expected: FAIL - - -[non-object.any.sharedworker.html] - [non-object] - expected: FAIL - diff --git a/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/json-module/parse-error.html.ini b/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/json-module/parse-error.html.ini deleted file mode 100644 index d740f8e963d..00000000000 --- a/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/json-module/parse-error.html.ini +++ /dev/null @@ -1,5 +0,0 @@ -[parse-error.html] - expected: TIMEOUT - [JSON modules: parse error] - expected: TIMEOUT - diff --git a/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/json-module/utf8.html.ini b/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/json-module/utf8.html.ini deleted file mode 100644 index 408b52af0fa..00000000000 --- a/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/json-module/utf8.html.ini +++ /dev/null @@ -1,14 +0,0 @@ -[utf8.html] - expected: TIMEOUT - [windows-1252] - expected: NOTRUN - - [utf-7] - expected: NOTRUN - - [shift-jis] - expected: NOTRUN - - [utf-8] - expected: NOTRUN - diff --git a/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/json-module/valid-content-type.html.ini b/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/json-module/valid-content-type.html.ini deleted file mode 100644 index b048aa51d14..00000000000 --- a/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/json-module/valid-content-type.html.ini +++ /dev/null @@ -1,14 +0,0 @@ -[valid-content-type.html] - expected: TIMEOUT - [image/svg+json] - expected: NOTRUN - - [text/html+json] - expected: NOTRUN - - [application/json] - expected: NOTRUN - - [text/json] - expected: NOTRUN - diff --git a/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/script-onerror-insertion-point-2.html.ini b/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/script-onerror-insertion-point-2.html.ini deleted file mode 100644 index 178680e5d14..00000000000 --- a/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/script-onerror-insertion-point-2.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[script-onerror-insertion-point-2.html] - expected: TIMEOUT diff --git a/tests/wpt/metadata/resource-timing/nested-context-navigations-iframe.html.ini b/tests/wpt/metadata/resource-timing/nested-context-navigations-iframe.html.ini index 8594361ff44..ec371a1bf72 100644 --- a/tests/wpt/metadata/resource-timing/nested-context-navigations-iframe.html.ini +++ b/tests/wpt/metadata/resource-timing/nested-context-navigations-iframe.html.ini @@ -1,5 +1,5 @@ [nested-context-navigations-iframe.html] - expected: CRASH + expected: TIMEOUT [Test that iframe navigations are not observable by the parent, even after history navigations by the parent] expected: FAIL diff --git a/tests/wpt/metadata/websockets/stream-tentative/abort.any.js.ini b/tests/wpt/metadata/websockets/stream-tentative/abort.any.js.ini new file mode 100644 index 00000000000..216377372b0 --- /dev/null +++ b/tests/wpt/metadata/websockets/stream-tentative/abort.any.js.ini @@ -0,0 +1,31 @@ +[abort.any.worker.html] + [abort after connect should do nothing] + expected: FAIL + + [abort during handshake should work] + expected: FAIL + + [abort before constructing should prevent connection] + expected: FAIL + + +[abort.any.sharedworker.html] + [abort] + expected: FAIL + + +[abort.any.html] + [abort after connect should do nothing] + expected: FAIL + + [abort during handshake should work] + expected: FAIL + + [abort before constructing should prevent connection] + expected: FAIL + + +[abort.any.serviceworker.html] + [abort] + expected: FAIL + diff --git a/tests/wpt/metadata/webxr/getViewerPose_emulatedPosition.https.html.ini b/tests/wpt/metadata/webxr/getViewerPose_emulatedPosition.https.html.ini new file mode 100644 index 00000000000..66dc95ea0de --- /dev/null +++ b/tests/wpt/metadata/webxr/getViewerPose_emulatedPosition.https.html.ini @@ -0,0 +1,4 @@ +[getViewerPose_emulatedPosition.https.html] + [XRFrame getViewerPose has emulatedPosition set properly.] + expected: FAIL + diff --git a/tests/wpt/metadata/webxr/webxr-supported-by-feature-policy.html.ini b/tests/wpt/metadata/webxr/webxr-supported-by-feature-policy.html.ini index 94a97237aa0..a4df8fb47d6 100644 --- a/tests/wpt/metadata/webxr/webxr-supported-by-feature-policy.html.ini +++ b/tests/wpt/metadata/webxr/webxr-supported-by-feature-policy.html.ini @@ -2,3 +2,6 @@ [document.featurePolicy.features should advertise xr.] expected: FAIL + [document.featurePolicy.features should advertise xr-spatial-tracking.] + expected: FAIL + diff --git a/tests/wpt/metadata/webxr/webxr_feature_policy.https.html.ini b/tests/wpt/metadata/webxr/webxr_feature_policy.https.html.ini new file mode 100644 index 00000000000..a74f6535030 --- /dev/null +++ b/tests/wpt/metadata/webxr/webxr_feature_policy.https.html.ini @@ -0,0 +1,8 @@ +[webxr_feature_policy.https.html] + expected: ERROR + [Validate isSessionSupported behavior without xr-spatial-tracking policy] + expected: FAIL + + [Validate requestSession behavior without xr-spatial-tracking policy] + 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 6ff00c31bef..27f6c5ed7a2 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: TIMEOUT + expected: ERROR ['XRBoundedReferenceSpace updates properly when the changes are applied] expected: TIMEOUT diff --git a/tests/wpt/metadata/webxr/xrInputSource_emulatedPosition.https.html.ini b/tests/wpt/metadata/webxr/xrInputSource_emulatedPosition.https.html.ini new file mode 100644 index 00000000000..78cd06f3dfe --- /dev/null +++ b/tests/wpt/metadata/webxr/xrInputSource_emulatedPosition.https.html.ini @@ -0,0 +1,4 @@ +[xrInputSource_emulatedPosition.https.html] + [Poses from XRInputSource.gripSpace have emulatedPosition set properly] + expected: FAIL + diff --git a/tests/wpt/metadata/workers/constructors/Worker/Worker-constructor.html.ini b/tests/wpt/metadata/workers/constructors/Worker/Worker-constructor.html.ini new file mode 100644 index 00000000000..80f9a4f15b8 --- /dev/null +++ b/tests/wpt/metadata/workers/constructors/Worker/Worker-constructor.html.ini @@ -0,0 +1,2 @@ +[Worker-constructor.html] + expected: ERROR diff --git a/tests/wpt/web-platform-tests/.github/META.yml b/tests/wpt/web-platform-tests/.github/META.yml index 06083d1cd0e..19878fa5991 100644 --- a/tests/wpt/web-platform-tests/.github/META.yml +++ b/tests/wpt/web-platform-tests/.github/META.yml @@ -1,3 +1,4 @@ suggested_reviewers: + - foolip - jgraham - jugglinmike diff --git a/tests/wpt/web-platform-tests/.github/workflows/push-build-publish-documentation-website.yml b/tests/wpt/web-platform-tests/.github/workflows/build-publish-documentation-website.yml index f6a1401a3dd..c368b8a117a 100644 --- a/tests/wpt/web-platform-tests/.github/workflows/push-build-publish-documentation-website.yml +++ b/tests/wpt/web-platform-tests/.github/workflows/build-publish-documentation-website.yml @@ -2,6 +2,11 @@ on: push: branches: - master + pull_request: + paths: + - 'docs/**' + - 'resources/**' + - 'tools/**' name: Build & Publish Documentation Website jobs: website-build-and-publish: diff --git a/tests/wpt/web-platform-tests/.github/workflows/pull_request.yml b/tests/wpt/web-platform-tests/.github/workflows/pull_request.yml deleted file mode 100644 index 81a53c67f4b..00000000000 --- a/tests/wpt/web-platform-tests/.github/workflows/pull_request.yml +++ /dev/null @@ -1,17 +0,0 @@ -on: pull_request -name: Synchronize the Pull Request Preview -jobs: - update-pr-preview: - runs-on: ubuntu-18.04 - steps: - - uses: actions/checkout@v1 - with: - ref: refs/heads/master - fetch-depth: 50 - - name: update-pr-preview - uses: ./tools/docker/github - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - entrypoint: python - args: tools/ci/update_pr_preview.py https://api.github.com diff --git a/tests/wpt/web-platform-tests/animation-worklet/worklet-animation-with-scroll-timeline-and-display-none.https.html b/tests/wpt/web-platform-tests/animation-worklet/worklet-animation-with-scroll-timeline-and-display-none.https.html index 6f981854d38..7dea4609b94 100644 --- a/tests/wpt/web-platform-tests/animation-worklet/worklet-animation-with-scroll-timeline-and-display-none.https.html +++ b/tests/wpt/web-platform-tests/animation-worklet/worklet-animation-with-scroll-timeline-and-display-none.https.html @@ -25,6 +25,7 @@ overflow: auto; height: 100px; width: 100px; + will-change: transform; /* force compositing */ } .removed { @@ -74,4 +75,4 @@ }); }); }); -</script>
\ No newline at end of file +</script> diff --git a/tests/wpt/web-platform-tests/animation-worklet/worklet-animation-with-scroll-timeline.https.html b/tests/wpt/web-platform-tests/animation-worklet/worklet-animation-with-scroll-timeline.https.html index 000517162af..7006f8f84a6 100644 --- a/tests/wpt/web-platform-tests/animation-worklet/worklet-animation-with-scroll-timeline.https.html +++ b/tests/wpt/web-platform-tests/animation-worklet/worklet-animation-with-scroll-timeline.https.html @@ -25,6 +25,7 @@ overflow: auto; height: 100px; width: 100px; + will-change: transform; /* force compositing */ } #contents { @@ -64,4 +65,4 @@ takeScreenshot(); }); }); -</script>
\ No newline at end of file +</script> diff --git a/tests/wpt/web-platform-tests/compat/webkit-gradient-comma.html b/tests/wpt/web-platform-tests/compat/webkit-gradient-comma.html new file mode 100644 index 00000000000..b288a9a43fe --- /dev/null +++ b/tests/wpt/web-platform-tests/compat/webkit-gradient-comma.html @@ -0,0 +1,15 @@ +<!DOCTYPE html> +<link rel="help" href="https://compat.spec.whatwg.org/#css-gradients-webkit-radial-gradient"> +<link rel="help" href="https://www.w3.org/TR/css3-images/#radial-gradients"> +<meta name="assert" content="Negative radii values are invalid."> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script> +test(function() { + assert_true(CSS.supports("background-image", "-webkit-radial-gradient(1px 2px, 3% 4%, red, blue)")); +}, '-webkit-radial-gradient accepts comma before color stops.'); + +test(function() { + assert_false(CSS.supports("background-image", "-webkit-radial-gradient(1px 2px, 3% 4% red, blue)")); +}, '-webkit-radial-gradient rejects missing comma before color stops.'); +</script> diff --git a/tests/wpt/web-platform-tests/compat/webkit-radial-gradient-radii.html b/tests/wpt/web-platform-tests/compat/webkit-radial-gradient-radii.html index bff414a44e2..f34e3523185 100644 --- a/tests/wpt/web-platform-tests/compat/webkit-radial-gradient-radii.html +++ b/tests/wpt/web-platform-tests/compat/webkit-radial-gradient-radii.html @@ -6,16 +6,16 @@ <script src="/resources/testharnessreport.js"></script> <script> test(function() { - assert_true(CSS.supports("background-image", "-webkit-radial-gradient(1px 2px, 3% 4% red, blue)")); + assert_true(CSS.supports("background-image", "-webkit-radial-gradient(1px 2px, 3% 4%, red, blue)")); }, '-webkit-radial-gradient accepts positive radii.'); test(function() { - assert_true(CSS.supports("background-image", "-webkit-radial-gradient(1px 2px, 0% 4% red, blue)")); + assert_true(CSS.supports("background-image", "-webkit-radial-gradient(1px 2px, 0% 4%, red, blue)")); }, '-webkit-radial-gradient accepts zero radii.'); test(function() { - assert_false(CSS.supports("background-image", "-webkit-radial-gradient(1px 2px, -3% 4% red, blue)")); - assert_false(CSS.supports("background-image", "-webkit-radial-gradient(1px 2px, 3% -4% red, blue)")); - assert_false(CSS.supports("background-image", "-webkit-radial-gradient(1px 2px, -3% -4% red, blue)")); + assert_false(CSS.supports("background-image", "-webkit-radial-gradient(1px 2px, -3% 4%, red, blue)")); + assert_false(CSS.supports("background-image", "-webkit-radial-gradient(1px 2px, 3% -4%, red, blue)")); + assert_false(CSS.supports("background-image", "-webkit-radial-gradient(1px 2px, -3% -4%, red, blue)")); }, '-webkit-radial-gradient rejects negative radii.'); </script> diff --git a/tests/wpt/web-platform-tests/cookie-store/serviceworker_cookieStore_subscriptions_reset.sub.js b/tests/wpt/web-platform-tests/cookie-store/serviceworker_cookieStore_subscriptions_reset.sub.js new file mode 100644 index 00000000000..7fc8eabc570 --- /dev/null +++ b/tests/wpt/web-platform-tests/cookie-store/serviceworker_cookieStore_subscriptions_reset.sub.js @@ -0,0 +1,24 @@ +self.GLOBAL = { + isWindow: function() { return false; }, + isWorker: function() { return true; }, +}; +importScripts("/resources/testharness.js"); + +self.addEventListener('install', event => { + event.waitUntil((async () => { + try { + await cookieStore.subscribeToChanges([ + { name: 'cookie-name', matchType: 'equals', + url: '/cookie-store/scope/path' }]); + + // If the worker enters the "redundant" state, the UA may terminate it + // before all tests have been reported to the client. Stifle errors in + // order to avoid this and ensure all tests are consistently reported. + } catch (err) {} + })()); +}); + +self.addEventListener('message', async event => { + const subscriptions = await cookieStore.getChangeSubscriptions(); + event.ports[0].postMessage(subscriptions.length); +});
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/cookie-store/serviceworker_cookieStore_subscriptions_reset.tentative.https.html b/tests/wpt/web-platform-tests/cookie-store/serviceworker_cookieStore_subscriptions_reset.tentative.https.html new file mode 100644 index 00000000000..a0923548c78 --- /dev/null +++ b/tests/wpt/web-platform-tests/cookie-store/serviceworker_cookieStore_subscriptions_reset.tentative.https.html @@ -0,0 +1,37 @@ +<!doctype html> +<meta charset="utf-8"> +<title>Async Cookies: reset cookie change subscription list</title> +<link rel="help" href="https://github.com/WICG/cookie-store"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/service-workers/service-worker/resources/test-helpers.sub.js"> +</script> +<script src='resources/helpers.js'></script> +<script> +const worker_url = 'serviceworker_cookieStore_subscriptions_reset.sub.js'; +const scope = '/cookie-store/'; + +async function getSubscriptionCount(serviceWorker) { + return sendMessageOverChannel('', serviceWorker); +} + +promise_test(async t => { + const registration = await service_worker_unregister_and_register( + t, worker_url, scope); + t.add_cleanup(() => registration.unregister()); + await wait_for_state(t, registration.installing, 'activated'); + assert_equals(await getSubscriptionCount(registration.active), 1, + 'subscription count before unregistration'); + + await registration.unregister(); + + const new_registration = await navigator.serviceWorker.register( + worker_url, { scope }); + t.add_cleanup(() => new_registration.unregister()); + await wait_for_state(t, new_registration.installing, 'activated'); + + assert_equals(await getSubscriptionCount(new_registration.active), 1, + 'subscription count after unregistration'); +}, `cookiechange subscription list resets across service worker + unregistrations`); +</script> diff --git a/tests/wpt/web-platform-tests/css/CSS2/positioning/abspos-block-level-001-ref.html b/tests/wpt/web-platform-tests/css/CSS2/positioning/abspos-block-level-001-ref.html new file mode 100644 index 00000000000..58f605dc747 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/CSS2/positioning/abspos-block-level-001-ref.html @@ -0,0 +1,31 @@ +<!DOCTYPE html> +<style> +.rtl { + direction: rtl +} +.absolute { + position: absolute; +} +.green { + background-color: lime; + padding: 0 1ch; +} +</style> +<body> + <div> + <span class="absolute green">Block-level abspos before inline content</span> + <br> + </div> + <div> + <div>Inline content</div> + <div>Block-level abspos after inline content</div> + </div> + <div class=rtl> + <span class="absolute green">Block-level abspos before inline content</span> + <br> + </div> + <div class=rtl> + <div>Inline content</div> + <div>Block-level abspos after inline content</div> + </div> +</body> diff --git a/tests/wpt/web-platform-tests/css/CSS2/positioning/abspos-block-level-001.html b/tests/wpt/web-platform-tests/css/CSS2/positioning/abspos-block-level-001.html new file mode 100644 index 00000000000..c55fb3d3947 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/CSS2/positioning/abspos-block-level-001.html @@ -0,0 +1,40 @@ +<!DOCTYPE html> +<title>CSS Test: Static positions of block-level absolutely positioned objects</title> +<link rel="help" href="https://drafts.csswg.org/css2/visudet.html#static-position"> +<link rel="match" href="abspos-block-level-001-ref.html"> +<link rel="author" title="Koji Ishii" href="mailto:kojii@chromium.org"> +<style> +.rtl { + direction: rtl +} +.absolute { + position: absolute; +} +.red { + color: red; + padding: 0 1ch; +} +.green { + background-color: lime; + padding: 0 1ch; +} +</style> +<body> + <div> + <div class="absolute green">Block-level abspos before inline content</div> + <span class="red">Inline content</span> + </div> + <div> + <span>Inline content</span> + <div class=absolute>Block-level abspos after inline content</div> + </div> + <br> + <div class=rtl> + <div class="absolute green">Block-level abspos before inline content</div> + <span class="red">Inline content</span> + </div> + <div class=rtl> + <span>Inline content</span> + <div class=absolute>Block-level abspos after inline content</div> + </div> +</body> diff --git a/tests/wpt/web-platform-tests/css/CSS2/positioning/toogle-abspos-on-relpos-inline-child.html b/tests/wpt/web-platform-tests/css/CSS2/positioning/toogle-abspos-on-relpos-inline-child.html new file mode 100644 index 00000000000..7ea2a25bf5d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/CSS2/positioning/toogle-abspos-on-relpos-inline-child.html @@ -0,0 +1,17 @@ +<!DOCTYPE html> +<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org"> +<link rel="help" href="https://bugs.chromium.org/p/chromium/issues/detail?id=732397"> +<link rel="help" href="https://www.w3.org/TR/CSS22/visudet.html#containing-block-details"> +<link rel="match" href="../reference/ref-filled-green-100px-square.xht"> +<p>Test passes if there is a filled green square and <strong>no red</strong>.</p> +<div style="width:50px; height:50px; padding-left:50px; padding-top:50px; background:red;"> + <span style="position:relative;"> + <div id="victim" style="position:absolute; top:-50px; left:-50px; width:100px; height:100px; background:green;"></div> + </span> +</div> +<script> + document.body.offsetTop; + victim.style.position = "static"; + document.body.offsetTop; + victim.style.position = "absolute"; +</script> diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/animations/background-position-x-interpolation.html b/tests/wpt/web-platform-tests/css/css-backgrounds/animations/background-position-x-interpolation.html new file mode 100644 index 00000000000..a66c1ea078b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-backgrounds/animations/background-position-x-interpolation.html @@ -0,0 +1,78 @@ +<!DOCTYPE html> +<meta charset="UTF-8"> +<link rel="help" href="https://drafts.csswg.org/css-backgrounds-3/#background-position"> +<meta name="test" content="background-position-x supports animation"> + +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/css/support/interpolation-testcommon.js"></script> + +<style> +.parent { + background-position-x: 60px; +} + +.target { + background-position-x: 40px; +} +</style> + +<body> +<script> +test_interpolation({ + property: 'background-position-x', + from: neutralKeyframe, + to: '80px', +}, [ + {at: -0.25, expect: '30px'}, + {at: 0, expect: '40px'}, + {at: 0.25, expect: '50px'}, + {at: 0.5, expect: '60px'}, + {at: 0.75, expect: '70px'}, + {at: 1, expect: '80px'}, + {at: 1.25, expect: '90px'}, +]); + +test_interpolation({ + property: 'background-position-x', + from: 'initial', + to: 'right', +}, [ + {at: -0.25, expect: '-25%'}, + {at: 0, expect: '0%'}, + {at: 0.25, expect: '25%'}, + {at: 0.5, expect: '50%'}, + {at: 0.75, expect: '75%'}, + {at: 1, expect: '100%'}, + {at: 1.25, expect: '125%'}, +]); + +test_interpolation({ + property: 'background-position-x', + from: 'inherit', + to: '80px', +}, [ + {at: -0.25, expect: '55px'}, + {at: 0, expect: '60px'}, + {at: 0.25, expect: '65px'}, + {at: 0.5, expect: '70px'}, + {at: 0.75, expect: '75px'}, + {at: 1, expect: '80px'}, + {at: 1.25, expect: '85px'}, +]); + +test_interpolation({ + property: 'background-position-x', + from: '300px, 400px', + to: '500px, 600px, 700px', +}, [ + {at: -0.25, expect: '250px, 350px, 200px, 375px, 225px, 325px'}, + {at: 0, expect: '300px, 400px, 300px, 400px, 300px, 400px'}, + {at: 0.25, expect: '350px, 450px, 400px, 425px, 375px, 475px'}, + {at: 0.5, expect: '400px, 500px, 500px, 450px, 450px, 550px'}, + {at: 0.75, expect: '450px, 550px, 600px, 475px, 525px, 625px'}, + {at: 1, expect: '500px, 600px, 700px, 500px, 600px, 700px'}, + {at: 1.25, expect: '550px, 650px, 800px, 525px, 675px, 775px'}, +]); +</script> +</body> diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/animations/background-position-y-interpolation.html b/tests/wpt/web-platform-tests/css/css-backgrounds/animations/background-position-y-interpolation.html new file mode 100644 index 00000000000..c272a71226f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-backgrounds/animations/background-position-y-interpolation.html @@ -0,0 +1,78 @@ +<!DOCTYPE html> +<meta charset="UTF-8"> +<link rel="help" href="https://drafts.csswg.org/css-backgrounds-3/#background-position"> +<meta name="test" content="background-position-y supports animation"> + +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/css/support/interpolation-testcommon.js"></script> + +<style> +.parent { + background-position-y: 60px; +} + +.target { + background-position-y: 40px; +} +</style> + +<body> +<script> +test_interpolation({ + property: 'background-position-y', + from: neutralKeyframe, + to: '80px', +}, [ + {at: -0.25, expect: '30px'}, + {at: 0, expect: '40px'}, + {at: 0.25, expect: '50px'}, + {at: 0.5, expect: '60px'}, + {at: 0.75, expect: '70px'}, + {at: 1, expect: '80px'}, + {at: 1.25, expect: '90px'}, +]); + +test_interpolation({ + property: 'background-position-y', + from: 'initial', + to: 'bottom', +}, [ + {at: -0.25, expect: '-25%'}, + {at: 0, expect: '0%'}, + {at: 0.25, expect: '25%'}, + {at: 0.5, expect: '50%'}, + {at: 0.75, expect: '75%'}, + {at: 1, expect: '100%'}, + {at: 1.25, expect: '125%'}, +]); + +test_interpolation({ + property: 'background-position-y', + from: 'inherit', + to: '80px', +}, [ + {at: -0.25, expect: '55px'}, + {at: 0, expect: '60px'}, + {at: 0.25, expect: '65px'}, + {at: 0.5, expect: '70px'}, + {at: 0.75, expect: '75px'}, + {at: 1, expect: '80px'}, + {at: 1.25, expect: '85px'}, +]); + +test_interpolation({ + property: 'background-position-y', + from: '300px, 400px', + to: '500px, 600px, 700px', +}, [ + {at: -0.25, expect: '250px, 350px, 200px, 375px, 225px, 325px'}, + {at: 0, expect: '300px, 400px, 300px, 400px, 300px, 400px'}, + {at: 0.25, expect: '350px, 450px, 400px, 425px, 375px, 475px'}, + {at: 0.5, expect: '400px, 500px, 500px, 450px, 450px, 550px'}, + {at: 0.75, expect: '450px, 550px, 600px, 475px, 525px, 625px'}, + {at: 1, expect: '500px, 600px, 700px, 500px, 600px, 700px'}, + {at: 1.25, expect: '550px, 650px, 800px, 525px, 675px, 775px'}, +]); +</script> +</body> diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/animations/box-shadow-interpolation.html b/tests/wpt/web-platform-tests/css/css-backgrounds/animations/box-shadow-interpolation.html new file mode 100644 index 00000000000..d99e08faf13 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-backgrounds/animations/box-shadow-interpolation.html @@ -0,0 +1,171 @@ +<!DOCTYPE html> +<meta charset="UTF-8"> +<link rel="help" href="https://drafts.csswg.org/css-backgrounds-3/#box-shadow"> +<meta name="test" content="box-shadow supports animation"> + +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/css/support/interpolation-testcommon.js"></script> + +<style> +.parent { + box-shadow: 30px 10px 30px 10px black; +} +.target { + display: inline-block; + width: 60px; + height: 60px; + font-size: 3px; + border: 2px solid; + margin-right: 20px; + margin-bottom: 30px; + color: green; + box-shadow: 10px 30px 10px 30px black; +} +.expected { + margin-right: 40px; +} +</style> +<body> +<script> +test_interpolation({ + property: 'box-shadow', + from: neutralKeyframe, + to: '20px 20px 20px 20px black', +}, [ + {at: -0.3, expect: 'rgb(0, 0, 0) 7px 33px 7px 33px'}, + {at: 0, expect: 'rgb(0, 0, 0) 10px 30px 10px 30px'}, + {at: 0.3, expect: 'rgb(0, 0, 0) 13px 27px 13px 27px'}, + {at: 0.6, expect: 'rgb(0, 0, 0) 16px 24px 16px 24px'}, + {at: 1, expect: 'rgb(0, 0, 0) 20px 20px 20px 20px'}, + {at: 1.5, expect: 'rgb(0, 0, 0) 25px 15px 25px 15px'}, +]); + +test_interpolation({ + property: 'box-shadow', + from: 'initial', + to: '20px 20px 20px 20px black', +}, [ + {at: -0.3, expect: 'rgba(0, 0, 0, 0) -6px -6px 0px -6px'}, + {at: 0, expect: 'rgba(0, 0, 0, 0) 0px 0px 0px 0px'}, + {at: 0.3, expect: 'rgba(0, 0, 0, 0.3) 6px 6px 6px 6px'}, + {at: 0.6, expect: 'rgba(0, 0, 0, 0.6) 12px 12px 12px 12px'}, + {at: 1, expect: 'rgb(0, 0, 0) 20px 20px 20px 20px'}, + {at: 1.5, expect: 'rgb(0, 0, 0) 30px 30px 30px 30px'}, +]); + +test_interpolation({ + property: 'box-shadow', + from: 'inherit', + to: '20px 20px 20px 20px black', +}, [ + {at: -0.3, expect: 'rgb(0, 0, 0) 33px 7px 33px 7px'}, + {at: 0, expect: 'rgb(0, 0, 0) 30px 10px 30px 10px'}, + {at: 0.3, expect: 'rgb(0, 0, 0) 27px 13px 27px 13px'}, + {at: 0.6, expect: 'rgb(0, 0, 0) 24px 16px 24px 16px'}, + {at: 1, expect: 'rgb(0, 0, 0) 20px 20px 20px 20px'}, + {at: 1.5, expect: 'rgb(0, 0, 0) 15px 25px 15px 25px'}, +]); + +test_interpolation({ + property: 'box-shadow', + from: 'unset', + to: '20px 20px 20px 20px black', +}, [ + {at: -0.3, expect: 'rgba(0, 0, 0, 0) -6px -6px 0px -6px'}, + {at: 0, expect: 'rgba(0, 0, 0, 0) 0px 0px 0px 0px'}, + {at: 0.3, expect: 'rgba(0, 0, 0, 0.3) 6px 6px 6px 6px'}, + {at: 0.6, expect: 'rgba(0, 0, 0, 0.6) 12px 12px 12px 12px'}, + {at: 1, expect: 'rgb(0, 0, 0) 20px 20px 20px 20px'}, + {at: 1.5, expect: 'rgb(0, 0, 0) 30px 30px 30px 30px'}, +]); + +// Test basic functionality, and clipping blur at 0 +test_interpolation({ + property: 'box-shadow', + from: '15px 10px 5px 6px black', + to: '-15px -10px 25px -4px orange', +}, [ + {at: -0.3, expect: 'rgb(0, 0, 0) 24px 16px 0px 9px'}, + {at: 0, expect: 'rgb(0, 0, 0) 15px 10px 5px 6px'}, + {at: 0.3, expect: 'rgb(77, 50, 0) 6px 4px 11px 3px'}, + {at: 0.6, expect: 'rgb(153, 99, 0) -3px -2px 17px 0px'}, + {at: 1, expect: 'rgb(255, 165, 0) -15px -10px 25px -4px'}, + {at: 1.5, expect: 'rgb(255, 248, 0) -30px -20px 35px -9px'}, +]); + +// Test with color as first value. +test_interpolation({ + property: 'box-shadow', + from: 'black 15px 10px 5px 6px', + to: 'orange -15px -10px 25px -4px', +}, [ + {at: -0.3, expect: 'rgb(0, 0, 0) 24px 16px 0px 9px'}, + {at: 0, expect: 'rgb(0, 0, 0) 15px 10px 5px 6px'}, + {at: 0.3, expect: 'rgb(77, 50, 0) 6px 4px 11px 3px'}, + {at: 0.6, expect: 'rgb(153, 99, 0) -3px -2px 17px 0px'}, + {at: 1, expect: 'rgb(255, 165, 0) -15px -10px 25px -4px'}, + {at: 1.5, expect: 'rgb(255, 248, 0) -30px -20px 35px -9px'}, +]); + +test_interpolation({ + property: 'box-shadow', + from: '15px 10px 5px 6px black inset', + to: '-15px -10px 25px -4px orange inset', +}, [ + {at: -0.3, expect: 'rgb(0, 0, 0) 24px 16px 0px 9px inset'}, + {at: 0, expect: 'rgb(0, 0, 0) 15px 10px 5px 6px inset'}, + {at: 0.3, expect: 'rgb(77, 50, 0) 6px 4px 11px 3px inset'}, + {at: 0.6, expect: 'rgb(153, 99, 0) -3px -2px 17px 0px inset'}, + {at: 1, expect: 'rgb(255, 165, 0) -15px -10px 25px -4px inset'}, + {at: 1.5, expect: 'rgb(255, 248, 0) -30px -20px 35px -9px inset'}, +]); + +test_interpolation({ + property: 'box-shadow', + from: '15px 10px 5px 6px black', + to: '-15px -10px 25px -4px', +}, [ + {at: -0.3, expect: 'rgb(0, 0, 0) 24px 16px 0px 9px'}, + {at: 0, expect: 'rgb(0, 0, 0) 15px 10px 5px 6px'}, + {at: 0.3, expect: 'rgb(0, 38, 0) 6px 4px 11px 3px'}, + {at: 0.6, expect: 'rgb(0, 77, 0) -3px -2px 17px 0px'}, + {at: 1, expect: 'rgb(0, 128, 0) -15px -10px 25px -4px'}, + {at: 1.5, expect: 'rgb(0, 192, 0) -30px -20px 35px -9px'}, +]); + +test_interpolation({ + property: 'box-shadow', + from: '10px 10px 10px 10px black', + to: '10px 10px 10px 10px currentColor', +}, [ + {at: -0.3, expect: 'rgb(0, 0, 0) 10px 10px 10px 10px'}, + {at: 0, expect: 'rgb(0, 0, 0) 10px 10px 10px 10px'}, + {at: 0.3, expect: 'rgb(0, 38, 0) 10px 10px 10px 10px'}, + {at: 0.6, expect: 'rgb(0, 77, 0) 10px 10px 10px 10px'}, + {at: 1, expect: 'rgb(0, 128, 0) 10px 10px 10px 10px'}, + {at: 1.5, expect: 'rgb(0, 192, 0) 10px 10px 10px 10px'}, +]); + +// Test padding shorter lists +test_interpolation({ + property: 'box-shadow', + from: '10px 20px rgba(255, 255, 0, 0.5), inset 5px 10em #008000', + to: 'none', +}, [ + {at: -0.3, expect: 'rgba(255, 255, 0, 0.65) 13px 26px 0px 0px, rgb(0, 166, 0) 6.5px 39px 0px 0px inset'}, + {at: 0, expect: 'rgba(255, 255, 0, 0.5) 10px 20px 0px 0px, rgb(0, 128, 0) 5px 30px 0px 0px inset'}, + {at: 0.3, expect: 'rgba(255, 255, 0, 0.353) 7px 14px 0px 0px, rgba(0, 128, 0, 0.7) 3.5px 21px 0px 0px inset'}, + {at: 0.6, expect: 'rgba(255, 255, 0, 0.2) 4px 8px 0px 0px, rgba(0, 128, 0, 0.4) 2px 12px 0px 0px inset'}, + {at: 1, expect: 'rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(0, 0, 0, 0) 0px 0px 0px 0px inset'}, + {at: 1.5, expect: 'rgba(0, 0, 0, 0) -5px -10px 0px 0px, rgba(0, 0, 0, 0) -2.5px -15px 0px 0px inset'}, +]); + +// Test unmatched inset +test_no_interpolation({ + property: 'box-shadow', + from: '10px 20px yellow, 5px 10px green', + to: 'inset 5px 10px green, 15px 20px blue' +}); +</script> +</body> diff --git a/tests/wpt/web-platform-tests/css/css-grid/grid-definition/grid-inline-support-grid-template-areas-001.html b/tests/wpt/web-platform-tests/css/css-grid/grid-definition/grid-inline-support-grid-template-areas-001.html index d647c2613af..1573fa496f6 100644 --- a/tests/wpt/web-platform-tests/css/css-grid/grid-definition/grid-inline-support-grid-template-areas-001.html +++ b/tests/wpt/web-platform-tests/css/css-grid/grid-definition/grid-inline-support-grid-template-areas-001.html @@ -9,7 +9,7 @@ <script src="/resources/testharnessreport.js"></script> <script src="support/testing-utils.js"></script> <style> - #grid { + #inline-grid { display: inline-grid; } </style> diff --git a/tests/wpt/web-platform-tests/css/css-grid/grid-definition/grid-inline-support-repeat-001.html b/tests/wpt/web-platform-tests/css/css-grid/grid-definition/grid-inline-support-repeat-001.html index 68ca0bd9b7c..465e5e8cd82 100644 --- a/tests/wpt/web-platform-tests/css/css-grid/grid-definition/grid-inline-support-repeat-001.html +++ b/tests/wpt/web-platform-tests/css/css-grid/grid-definition/grid-inline-support-repeat-001.html @@ -34,8 +34,8 @@ document.fonts.ready.then(()=> { TestingUtils.testGridTemplateColumnsRows("grid", "repeat(1, auto)", "repeat(1, auto)", "90px", "10px"); TestingUtils.testGridTemplateColumnsRows("emptyGrid", "repeat(2, auto)", "repeat(2, auto)", ["0px 0px", "repeat(2, 0px)"], ["0px 0px", "repeat(2, 0px)"]); TestingUtils.testGridTemplateColumnsRows("grid", "repeat(2, auto)", "repeat(2, auto)", "90px 0px", "10px 0px"); - TestingUtils.testGridTemplateColumnsRows("emptyGrid", "repeat(2, minmax(50px, calc(50px + 50%))", "repeat(2, minmax(50px, calc(50px + 50%))", ["400px 400px", "repeat(2, 400px)"], ["300px 300px", "repeat(2, 300px)"]); - TestingUtils.testGridTemplateColumnsRows("grid", "repeat(2, minmax(50px, calc(50px + 50%))", "repeat(2, minmax(50px, calc(50px + 50%))", ["400px 400px", "repeat(2, 400px)"], ["300px 300px", "repeat(2, 300px)"]); + TestingUtils.testGridTemplateColumnsRows("emptyGrid", "repeat(2, minmax(50px, calc(50px + 50%)))", "repeat(2, minmax(50px, calc(50px + 50%)))", ["400px 400px", "repeat(2, 400px)"], ["300px 300px", "repeat(2, 300px)"]); + TestingUtils.testGridTemplateColumnsRows("grid", "repeat(2, minmax(50px, calc(50px + 50%)))", "repeat(2, minmax(50px, calc(50px + 50%)))", ["400px 400px", "repeat(2, 400px)"], ["300px 300px", "repeat(2, 300px)"]); TestingUtils.testGridTemplateColumnsRows("emptyGrid", "repeat(5, 10%)", "repeat(5, 10%)", ["80px 80px 80px 80px 80px", "repeat(5, 80px)"], ["60px 60px 60px 60px 60px", "repeat(5, 60px)"]); TestingUtils.testGridTemplateColumnsRows("grid", "repeat(5, 10%)", "repeat(5, 10%)", ["80px 80px 80px 80px 80px", "repeat(5, 80px)"], ["60px 60px 60px 60px 60px", "repeat(5, 60px)"]); TestingUtils.testGridTemplateColumnsRows("emptyGrid", "max-content repeat(2, 25%) 1fr", "100px repeat(2, 25%) 1fr", ["0px 200px 200px 400px", "0px repeat(2, 200px) 400px"], ["100px 150px 150px 200px", "100px repeat(2, 150px) 200px"]); diff --git a/tests/wpt/web-platform-tests/css/css-grid/grid-definition/grid-support-repeat-001.html b/tests/wpt/web-platform-tests/css/css-grid/grid-definition/grid-support-repeat-001.html index 78a44e287a7..c2c8be0c591 100644 --- a/tests/wpt/web-platform-tests/css/css-grid/grid-definition/grid-support-repeat-001.html +++ b/tests/wpt/web-platform-tests/css/css-grid/grid-definition/grid-support-repeat-001.html @@ -34,8 +34,8 @@ document.fonts.ready.then(()=> { TestingUtils.testGridTemplateColumnsRows("grid", "repeat(1, auto)", "repeat(1, auto)", "90px", "10px"); TestingUtils.testGridTemplateColumnsRows("emptyGrid", "repeat(2, auto)", "repeat(2, auto)", ["0px 0px", "repeat(2, 0px)"], ["0px 0px", "repeat(2, 0px)"]); TestingUtils.testGridTemplateColumnsRows("grid", "repeat(2, auto)", "repeat(2, auto)", "90px 0px", "10px 0px"); - TestingUtils.testGridTemplateColumnsRows("emptyGrid", "repeat(2, minmax(50px, calc(50px + 50%))", "repeat(2, minmax(50px, calc(50px + 50%))", ["400px 400px", "repeat(2, 400px)"], ["300px 300px", "repeat(2, 300px)"]); - TestingUtils.testGridTemplateColumnsRows("grid", "repeat(2, minmax(50px, calc(50px + 50%))", "repeat(2, minmax(50px, calc(50px + 50%))", ["400px 400px", "repeat(2, 400px)"], ["300px 300px", "repeat(2, 300px)"]); + TestingUtils.testGridTemplateColumnsRows("emptyGrid", "repeat(2, minmax(50px, calc(50px + 50%)))", "repeat(2, minmax(50px, calc(50px + 50%)))", ["400px 400px", "repeat(2, 400px)"], ["300px 300px", "repeat(2, 300px)"]); + TestingUtils.testGridTemplateColumnsRows("grid", "repeat(2, minmax(50px, calc(50px + 50%)))", "repeat(2, minmax(50px, calc(50px + 50%)))", ["400px 400px", "repeat(2, 400px)"], ["300px 300px", "repeat(2, 300px)"]); TestingUtils.testGridTemplateColumnsRows("emptyGrid", "repeat(5, 10%)", "repeat(5, 10%)", ["80px 80px 80px 80px 80px", "repeat(5, 80px)"], ["60px 60px 60px 60px 60px", "repeat(5, 60px)"]); TestingUtils.testGridTemplateColumnsRows("grid", "repeat(5, 10%)", "repeat(5, 10%)", ["80px 80px 80px 80px 80px", "repeat(5, 80px)"], ["60px 60px 60px 60px 60px", "repeat(5, 60px)"]); TestingUtils.testGridTemplateColumnsRows("emptyGrid", "max-content repeat(2, 25%) 1fr", "100px repeat(2, 25%) 1fr", ["0px 200px 200px 400px", "0px repeat(2, 200px) 400px"], ["100px 150px 150px 200px", "100px repeat(2, 150px) 200px"]); diff --git a/tests/wpt/web-platform-tests/css/css-overflow/overflow-padding.html b/tests/wpt/web-platform-tests/css/css-overflow/overflow-padding.html new file mode 100644 index 00000000000..963192f6f43 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-overflow/overflow-padding.html @@ -0,0 +1,113 @@ +<!doctype html> +<link rel="author" title="Aleks Totic" href="mailto:atotic@chromium.org"> +<link rel="help" href="https://github.com/w3c/csswg-drafts/issues/129"> +<link rel="help" href="https://bugs.chromium.org/p/chromium/issues/detail?id=1003373"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" /> +<style> +.container { + --size: 100px; + --padding-size: 30px; + --too-big-size: calc(var(--size) - var(--padding-size) + 1px); + --just-right-size: calc(var(--size) - var(--padding-size)); + overflow:auto; + width: var(--size); + height: var(--size); + padding-right: var(--padding-size); + padding-bottom: var(--padding-size); + background: #DDD; + box-sizing: border-box; + display: inline-block; +} +.big { + width: var(--too-big-size); + height: var(--too-big-size); + background: green; +} +.small { + width: var(--just-right-size); + height: var(--just-right-size); + background: yellow; +} +.bigfont { + font-size: var(--too-big-size); + font-family: Ahem; + line-height: 1; + color:green; +} +.smallfont { + font-size: var(--just-right-size); + font-family: Ahem; + line-height: 1; + color:yellow; +} +.red { + background:red; +} + +</style> +<body onload="runTest()"> +<p><span style="background:green">green</span> blocks get scrollbars, <span style="background:yellow">yellow</span> do not.</p> +<p>Block child gets only block padding.</p> +<div class="container" data-scrollbar="v"> + <div class="big"></div> +</div> +<div class="container" data-scrollbar=""> + <div class="small"></div> +</div> + +<p>Inline child gets block and inline padding.</p> +<div class="container bigfont" data-scrollbar="hv"> + <span>X</span> +</div> +<div class="container" style="font:36px/1 Ahem;color:green" data-scrollbar="hv"> + <span>XX</span><br>XX +</div> +<div class="container smallfont" data-scrollbar=""> + <span>X</span> +</div> + +<p>Inline block child gets block and inline padding.</p> +<div class="container" data-scrollbar="hv"> + <div class="big" style="display:inline-block;vertical-align:bottom;"></div> +</div> +<div class="container" data-scrollbar=""> + <div class="small" style="display:inline-block;vertical-align:bottom;"></div> +</div> + +<p>Padding applies to linebox, not linebox overflow.</p> +<div class="container" data-scrollbar=""> + <div class="small" style="display:inline-block;vertical-align:bottom"> + <div style="height:90px;width:80px;background: rgba(0,0,255,0.3)"></div> + </div> +</div> +<script> + function hasHorizontalScrollbar(el) { + return (el.offsetHeight - el.clientHeight) > 0; + } + function hasVerticalScrollbar(el) { + return (el.offsetWidth - el.clientWidth) > 0; + } + // Tests needs to be run after load. + function runTest() { + test(()=> { + let i=0; + for (el of Array.from(document.querySelectorAll(".container"))) { + i++; + el.classList.toggle("red"); + let expected = el.getAttribute("data-scrollbar"); + if (expected.match(/h/)) + assert_true(hasHorizontalScrollbar(el), `horizontal scrollbar ${i}`); + else + assert_false(hasHorizontalScrollbar(el), `horizontal scrollbar ${i}`); + if (expected.match(/v/)) + assert_true(hasVerticalScrollbar(el), `vertical scrollbar ${i}`); + else + assert_false(hasVerticalScrollbar(el), `vertical scrollbar ${i}`); + el.classList.toggle("red"); + } + }, "Container padding is applied approriately to block/inline children."); + } +</script> +</body> diff --git a/tests/wpt/web-platform-tests/css/css-position/position-absolute-replaced-minmax.html b/tests/wpt/web-platform-tests/css/css-position/position-absolute-replaced-minmax.html index ff6757aeea3..a5c0d516472 100644 --- a/tests/wpt/web-platform-tests/css/css-position/position-absolute-replaced-minmax.html +++ b/tests/wpt/web-platform-tests/css/css-position/position-absolute-replaced-minmax.html @@ -251,13 +251,20 @@ data-expected-width="338" data-expected-height="182" data-offset-y="11" data-offset-x="59" > </div> -<!-- Just viewbox. Has aspect_ration, but no intrinsic size +<!-- Just viewbox. Has aspect_ratio, but no intrinsic size inline_width defaults to container width --> <div class="container"> <img class="target" src="data:image/svg+xml,%3Csvg viewBox='0 0 100 10' xmlns='http://www.w3.org/2000/svg' %3E%3Crect width='100%' height='100%' style='fill:rgb(0,255,0);'/%3E%3C/svg%3E" data-expected-width="388" data-expected-height="67" data-offset-y="126" data-offset-x="9" > </div> +<!-- Just viewbox. Has aspect_ratio, but no intrinsic size + inline_width is constrained by left/right, height computed proportionally --> +<div class="container"> + <img class="target" style="left:100px;right:100px" src="data:image/svg+xml,%3Csvg viewBox='0 0 100 10' xmlns='http://www.w3.org/2000/svg' %3E%3Crect width='100%' height='100%' style='fill:rgb(0,255,0);'/%3E%3C/svg%3E" + data-expected-width="188" data-expected-height="47" data-offset-y="146" data-offset-x="109" + > +</div> <!-- Viewbox + svg width. Has aspect_ratio and width. Height is scaled --> <div class="container"> <img class="target" src="data:image/svg+xml,%3Csvg viewBox='0 0 100 10' width='100px' xmlns='http://www.w3.org/2000/svg' %3E%3Crect width='100%' height='100%' style='fill:rgb(0,255,0);'/%3E%3C/svg%3E" diff --git a/tests/wpt/web-platform-tests/css/css-scroll-anchoring/scroll-padding-affects-anchoring.html b/tests/wpt/web-platform-tests/css/css-scroll-anchoring/scroll-padding-affects-anchoring.html new file mode 100644 index 00000000000..e2c8741d889 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-scroll-anchoring/scroll-padding-affects-anchoring.html @@ -0,0 +1,32 @@ +<!DOCTYPE html> +<title>scroll anchoring accounts for scroll-padding</title> +<link rel="author" href="mailto:emilio@crisal.io" title="Emilio Cobos Álvarez"> +<link rel="author" href="https://mozilla.org" title="Mozilla"> +<link rel="help" href="https://drafts.csswg.org/css-scroll-anchoring/#anchor-node-selection"> +<link rel="help" href="https://drafts.csswg.org/css-scroll-snap-1/#optimal-viewing-region"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<style> + #scroller { + overflow: auto; + height: 500px; + scroll-padding-top: 200px; + } + #changer { + height: 100px; + } + #content { + height: 1000px; + } +</style> +<div id="scroller"> + <div id="changer"></div> + <div id="content"></div> +</div> +<script> + test(() => { + scroller.scrollTop = 50; + changer.style.height = "200px"; + assert_equals(scroller.scrollTop, 150, "Shouldn't anchor to #changer, since it's covered by scroll-padding"); + }); +</script> diff --git a/tests/wpt/web-platform-tests/css/css-tables/auto-layout-calc-width-001.html b/tests/wpt/web-platform-tests/css/css-tables/auto-layout-calc-width-001.html new file mode 100644 index 00000000000..dbd35d8af17 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-tables/auto-layout-calc-width-001.html @@ -0,0 +1,37 @@ +<!DOCTYPE html> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/check-layout-th.js"></script> +<link rel="author" title="David Grogan" href="dgrogan@chromium.org"> +<link rel="author" title="Xiaocheng Hu" href="xiaochengh@chromium.org"> +<link rel="help" href="https://drafts.csswg.org/css-tables-3/#distributing-width-to-columns"> +<link rel="help" href="https://github.com/w3c/csswg-drafts/issues/94"> + +<style> +table { + width: 200px; + border-collapse: collapse; + table-layout: auto; + height: 20px; +} + +td { + padding: 0px; + background: lime; + outline: 1px solid blue; +} +</style> + +<h2>Calc width on col is treated as auto in auto tables</h2> + +<table id=theTable> + <col style="width:calc(20% + 80px)"> + <tr> + <td data-expected-width=100></td> + <td data-expected-width=100></td> + </tr> +</table> + +<script> +checkLayout('#theTable') +</script> diff --git a/tests/wpt/web-platform-tests/css/css-tables/calc-percent-plus-0px.html b/tests/wpt/web-platform-tests/css/css-tables/calc-percent-plus-0px-auto.html index 6f04a2c0c62..ec6e9ccfdd7 100644 --- a/tests/wpt/web-platform-tests/css/css-tables/calc-percent-plus-0px.html +++ b/tests/wpt/web-platform-tests/css/css-tables/calc-percent-plus-0px-auto.html @@ -1,10 +1,11 @@ <!DOCTYPE html> <meta charset="utf-8"> <title>Simple calc expression in table layout</title> +<link rel="help" href="https://github.com/w3c/csswg-drafts/issues/94"> <link rel="help" href="https://github.com/w3c/csswg-drafts/issues/3482"> <link rel="match" href="calc-percent-plus-0px-ref.html"> -<meta name="assert" content="calc(% + 0px) should be handled as calc(%) in table layout."> -<table border> +<meta name="assert" content="calc(% + 0px) should be handled as calc(%) in auto table layout."> +<table border style="table-layout: auto"> <tr> <td style="width: calc(50% + 0px)">x</td> <td style="width: 100px">y</td> diff --git a/tests/wpt/web-platform-tests/css/css-tables/calc-percent-plus-0px-fixed-ref.html b/tests/wpt/web-platform-tests/css/css-tables/calc-percent-plus-0px-fixed-ref.html new file mode 100644 index 00000000000..ec862ff1e08 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-tables/calc-percent-plus-0px-fixed-ref.html @@ -0,0 +1,10 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>Simple calc expression in table layout</title> +<table border style="table-layout: fixed; width: 200px"> + <tr> + <td style="width: 50%">x</td> + <td>y</td> + <td>z</td> + </tr> +</table> diff --git a/tests/wpt/web-platform-tests/css/css-tables/calc-percent-plus-0px-fixed.html b/tests/wpt/web-platform-tests/css/css-tables/calc-percent-plus-0px-fixed.html new file mode 100644 index 00000000000..bcdb6721d4c --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-tables/calc-percent-plus-0px-fixed.html @@ -0,0 +1,14 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>Simple calc expression in table layout</title> +<link rel="help" href="https://github.com/w3c/csswg-drafts/issues/94"> +<link rel="help" href="https://github.com/w3c/csswg-drafts/issues/3482"> +<link rel="match" href="calc-percent-plus-0px-fixed-ref.html"> +<meta name="assert" content="calc(% + 0px) should be handled as calc(%) in fixed table layout."> +<table border style="table-layout: fixed; width: 200px"> + <tr> + <td style="width: calc(50% + 0px)">x</td> + <td>y</td> + <td>z</td> + </tr> +</table> diff --git a/tests/wpt/web-platform-tests/css/css-tables/fixed-layout-calc-width-001.html b/tests/wpt/web-platform-tests/css/css-tables/fixed-layout-calc-width-001.html index dd70db0a756..ac6f9fc1a96 100644 --- a/tests/wpt/web-platform-tests/css/css-tables/fixed-layout-calc-width-001.html +++ b/tests/wpt/web-platform-tests/css/css-tables/fixed-layout-calc-width-001.html @@ -4,6 +4,7 @@ <script src="/resources/check-layout-th.js"></script> <link rel="author" title="David Grogan" href="dgrogan@chromium.org"> <link rel="help" href="https://drafts.csswg.org/css-tables-3/#distributing-width-to-columns"> +<link rel="help" href="https://github.com/w3c/csswg-drafts/issues/94"> <style> table { diff --git a/tests/wpt/web-platform-tests/css/css-text/hyphens/hyphens-out-of-flow-001.html b/tests/wpt/web-platform-tests/css/css-text/hyphens/hyphens-out-of-flow-001.html index 05d78b2c6cc..844071126b0 100644 --- a/tests/wpt/web-platform-tests/css/css-text/hyphens/hyphens-out-of-flow-001.html +++ b/tests/wpt/web-platform-tests/css/css-text/hyphens/hyphens-out-of-flow-001.html @@ -4,7 +4,7 @@ <link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net/"> <link rel="help" href="https://drafts.csswg.org/css-text-3/#hyphens-property"> <meta name="flags" content=""> -<link rel="match" href="reference/hyphens-span-001-ref.html"> +<link rel="match" href="reference/hyphens-out-of-flow-001-ref.html"> <meta name="assert" content="the presence of an out of flow element has no effect on manual hyhenation"> <style> span { diff --git a/tests/wpt/web-platform-tests/css/css-text/hyphens/reference/hyphens-out-of-flow-001-ref.html b/tests/wpt/web-platform-tests/css/css-text/hyphens/reference/hyphens-out-of-flow-001-ref.html new file mode 100644 index 00000000000..73394479247 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-text/hyphens/reference/hyphens-out-of-flow-001-ref.html @@ -0,0 +1,22 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>CSS Text Test reference</title> +<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net/"> +<style> +div { + border: solid orange; + margin: 5px; + width: 6ch; + hyphens: manual; +} +</style> + +<p>Test passes if the text in all orange boxes below is identical (including the presence and position of a hyphen). + +<div>high­way</div> +<div>high­way</div> +<div>high­way</div> +<div>high­way</div> +<div>high­way</div> +<div>high­way</div> +<div>high­way</div> diff --git a/tests/wpt/web-platform-tests/css/css-text/i18n/css3-text-line-break-baspglwj-083.html b/tests/wpt/web-platform-tests/css/css-text/i18n/css3-text-line-break-baspglwj-083.html index 5d389995d2a..48f9151c459 100644 --- a/tests/wpt/web-platform-tests/css/css-text/i18n/css3-text-line-break-baspglwj-083.html +++ b/tests/wpt/web-platform-tests/css/css-text/i18n/css3-text-line-break-baspglwj-083.html @@ -2,7 +2,7 @@ <html lang="en" > <head> <meta charset="utf-8"/> -<title>CSS3 Text, linebreaks: U+07BE TIBETAN KU RU KHA</title> +<title>CSS3 Text, linebreaks: U+0FBE TIBETAN KU RU KHA</title> <link rel='author' title='Richard Ishida' href='mailto:ishida@w3.org'> <link rel='help' href='https://drafts.csswg.org/css-text-3/#line-breaking'> <script src="/resources/testharness.js"></script> @@ -21,10 +21,10 @@ <div class="test"> - <div id="breakable">aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa޾bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb</div> - <div id="breakable2">aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa޾bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb</div> - <div id="breakable3">aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa޾bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb</div> - <div id="breakable4">aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa޾bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb</div> + <div id="breakable">aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa྾bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb</div> + <div id="breakable2">aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa྾bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb</div> + <div id="breakable3">aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa྾bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb</div> + <div id="breakable4">aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa྾bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb</div> </div> diff --git a/tests/wpt/web-platform-tests/css/css-text/i18n/css3-text-line-break-baspglwj-094.html b/tests/wpt/web-platform-tests/css/css-text/i18n/css3-text-line-break-baspglwj-094.html deleted file mode 100644 index a38ad72667d..00000000000 --- a/tests/wpt/web-platform-tests/css/css-text/i18n/css3-text-line-break-baspglwj-094.html +++ /dev/null @@ -1,54 +0,0 @@ -<!DOCTYPE html> -<html lang="en" > -<head> -<meta charset="utf-8"/> -<title>CSS3 Text, linebreaks: U+1B5C BALINESE WINDU</title> -<link rel='author' title='Richard Ishida' href='mailto:ishida@w3.org'> -<link rel='help' href='https://drafts.csswg.org/css-text-3/#line-breaking'> -<script src="/resources/testharness.js"></script> -<script src="/resources/testharnessreport.js"></script> -<meta name='flags' content='should dom'> -<meta name="assert" content="[Exploratory] The browser will break a line of text after any Unicode character with the BA Other Terminating Punctuation property."> -<style type='text/css'> -.test > div { font-family: monospace; font-size: 25px; width: 50ch; line-height: 30px; } -#breakable2 { white-space: pre-line; } -#breakable3 { white-space: pre-wrap; } -#breakable4 { white-space: break-spaces; } -</style> -</head> -<body> - - - -<div class="test"> - <div id="breakable">aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa᭜bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb</div> - <div id="breakable2">aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa᭜bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb</div> - <div id="breakable3">aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa᭜bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb</div> - <div id="breakable4">aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa᭜bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb</div> -</div> - - -<!--Notes: - -Box height: <span id='debugresult'></span><script>document.getElementById('debugresult').innerHTML = document.getElementById('breakable').offsetHeight;</script> - ---> -<script> -test(function() { - assert_true(document.getElementById('breakable').offsetHeight > 35); -}, "white-space:normal"); -test(function() { - assert_true(document.getElementById('breakable2').offsetHeight > 35); -}, "white-space:pre-line"); -test(function() { - assert_true(document.getElementById('breakable3').offsetHeight > 35); -}, "white-space:pre-wrap"); -test(function() { - assert_true(document.getElementById('breakable4').offsetHeight > 35); -}, "white-space:break-spaces"); -</script> - -<div id='log'></div> - -</body> -</html> diff --git a/tests/wpt/web-platform-tests/css/css-text/line-break/line-break-anywhere-002.html b/tests/wpt/web-platform-tests/css/css-text/line-break/line-break-anywhere-002.html index ddbf5547307..53df344ff8d 100644 --- a/tests/wpt/web-platform-tests/css/css-text/line-break/line-break-anywhere-002.html +++ b/tests/wpt/web-platform-tests/css/css-text/line-break/line-break-anywhere-002.html @@ -14,7 +14,7 @@ background: green; font-family: monospace; width: 1ch; - height: 20em; + height: 19em; } #test { width: 1ch; diff --git a/tests/wpt/web-platform-tests/css/css-text/overflow-wrap/overflow-wrap-cluster-001.html b/tests/wpt/web-platform-tests/css/css-text/overflow-wrap/overflow-wrap-cluster-001.html index 7911a1b214c..797883b1478 100644 --- a/tests/wpt/web-platform-tests/css/css-text/overflow-wrap/overflow-wrap-cluster-001.html +++ b/tests/wpt/web-platform-tests/css/css-text/overflow-wrap/overflow-wrap-cluster-001.html @@ -8,7 +8,6 @@ <style> div { font-size: 4em; - margin: 1rem; width: 4em; } #test { diff --git a/tests/wpt/web-platform-tests/css/css-text/overflow-wrap/overflow-wrap-cluster-002.html b/tests/wpt/web-platform-tests/css/css-text/overflow-wrap/overflow-wrap-cluster-002.html index bd5c9a60d87..70349b9c9af 100644 --- a/tests/wpt/web-platform-tests/css/css-text/overflow-wrap/overflow-wrap-cluster-002.html +++ b/tests/wpt/web-platform-tests/css/css-text/overflow-wrap/overflow-wrap-cluster-002.html @@ -4,11 +4,10 @@ <link rel="author" title="Florian Rivoal" href="https://florian.rivoal.net/"> <link rel="help" href="https://www.w3.org/TR/css-text-3/#overflow-wrap-property"> <link rel="match" href="reference/overflow-wrap-cluster-001-ref.html"> -<meta name="assert" content="grapheme clusters must stay together as one unit when a line is broken by overflow-wrap:break-word"> +<meta name="assert" content="grapheme clusters must stay together as one unit when a line is broken by overflow-wrap:anywhere"> <style> div { font-size: 4em; - margin: 1rem; width: 4em; } #test { diff --git a/tests/wpt/web-platform-tests/css/css-text/overflow-wrap/reference/overflow-wrap-cluster-001-ref.html b/tests/wpt/web-platform-tests/css/css-text/overflow-wrap/reference/overflow-wrap-cluster-001-ref.html index 5a00d7284b2..97393cc1761 100644 --- a/tests/wpt/web-platform-tests/css/css-text/overflow-wrap/reference/overflow-wrap-cluster-001-ref.html +++ b/tests/wpt/web-platform-tests/css/css-text/overflow-wrap/reference/overflow-wrap-cluster-001-ref.html @@ -5,7 +5,6 @@ <style> div { font-size: 4em; - margin: 1rem; width: 4em; } </style> diff --git a/tests/wpt/web-platform-tests/css/css-text/parsing/letter-spacing-computed.html b/tests/wpt/web-platform-tests/css/css-text/parsing/letter-spacing-computed.html index 9f54f9f56f4..45417d1b4a8 100644 --- a/tests/wpt/web-platform-tests/css/css-text/parsing/letter-spacing-computed.html +++ b/tests/wpt/web-platform-tests/css/css-text/parsing/letter-spacing-computed.html @@ -5,7 +5,7 @@ <title>CSS Text: getComputedStyle().letterSpacing</title> <link rel="help" href="https://www.w3.org/TR/css-text-3/#propdef-letter-spacing"> <meta name="assert" content="letter-spacing computed value is an absolute length."> -<meta name="assert" content="'normal' computes to zero."> +<meta name="assert" content="'normal' computes to zero, but the resolved value of 0px is 'normal', so that's the value that is observed."> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/css/support/computed-testcommon.js"></script> @@ -18,7 +18,8 @@ <body> <div id="target"></div> <script> -test_computed_value("letter-spacing", "normal", "0px"); +test_computed_value("letter-spacing", "normal"); +test_computed_value("letter-spacing", "0px", "normal"); test_computed_value("letter-spacing", "10px"); test_computed_value("letter-spacing", "-20px"); diff --git a/tests/wpt/web-platform-tests/css/css-text/shaping/reference/shaping-024-ref.html b/tests/wpt/web-platform-tests/css/css-text/shaping/reference/shaping-024-ref.html index 2a955ae1e16..7f6cbf97a0e 100644 --- a/tests/wpt/web-platform-tests/css/css-text/shaping/reference/shaping-024-ref.html +++ b/tests/wpt/web-platform-tests/css/css-text/shaping/reference/shaping-024-ref.html @@ -11,7 +11,7 @@ font-family: 'csstest_noto'; src: url('/fonts/noto/NotoSansMongolian-regular.woff2') format('woff2'); } -.test, .ref { border: 1px solid #02D7F6; margin: 20px; padding: 10px; width: 3em; font-size: 120px; font-family: "csstest_noto"; writing-mode: vertical-lr; float:left; } +.test, .ref { border: 1px solid #02D7F6; margin: 20px; padding: 10px; width: 3em; font-size: 120px; font-family: "csstest_noto"; writing-mode: vertical-lr; } /* the CSS above is not part of the test */ .styled { font-style:italic; } </style> diff --git a/tests/wpt/web-platform-tests/css/css-text/shaping/reference/shaping-025-ref.html b/tests/wpt/web-platform-tests/css/css-text/shaping/reference/shaping-025-ref.html index 19d45f49830..0418c263ebc 100644 --- a/tests/wpt/web-platform-tests/css/css-text/shaping/reference/shaping-025-ref.html +++ b/tests/wpt/web-platform-tests/css/css-text/shaping/reference/shaping-025-ref.html @@ -11,7 +11,7 @@ font-family: 'csstest_noto'; src: url('/fonts/noto/NotoSansMongolian-regular.woff2') format('woff2'); } -.test, .ref { border: 1px solid #02D7F6; margin: 20px; padding: 10px; width: 3em; font-size: 120px; font-family: "csstest_noto"; writing-mode: vertical-lr; float:left; } +.test, .ref { border: 1px solid #02D7F6; margin: 20px; padding: 10px; width: 3em; font-size: 120px; font-family: "csstest_noto"; writing-mode: vertical-lr; } /* the CSS above is not part of the test */ .styled { text-decoration:underline; } </style> diff --git a/tests/wpt/web-platform-tests/css/css-text/text-indent/text-indent-percentage-004.html b/tests/wpt/web-platform-tests/css/css-text/text-indent/text-indent-percentage-004.html index 3323e2f4073..c0842687349 100644 --- a/tests/wpt/web-platform-tests/css/css-text/text-indent/text-indent-percentage-004.html +++ b/tests/wpt/web-platform-tests/css/css-text/text-indent/text-indent-percentage-004.html @@ -7,7 +7,6 @@ <meta name="flags" content=""> <link rel="match" href="reference/text-indent-percentage-002-ref.html"> <meta name="assert" content="Percentages in text-indent refer to width of the element's content box, when used in a calc expression"> -<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" /> <style> body { background: white; } section { position: absolute; } @@ -15,7 +14,6 @@ section, div { border-right: 10px solid white; margin-right: 10px; padding-right: 10px; - font-family: Ahem; } div { box-sizing: border-box; diff --git a/tests/wpt/web-platform-tests/css/css-text/text-transform/reference/text-transform-fullwidth-001-ref.xht b/tests/wpt/web-platform-tests/css/css-text/text-transform/reference/text-transform-fullwidth-001-ref.xht index 9525b994a8f..e8a5f1acc3c 100644 --- a/tests/wpt/web-platform-tests/css/css-text/text-transform/reference/text-transform-fullwidth-001-ref.xht +++ b/tests/wpt/web-platform-tests/css/css-text/text-transform/reference/text-transform-fullwidth-001-ref.xht @@ -6,42 +6,26 @@ <link rel="author" title="Satoshi Umehara" href="mailto:umehara@est.co.jp" /> <style type="text/css"> <![CDATA[ + @font-face { + font-family: 'mplus-1p-regular'; + src: url('/fonts/mplus-1p-regular.woff') format('woff'); + } span { + font-family: 'mplus-1p-regular'; background-color: cyan; } .test { color: Blue; - font-size: 200%; - line-height: 1.2em; + line-height: 1.1em; } .test div { display: inline-block; - margin-bottom: 1em; - margin-top: 1em; + margin-bottom: .5em; text-align: center; white-space: nowrap; - width: 5em; } ]]> </style> - <script type="text/javascript"> - // <![CDATA[ - // Set Font Family to 'IPAMincho' - function setFontFamily () { - var fontName = 'IPAMincho'; - var divs = document.getElementsByTagName('div'); - var i = 0; - var div; - while (i < divs.length) { - div = divs.item(i); - if (div.className == 'test') { - div.style.fontFamily = fontName; - } - i++; - } - } - // ]]> - </script> </head> <body> <p> @@ -52,12 +36,12 @@ <!-- FULLWIDTH LATIN --> <div>[<span> </span>]<br />[<span> </span>]</div> <div><span>!</span><br /><span>!</span></div> - <div><span>”</span><br /><span>”</span></div> + <div><span>"</span><br /><span>"</span></div> <div><span>#</span><br /><span>#</span></div> <div><span>$</span><br /><span>$</span></div> <div><span>%</span><br /><span>%</span></div> <div><span>&</span><br /><span>&</span></div> - <div><span>’</span><br /><span>’</span></div> + <div><span>'</span><br /><span>'</span></div> <div><span>(</span><br /><span>(</span></div> <div><span>)</span><br /><span>)</span></div> <div><span>*</span><br /><span>*</span></div> @@ -66,7 +50,7 @@ <div><span>-</span><br /><span>-</span></div> <div><span>.</span><br /><span>.</span></div> <div><span>/</span><br /><span>/</span></div> - <br /> + <div><span>0</span><br /><span>0</span></div> <div><span>1</span><br /><span>1</span></div> <div><span>2</span><br /><span>2</span></div> @@ -77,7 +61,7 @@ <div><span>7</span><br /><span>7</span></div> <div><span>8</span><br /><span>8</span></div> <div><span>9</span><br /><span>9</span></div> - <br /> + <div><span>:</span><br /><span>:</span></div> <div><span>;</span><br /><span>;</span></div> <div><span><</span><br /><span><</span></div> @@ -85,7 +69,7 @@ <div><span>></span><br /><span>></span></div> <div><span>?</span><br /><span>?</span></div> <div><span>@</span><br /><span>@</span></div> - <br /> + <div><span>A</span><br /><span>A</span></div> <div><span>B</span><br /><span>B</span></div> <div><span>C</span><br /><span>C</span></div> @@ -112,14 +96,14 @@ <div><span>X</span><br /><span>X</span></div> <div><span>Y</span><br /><span>Y</span></div> <div><span>Z</span><br /><span>Z</span></div> - <br /> + <div><span>[</span><br /><span>[</span></div> <div><span>\</span><br /><span>\</span></div> <div><span>]</span><br /><span>]</span></div> <div><span>^</span><br /><span>^</span></div> <div><span>_</span><br /><span>_</span></div> <div><span>`</span><br /><span>`</span></div> - <br /> + <div><span>a</span><br /><span>a</span></div> <div><span>b</span><br /><span>b</span></div> <div><span>c</span><br /><span>c</span></div> @@ -146,7 +130,7 @@ <div><span>x</span><br /><span>x</span></div> <div><span>y</span><br /><span>y</span></div> <div><span>z</span><br /><span>z</span></div> - <br /> + <div><span>{</span><br /><span>{</span></div> <div><span>|</span><br /><span>|</span></div> <div><span>}</span><br /><span>}</span></div> @@ -156,13 +140,12 @@ <div><span>⦆</span><br /><span>⦆</span></div> <!-- RIGHT WHITE PARENTHESIS --> <!-- HALFWIDTH KATAKANA --> - <br /> <div><span>。</span><br /><span>。</span></div> <div><span>「</span><br /><span>「</span></div> <div><span>」</span><br /><span>」</span></div> <div><span>、</span><br /><span>、</span></div> <div><span>・</span><br /><span>・</span></div> - <br /> + <div><span>ヲ</span><br /><span>ヲ</span></div> <div><span>ァ</span><br /><span>ァ</span></div> <div><span>ィ</span><br /><span>ィ</span></div> @@ -174,7 +157,7 @@ <div><span>ョ</span><br /><span>ョ</span></div> <div><span>ッ</span><br /><span>ッ</span></div> <div><span>ー</span><br /><span>ー</span></div> - <br /> + <div><span>ア</span><br /><span>ア</span></div> <div><span>イ</span><br /><span>イ</span></div> <div><span>ウ</span><br /><span>ウ</span></div> @@ -220,15 +203,14 @@ <div><span>ロ</span><br /><span>ロ</span></div> <div><span>ワ</span><br /><span>ワ</span></div> <div><span>ン</span><br /><span>ン</span></div> - <br /> - <div><span>゛</span><br /><span>゛</span></div> - <div><span>゜</span><br /><span>゜</span></div> + + <div><span> ゙</span><br /><span> ゙</span></div> + <div><span> ゚</span><br /><span> ゚</span></div> <!-- HALFWIDTH HANGUL --> - <br /> <div>[<span>ᅟ</span>]<br />[<span>ᅟ</span>]</div> <!-- HANGUL FILLER --> <div><span>ᆨ</span><br /><span>ᆨ</span></div> <!-- HANGUL LETTER KIYEOK --> - <div><span>ᆩ</span><br /><span>ᆩ</span></div> <!-- HANGUL LETTER SSANGKIYEOK --> + <div><span>ㄲ</span><br /><span>ㄲ</span></div> <!-- HANGUL LETTER SSANGKIYEOK --> <div><span>ᆪ</span><br /><span>ᆪ</span></div> <!-- HANGUL LETTER KIYEOK-SIOS --> <div><span>ᆫ</span><br /><span>ᆫ</span></div> <!-- HANGUL LETTER NIEUN --> <div><span>ᆬ</span><br /><span>ᆬ</span></div> <!-- HANGUL LETTER NIEUN-CIEUC --> @@ -242,7 +224,7 @@ <div><span>ᆳ</span><br /><span>ᆳ</span></div> <!-- HANGUL LETTER RIEUL-SIOS --> <div><span>ᆴ</span><br /><span>ᆴ</span></div> <!-- HANGUL LETTER RIEUL-THIEUTH --> <div><span>ᆵ</span><br /><span>ᆵ</span></div> <!-- HANGUL LETTER RIEUL-PHIEUPH --> - <div><span>ᄚ</span><br /><span>ᄚ</span></div> <!-- HANGUL LETTER RIEUL-HIEUH --> + <div><span>ㅀ</span><br /><span>ㅀ</span></div> <!-- HANGUL LETTER RIEUL-HIEUH --> <div><span>ᄆ</span><br /><span>ᄆ</span></div> <!-- HANGUL LETTER MIEUM --> <div><span>ᄇ</span><br /><span>ᄇ</span></div> <!-- HANGUL LETTER PIEUP --> <div><span>ᄈ</span><br /><span>ᄈ</span></div> <!-- HANGUL LETTER SSANGPIEUP --> @@ -257,7 +239,6 @@ <div><span>ᇀ</span><br /><span>ᇀ</span></div> <!-- HANGUL LETTER THIEUTH --> <div><span>ᄑ</span><br /><span>ᄑ</span></div> <!-- HANGUL LETTER PHIEUPH --> <div><span>ᇂ</span><br /><span>ᇂ</span></div> <!-- HANGUL LETTER HIEUH --> - <br /> <div><span>ᅡ</span><br /><span>ᅡ</span></div> <!-- HANGUL LETTER A --> <div><span>ᅢ</span><br /><span>ᅢ</span></div> <!-- HANGUL LETTER AE --> <div><span>ᅣ</span><br /><span>ᅣ</span></div> <!-- HANGUL LETTER YA --> @@ -284,7 +265,6 @@ <div><span>ᅵ</span><br /><span>ᅵ</span></div> <!-- HANGUL LETTER I --> <!-- FULLWIDTH SIGN --> - <br /> <div><span>¢</span><br /><span>¢</span></div> <!-- CENT SIGN --> <div><span>£</span><br /><span>£</span></div> <!-- POUND SIGN --> <div><span>¬</span><br /><span>¬</span></div> <!-- NOT SIGN --> @@ -294,8 +274,7 @@ <div><span>₩</span><br /><span>₩</span></div> <!-- WON SIGN --> <!-- HALFWIDTH SIGN --> - <br /> - <div><span>|</span><br /><span>|</span></div> <!-- FORMS LIGHT VERTICAL --> + <div><span>│</span><br /><span>│</span></div> <!-- FORMS LIGHT VERTICAL --> <div><span>←</span><br /><span>←</span></div> <!-- LEFTWARDS ARROW --> <div><span>↑</span><br /><span>↑</span></div> <!-- UPWARDS ARROW --> <div><span>→</span><br /><span>→</span></div> <!-- RIGHTWARDS ARROW --> @@ -304,39 +283,26 @@ <div><span>○</span><br /><span>○</span></div> <!-- WHITE CIRCLE --> <!-- HALFWIDTH LATIN --> - <br /> <div><span>A</span><br /><span>A</span></div> <div><span>B</span><br /><span>B</span></div> <div><span>C</span><br /><span>C</span></div> - <br /> + <div><span>a</span><br /><span>a</span></div> <div><span>b</span><br /><span>b</span></div> <div><span>c</span><br /><span>c</span></div> <!-- FULLWIDTH KANA --> - <br /> <div><span>あ</span><br /><span>あ</span></div> <div><span>い</span><br /><span>い</span></div> <div><span>う</span><br /><span>う</span></div> <div><span>え</span><br /><span>え</span></div> <div><span>お</span><br /><span>お</span></div> - <br /> + <div><span>ア</span><br /><span>ア</span></div> <div><span>イ</span><br /><span>イ</span></div> <div><span>ウ</span><br /><span>ウ</span></div> <div><span>エ</span><br /><span>エ</span></div> <div><span>オ</span><br /><span>オ</span></div> </div> - <p id="fontChange" style="display: none;"> - If you are unable to see font glyphs for certain characters using the browsers default font, install the <a href="http://ossipedia.ipa.go.jp/ipafont/">IPA Font(http://ossipedia.ipa.go.jp/ipafont/)</a> and apply it. - <button type="button" onclick="setFontFamily()"> - Apply - </button> - </p> - <script type="text/javascript"> - if (document.getElementById) { - document.getElementById('fontChange').style.display = 'block' - } - </script> </body> </html> diff --git a/tests/wpt/web-platform-tests/css/css-text/text-transform/text-transform-fullwidth-001.xht b/tests/wpt/web-platform-tests/css/css-text/text-transform/text-transform-fullwidth-001.xht index 9ee7b6c42d2..a7fe63c8350 100644 --- a/tests/wpt/web-platform-tests/css/css-text/text-transform/text-transform-fullwidth-001.xht +++ b/tests/wpt/web-platform-tests/css/css-text/text-transform/text-transform-fullwidth-001.xht @@ -11,46 +11,30 @@ <meta name="assert" content="The UA should transform halfwidth character to fullwidth character when text-transform is set to fullwidth." /> <style type="text/css"> <![CDATA[ + @font-face { + font-family: 'mplus-1p-regular'; + src: url('/fonts/mplus-1p-regular.woff') format('woff'); + } .test span { text-transform: full-width; } /* the CSS below is not part of the test */ span { + font-family: 'mplus-1p-regular'; background-color: cyan; } .test { color: Blue; - font-size: 200%; - line-height: 1.2em; + line-height: 1.1; } .test div { display: inline-block; - margin-bottom: 1em; - margin-top: 1em; + margin-bottom: .5em; text-align: center; white-space: nowrap; - width: 5em; } ]]> </style> - <script type="text/javascript"> - // <![CDATA[ - // Set Font Family to 'IPAMincho' - function setFontFamily () { - var fontName = 'IPAMincho'; - var divs = document.getElementsByTagName('div'); - var i = 0; - var div; - while (i < divs.length) { - div = divs.item(i); - if (div.className == 'test') { - div.style.fontFamily = fontName; - } - i++; - } - } - // ]]> - </script> </head> <body> <p> @@ -61,12 +45,12 @@ <!-- FULLWIDTH LATIN --> <div>[<span> </span>]<br />[<span> </span>]</div> <div><span>!</span><br /><span>!</span></div> - <div><span>”</span><br /><span>"</span></div> + <div><span>"</span><br /><span>"</span></div> <div><span>#</span><br /><span>#</span></div> <div><span>$</span><br /><span>$</span></div> <div><span>%</span><br /><span>%</span></div> <div><span>&</span><br /><span>&</span></div> - <div><span>’</span><br /><span>'</span></div> + <div><span>'</span><br /><span>'</span></div> <div><span>(</span><br /><span>(</span></div> <div><span>)</span><br /><span>)</span></div> <div><span>*</span><br /><span>*</span></div> @@ -75,7 +59,7 @@ <div><span>-</span><br /><span>-</span></div> <div><span>.</span><br /><span>.</span></div> <div><span>/</span><br /><span>/</span></div> - <br /> + <div><span>0</span><br /><span>0</span></div> <div><span>1</span><br /><span>1</span></div> <div><span>2</span><br /><span>2</span></div> @@ -86,7 +70,7 @@ <div><span>7</span><br /><span>7</span></div> <div><span>8</span><br /><span>8</span></div> <div><span>9</span><br /><span>9</span></div> - <br /> + <div><span>:</span><br /><span>:</span></div> <div><span>;</span><br /><span>;</span></div> <div><span><</span><br /><span><</span></div> @@ -94,7 +78,7 @@ <div><span>></span><br /><span>></span></div> <div><span>?</span><br /><span>?</span></div> <div><span>@</span><br /><span>@</span></div> - <br /> + <div><span>A</span><br /><span>A</span></div> <div><span>B</span><br /><span>B</span></div> <div><span>C</span><br /><span>C</span></div> @@ -121,14 +105,14 @@ <div><span>X</span><br /><span>X</span></div> <div><span>Y</span><br /><span>Y</span></div> <div><span>Z</span><br /><span>Z</span></div> - <br /> + <div><span>[</span><br /><span>[</span></div> <div><span>\</span><br /><span>\</span></div> <div><span>]</span><br /><span>]</span></div> <div><span>^</span><br /><span>^</span></div> <div><span>_</span><br /><span>_</span></div> <div><span>`</span><br /><span>`</span></div> - <br /> + <div><span>a</span><br /><span>a</span></div> <div><span>b</span><br /><span>b</span></div> <div><span>c</span><br /><span>c</span></div> @@ -155,7 +139,7 @@ <div><span>x</span><br /><span>x</span></div> <div><span>y</span><br /><span>y</span></div> <div><span>z</span><br /><span>z</span></div> - <br /> + <div><span>{</span><br /><span>{</span></div> <div><span>|</span><br /><span>|</span></div> <div><span>}</span><br /><span>}</span></div> @@ -165,13 +149,12 @@ <div><span>⦆</span><br /><span>⦆</span></div> <!-- RIGHT WHITE PARENTHESIS --> <!-- HALFWIDTH KATAKANA --> - <br /> <div><span>。</span><br /><span>。</span></div> <div><span>「</span><br /><span>「</span></div> <div><span>」</span><br /><span>」</span></div> <div><span>、</span><br /><span>、</span></div> <div><span>・</span><br /><span>・</span></div> - <br /> + <div><span>ヲ</span><br /><span>ヲ</span></div> <div><span>ァ</span><br /><span>ァ</span></div> <div><span>ィ</span><br /><span>ィ</span></div> @@ -183,7 +166,7 @@ <div><span>ョ</span><br /><span>ョ</span></div> <div><span>ッ</span><br /><span>ッ</span></div> <div><span>ー</span><br /><span>ー</span></div> - <br /> + <div><span>ア</span><br /><span>ア</span></div> <div><span>イ</span><br /><span>イ</span></div> <div><span>ウ</span><br /><span>ウ</span></div> @@ -229,15 +212,14 @@ <div><span>ロ</span><br /><span>ロ</span></div> <div><span>ワ</span><br /><span>ワ</span></div> <div><span>ン</span><br /><span>ン</span></div> - <br /> - <div><span>゛</span><br /><span>゙</span></div> - <div><span>゜</span><br /><span>゚</span></div> + + <div><span> ゙</span><br /><span> ゙</span></div> + <div><span> ゚</span><br /><span> ゚</span></div> <!-- HALFWIDTH HANGUL --> - <br /> <div>[<span>ᅟ</span>]<br />[<span>ᅠ</span>]</div> <!-- HANGUL FILLER --> <div><span>ᆨ</span><br /><span>ᄀ</span></div> <!-- HANGUL LETTER KIYEOK --> - <div><span>ᆩ</span><br /><span>ᄁ</span></div> <!-- HANGUL LETTER SSANGKIYEOK --> + <div><span>ㄲ</span><br /><span>ᄁ</span></div> <!-- HANGUL LETTER SSANGKIYEOK --> <div><span>ᆪ</span><br /><span>ᆪ</span></div> <!-- HANGUL LETTER KIYEOK-SIOS --> <div><span>ᆫ</span><br /><span>ᄂ</span></div> <!-- HANGUL LETTER NIEUN --> <div><span>ᆬ</span><br /><span>ᆬ</span></div> <!-- HANGUL LETTER NIEUN-CIEUC --> @@ -251,7 +233,7 @@ <div><span>ᆳ</span><br /><span>ᆳ</span></div> <!-- HANGUL LETTER RIEUL-SIOS --> <div><span>ᆴ</span><br /><span>ᆴ</span></div> <!-- HANGUL LETTER RIEUL-THIEUTH --> <div><span>ᆵ</span><br /><span>ᆵ</span></div> <!-- HANGUL LETTER RIEUL-PHIEUPH --> - <div><span>ᄚ</span><br /><span>ᄚ</span></div> <!-- HANGUL LETTER RIEUL-HIEUH --> + <div><span>ㅀ</span><br /><span>ᄚ</span></div> <!-- HANGUL LETTER RIEUL-HIEUH --> <div><span>ᄆ</span><br /><span>ᄆ</span></div> <!-- HANGUL LETTER MIEUM --> <div><span>ᄇ</span><br /><span>ᄇ</span></div> <!-- HANGUL LETTER PIEUP --> <div><span>ᄈ</span><br /><span>ᄈ</span></div> <!-- HANGUL LETTER SSANGPIEUP --> @@ -266,7 +248,6 @@ <div><span>ᇀ</span><br /><span>ᄐ</span></div> <!-- HANGUL LETTER THIEUTH --> <div><span>ᄑ</span><br /><span>ᄑ</span></div> <!-- HANGUL LETTER PHIEUPH --> <div><span>ᇂ</span><br /><span>ᄒ</span></div> <!-- HANGUL LETTER HIEUH --> - <br /> <div><span>ᅡ</span><br /><span>ᅡ</span></div> <!-- HANGUL LETTER A --> <div><span>ᅢ</span><br /><span>ᅢ</span></div> <!-- HANGUL LETTER AE --> <div><span>ᅣ</span><br /><span>ᅣ</span></div> <!-- HANGUL LETTER YA --> @@ -293,7 +274,6 @@ <div><span>ᅵ</span><br /><span>ᅵ</span></div> <!-- HANGUL LETTER I --> <!-- FULLWIDTH SIGN --> - <br /> <div><span>¢</span><br /><span>¢</span></div> <!-- CENT SIGN --> <div><span>£</span><br /><span>£</span></div> <!-- POUND SIGN --> <div><span>¬</span><br /><span>¬</span></div> <!-- NOT SIGN --> @@ -303,8 +283,7 @@ <div><span>₩</span><br /><span>₩</span></div> <!-- WON SIGN --> <!-- HALFWIDTH SIGN --> - <br /> - <div><span>|</span><br /><span>│</span></div> <!-- FORMS LIGHT VERTICAL --> + <div><span>│</span><br /><span>│</span></div> <!-- FORMS LIGHT VERTICAL --> <div><span>←</span><br /><span>←</span></div> <!-- LEFTWARDS ARROW --> <div><span>↑</span><br /><span>↑</span></div> <!-- UPWARDS ARROW --> <div><span>→</span><br /><span>→</span></div> <!-- RIGHTWARDS ARROW --> @@ -313,39 +292,26 @@ <div><span>○</span><br /><span>○</span></div> <!-- WHITE CIRCLE --> <!-- HALFWIDTH LATIN --> - <br /> <div><span>A</span><br /><span>A</span></div> <div><span>B</span><br /><span>B</span></div> <div><span>C</span><br /><span>C</span></div> - <br /> + <div><span>a</span><br /><span>a</span></div> <div><span>b</span><br /><span>b</span></div> <div><span>c</span><br /><span>c</span></div> <!-- FULLWIDTH KANA --> - <br /> <div><span>あ</span><br /><span>あ</span></div> <div><span>い</span><br /><span>い</span></div> <div><span>う</span><br /><span>う</span></div> <div><span>え</span><br /><span>え</span></div> <div><span>お</span><br /><span>お</span></div> - <br /> + <div><span>ア</span><br /><span>ア</span></div> <div><span>イ</span><br /><span>イ</span></div> <div><span>ウ</span><br /><span>ウ</span></div> <div><span>エ</span><br /><span>エ</span></div> <div><span>オ</span><br /><span>オ</span></div> </div> - <p id="fontChange" style="display: none;"> - If you are unable to see font glyphs for certain characters using the browsers default font, install the <a href="http://ossipedia.ipa.go.jp/ipafont/">IPA Font(http://ossipedia.ipa.go.jp/ipafont/)</a> and apply it. - <button type="button" onclick="setFontFamily()"> - Apply - </button> - </p> - <script type="text/javascript"> - if (document.getElementById) { - document.getElementById('fontChange').style.display = 'block' - } - </script> </body> </html> diff --git a/tests/wpt/web-platform-tests/css/css-text/white-space/break-spaces-tab-004.html b/tests/wpt/web-platform-tests/css/css-text/white-space/break-spaces-tab-004.html index 4ccbdd0f21a..bee61597fa1 100644 --- a/tests/wpt/web-platform-tests/css/css-text/white-space/break-spaces-tab-004.html +++ b/tests/wpt/web-platform-tests/css/css-text/white-space/break-spaces-tab-004.html @@ -11,9 +11,9 @@ div { font: 20px/1 Ahem; } #test { - white-space: pre-wrap; + white-space: break-spaces; color: green; - width: 2ch; + width: 1ch; } #ref { color: red; diff --git a/tests/wpt/web-platform-tests/css/css-text/white-space/reference/white-space-intrinsic-size-001-ref.html b/tests/wpt/web-platform-tests/css/css-text/white-space/reference/white-space-intrinsic-size-001-ref.html index 232360ba387..3fbc32b1b1e 100644 --- a/tests/wpt/web-platform-tests/css/css-text/white-space/reference/white-space-intrinsic-size-001-ref.html +++ b/tests/wpt/web-platform-tests/css/css-text/white-space/reference/white-space-intrinsic-size-001-ref.html @@ -9,6 +9,7 @@ div { color: transparent; font-size: 50px; background: green; + width: 2em; } </style> diff --git a/tests/wpt/web-platform-tests/css/css-text/white-space/reference/white-space-intrinsic-size-003-ref.html b/tests/wpt/web-platform-tests/css/css-text/white-space/reference/white-space-intrinsic-size-003-ref.html index c551c608be1..0047109982c 100644 --- a/tests/wpt/web-platform-tests/css/css-text/white-space/reference/white-space-intrinsic-size-003-ref.html +++ b/tests/wpt/web-platform-tests/css/css-text/white-space/reference/white-space-intrinsic-size-003-ref.html @@ -9,6 +9,7 @@ div { color: transparent; font-size: 50px; background: green; + width: 1em; } </style> diff --git a/tests/wpt/web-platform-tests/css/css-text/white-space/trailing-space-position-001.html b/tests/wpt/web-platform-tests/css/css-text/white-space/trailing-space-position-001.html new file mode 100644 index 00000000000..648ae23dccb --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-text/white-space/trailing-space-position-001.html @@ -0,0 +1,41 @@ +<!DOCTYPE html> +<title>CSS Test: Positions of trailing collapsible spaces</title> +<link rel="help" href="https://drafts.csswg.org/css-text-3/#white-space-phase-2"> +<link rel="author" title="Koji Ishii" href="mailto:kojii@chromium.org"> +<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" /> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<style> +.container > div { + font-family: Ahem; + font-size: 10px; + line-height: 1; + color: gray; + width: 5ch; + outline: 2px solid orange; + margin-bottom: 6px; + position: relative; +} +.pre-wrap { + white-space: pre-wrap; +} +.bg { background: purple; } +.h { outline: 4px red solid; } +</style> +<body> + <section class="container"> + <div>1234<span data-line="0" class="h"> </span>567</div> + <div>1234 <span data-line="0" class="h"> </span>567</div> + <div>1234567<span data-line="0" class="h"> </span>567</div> + <div>1234567 <span data-line="0" class="h"> </span>567</div> + <div class="pre-wrap">1234<span data-line="0" class="bg"> </span>567</div> + </section> +<script> +for (let e of document.querySelectorAll('[data-line]')) { + test(() => { + let y = e.offsetTop; + assert_equals(Math.round(y / 10), parseInt(e.dataset.line)); + }); +} +</script> +</body> diff --git a/tests/wpt/web-platform-tests/css/css-text/word-break/word-break-keep-all-005.html b/tests/wpt/web-platform-tests/css/css-text/word-break/word-break-keep-all-005.html index 4bb523ab7ca..1e71ec71117 100644 --- a/tests/wpt/web-platform-tests/css/css-text/word-break/word-break-keep-all-005.html +++ b/tests/wpt/web-platform-tests/css/css-text/word-break/word-break-keep-all-005.html @@ -14,7 +14,7 @@ div { </style> <p>This test passes if the four characters below are arranged in a two-by-two square. -<div lang=ja>字字 字字</div> +<div>字字 字字</div> <!-- If keep-all has no effect at all, breaks are allowed everywhere, and the result will be: diff --git a/tests/wpt/web-platform-tests/css/css-text/word-break/word-break-keep-all-006.html b/tests/wpt/web-platform-tests/css/css-text/word-break/word-break-keep-all-006.html index 8845ea21edd..7bf9a15a9cc 100644 --- a/tests/wpt/web-platform-tests/css/css-text/word-break/word-break-keep-all-006.html +++ b/tests/wpt/web-platform-tests/css/css-text/word-break/word-break-keep-all-006.html @@ -15,7 +15,7 @@ span { color: transparent } </style> <p>This test passes if the four characters below are arranged in a two-by-two square. -<div lang=ja>字字<span>、</span>字字</div> +<div>字字<span>、</span>字字</div> <!-- U+3001 : IDEOGRAPHIC COMMA is made transparent for visual simplicity, the change in color has no effect on layout. diff --git a/tests/wpt/web-platform-tests/css/css-text/word-break/word-break-keep-all-007.html b/tests/wpt/web-platform-tests/css/css-text/word-break/word-break-keep-all-007.html index e1bc9a52053..443cccbc9da 100644 --- a/tests/wpt/web-platform-tests/css/css-text/word-break/word-break-keep-all-007.html +++ b/tests/wpt/web-platform-tests/css/css-text/word-break/word-break-keep-all-007.html @@ -16,7 +16,7 @@ div { </style> <p>This test passes if the four characters below are arranged in a two-by-two square. -<div lang=ja>字字 字字</div> +<div>字字 字字</div> <!-- If keep-all has no effect at all, breaks are allowed everywhere, and the result will be: diff --git a/tests/wpt/web-platform-tests/css/css-text/word-break/word-break-keep-all-008.html b/tests/wpt/web-platform-tests/css/css-text/word-break/word-break-keep-all-008.html index 16529b0619e..6532e41609f 100644 --- a/tests/wpt/web-platform-tests/css/css-text/word-break/word-break-keep-all-008.html +++ b/tests/wpt/web-platform-tests/css/css-text/word-break/word-break-keep-all-008.html @@ -16,7 +16,7 @@ div { </style> <p>This test passes if the four characters below are arranged in a two-by-two square. -<div lang=ja>字字 字字</div> +<div>字字 字字</div> <!-- If keep-all has no effect at all, breaks are allowed everywhere, and the result will be: diff --git a/tests/wpt/web-platform-tests/css/css-transforms/animation/rotate-interpolation.html b/tests/wpt/web-platform-tests/css/css-transforms/animation/rotate-interpolation.html index dbf66a734f4..1ce74f76d25 100644 --- a/tests/wpt/web-platform-tests/css/css-transforms/animation/rotate-interpolation.html +++ b/tests/wpt/web-platform-tests/css/css-transforms/animation/rotate-interpolation.html @@ -1,67 +1,235 @@ <!DOCTYPE html> <html> - <head> - <meta charset="utf-8"> - <title>rotate interpolation</title> - <link rel="help" href="https://drafts.csswg.org/css-transforms-2/#propdef-rotate"> - <meta name="assert" content="rotate supports animation."> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src="/css/support/interpolation-testcommon.js"></script> - </head> - <body> - <script> - test_interpolation({ - property: 'rotate', - from: '100deg', - to: '180deg', - }, [ - {at: -1, expect: '20deg'}, - {at: 0, expect: '100deg'}, - {at: 0.125, expect: '110deg'}, - {at: 0.875, expect: '170deg'}, - {at: 1, expect: '180deg'}, - {at: 2, expect: '260deg'} - ]); - - test_interpolation({ - property: 'rotate', - from: '45deg', - to: '-1 1 0 60deg', - }, [ - {at: -1, expect: '0.447214 -0.447214 0.774597 104.478deg'}, - {at: 0, expect: '45deg'}, - {at: 0.125, expect: '-0.136456 0.136456 0.981203 40.6037deg'}, - {at: 0.875, expect: '-0.70246 0.70246 0.114452 53.1994deg'}, - {at: 1, expect: '-1 1 0 60deg'}, - {at: 2, expect: '-0.637897 0.637897 -0.431479 124.975deg'} - ]); - - test_interpolation({ - property: 'rotate', - from: 'none', - to: '7 -8 9 400grad', - }, [ - {at: -1, expect: '7 -8 9 -400grad'}, - {at: 0, expect: 'none'}, - {at: 0.125, expect: '7 -8 9 50grad'}, - {at: 0.875, expect: '7 -8 9 350grad'}, - {at: 1, expect: '7 -8 9 400grad'}, - {at: 2, expect: '7 -8 9 800grad'} - ]); - - test_interpolation({ - property: 'rotate', - from: 'none', - to: 'none', - }, [ - {at: -1, expect: 'none'}, - {at: 0, expect: 'none'}, - {at: 0.125, expect: 'none'}, - {at: 0.875, expect: 'none'}, - {at: 1, expect: 'none'}, - {at: 2, expect: 'none'} - ]); - </script> - </body> +<head> +<meta charset="utf-8"> +<title>rotate interpolation</title> +<link rel="help" href="https://drafts.csswg.org/css-transforms-2/#propdef-rotate"> + +<meta name="assert" content="rotate supports animation."> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/css/support/interpolation-testcommon.js"></script> +</head> + +<style> +.parent { + rotate: 90deg; +} + +.target { + width: 40px; + height: 20px; + background-color: grey; + rotate: 10deg; +} + +.expected { + background-color: green; +} +</style> + +<template id="target-template"> +<div class="parent"> + <div class="target">Text</div> +</div> +</template> + +<body> +<script> +test_interpolation({ + property: 'rotate', + from: '100deg', + to: '180deg', +}, [ + {at: -1, expect: '20deg'}, + {at: 0, expect: '100deg'}, + {at: 0.125, expect: '110deg'}, + {at: 0.875, expect: '170deg'}, + {at: 1, expect: '180deg'}, + {at: 2, expect: '260deg'} +]); + +test_interpolation({ + property: 'rotate', + from: '45deg', + to: '-1 1 0 60deg', +}, [ + {at: -1, expect: '0.447214 -0.447214 0.774597 104.478deg'}, + {at: 0, expect: '45deg'}, + {at: 0.125, expect: '-0.136456 0.136456 0.981203 40.6037deg'}, + {at: 0.875, expect: '-0.70246 0.70246 0.114452 53.1994deg'}, + {at: 1, expect: '-1 1 0 60deg'}, + {at: 2, expect: '-0.637897 0.637897 -0.431479 124.975deg'} +]); + +test_interpolation({ + property: 'rotate', + from: 'none', + to: '7 -8 9 400grad', +}, [ + {at: -1, expect: '7 -8 9 -400grad'}, + {at: 0, expect: 'none'}, + {at: 0.125, expect: '7 -8 9 50grad'}, + {at: 0.875, expect: '7 -8 9 350grad'}, + {at: 1, expect: '7 -8 9 400grad'}, + {at: 2, expect: '7 -8 9 800grad'} +]); + +test_interpolation({ + property: 'rotate', + from: 'none', + to: 'none', +}, [ + {at: -1, expect: 'none'}, + {at: 0, expect: 'none'}, + {at: 0.125, expect: 'none'}, + {at: 0.875, expect: 'none'}, + {at: 1, expect: 'none'}, + {at: 2, expect: 'none'} +]); + +test_interpolation({ + property: 'rotate', + from: 'none', + to: '30deg', +}, [ + {at: -1, expect: '-30deg'}, + {at: 0, expect: 'none'}, + {at: 0.25, expect: '7.5deg'}, + {at: 0.75, expect: '22.5deg'}, + {at: 1, expect: '30deg'}, + {at: 2, expect: '60deg'}, +]); + +test_interpolation({ + property: 'rotate', + from: neutralKeyframe, + to: '30deg', +}, [ + {at: -1, expect: '-10deg'}, + {at: 0, expect: '10deg'}, + {at: 0.25, expect: '15deg'}, + {at: 0.75, expect: '25deg'}, + {at: 1, expect: '30deg'}, + {at: 2, expect: '50deg'}, +]); + +test_interpolation({ + property: 'rotate', + from: 'inherit', + to: '270deg', +}, [ + {at: -1, expect: '-90deg'}, + {at: 0, expect: '90deg'}, + {at: 0.25, expect: '135deg'}, + {at: 0.75, expect: '225deg'}, + {at: 1, expect: '270deg'}, + {at: 2, expect: '450deg'}, +]); + +test_interpolation({ + property: 'rotate', + from: 'unset', + to: '30deg', +}, [ + {at: -1, expect: '-30deg'}, + {at: 0, expect: 'none'}, + {at: 0.25, expect: '7.5deg'}, + {at: 0.75, expect: '22.5deg'}, + {at: 1, expect: '30deg'}, + {at: 2, expect: '60deg'}, +]); + +test_interpolation({ + property: 'rotate', + from: '100deg', + to: '-100deg', +}, [ + {at: -1, expect: '300deg'}, + {at: 0, expect: '100deg'}, + {at: 0.25, expect: '50deg'}, + {at: 0.75, expect: '-50deg'}, + {at: 1, expect: '-100deg'}, + {at: 2, expect: '-300deg'}, +]); + +test_interpolation({ + property: 'rotate', + from: '0 1 0 100deg', + to: '0 1 0 -100deg', +}, [ + {at: -1, expect: '0 1 0 300deg'}, + {at: 0, expect: '0 1 0 100deg'}, + {at: 0.25, expect: '0 1 0 50deg'}, + {at: 0.75, expect: '0 1 0 -50deg'}, + {at: 1, expect: '0 1 0 -100deg'}, + {at: 2, expect: '0 1 0 -300deg'}, +]); + +test_interpolation({ + property: 'rotate', + from: '1 -2.5 3.64 100deg', + to: '1 -2.5 3.64 -100deg', +}, [ + {at: -1, expect: '1 -2.5 3.64 300deg'}, + {at: 0, expect: '1 -2.5 3.64 100deg'}, + {at: 0.25, expect: '1 -2.5 3.64 50deg'}, + {at: 0.75, expect: '1 -2.5 3.64 -50deg'}, + {at: 1, expect: '1 -2.5 3.64 -100deg'}, + {at: 2, expect: '1 -2.5 3.64 -300deg'}, +]); + +test_interpolation({ + property: 'rotate', + from: '1 0 0 0deg', + to: '0 1 0 10deg', +}, [ + {at: -1, expect: '0 1 0 -10deg'}, + {at: 0, expect: '1 0 0 0deg'}, + {at: 0.25, expect: '0 1 0 2.5deg'}, + {at: 0.75, expect: '0 1 0 7.5deg'}, + {at: 1, expect: '0 1 0 10deg'}, + {at: 2, expect: '0 1 0 20deg'}, +]); + +test_interpolation({ + property: 'rotate', + from: '1 1 0 90deg', + to: '0 1 1 135deg', +}, [ + {at: -1, expect: '0.67 -0.06 -0.74 124.97deg'}, + {at: 0, expect: '1 1 0 90deg'}, + {at: 0.25, expect: '0.54 0.8 0.26 94.83deg'}, + {at: 0.75, expect: '0.17 0.78 0.61 118.68deg'}, + {at: 1, expect: '0 1 1 135deg'}, + {at: 2, expect: '0.52 -0.29 -0.81 151.04deg'}, +]); + +test_interpolation({ + property: 'rotate', + from: '0 1 0 0deg', + to: '1 0 0 450deg', +}, [ + {at: -1, expect: '1 0 0 -450deg'}, + {at: 0, expect: '0 1 0 0deg'}, + {at: 0.25, expect: '1 0 0 112.5deg'}, + {at: 0.75, expect: '1 0 0 337.5deg'}, + {at: 1, expect: '1 0 0 450deg'}, + {at: 2, expect: '1 0 0 900deg'}, +]); + +test_interpolation({ + property: 'rotate', + from: '1 0 0 450deg', + to: '0 1 0 0deg', +}, [ + {at: -1, expect: '1 0 0 900deg'}, + {at: 0, expect: '1 0 0 450deg'}, + {at: 0.25, expect: '1 0 0 337.5deg'}, + {at: 0.75, expect: '1 0 0 112.5deg'}, + {at: 1, expect: '0 1 0 0deg'}, + {at: 2, expect: '1 0 0 -450deg'}, +]); +</script> +</body> </html> diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/stylevalue-subclasses/numeric-objects/parse.tentative.html b/tests/wpt/web-platform-tests/css/css-typed-om/stylevalue-subclasses/numeric-objects/parse.tentative.html index 98384b6fcc5..c4904ded6b6 100644 --- a/tests/wpt/web-platform-tests/css/css-typed-om/stylevalue-subclasses/numeric-objects/parse.tentative.html +++ b/tests/wpt/web-platform-tests/css/css-typed-om/stylevalue-subclasses/numeric-objects/parse.tentative.html @@ -37,4 +37,9 @@ test(() => { assert_style_value_equals(expected, CSSNumericValue.parse('max(10px, 10%)')); }, 'Parsing max() is successful'); +test(() => { + const expected = new CSSMathMax(CSS.px(10), new CSSMathMin(CSS.percent(10), CSS.px(20))); + assert_style_value_equals(expected, CSSNumericValue.parse('clamp(10px, 10%, 20px)')); +}, 'Parsing clamp() is successful'); + </script> diff --git a/tests/wpt/web-platform-tests/css/cssom-view/table-border-collapse-client-width-height.html b/tests/wpt/web-platform-tests/css/cssom-view/table-border-collapse-client-width-height.html new file mode 100644 index 00000000000..a7a1a435b22 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/cssom-view/table-border-collapse-client-width-height.html @@ -0,0 +1,34 @@ +<!DOCTYPE html> +<title>CSSOM Test: Table with border-collapse: collapse's clientWidth/Height</title> +<link rel="help" href="https://www.w3.org/TR/CSS2/tables.html#model" /> +<link rel="help" href="https://www.w3.org/TR/CSS2/tables.html#collapsing-borders" /> +<link rel="help" href="https://drafts.csswg.org/cssom-view/#extension-to-the-element-interface" /> +<script src=/resources/testharness.js></script> +<script src=/resources/testharnessreport.js></script> +<style> + table { + border-collapse: collapse; + } + td { + border: 8px solid #faa; + } +</style> +<table> + <tbody> + <tr> + <td>a</td> + <td>b</td> + </tr> + <tr> + <td>c</td> + <td>d</td> + </tr> + </tbody> +</table> +<script type="text/javascript"> + var table = document.getElementsByTagName('table')[0]; + test(function() { + assert_equals(table.clientWidth, table.offsetWidth); + assert_equals(table.clientHeight, table.offsetHeight); + }, "Table's clientWidth/Height and OffsetWidth/Height should be the same"); +</script> diff --git a/tests/wpt/web-platform-tests/css/cssom-view/table-border-separate-client-width-height.html b/tests/wpt/web-platform-tests/css/cssom-view/table-border-separate-client-width-height.html new file mode 100644 index 00000000000..d960d713dcf --- /dev/null +++ b/tests/wpt/web-platform-tests/css/cssom-view/table-border-separate-client-width-height.html @@ -0,0 +1,34 @@ +<!DOCTYPE html> +<title>CSSOM Test: Table with border-collapse: separate's clientWidth/Height</title> +<link rel="help" href="https://www.w3.org/TR/CSS2/tables.html#model" /> +<link rel="help" href="https://www.w3.org/TR/CSS2/tables.html#separated-borders" /> +<link rel="help" href="https://drafts.csswg.org/cssom-view/#extension-to-the-element-interface" /> +<script src=/resources/testharness.js></script> +<script src=/resources/testharnessreport.js></script> +<style> + table { + border-collapse: separate; + } + td { + border: 8px solid #faa; + } +</style> +<table> + <tbody> + <tr> + <td>a</td> + <td>b</td> + </tr> + <tr> + <td>c</td> + <td>d</td> + </tr> + </tbody> +</table> +<script type="text/javascript"> + var table = document.getElementsByTagName('table')[0]; + test(function() { + assert_equals(table.clientWidth, table.offsetWidth); + assert_equals(table.clientHeight, table.offsetHeight); + }, "Table's clientWidth/Height and OffsetWidth/Height should be the same"); +</script> diff --git a/tests/wpt/web-platform-tests/css/cssom-view/table-with-border-client-width-height.html b/tests/wpt/web-platform-tests/css/cssom-view/table-with-border-client-width-height.html new file mode 100644 index 00000000000..4e9a5deed2e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/cssom-view/table-with-border-client-width-height.html @@ -0,0 +1,31 @@ +<!DOCTYPE html> +<title>CSSOM Test: Table with its own specified border's clientWidth/Height</title> +<link rel="help" href="https://www.w3.org/TR/CSS2/tables.html#model" /> +<link rel="help" href="https://www.w3.org/TR/CSS2/tables.html#separated-borders" /> +<link rel="help" href="https://drafts.csswg.org/cssom-view/#extension-to-the-element-interface" /> +<script src=/resources/testharness.js></script> +<script src=/resources/testharnessreport.js></script> +<style> + table { + border: 8px solid #faa; + } +</style> +<table> + <tbody> + <tr> + <td>a</td> + <td>b</td> + </tr> + <tr> + <td>c</td> + <td>d</td> + </tr> + </tbody> +</table> +<script type="text/javascript"> + var table = document.getElementsByTagName('table')[0]; + test(function() { + assert_equals(table.clientWidth, table.offsetWidth); + assert_equals(table.clientHeight, table.offsetHeight); + }, "Table's clientWidth/Height and OffsetWidth/Height should be the same"); +</script> diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-align-self-baseline-horiz-008-ref.xhtml b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-align-self-baseline-horiz-008-ref.xhtml new file mode 100644 index 00000000000..19049d3895c --- /dev/null +++ b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-align-self-baseline-horiz-008-ref.xhtml @@ -0,0 +1,53 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + Any copyright is dedicated to the Public Domain. + http://creativecommons.org/publicdomain/zero/1.0/ +--> +<!-- Reference case for behavior of 'baseline' and 'last baseline' values + for align-items and align-self for sideways writing modes. +--> +<html xmlns="http://www.w3.org/1999/xhtml"> + <head> + <title>CSS Reftest Reference</title> + <link rel="author" title="Brad Werth" href="mailto:bwerth@mozilla.com"/> + <style> + .container { + float: left; + display: flex; + writing-mode: sideways-rl; + border: 1px dashed blue; + font: 14px sans-serif; + width: 80px; + } + + .reverse { flex-flow: row wrap-reverse; } + + .start { align-self: start; } + .end { align-self: end; } + + .offset { margin-right: 10px; + margin-left: 3px; } + + .lime { background: lime; } + .yellow { background: yellow; } + .orange { background: orange; } + .pink { background: pink; } + + .ib { display: inline-block; } + </style> + </head> + <body> + <div class="container"> + <div class="lime offset start">one line (first)</div + ><div class="yellow offset end">one line (last)</div + ><div class="orange offset end">two<br/>lines and offset (last)</div + ><div class="pink offset start">offset (first)</div> + </div> + <div class="container reverse"> + <div class="lime offset end">one line (first)</div + ><div class="offset start"><div class="yellow ib">one line (last)</div + ><div class="orange ib">two<br/>lines and offset (last)</div></div + ><div class="pink offset end">offset (first)</div> + </div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-align-self-baseline-horiz-008.xhtml b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-align-self-baseline-horiz-008.xhtml new file mode 100644 index 00000000000..00bc4d9fce8 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-align-self-baseline-horiz-008.xhtml @@ -0,0 +1,55 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + Any copyright is dedicated to the Public Domain. + http://creativecommons.org/publicdomain/zero/1.0/ +--> +<!-- Testcase for behavior of 'baseline' and 'last baseline' values + for align-items (and align-self, implicitly) for sideways + writing modes. This test confirms non-interference between the + 'baseline' and 'last baseline' items. +--> +<html xmlns="http://www.w3.org/1999/xhtml"> + <head> + <title>CSS Test: Baseline alignment of block flex items with 'baseline' and 'last-baseline' values for 'align-self' against each other.</title> + <link rel="author" title="Brad Werth" href="mailto:bwerth@mozilla.com"/> + <link rel="help" href="http://www.w3.org/TR/css-flexbox-1/#baseline-participation"/> + <link rel="match" href="flexbox-align-self-baseline-horiz-008-ref.xhtml"/> + <style> + .container { + float: left; + display: flex; + writing-mode: sideways-rl; + border: 1px dashed blue; + font: 14px sans-serif; + width: 80px; + } + + .reverse { flex-flow: row wrap-reverse; } + + .base { align-self: baseline; } + .lastbase { align-self: last baseline; } + + .offset { margin-right: 10px; + margin-left: 3px; } + + .lime { background: lime; } + .yellow { background: yellow; } + .orange { background: orange; } + .pink { background: pink; } + </style> + </head> + <body> + <div class="container"> + <div class="lime base">one line (first)</div> + <div class="yellow lastbase">one line (last)</div> + <div class="orange offset lastbase">two<br/>lines and offset (last)</div> + <div class="pink offset base">offset (first)</div> + </div> + <div class="container reverse"> + <div class="lime base">one line (first)</div> + <div class="yellow lastbase">one line (last)</div> + <div class="orange offset lastbase">two<br/>lines and offset (last)</div> + <div class="pink offset base">offset (first)</div> + </div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/reftest.list b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/reftest.list index 6f90914621b..2493ab155b0 100644 --- a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/reftest.list +++ b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/reftest.list @@ -24,6 +24,7 @@ == flexbox-align-self-baseline-horiz-005.xhtml flexbox-align-self-baseline-horiz-005-ref.xhtml == flexbox-align-self-baseline-horiz-006.xhtml flexbox-align-self-baseline-horiz-006-ref.xhtml == flexbox-align-self-baseline-horiz-007.xhtml flexbox-align-self-baseline-horiz-007-ref.xhtml +== flexbox-align-self-baseline-horiz-008.xhtml flexbox-align-self-baseline-horiz-008-ref.xhtml == flexbox-align-self-stretch-vert-001.html flexbox-align-self-stretch-vert-001-ref.html == flexbox-align-self-stretch-vert-002.html flexbox-align-self-stretch-vert-002-ref.html diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/will-change/reftest.list b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/will-change/reftest.list index b8373487ae8..d3031a49b89 100644 --- a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/will-change/reftest.list +++ b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/will-change/reftest.list @@ -8,6 +8,7 @@ == will-change-stacking-context-perspective-1.html green-square-100-by-100-ref.html == will-change-stacking-context-position-1.html green-square-100-by-100-ref.html == will-change-stacking-context-transform-1.html green-square-100-by-100-ref.html +== will-change-stacking-context-translate-1.html green-square-100-by-100-ref.html == will-change-stacking-context-transform-style-1.html green-square-100-by-100-ref.html == will-change-stacking-context-z-index-1.html green-square-100-by-100-ref.html == will-change-fixpos-cb-contain-1.html green-square-100-by-100-offset-ref.html @@ -16,4 +17,5 @@ == will-change-fixpos-cb-perspective-1.html green-square-100-by-100-offset-ref.html == will-change-fixpos-cb-position-1.html green-square-100-by-100-offset-ref.html == will-change-fixpos-cb-transform-1.html green-square-100-by-100-offset-ref.html +== will-change-fixpos-cb-translate-1.html green-square-100-by-100-offset-ref.html == will-change-fixpos-cb-transform-style-1.html green-square-100-by-100-offset-ref.html diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/will-change/will-change-fixpos-cb-translate-1.html b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/will-change/will-change-fixpos-cb-translate-1.html new file mode 100644 index 00000000000..7ff0dfe768a --- /dev/null +++ b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/will-change/will-change-fixpos-cb-translate-1.html @@ -0,0 +1,24 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>CSS will-change: 'will-change: translate' creates a containing block for fixed positioned elements</title> +<link rel="author" title="Mozilla" href="http://www.mozilla.org/"> +<link rel="help" href="https://drafts.csswg.org/css-will-change-1/#will-change"> +<link rel="help" href="https://drafts.csswg.org/css-transforms-2/#propdef-translate"> +<link rel="match" href="green-square-100-by-100-offset-ref.html"> +<meta name="assert" content="If any non-initial value of a property would cause the element to generate a containing block for fixed-position elements, specifying that property in will-change must cause the element to generate a containing block for fixed-position elements."> +<style> +html, body { margin: 0; padding: 0; } +div { width: 100px; height: 100px } +#wc { will-change: translate; margin: 100px 0 0 100px; background: red } +.child { top: 0; left: 0; width: 50px; background: green } +#fixpos { position: fixed } +#abspos { position: absolute; left: 50px } +</style> +<body> + <div id="wc"> + <div class="child" id="fixpos"> + </div> + <div class="child" id="abspos"> + </div> + </div> +</body> diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/will-change/will-change-stacking-context-translate-1.html b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/will-change/will-change-stacking-context-translate-1.html new file mode 100644 index 00000000000..1e1e8355d6c --- /dev/null +++ b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/will-change/will-change-stacking-context-translate-1.html @@ -0,0 +1,20 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>CSS will-change: 'will-change: translate' creates a stacking context</title> +<link rel="author" title="Mozilla" href="http://www.mozilla.org/"> +<link rel="help" href="https://drafts.csswg.org/css-will-change-1/#will-change"> +<link rel="help" href="https://drafts.csswg.org/css-transforms-2/#propdef-translate"> +<link rel="match" href="green-square-100-by-100-ref.html"> +<meta name="assert" content="If any non-initial value of a property would create a stacking context on the element, specifying that property in will-change must create a stacking context on the element."> +<style> +html, body { margin: 0; padding: 0; } +div { width: 100px; height: 100px } +#wc { will-change: translate; background: red } +#child { position: absolute; top: 0; left: 0; z-index: -1; background: green } +</style> +<body> + <div id="wc"> + <div id="child"> + </div> + </div> +</body> diff --git a/tests/wpt/web-platform-tests/docs/writing-tests/test-templates.md b/tests/wpt/web-platform-tests/docs/writing-tests/test-templates.md index f34b1d8d333..858758b4c8e 100644 --- a/tests/wpt/web-platform-tests/docs/writing-tests/test-templates.md +++ b/tests/wpt/web-platform-tests/docs/writing-tests/test-templates.md @@ -54,7 +54,7 @@ Filename: `{description}.html` or `{test-topic}-###-ref.html` ### SVG test -``` svg +``` xml <svg xmlns="http://www.w3.org/2000/svg" xmlns:h="http://www.w3.org/1999/xhtml"> <title>${1:Test title}</title> <metadata> @@ -69,7 +69,7 @@ Filename: `{test-topic}-###.svg` ### SVG reference -``` svg +``` xml <svg xmlns="http://www.w3.org/2000/svg"> <title>${1:Reference title}</title> ${2:Reference content} @@ -97,7 +97,7 @@ Filename: `{test-topic}-###.html` ### SVG -``` svg +``` xml <svg xmlns="http://www.w3.org/2000/svg" xmlns:h="http://www.w3.org/1999/xhtml"> <title>${1:Test title}</title> <metadata> @@ -133,7 +133,7 @@ Filename: `{test-topic}-###-manual.html` #### SVG -``` svg +``` xml <svg xmlns="http://www.w3.org/2000/svg" xmlns:h="http://www.w3.org/1999/xhtml"> <title>${1:Test title}</title> <metadata> diff --git a/tests/wpt/web-platform-tests/encoding/streams/backpressure.any.js b/tests/wpt/web-platform-tests/encoding/streams/backpressure.any.js index f17e149ed9e..718942fd8f4 100644 --- a/tests/wpt/web-platform-tests/encoding/streams/backpressure.any.js +++ b/tests/wpt/web-platform-tests/encoding/streams/backpressure.any.js @@ -4,11 +4,11 @@ const classes = [ { - constructor: TextDecoderStream, + name: 'TextDecoderStream', input: new Uint8Array([65]) }, { - constructor: TextEncoderStream, + name: 'TextEncoderStream', input: 'A' } ]; @@ -17,7 +17,7 @@ const microtasksRun = () => new Promise(resolve => step_timeout(resolve, 0)); for (const streamClass of classes) { promise_test(async () => { - const stream = new streamClass.constructor(); + const stream = new self[streamClass.name](); const writer = stream.writable.getWriter(); const reader = stream.readable.getReader(); const events = []; @@ -32,10 +32,10 @@ for (const streamClass of classes) { assert_array_equals(events, ['paused', 'read', 'write'], 'write should happen after read'); }, 'write() should not complete until read relieves backpressure for ' + - `${streamClass.constructor.name}`); + `${streamClass.name}`); promise_test(async () => { - const stream = new streamClass.constructor(); + const stream = new self[streamClass.name](); const writer = stream.writable.getWriter(); const reader = stream.readable.getReader(); const events = []; @@ -56,5 +56,5 @@ for (const streamClass of classes) { 'write2'], 'writes should not happen before read2'); }, 'additional writes should wait for backpressure to be relieved for ' + - `class ${streamClass.constructor.name}`); + `class ${streamClass.name}`); } diff --git a/tests/wpt/web-platform-tests/feature-policy/reporting/xr-report-only.https.html b/tests/wpt/web-platform-tests/feature-policy/reporting/xr-report-only.https.html index d999c977dbe..872db228495 100644 --- a/tests/wpt/web-platform-tests/feature-policy/reporting/xr-report-only.https.html +++ b/tests/wpt/web-platform-tests/feature-policy/reporting/xr-report-only.https.html @@ -10,7 +10,7 @@ const check_report_format = ([reports, observer]) => { const report = reports[0]; assert_equals(report.type, "feature-policy-violation"); assert_equals(report.url, document.location.href); - assert_equals(report.body.featureId, "xr"); + assert_equals(report.body.featureId, "xr-spatial-tracking"); assert_equals(report.body.sourceFile, document.location.href); assert_equals(typeof report.body.lineNumber, "number"); assert_equals(typeof report.body.columnNumber, "number"); @@ -23,11 +23,12 @@ promise_test(async t => { {types: ['feature-policy-violation']}).observe(); }); try { - await navigator.xr.supportsSession('inline'); + let supported = await navigator.xr.isSessionSupported('immersive-vr'); } catch (err) { - // If no XR devices are available, supportsSession() will reject with a - // NotSupportedError, but the report should be generated anyway. - assert_equals(err.name, 'NotSupportedError'); + // IsSessionSupported should only throw with a feature policy violation; + // however, inline does not trigger the feature policy, + // so immersive-vr must be used. + assert_unreached("isSessionSupported should not throw in ReportOnly mode"); } check_report_format(await report); }, "XR report only mode"); diff --git a/tests/wpt/web-platform-tests/feature-policy/reporting/xr-report-only.https.html.headers b/tests/wpt/web-platform-tests/feature-policy/reporting/xr-report-only.https.html.headers index 47b7c824b35..45df4936e27 100644 --- a/tests/wpt/web-platform-tests/feature-policy/reporting/xr-report-only.https.html.headers +++ b/tests/wpt/web-platform-tests/feature-policy/reporting/xr-report-only.https.html.headers @@ -1 +1 @@ -Feature-Policy-Report-Only: xr 'none' +Feature-Policy-Report-Only: xr-spatial-tracking 'none' diff --git a/tests/wpt/web-platform-tests/feature-policy/reporting/xr-reporting.https.html b/tests/wpt/web-platform-tests/feature-policy/reporting/xr-reporting.https.html index 68a3e4e737b..edc75e82400 100644 --- a/tests/wpt/web-platform-tests/feature-policy/reporting/xr-reporting.https.html +++ b/tests/wpt/web-platform-tests/feature-policy/reporting/xr-reporting.https.html @@ -10,7 +10,7 @@ var check_report_format = (reports, observer) => { let report = reports[0]; assert_equals(report.type, "feature-policy-violation"); assert_equals(report.url, document.location.href); - assert_equals(report.body.featureId, "xr"); + assert_equals(report.body.featureId, "xr-spatial-tracking"); assert_equals(report.body.sourceFile, document.location.href); assert_equals(typeof report.body.lineNumber, "number"); assert_equals(typeof report.body.columnNumber, "number"); @@ -22,8 +22,9 @@ promise_test(async (t) => { new ReportingObserver((reports, observer) => resolve([reports, observer]), {types: ['feature-policy-violation']}).observe(); }); - await promise_rejects(t, 'SecurityError', navigator.xr.supportsSession('inline'), - "XR device access should not be allowed in this document."); + await promise_rejects(t, 'SecurityError', + navigator.xr.isSessionSupported('immersive-vr'), + "XR spatial tracking should not be allowed in this document."); const [reports, observer] = await report; check_report_format(reports, observer); }, "XR Report Format"); diff --git a/tests/wpt/web-platform-tests/feature-policy/reporting/xr-reporting.https.html.headers b/tests/wpt/web-platform-tests/feature-policy/reporting/xr-reporting.https.html.headers index ea8722131ce..2c758962332 100644 --- a/tests/wpt/web-platform-tests/feature-policy/reporting/xr-reporting.https.html.headers +++ b/tests/wpt/web-platform-tests/feature-policy/reporting/xr-reporting.https.html.headers @@ -1 +1 @@ -Feature-Policy: xr 'none' +Feature-Policy: xr-spatial-tracking 'none' diff --git a/tests/wpt/web-platform-tests/html/rendering/replaced-elements/attributes-for-embedded-content-and-images/img-aspect-ratio.tentative.html b/tests/wpt/web-platform-tests/html/rendering/replaced-elements/attributes-for-embedded-content-and-images/img-aspect-ratio.html index c9ce86869e1..c9ce86869e1 100644 --- a/tests/wpt/web-platform-tests/html/rendering/replaced-elements/attributes-for-embedded-content-and-images/img-aspect-ratio.tentative.html +++ b/tests/wpt/web-platform-tests/html/rendering/replaced-elements/attributes-for-embedded-content-and-images/img-aspect-ratio.html diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/json-module/README.md b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/json-module/README.md new file mode 100644 index 00000000000..204fd59dcb1 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/json-module/README.md @@ -0,0 +1,2 @@ +This directory contains an experimental feature that is not currently standardized due to a security +issue. Support was removed in https://github.com/whatwg/html/pull/4943. diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/json-module/invalid-content-type.html b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/json-module/invalid-content-type.tentative.html index e6da2db7ebc..e6da2db7ebc 100644 --- a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/json-module/invalid-content-type.html +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/json-module/invalid-content-type.tentative.html diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/json-module/module.html b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/json-module/module.tentative.html index 93243853226..93243853226 100644 --- a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/json-module/module.html +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/json-module/module.tentative.html diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/json-module/non-object.any.js b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/json-module/non-object.tentative.any.js index dcbe60f2c2f..dcbe60f2c2f 100644 --- a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/json-module/non-object.any.js +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/json-module/non-object.tentative.any.js diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/json-module/parse-error.html b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/json-module/parse-error.tentative.html index 68d3ef0a9ad..68d3ef0a9ad 100644 --- a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/json-module/parse-error.html +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/json-module/parse-error.tentative.html diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/json-module/utf8.html b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/json-module/utf8.tentative.html index 1c0360b17e3..1c0360b17e3 100644 --- a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/json-module/utf8.html +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/json-module/utf8.tentative.html diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/json-module/valid-content-type.html b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/json-module/valid-content-type.tentative.html index 78e8b1d23fe..78e8b1d23fe 100644 --- a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/json-module/valid-content-type.html +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/json-module/valid-content-type.tentative.html diff --git a/tests/wpt/web-platform-tests/interfaces/css-typed-om.idl b/tests/wpt/web-platform-tests/interfaces/css-typed-om.idl index b54a16338ec..df9669e5637 100644 --- a/tests/wpt/web-platform-tests/interfaces/css-typed-om.idl +++ b/tests/wpt/web-platform-tests/interfaces/css-typed-om.idl @@ -65,6 +65,8 @@ interface CSSKeywordValue : CSSStyleValue { attribute USVString value; }; +typedef (DOMString or CSSKeywordValue) CSSKeywordish; + typedef (double or CSSNumericValue) CSSNumberish; enum CSSNumericBaseType { diff --git a/tests/wpt/web-platform-tests/interfaces/webrtc-stats.idl b/tests/wpt/web-platform-tests/interfaces/webrtc-stats.idl index c2dc1f7a0b0..e41d7357b1a 100644 --- a/tests/wpt/web-platform-tests/interfaces/webrtc-stats.idl +++ b/tests/wpt/web-platform-tests/interfaces/webrtc-stats.idl @@ -48,13 +48,13 @@ enum RTCCodecType { }; dictionary RTCReceivedRtpStreamStats : RTCRtpStreamStats { - unsigned long packetsReceived; - long packetsLost; + unsigned long long packetsReceived; + long long packetsLost; double jitter; - unsigned long packetsDiscarded; - unsigned long packetsRepaired; - unsigned long burstPacketsLost; - unsigned long burstPacketsDiscarded; + unsigned long long packetsDiscarded; + unsigned long long packetsRepaired; + unsigned long long burstPacketsLost; + unsigned long long burstPacketsDiscarded; unsigned long burstLossCount; unsigned long burstDiscardCount; double burstLossRate; @@ -64,6 +64,7 @@ dictionary RTCReceivedRtpStreamStats : RTCRtpStreamStats { unsigned long framesDropped; unsigned long partialFramesLost; unsigned long fullFramesLost; + }; dictionary RTCInboundRtpStreamStats : RTCReceivedRtpStreamStats { @@ -80,12 +81,12 @@ dictionary RTCInboundRtpStreamStats : RTCReceivedRtpStreamStats { boolean voiceActivityFlag; DOMHighResTimeStamp lastPacketReceivedTimestamp; double averageRtcpInterval; - unsigned long fecPacketsReceived; - unsigned long fecPacketsDiscarded; + unsigned long long fecPacketsReceived; + unsigned long long fecPacketsDiscarded; unsigned long long bytesReceived; - unsigned long packetsFailedDecryption; - unsigned long packetsDuplicated; - record<USVString, unsigned long> perDscpPacketsReceived; + unsigned long long packetsFailedDecryption; + unsigned long long packetsDuplicated; + record<USVString, unsigned long long> perDscpPacketsReceived; unsigned long nackCount; unsigned long firCount; unsigned long pliCount; @@ -94,6 +95,8 @@ dictionary RTCInboundRtpStreamStats : RTCReceivedRtpStreamStats { double jitterBufferDelay; unsigned long long jitterBufferEmittedCount; unsigned long long totalSamplesReceived; + unsigned long long samplesDecodedWithSilk; + unsigned long long samplesDecodedWithCelt; unsigned long long concealedSamples; unsigned long long silentConcealedSamples; unsigned long long concealmentEvents; @@ -125,6 +128,7 @@ dictionary RTCOutboundRtpStreamStats : RTCSentRtpStreamStats { DOMString mediaSourceId; DOMString senderId; DOMString remoteId; + DOMString rid; DOMHighResTimeStamp lastPacketSentTimestamp; unsigned long packetsDiscardedOnSend; unsigned long long bytesDiscardedOnSend; @@ -143,6 +147,8 @@ dictionary RTCOutboundRtpStreamStats : RTCSentRtpStreamStats { unsigned long framesDiscardedOnSend; unsigned long long qpSum; unsigned long long totalSamplesSent; + unsigned long long samplesEncodedWithSilk; + unsigned long long samplesEncodedWithCelt; boolean voiceActivityFlag; double totalEncodeTime; double totalPacketSendDelay; @@ -150,7 +156,7 @@ dictionary RTCOutboundRtpStreamStats : RTCSentRtpStreamStats { RTCQualityLimitationReason qualityLimitationReason; record<DOMString, double> qualityLimitationDurations; unsigned long qualityLimitationResolutionChanges; - record<USVString, unsigned long> perDscpPacketsSent; + record<USVString, unsigned long long> perDscpPacketsSent; unsigned long nackCount; unsigned long firCount; unsigned long pliCount; @@ -257,8 +263,8 @@ dictionary RTCDataChannelStats : RTCStats { }; dictionary RTCTransportStats : RTCStats { - unsigned long packetsSent; - unsigned long packetsReceived; + unsigned long long packetsSent; + unsigned long long packetsReceived; unsigned long long bytesSent; unsigned long long bytesReceived; DOMString rtcpTransportStatsId; @@ -302,8 +308,8 @@ dictionary RTCIceCandidatePairStats : RTCStats { DOMString remoteCandidateId; RTCStatsIceCandidatePairState state; boolean nominated; - unsigned long packetsSent; - unsigned long packetsReceived; + unsigned long long packetsSent; + unsigned long long packetsReceived; unsigned long long bytesSent; unsigned long long bytesReceived; DOMHighResTimeStamp lastPacketSentTimestamp; @@ -353,6 +359,12 @@ dictionary RTCIceServerStats : RTCStats { double totalRoundTripTime; }; +dictionary RTCReceiverVideoTrackAttachmentStats : RTCVideoReceiverStats { +}; + +dictionary RTCReceiverAudioTrackAttachmentStats : RTCAudioReceiverStats { +}; + partial dictionary RTCCodecStats { DOMString implementation; }; diff --git a/tests/wpt/web-platform-tests/mathml/presentation-markup/fractions/frac-legacy-bevelled-attribute.tentative-ref.html b/tests/wpt/web-platform-tests/mathml/presentation-markup/fractions/frac-legacy-bevelled-attribute.tentative-ref.html new file mode 100644 index 00000000000..f0b355c7bd9 --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/presentation-markup/fractions/frac-legacy-bevelled-attribute.tentative-ref.html @@ -0,0 +1,18 @@ +<!DOCTYPE html> +<html> + <head> + <meta charset="utf-8"> + <title>fractions bevelled (reference)</title> + </head> + <body> + <p>Test passes is you see a blue rectangle <em>above</em> a green rectangle, separated by a horizontal bar.</p> + <p> + <math> + <mfrac> + <mspace width="100px" height="30px" style="background: lightblue"></mspace> + <mspace width="100px" height="30px" style="background: lightgreen"></mspace> + </mfrac> + </math> + </p> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/mathml/presentation-markup/fractions/frac-legacy-bevelled-attribute.tentative.html b/tests/wpt/web-platform-tests/mathml/presentation-markup/fractions/frac-legacy-bevelled-attribute.tentative.html new file mode 100644 index 00000000000..1f14044106e --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/presentation-markup/fractions/frac-legacy-bevelled-attribute.tentative.html @@ -0,0 +1,28 @@ +<!DOCTYPE html> +<html> + <head> + <meta charset="utf-8"> + <title>fractions bevelled</title> + <link rel="help" href="https://www.w3.org/TR/MathML3/chapter3.html#presm.mfrac"> + <link rel="help" href="https://mathml-refresh.github.io/mathml-core/#fractions-mfrac"> + <link rel="help" href="https://github.com/mathml-refresh/mathml/issues/29"> + <meta name="assert" content="Verify that the MathML3 bevelled attribute is ignored."> + <link rel="match" href="frac-legacy-bevelled-attribute.tentative-ref.html"> + </head> + <body> + <p>Test passes is you see a blue rectangle <em>above</em> a green rectangle, separated by a horizontal bar.</p> + <p> + <math> + <mfrac bevelled="true"> + <mspace width="100px" height="30px" style="background: lightblue"></mspace> + <mspace width="100px" height="30px" style="background: lightgreen"></mspace> + </mfrac> + </math> + </p> + <script src="/mathml/support/feature-detection.js"></script> + <script> + MathMLFeatureDetection.ensure_for_match_reftest("has_mspace"); + MathMLFeatureDetection.ensure_for_match_reftest("has_mfrac"); + </script> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/mathml/presentation-markup/mrow/legacy-mfenced-element-001-ref.html b/tests/wpt/web-platform-tests/mathml/presentation-markup/mrow/legacy-mfenced-element-001-ref.html new file mode 100644 index 00000000000..00c781b6e4f --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/presentation-markup/mrow/legacy-mfenced-element-001-ref.html @@ -0,0 +1,24 @@ +<!DOCTYPE html> +<html> + <head> + <meta charset="utf-8"> + <title>mfenced element</title> + </head> + <body> + <p>Test passes if you see 6 green squares and no red.</p> + <p> + <math> + <mrow> + <mspace width="30px" height="30px" style="background: green"></mspace> + <mspace width="30px" height="30px" style="background: lightgreen"></mspace> + <mspace width="30px" height="30px" style="background: green"></mspace> + </mrow> + <mrow> + <mspace width="30px" height="30px" style="background: lightgreen"></mspace> + <mspace width="30px" height="30px" style="background: green"></mspace> + <mspace width="30px" height="30px" style="background: lightgreen"></mspace> + </mrow> + </math> + </p> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/mathml/presentation-markup/mrow/legacy-mfenced-element-001.html b/tests/wpt/web-platform-tests/mathml/presentation-markup/mrow/legacy-mfenced-element-001.html new file mode 100644 index 00000000000..7cc3e2ed840 --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/presentation-markup/mrow/legacy-mfenced-element-001.html @@ -0,0 +1,34 @@ +<!DOCTYPE html> +<html> + <head> + <meta charset="utf-8"> + <title>mfenced element</title> + <link rel="help" href="https://www.w3.org/TR/MathML3/chapter3.html#presm.mfenced"> + <link rel="help" href="https://mathml-refresh.github.io/mathml-core/#new-display-math-value"> + <link rel="help" href="https://mathml-refresh.github.io/mathml-core/#mathml-elements"> + <link rel="help" href="https://mathml-refresh.github.io/mathml-core/#horizontally-group-sub-expressions-mrow"> + <meta name="assert" content="Verify that the mfenced element is not supported."> + <link rel="match" href="legacy-mfenced-element-001-ref.html"> + </head> + <body> + <p>Test passes if you see 6 green squares and no red.</p> + <p> + <math style="color: red"> + <mfenced> + <mspace width="30px" height="30px" style="background: green"></mspace> + <mspace width="30px" height="30px" style="background: lightgreen"></mspace> + <mspace width="30px" height="30px" style="background: green"></mspace> + </mfenced> + <mfenced open="{" close="]" separators="?!"> + <mspace width="30px" height="30px" style="background: lightgreen"></mspace> + <mspace width="30px" height="30px" style="background: green"></mspace> + <mspace width="30px" height="30px" style="background: lightgreen"></mspace> + </mfenced> + </math> + </p> + <script src="/mathml/support/feature-detection.js"></script> + <script> + MathMLFeatureDetection.ensure_for_match_reftest("has_mspace"); + </script> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/mathml/presentation-markup/scripts/subsup-legacy-scriptshift-attributes-001.tentative-ref.html b/tests/wpt/web-platform-tests/mathml/presentation-markup/scripts/subsup-legacy-scriptshift-attributes-001.tentative-ref.html new file mode 100644 index 00000000000..c1bf2e46954 --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/presentation-markup/scripts/subsup-legacy-scriptshift-attributes-001.tentative-ref.html @@ -0,0 +1,35 @@ +<!DOCTYPE html> +<html> + <head> + <meta charset="utf-8"> + <title>msub/msup/msubsup/mmultiscripts subscriptshift and superscriptshift attributes (reference)</title> + </head> + <body> + <p>Test passes if the green squares are not about 300px away from the blue squares.</p> + <p> + <math> + <mmultiscripts> + <mspace width="30px" height="30px" style="background: blue;"></mspace> + <mspace width="10px" height="10px" style="background: lightgreen;"></mspace> + <mspace width="10px" height="10px" style="background: lightgreen;"></mspace> + <mprescripts/> + <mspace width="10px" height="10px" style="background: lightgreen;"></mspace> + <mspace width="10px" height="10px" style="background: lightgreen;"></mspace> + </mmultiscripts> + <msub> + <mspace width="30px" height="30px" style="background: blue;"></mspace> + <mspace width="10px" height="10px" style="background: lightgreen;"></mspace> + </msub> + <msup> + <mspace width="30px" height="30px" style="background: blue;"></mspace> + <mspace width="10px" height="10px" style="background: lightgreen;"></mspace> + </msup> + <msubsup> + <mspace width="30px" height="30px" style="background: blue;"></mspace> + <mspace width="10px" height="10px" style="background: lightgreen;"></mspace> + <mspace width="10px" height="10px" style="background: lightgreen;"></mspace> + </msubsup> + </math> + </p> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/mathml/presentation-markup/scripts/subsup-legacy-scriptshift-attributes-001.tentative.html b/tests/wpt/web-platform-tests/mathml/presentation-markup/scripts/subsup-legacy-scriptshift-attributes-001.tentative.html new file mode 100644 index 00000000000..532271dbe04 --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/presentation-markup/scripts/subsup-legacy-scriptshift-attributes-001.tentative.html @@ -0,0 +1,48 @@ +<!DOCTYPE html> +<html> + <head> + <meta charset="utf-8"> + <title>msub/msup/msubsup/mmultiscripts subscriptshift and superscriptshift attributes</title> + <link rel="help" href="https://www.w3.org/TR/MathML3/chapter3.html#presm.msub"> + <link rel="help" href="https://www.w3.org/TR/MathML3/chapter3.html#presm.msup"> + <link rel="help" href="https://www.w3.org/TR/MathML3/chapter3.html#presm.msunsup"> + <link rel="help" href="https://www.w3.org/TR/MathML3/chapter3.html#presm.mmultiscripts"> + <link rel="help" href="https://mathml-refresh.github.io/mathml-core/#subscripts-and-superscripts-msub-msup-msubsup"> + <link rel="help" href="https://mathml-refresh.github.io/mathml-core/#prescripts-and-tensor-indices-mmultiscripts"> + <link rel="match" href="subsup-legacy-scriptshift-attributes-001.tentative-ref.html"> + </head> + <body> + <p>Test passes if the green squares are not about 300px away from the blue squares.</p> + <p> + <math> + <mmultiscripts subscriptshift="300px" superscriptshift="300px"> + <mspace width="30px" height="30px" style="background: blue;"></mspace> + <mspace width="10px" height="10px" style="background: lightgreen;"></mspace> + <mspace width="10px" height="10px" style="background: lightgreen;"></mspace> + <mprescripts/> + <mspace width="10px" height="10px" style="background: lightgreen;"></mspace> + <mspace width="10px" height="10px" style="background: lightgreen;"></mspace> + </mmultiscripts> + <msub subscriptshift="300px"> + <mspace width="30px" height="30px" style="background: blue;"></mspace> + <mspace width="10px" height="10px" style="background: lightgreen;"></mspace> + </msub> + <msup superscriptshift="300px"> + <mspace width="30px" height="30px" style="background: blue;"></mspace> + <mspace width="10px" height="10px" style="background: lightgreen;"></mspace> + </msup> + <msubsup subscriptshift="300px" superscriptshift="300px"> + <mspace width="30px" height="30px" style="background: blue;"></mspace> + <mspace width="10px" height="10px" style="background: lightgreen;"></mspace> + <mspace width="10px" height="10px" style="background: lightgreen;"></mspace> + </msubsup> + </math> + </p> + <script src="/mathml/support/feature-detection.js"></script> + <script> + MathMLFeatureDetection.ensure_for_match_reftest("has_mspace"); + MathMLFeatureDetection.ensure_for_match_reftest("has_msubsup"); + MathMLFeatureDetection.ensure_for_match_reftest("has_mmultiscripts"); + </script> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/native-file-system/native_FileSystemDirectoryHandle-getEntries.tentative.https.manual.window.js b/tests/wpt/web-platform-tests/native-file-system/native_FileSystemDirectoryHandle-getEntries.tentative.https.manual.window.js new file mode 100644 index 00000000000..f27a44d1245 --- /dev/null +++ b/tests/wpt/web-platform-tests/native-file-system/native_FileSystemDirectoryHandle-getEntries.tentative.https.manual.window.js @@ -0,0 +1,4 @@ +// META: script=/resources/testdriver.js +// META: script=resources/test-helpers.js +// META: script=resources/native-fs-test-helpers.js +// META: script=script-tests/FileSystemDirectoryHandle-getEntries.js diff --git a/tests/wpt/web-platform-tests/native-file-system/sandboxed_FileSystemDirectoryHandle-getEntries.tentative.https.any.js b/tests/wpt/web-platform-tests/native-file-system/sandboxed_FileSystemDirectoryHandle-getEntries.tentative.https.any.js new file mode 100644 index 00000000000..da620e2a3b1 --- /dev/null +++ b/tests/wpt/web-platform-tests/native-file-system/sandboxed_FileSystemDirectoryHandle-getEntries.tentative.https.any.js @@ -0,0 +1,3 @@ +// META: script=resources/test-helpers.js +// META: script=resources/sandboxed-fs-test-helpers.js +// META: script=script-tests/FileSystemDirectoryHandle-getEntries.js diff --git a/tests/wpt/web-platform-tests/native-file-system/script-tests/FileSystemDirectoryHandle-getEntries.js b/tests/wpt/web-platform-tests/native-file-system/script-tests/FileSystemDirectoryHandle-getEntries.js new file mode 100644 index 00000000000..571683ccfd1 --- /dev/null +++ b/tests/wpt/web-platform-tests/native-file-system/script-tests/FileSystemDirectoryHandle-getEntries.js @@ -0,0 +1,41 @@ +directory_test(async (t, root) => { + const file_name1 = 'foo1.txt'; + const file_name2 = 'foo2.txt'; + await createFileWithContents(t, file_name1, 'contents', /*parent=*/ root); + await createFileWithContents(t, file_name2, 'contents', /*parent=*/ root); + + let abortIter = async (dir) => { + for await (let entry of dir.getEntries()) { + return entry.name; + } + }; + + try { + await abortIter(root); + } catch(e) { + assert_unreached('Error thrown on iteration abort.'); + } + +}, 'getEntries(): returning early from an iteration works'); + +directory_test(async (t, root) => { + const file_name1 = 'foo1.txt'; + const file_name2 = 'foo2.txt'; + await createFileWithContents(t, file_name1, 'contents', /*parent=*/ root); + await createFileWithContents(t, file_name2, 'contents', /*parent=*/ root); + + let fullIter = async (dir) => { + let name; + for await (let entry of dir.getEntries()) { + name = entry.name; + } + return name; + }; + + try { + await fullIter(root); + } catch(e) { + assert_unreached('Error thrown on iteration.'); + } + +}, 'getEntries(): full iteration works'); diff --git a/tests/wpt/web-platform-tests/resources/chromium/webusb-test.js b/tests/wpt/web-platform-tests/resources/chromium/webusb-test.js index c4d4e8f1ac4..8bccfd1f724 100644 --- a/tests/wpt/web-platform-tests/resources/chromium/webusb-test.js +++ b/tests/wpt/web-platform-tests/resources/chromium/webusb-test.js @@ -241,23 +241,39 @@ class FakeDevice { return Promise.resolve({ success: true }); } - controlTransferIn(params, length, timeout) { + async controlTransferIn(params, length, timeout) { assert_true(this.opened_); - assert_false(this.currentConfiguration_ == null, 'device configured'); - return Promise.resolve({ + + if ((params.recipient == device.mojom.UsbControlTransferRecipient.INTERFACE || + params.recipient == device.mojom.UsbControlTransferRecipient.ENDPOINT) && + this.currentConfiguration_ == null) { + return { + status: device.mojom.UsbTransferStatus.PERMISSION_DENIED, + }; + } + + return { status: device.mojom.UsbTransferStatus.OK, data: [length >> 8, length & 0xff, params.request, params.value >> 8, params.value & 0xff, params.index >> 8, params.index & 0xff] - }); + }; } - controlTransferOut(params, data, timeout) { + async controlTransferOut(params, data, timeout) { assert_true(this.opened_); - assert_false(this.currentConfiguration_ == null, 'device configured'); - return Promise.resolve({ + + if ((params.recipient == device.mojom.UsbControlTransferRecipient.INTERFACE || + params.recipient == device.mojom.UsbControlTransferRecipient.ENDPOINT) && + this.currentConfiguration_ == null) { + return { + status: device.mojom.UsbTransferStatus.PERMISSION_DENIED, + }; + } + + return { status: device.mojom.UsbTransferStatus.OK, bytesWritten: data.byteLength - }); + }; } genericTransferIn(endpointNumber, length, timeout) { 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 eae4d64b446..df91abf6d7f 100644 --- a/tests/wpt/web-platform-tests/resources/chromium/webxr-test.js +++ b/tests/wpt/web-platform-tests/resources/chromium/webxr-test.js @@ -268,6 +268,7 @@ class MockRuntime { this.pose_ = { orientation: { x: q[0], y: q[1], z: q[2], w: q[3] }, position: { x: p[0], y: p[1], z: p[2] }, + emulatedPosition: emulatedPosition, angularVelocity: null, linearVelocity: null, angularAcceleration: null, @@ -573,7 +574,7 @@ class MockRuntime { let submit_frame_sink; if (result.supportsSession) { submit_frame_sink = { - clientRequest: this.presentation_provider_.getClientRequest(), + clientReceiver: this.presentation_provider_.getClientReceiver(), provider: this.presentation_provider_.bindProvider(sessionOptions), transportOptions: options }; @@ -583,7 +584,7 @@ class MockRuntime { this.dataProviderBinding_ = new mojo.Binding( device.mojom.XRFrameDataProvider, this, dataProviderRequest); - let clientRequest = mojo.makeRequest(this.sessionClient_); + let clientReceiver = mojo.makeRequest(this.sessionClient_); let enabled_features = []; for(let i = 0; i < sessionOptions.requiredFeatures.length; i++) { @@ -604,7 +605,7 @@ class MockRuntime { session: { submitFrameSink: submit_frame_sink, dataProvider: dataProviderPtr, - clientRequest: clientRequest, + clientReceiver: clientReceiver, displayInfo: this.displayInfo_, enabledFeatures: enabled_features, } @@ -691,6 +692,7 @@ class MockXRInputSource { this.desc_dirty_ = true; this.pointer_offset_ = new gfx.mojom.Transform(); this.pointer_offset_.matrix = getMatrixFromTransform(transform); + this.emulated_position_ = emulatedPosition; } disconnect() { @@ -812,11 +814,11 @@ class MockXRInputSource { input_state.gamepad = this.gamepad_; + input_state.emulatedPosition = this.emulated_position_; + if (this.desc_dirty_) { let input_desc = new device.mojom.XRInputSourceDescription(); - input_desc.emulatedPosition = this.emulated_position_; - switch (this.target_ray_mode_) { case 'gaze': input_desc.targetRayMode = device.mojom.XRTargetRayMode.GAZING; @@ -955,7 +957,7 @@ class MockXRPresentationProvider { return providerPtr; } - getClientRequest() { + getClientReceiver() { this.submitFrameClient_ = new device.mojom.XRPresentationClientPtr(); return mojo.makeRequest(this.submitFrameClient_); } diff --git a/tests/wpt/web-platform-tests/shadow-dom/Element-interface-attachShadow-custom-element.html b/tests/wpt/web-platform-tests/shadow-dom/Element-interface-attachShadow-custom-element.html index 5d862c49244..123d9c14c55 100644 --- a/tests/wpt/web-platform-tests/shadow-dom/Element-interface-attachShadow-custom-element.html +++ b/tests/wpt/web-platform-tests/shadow-dom/Element-interface-attachShadow-custom-element.html @@ -20,7 +20,7 @@ test(() => { test(() => { class ShadowDisabledElement extends HTMLElement { - static disabledFeatures = ['shadow']; + static get disabledFeatures() { return ['shadow']; } } // No definition. attachShadow() should succeed. @@ -47,7 +47,7 @@ test(() => { test(() => { class ShadowDisabledHeadingElement extends HTMLHeadingElement { - static disabledFeatures = ['shadow']; + static get disabledFeatures() { return ['shadow']; } } // No definition. attachShadow() should succeed. @@ -77,7 +77,7 @@ test(() => { test(() => { class CapitalShadowDisabledElement extends HTMLElement { - static disabledFeatures = ['SHADOW']; + static get disabledFeatures() { return ['shadow']; } } customElements.define('capital-shadow-disabled-element', CapitalShadowDisabledElement); diff --git a/tests/wpt/web-platform-tests/svg/animations/interval-restart-events.html b/tests/wpt/web-platform-tests/svg/animations/interval-restart-events.html new file mode 100644 index 00000000000..3c3ad89a323 --- /dev/null +++ b/tests/wpt/web-platform-tests/svg/animations/interval-restart-events.html @@ -0,0 +1,30 @@ +<!DOCTYPE html> +<title>Event dispatching on interval restart</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<svg height="0"> + <rect width="100" height="100" fill="blue"> + <animate attributeName="x" begin="0s; 10ms" end="20ms" from="0" to="100" + id="target"/> + <set attributeName="visibility" begin="0s" end="50ms" from="visible" to="visible" + id="timekeeper"/> + </rect> +</svg> +<script> + async_test(t => { + let begin_count = 0, end_count = 0; + let target = document.getElementById("target"); + target.addEventListener("beginEvent", t.step_func(() => { + begin_count++; + })); + target.addEventListener("endEvent", t.step_func(() => { + end_count++; + })); + let timekeeper = document.getElementById("timekeeper"); + timekeeper.addEventListener("endEvent", t.step_func(() => { + requestAnimationFrame(t.step_func_done(() => { + assert_equals(begin_count, end_count); + })); + })); + }); +</script> diff --git a/tests/wpt/web-platform-tests/tools/ci/tests/test_update_pr_preview.py b/tests/wpt/web-platform-tests/tools/ci/tests/test_update_pr_preview.py deleted file mode 100644 index 056add73a92..00000000000 --- a/tests/wpt/web-platform-tests/tools/ci/tests/test_update_pr_preview.py +++ /dev/null @@ -1,372 +0,0 @@ -try: - from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer -except ImportError: - # Python 3 case - from http.server import BaseHTTPRequestHandler, HTTPServer -import json -import os -import subprocess -import tempfile -import threading - -subject = os.path.join( - os.path.dirname(os.path.abspath(__file__)), '..', 'update_pr_preview.py' -) -test_host = 'localhost' - - -class MockHandler(BaseHTTPRequestHandler, object): - def do_all(self): - request_body = None - - if 'Content-Length' in self.headers: - request_body = self.rfile.read( - int(self.headers['Content-Length']) - ).decode('utf-8') - - if self.headers.get('Content-Type') == 'application/json': - request_body = json.loads(request_body) - - request = (self.command, self.path, request_body) - - self.server.requests.append(request) - status_code, body = self.server.responses.get(request[:2], (200, '{}')) - self.send_response(status_code) - self.end_headers() - self.wfile.write(body.encode('utf-8')) - - def do_DELETE(self): - return self.do_all() - - def do_GET(self): - return self.do_all() - - def do_PATCH(self): - return self.do_all() - - def do_POST(self): - return self.do_all() - - -class MockServer(HTTPServer, object): - '''HTTP server that responds to all requests with status code 200 and body - '{}' unless an alternative status code and body are specified for the given - method and path in the `responses` parameter.''' - def __init__(self, address, responses=None): - super(MockServer, self).__init__(address, MockHandler) - self.responses = responses or {} - self.requests = [] - - -def assert_success(returncode): - assert returncode == 0 - - -def assert_neutral(returncode): - assert returncode == 0 - - -def assert_fail(returncode): - assert returncode not in (0, 78) - - -def run(event_data, responses=None): - fd, event_data_file = tempfile.mkstemp(text=True) - handle = os.fdopen(fd, 'w') - try: - json.dump(event_data, handle) - finally: - handle.close() - env = { - 'GITHUB_EVENT_PATH': event_data_file, - 'GITHUB_REPOSITORY': 'test-org/test-repo' - } - env.update(os.environ) - server = MockServer((test_host, 0), responses) - test_port = server.server_address[1] - threading.Thread(target=lambda: server.serve_forever()).start() - - try: - child = subprocess.Popen( - ['python', subject, 'http://{}:{}'.format(test_host, test_port)], - env=env - ) - - child.communicate() - finally: - server.shutdown() - os.remove(event_data_file) - - return child.returncode, server.requests - -def to_key(request): - return request[:2] - -class Requests(object): - read_collaborator = ( - 'GET', '/repos/test-org/test-repo/collaborators/rms', None - ) - create_label = ( - 'POST', - '/repos/test-org/test-repo/issues/543/labels', - {'labels': ['pull-request-has-preview']} - ) - delete_label = ( - 'DELETE', - '/repos/test-org/test-repo/issues/543/labels/pull-request-has-preview', - '' - ) - get_ref_open = ( - 'GET', '/repos/test-org/test-repo/git/refs/prs-open/gh-543', None - ) - get_ref_labeled = ( - 'GET', - '/repos/test-org/test-repo/git/refs/prs-labeled-for-preview/gh-543', - None - ) - create_ref_open = ( - 'POST', - '/repos/test-org/test-repo/git/refs', - {'ref': 'refs/prs-open/gh-543', 'sha': 'deadbeef'} - ) - create_ref_labeled = ( - 'POST', - '/repos/test-org/test-repo/git/refs', - {'ref': 'refs/prs-labeled-for-preview/gh-543', 'sha': 'deadbeef'} - ) - delete_ref_open = ( - 'DELETE', '/repos/test-org/test-repo/git/refs/prs-open/gh-543', '' - ) - delete_ref_labeled = ( - 'DELETE', - '/repos/test-org/test-repo/git/refs/prs-labeled-for-preview/gh-543', '' - ) - update_ref_open = ( - 'PATCH', - '/repos/test-org/test-repo/git/refs/prs-open/gh-543', - {'force': True, 'sha': 'deadbeef'} - ) - update_ref_labeled = ( - 'PATCH', - '/repos/test-org/test-repo/git/refs/prs-labeled-for-preview/gh-543', - {'force': True, 'sha': 'deadbeef'} - ) - - -def default_data(action): - return { - 'pull_request': { - 'number': 543, - 'closed_at': None, - 'head': { - 'sha': 'deadbeef' - }, - 'user': { - 'login': 'rms' - }, - 'labels': [ - {'name': 'foo'}, - {'name': 'bar'} - ] - }, - 'action': action - } - - -def test_close_active_with_label(): - event_data = default_data('closed') - event_data['pull_request']['closed_at'] = '2019-07-05' - event_data['pull_request']['labels'].append( - {'name': 'pull-request-has-preview'} - ) - - returncode, requests = run(event_data) - - assert_success(returncode) - assert Requests.delete_label in requests - assert Requests.delete_ref_open in requests - assert Requests.delete_ref_labeled not in requests - - -def test_close_active_with_label_error(): - event_data = default_data('closed') - event_data['pull_request']['closed_at'] = '2019-07-05' - event_data['pull_request']['labels'].append( - {'name': 'pull-request-has-preview'} - ) - responses = { - to_key(Requests.delete_label): (500, '{}') - } - - returncode, requests = run(event_data, responses) - - assert_fail(returncode) - - -def test_close_active_without_label(): - event_data = default_data('closed') - event_data['pull_request']['closed_at'] = '2019-07-05' - - returncode, requests = run(event_data) - - assert_success(returncode) - assert [Requests.delete_ref_open] == requests - - -def test_open_with_label(): - event_data = default_data('opened') - event_data['pull_request']['labels'].append( - {'name': 'pull-request-has-preview'} - ) - - returncode, requests = run(event_data) - - assert_success(returncode) - assert Requests.update_ref_open in requests - assert Requests.update_ref_labeled in requests - - -def test_open_without_label_for_collaborator(): - event_data = default_data('opened') - responses = { - to_key(Requests.read_collaborator): (204, ''), - to_key(Requests.get_ref_open): (404, '{}'), - to_key(Requests.get_ref_labeled): (404, '{}'), - } - - returncode, requests = run(event_data, responses) - - assert_success(returncode) - assert Requests.create_label in requests - assert Requests.create_ref_open in requests - assert Requests.create_ref_labeled in requests - - -def test_open_without_label_for_non_collaborator(): - event_data = default_data('opened') - responses = { - ('GET', '/repos/test-org/test-repo/collaborators/rms'): (404, '{}') - } - - returncode, requests = run(event_data, responses) - - assert_neutral(returncode) - assert [Requests.read_collaborator] == requests - - -def test_add_unrelated_label(): - event_data = default_data('labeled') - event_data['label'] = {'name': 'foobar'} - event_data['pull_request']['labels'].append({'name': 'foobar'}) - - returncode, requests = run(event_data) - - assert_neutral(returncode) - assert len(requests) == 0 - - -def test_add_active_label(): - event_data = default_data('labeled') - event_data['label'] = {'name': 'pull-request-has-preview'} - event_data['pull_request']['labels'].append( - {'name': 'pull-request-has-preview'} - ) - responses = { - to_key(Requests.get_ref_open): (404, '{}'), - to_key(Requests.get_ref_labeled): (404, '{}') - } - - returncode, requests = run(event_data, responses) - - assert_success(returncode) - assert Requests.create_ref_open not in requests - assert Requests.create_ref_labeled in requests - - -def test_add_active_label_to_closed(): - event_data = default_data('labeled') - event_data['pull_request']['closed_at'] = '2019-07-05' - event_data['label'] = {'name': 'pull-request-has-preview'} - event_data['pull_request']['labels'].append( - {'name': 'pull-request-has-preview'} - ) - responses = { - to_key(Requests.get_ref_open): (404, '{}'), - to_key(Requests.get_ref_labeled): (404, '{}') - } - - returncode, requests = run(event_data, responses) - - assert_success(returncode) - assert Requests.create_ref_open not in requests - assert Requests.create_ref_labeled in requests - - -def test_remove_unrelated_label(): - event_data = default_data('unlabeled') - event_data['label'] = {'name': 'foobar'} - - returncode, requests = run(event_data) - - assert_neutral(returncode) - assert len(requests) == 0 - - -def test_remove_active_label(): - event_data = default_data('unlabeled') - event_data['label'] = {'name': 'pull-request-has-preview'} - responses = { - to_key(Requests.delete_ref_labeled): (204, '') - } - - returncode, requests = run(event_data, responses) - - assert_success(returncode) - assert Requests.delete_ref_labeled in requests - assert Requests.delete_ref_open not in requests - - -def test_remove_active_label_from_closed(): - event_data = default_data('unlabeled') - event_data['pull_request']['closed_at'] = '2019-07-05' - event_data['label'] = {'name': 'pull-request-has-preview'} - responses = { - to_key(Requests.delete_ref_labeled): (204, '') - } - - returncode, requests = run(event_data, responses) - - assert_success(returncode) - assert Requests.delete_ref_labeled in requests - assert Requests.delete_ref_open not in requests - - -def test_synchronize_without_label(): - event_data = default_data('synchronize') - - returncode, requests = run(event_data) - - assert_neutral(returncode) - assert len(requests) == 0 - - -def test_synchronize_with_label(): - event_data = default_data('synchronize') - event_data['pull_request']['labels'].append( - {'name': 'pull-request-has-preview'} - ) - - returncode, requests = run(event_data) - - assert_success(returncode) - assert Requests.update_ref_open in requests - assert Requests.update_ref_labeled in requests - - -def test_unrecognized_action(): - event_data = default_data('assigned') - - returncode, requests = run(event_data) - - assert_neutral(returncode) - assert len(requests) == 0 diff --git a/tests/wpt/web-platform-tests/tools/ci/update_pr_preview.py b/tests/wpt/web-platform-tests/tools/ci/update_pr_preview.py deleted file mode 100644 index eca4a30678c..00000000000 --- a/tests/wpt/web-platform-tests/tools/ci/update_pr_preview.py +++ /dev/null @@ -1,255 +0,0 @@ -# wpt-submissions.live is a public deployment of WPT, maintained in an external -# repository. It automatically fetches and deploys all refs in the WPT -# repository which match a certain pattern. This behavior is intended to be -# used for pull requests so that reviewers can preview changes without running -# the WPT server locally. -# -# This script facilitates the service by maintaining the git refs. It creates -# and updates refs in response to GitHub events. It does this automatically for -# pull requests from GitHub users who have "collaborator" access permissions to -# the WPT repository. It also does this for any pull requests which bear the -# `pull-request-has-preview` label. Collaborators can add or remove this label -# to enable or disable the preview for submissions from non-collaborators. -# -# Although the script relies on a secret access token, it is *not* limited to -# use for pull requests from trusted collaborators due to the way GitHub -# Actions are executed: -# -# > # Pull request events for forked repositories -# > -# > [...] -# > -# > ## Pull request with base and head branches in different repositories -# > -# > The base repository receives a `pull_request` event where the SHA is the -# > latest commit of base branch and ref is the base branch. -# -# https://developer.github.com/actions/managing-workflows/workflow-configuration-options/#pull-request-events-for-forked-repositories -import json -import logging -import os -import sys - -import requests - -active_label = 'pull-request-has-preview' - -logging.basicConfig(level=logging.INFO) -logger = logging.getLogger(__name__) - - -class Status(object): - SUCCESS = 0 - FAIL = 1 - NEUTRAL = 0 - - -def request(url, method_name, data=None, json_data=None, ignore_body=False): - github_token = os.environ.get('GITHUB_TOKEN') - - kwargs = { - 'headers': { - 'Authorization': 'token {}'.format(github_token), - 'Accept': 'application/vnd.github.machine-man-preview+json' - } - } - method = getattr(requests, method_name) - - logger.info('Issuing request: {} {}'.format(method_name.upper(), url)) - if json_data is not None or data is not None: - kwargs['json'] = json_data - kwargs['data'] = data - - resp = method(url, **kwargs) - - resp.raise_for_status() - - if not ignore_body: - return resp.json() - - -def resource_exists(url): - try: - request(url, 'get', ignore_body=True) - except requests.HTTPError as exception: - if exception.response.status_code == 404: - return False - raise - - return True - - -class GitHub(object): - def __init__(self, api_root, owner, repo): - self.api_root = api_root - self.owner = owner - self.repo = repo - - def is_collaborator(self, login): - return resource_exists( - '{}/repos/{}/{}/collaborators/{}'.format( - self.api_root, self.owner, self.repo, login - ) - ) - - def ref_exists(self, ref): - return resource_exists( - '{}/repos/{}/{}/git/refs/{}'.format( - self.api_root, self.owner, self.repo, ref - ) - ) - - def create_ref(self, ref, sha): - data = { - 'ref': 'refs/{}'.format(ref), - 'sha': sha - } - url = '{}/repos/{}/{}/git/refs'.format( - self.api_root, self.owner, self.repo - ) - - logger.info('Creating ref "{}" as {}'.format(ref, sha)) - - request(url, 'post', json_data=data) - - def update_ref(self, ref, sha): - data = { - 'force': True, - 'sha': sha - } - url = '{}/repos/{}/{}/git/refs/{}'.format( - self.api_root, self.owner, self.repo, ref - ) - - logger.info('Updating ref "{}" as {}'.format(ref, sha)) - - request(url, 'patch', json_data=data) - - def delete_ref(self, ref): - url = '{}/repos/{}/{}/git/refs/{}'.format( - self.api_root, self.owner, self.repo, ref - ) - - logger.info('Deleting ref "{}"'.format(ref)) - - try: - request(url, 'delete', ignore_body=True) - except requests.HTTPError as exception: - if exception.response.status_code != 404: - raise - - logger.info( - 'Attempted to delete non-existent ref: {}'.format(ref) - ) - - def set_ref(self, ref, sha): - if self.ref_exists(ref): - self.update_ref(ref, sha) - else: - self.create_ref(ref, sha) - - def add_label(self, pr_number, label_name): - data = { - 'labels': [label_name] - } - url = '{}/repos/{}/{}/issues/{}/labels'.format( - self.api_root, self.owner, self.repo, pr_number - ) - - logger.info('Adding label') - - request(url, 'post', json_data=data) - - def remove_label(self, pr_number, label_name): - url = '{}/repos/{}/{}/issues/{}/labels/{}'.format( - self.api_root, self.owner, self.repo, pr_number, label_name - ) - - logger.info('Removing label') - - try: - request(url, 'delete') - except requests.HTTPError as exception: - if exception.response.status_code != 404: - raise - - logger.info( - 'Attempted to remove non-existent label: {}'.format(label_name) - ) - - -def main(api_root): - with open(os.environ['GITHUB_EVENT_PATH']) as handle: - event = json.load(handle) - logger.info(json.dumps(event, indent=2)) - - if 'pull_request' not in event: - logger.info('Unexpected event data') - return Status.FAIL - - owner, repo = os.environ['GITHUB_REPOSITORY'].split('/', 1) - github = GitHub(api_root, owner, repo) - action = event['action'] - pr_number = event['pull_request']['number'] - ref_open = 'prs-open/gh-{}'.format(pr_number) - ref_labeled = 'prs-labeled-for-preview/gh-{}'.format(pr_number) - sha = event['pull_request']['head']['sha'] - login = event['pull_request']['user']['login'] - has_label = any([ - label['name'] == active_label - for label in event['pull_request']['labels'] - ]) - target_label = event.get('label', {}).get('name') - - if action == 'closed': - if has_label: - github.remove_label(pr_number, active_label) - - # Removing a label from a GitHub Action will not trigger another - # Workflow, so the corresponding ref must be deleted while processing - # the "closed" action. - # - # > An action can't trigger other workflows. For example, a push, - # > deployment, or any task performed within an action with the - # > provided `GITHUB_TOKEN` will not trigger a workflow listening on - # > push, deploy, or any other supported action triggers. - # - # https://developer.github.com/actions/managing-workflows/workflow-configuration-options/ - github.delete_ref(ref_open) - - return Status.SUCCESS - elif action in ('opened', 'reopened') and has_label: - github.set_ref(ref_open, sha) - github.set_ref(ref_labeled, sha) - elif action in ('opened', 'reopened') and github.is_collaborator(login): - github.add_label(pr_number, active_label) - - # Removing a label from a GitHub Action will not trigger another - # Workflow, so the corresponding ref must be created while processing - # the "opened" and "reopened" actions. - # - # > An action can't trigger other workflows. For example, a push, - # > deployment, or any task performed within an action with the - # > provided `GITHUB_TOKEN` will not trigger a workflow listening on - # > push, deploy, or any other supported action triggers. - # - # https://developer.github.com/actions/managing-workflows/workflow-configuration-options/ - github.set_ref(ref_open, sha) - github.set_ref(ref_labeled, sha) - elif action == 'labeled' and target_label == active_label: - github.set_ref(ref_labeled, sha) - elif action == 'unlabeled' and target_label == active_label: - github.delete_ref(ref_labeled) - elif action == 'synchronize' and has_label: - github.set_ref(ref_open, sha) - github.set_ref(ref_labeled, sha) - else: - return Status.NEUTRAL - - return Status.SUCCESS - - -if __name__ == '__main__': - code = main(sys.argv[1]) - assert isinstance(code, int) - sys.exit(code) diff --git a/tests/wpt/web-platform-tests/tools/docker/Dockerfile.webkitgtk b/tests/wpt/web-platform-tests/tools/docker/Dockerfile.webkitgtk new file mode 100644 index 00000000000..8d792b36a47 --- /dev/null +++ b/tests/wpt/web-platform-tests/tools/docker/Dockerfile.webkitgtk @@ -0,0 +1,87 @@ +# This image for WebKitGTK tests is based on Debian stable to ensure binary +# compatibility with ToT/trunk built-products from build.webkit.org bots. +# See https://github.com/web-platform-tests/wpt/pull/18595#issuecomment-537267080 +FROM debian:10 + +# No interactive frontend during docker build +ENV DEBIAN_FRONTEND=noninteractive \ + DEBCONF_NONINTERACTIVE_SEEN=true + +# Install general requirements not in the base image +RUN apt-get -qqy update \ + && apt-get -qqy install \ + bzip2 \ + ca-certificates \ + dbus-x11 \ + earlyoom \ + fluxbox \ + gdebi \ + git \ + locales \ + pulseaudio \ + python \ + python-pip \ + python-virtualenv \ + tzdata \ + sudo \ + unzip \ + wget \ + xvfb \ + git-core + +# Configure buster-wpt-webkit-updates repository +RUN apt-key adv --fetch-keys https://webkitgtk.org/debian/apt.key +RUN printf 'deb [arch=amd64] https://webkitgtk.org/debian buster-wpt-webkit-updates main' \ + > /etc/apt/sources.list.d/webkitgtk.list +RUN printf 'Package: *\nPin: origin webkitgtk.org\nPin-Priority: 1999' \ + > /etc/apt/preferences.d/99webkitgtk + +# Update and upgrade +RUN apt-get update \ + && apt-get -y upgrade + +# Install webkit packages from https://webkitgtk.org/debian +RUN apt-get install -y -t buster-wpt-webkit-updates webkit2gtk-driver + +# Set the timezone +ENV TZ "UTC" +RUN echo "${TZ}" > /etc/timezone \ + && dpkg-reconfigure --frontend noninteractive tzdata + +# Set the locale +RUN sed -i -e 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen \ + && dpkg-reconfigure --frontend noninteractive locales +ENV LANG en_US.UTF-8 +ENV LANGUAGE en_US:en +ENV LC_ALL en_US.UTF-8 + +RUN useradd test \ + --shell /bin/bash \ + --create-home \ + && usermod -a -G sudo test \ + && echo 'ALL ALL = (ALL) NOPASSWD: ALL' >> /etc/sudoers \ + && echo 'test:secret' | chpasswd + +ENV SCREEN_WIDTH 1280 +ENV SCREEN_HEIGHT 1024 +ENV SCREEN_DEPTH 24 +ENV DISPLAY :99.0 + +USER test + +WORKDIR /home/test + +# Remove information on how to use sudo on login +RUN sudo echo "" + +RUN mkdir -p /home/test/artifacts +RUN mkdir -p /home/test/bin + +ENV PATH="/home/test/bin:/home/test/.local/bin:${PATH}" + +WORKDIR /home/test/ + +COPY .bashrc /home/test/.bashrc + +COPY start.sh /home/test/start.sh +COPY retry.py /home/test/bin/retry diff --git a/tests/wpt/web-platform-tests/tools/docker/README.md b/tests/wpt/web-platform-tests/tools/docker/README.md new file mode 100644 index 00000000000..c444e4a957f --- /dev/null +++ b/tests/wpt/web-platform-tests/tools/docker/README.md @@ -0,0 +1,19 @@ +This docker images is used for testing Chrome, Firefox and running other tasks +on Taskcluster. When any of the files in this directory change, the images must +be updated as well. To do this, assuming you have docker installed: + +In this directory, run +```sh +docker build -t <tag> . +docker push <tag> +``` + +Then update the `image` specified in the project's .taskcluster.yml file. + +To update the image used for WebKitGTK: +```sh +docker build -f Dockerfile.webkitgtk -t <tag> . +docker push <tag> +``` + +(This image is not yet used in .taskcluster.yml.) diff --git a/tests/wpt/web-platform-tests/tools/docker/start.sh b/tests/wpt/web-platform-tests/tools/docker/start.sh index 2e5f69d4071..3427670cc9f 100755 --- a/tests/wpt/web-platform-tests/tools/docker/start.sh +++ b/tests/wpt/web-platform-tests/tools/docker/start.sh @@ -1,15 +1,5 @@ #!/bin/bash -# This script is embedded in the docker image, and so the image must be updated when changes -# to the script are made. To do this, assuming you have docker installed: -# In tools/docker/ : -# docker build . -# docker ps # and look for the id of the image you just built -# docker tag <image> <tag> -# docker push <tag> -# Update the `image` specified in the project's .taskcluster.yml file - - set -ex REMOTE=${1:-https://github.com/web-platform-tests/wpt} diff --git a/tests/wpt/web-platform-tests/tools/tox.ini b/tests/wpt/web-platform-tests/tools/tox.ini index 52e749e4bdc..63fb8ed9832 100644 --- a/tests/wpt/web-platform-tests/tools/tox.ini +++ b/tests/wpt/web-platform-tests/tools/tox.ini @@ -8,8 +8,6 @@ deps = pytest-cov mock hypothesis - # `requests` is required by `update_pr_preview.py` - requests commands = pytest {posargs} diff --git a/tests/wpt/web-platform-tests/web-animations/interfaces/Document/getAnimations.html b/tests/wpt/web-platform-tests/web-animations/interfaces/Document/getAnimations.html index f5df980cc05..f6a6c3edd44 100644 --- a/tests/wpt/web-platform-tests/web-animations/interfaces/Document/getAnimations.html +++ b/tests/wpt/web-platform-tests/web-animations/interfaces/Document/getAnimations.html @@ -68,11 +68,12 @@ promise_test(async t => { const iframe = document.createElement('iframe'); const eventWatcher = new EventWatcher(t, iframe, ['load']); + const event_promise = eventWatcher.wait_for('load'); document.body.appendChild(iframe); t.add_cleanup(() => { document.body.removeChild(iframe); }); - await eventWatcher.wait_for('load'); + await event_promise; const div = createDiv(t, iframe.contentDocument) const effect = new KeyframeEffect(div, null, 100 * MS_PER_SEC); diff --git a/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-createDataChannel.html b/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-createDataChannel.html index 8a13155358d..58e757bce07 100644 --- a/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-createDataChannel.html +++ b/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-createDataChannel.html @@ -7,6 +7,10 @@ <script> 'use strict'; +const stopTracks = (...streams) => { + streams.forEach(stream => stream.getTracks().forEach(track => track.stop())); +}; + // Test is based on the following revision: // https://rawgit.com/w3c/webrtc-pc/1cc5bfc3ff18741033d804c4a71f7891242fb5b3/webrtc.html @@ -697,6 +701,53 @@ promise_test(async t => { }, 'New data channel should be in the connecting state after creation (after connection ' + 'establishment)'); +promise_test(async t => { + const pc1 = new RTCPeerConnection(); + const pc2 = new RTCPeerConnection(); + t.add_cleanup(() => pc1.close()); + t.add_cleanup(() => pc2.close()); + const stream = await getNoiseStream({audio: true, video: true}); + t.add_cleanup(() => stopTracks(stream)); + const audio = stream.getAudioTracks()[0]; + const video = stream.getVideoTracks()[0]; + pc1.addTrack(audio, stream); + pc1.addTrack(video, stream); + await createDataChannelPair(pc1, pc2); +}, 'addTrack, then createDataChannel, should negotiate properly'); + +promise_test(async t => { + const pc1 = new RTCPeerConnection({bundlePolicy: "max-bundle"}); + const pc2 = new RTCPeerConnection(); + t.add_cleanup(() => pc1.close()); + t.add_cleanup(() => pc2.close()); + const stream = await getNoiseStream({audio: true, video: true}); + t.add_cleanup(() => stopTracks(stream)); + const audio = stream.getAudioTracks()[0]; + const video = stream.getVideoTracks()[0]; + pc1.addTrack(audio, stream); + pc1.addTrack(video, stream); + await createDataChannelPair(pc1, pc2); +}, 'addTrack, then createDataChannel, should negotiate properly when max-bundle is used'); + +promise_test(async t => { + const pc1 = new RTCPeerConnection({bundlePolicy: "max-bundle"}); + const pc2 = new RTCPeerConnection(); + t.add_cleanup(() => pc1.close()); + t.add_cleanup(() => pc2.close()); + const stream = await getNoiseStream({audio: true, video: true}); + t.add_cleanup(() => stopTracks(stream)); + const audio = stream.getAudioTracks()[0]; + const video = stream.getVideoTracks()[0]; + pc1.addTrack(audio, stream); + pc1.addTrack(video, stream); + const [dc1, dc2] = await createDataChannelPair(pc1, pc2); + + pc2.getTransceivers()[0].stop(); + const dc1Closed = new Promise(r => dc1.onclose = r); + await doSignalingHandshake(pc1, pc2); + await dc1Closed; +}, 'Stopping the bundle-tag when there is a DataChannel in the bundle should kill the DataChannel'); + /* Untestable 6.1. createDataChannel diff --git a/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-iceConnectionState.https.html b/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-iceConnectionState.https.html index 8e853e4acbc..9dd364ed327 100644 --- a/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-iceConnectionState.https.html +++ b/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-iceConnectionState.https.html @@ -360,7 +360,14 @@ promise_test(async t => { delete pc1.candidateBuffer; await listenToIceConnected(pc1); await listenToIceConnected(pc2); - assert_array_equals(pc1.iceStates, ['new', 'checking', 'connected']); + // While we're waiting for pc2, pc1 may or may not have transitioned + // to "completed" state, so allow for both cases. + if (pc1.iceStates.length == 3) { + assert_array_equals(pc1.iceStates, ['new', 'checking', 'connected']); + } else { + assert_array_equals(pc1.iceStates, ['new', 'checking', 'connected', + 'completed']); + } assert_array_equals(pc2.iceStates, ['new', 'checking', 'connected']); }, 'Responder ICE connection state behaves as expected'); diff --git a/tests/wpt/web-platform-tests/websockets/stream-tentative/abort.any.js b/tests/wpt/web-platform-tests/websockets/stream-tentative/abort.any.js new file mode 100644 index 00000000000..2392188eaff --- /dev/null +++ b/tests/wpt/web-platform-tests/websockets/stream-tentative/abort.any.js @@ -0,0 +1,46 @@ +// META: script=../websocket.sub.js +// META: script=resources/url-constants.js +// META: script=/common/utils.js +// META: global=window,worker + +promise_test(async t => { + const controller = new AbortController(); + controller.abort(); + const key = token(); + const wsUrl = new URL( + `/fetch/api/resources/stash-put.py?key=${key}&value=connected`, + location.href); + wsUrl.protocol = wsUrl.protocol.replace('http', 'ws'); + // We intentionally use the port for the HTTP server, not the WebSocket + // server, because we don't expect the connection to be performed. + const wss = new WebSocketStream(wsUrl, { signal: controller.signal }); + await promise_rejects(t, 'AbortError', wss.connection, + 'connection should reject'); + await promise_rejects(t, 'AbortError', wss.closed, 'closed should reject'); + // An incorrect implementation could pass this test due a race condition, + // but it is hard to completely eliminate the possibility. + const response = await fetch(`/fetch/api/resources/stash-take.py?key=${key}`); + assert_equals(await response.text(), 'null', 'response should be null'); +}, 'abort before constructing should prevent connection'); + +promise_test(async t => { + const controller = new AbortController(); + const wss = new WebSocketStream(`${BASEURL}/handshake_sleep_2`, + { signal: controller.signal }); + // Give the connection a chance to start. + await new Promise(resolve => t.step_timeout(resolve, 0)); + controller.abort(); + await promise_rejects(t, 'AbortError', wss.connection, + 'connection should reject'); + await promise_rejects(t, 'AbortError', wss.closed, 'closed should reject'); +}, 'abort during handshake should work'); + +promise_test(async t => { + const controller = new AbortController(); + const wss = new WebSocketStream(ECHOURL, { signal: controller.signal }); + const { readable, writable } = await wss.connection; + controller.abort(); + writable.getWriter().write('connected'); + const { value } = await readable.getReader().read(); + assert_equals(value, 'connected', 'value should match'); +}, 'abort after connect should do nothing'); diff --git a/tests/wpt/web-platform-tests/webusb/usbDevice.https.any.js b/tests/wpt/web-platform-tests/webusb/usbDevice.https.any.js index 03dbe8f4413..b41687079e5 100644 --- a/tests/wpt/web-platform-tests/webusb/usbDevice.https.any.js +++ b/tests/wpt/web-platform-tests/webusb/usbDevice.https.any.js @@ -22,6 +22,19 @@ function assertRejectsWithNotConfiguredError(promise) { 'The device must have a configuration selected.'); } +function assertRejectsWithNotClaimedError(promise) { + return assertRejectsWithError( + promise, 'InvalidStateError', + 'The specified interface has not been claimed.'); +} + +function assertRejectsWithEndpointNotFoundError(promise) { + return assertRejectsWithError( + promise, 'NotFoundError', + 'The specified endpoint is not part of a claimed and selected ' + + 'alternate interface.'); +} + function assertRejectsWithDeviceStateChangeInProgressError(promise) { return assertRejectsWithError( promise, 'InvalidStateError', @@ -236,20 +249,6 @@ usb_test(() => { assertRejectsWithNotConfiguredError(device.claimInterface(0)), assertRejectsWithNotConfiguredError(device.releaseInterface(0)), assertRejectsWithNotConfiguredError(device.selectAlternateInterface(0, 1)), - assertRejectsWithNotConfiguredError(device.controlTransferIn({ - requestType: 'vendor', - recipient: 'device', - request: 0x42, - value: 0x1234, - index: 0x5678 - }, 7)), - assertRejectsWithNotConfiguredError(device.controlTransferOut({ - requestType: 'vendor', - recipient: 'device', - request: 0x42, - value: 0x1234, - index: 0x5678 - }, new Uint8Array([1, 2, 3, 4, 5, 6, 7, 8]))), assertRejectsWithNotConfiguredError(device.clearHalt('in', 1)), assertRejectsWithNotConfiguredError(device.transferIn(1, 8)), assertRejectsWithNotConfiguredError( @@ -484,6 +483,79 @@ usb_test(async () => { await device.close(); }, 'can issue all types of IN control transfers'); +usb_test(async () => { + let { device } = await getFakeDevice(); + let usbRequestTypes = ['standard', 'class', 'vendor']; + let usbRecipients = ['device', 'other']; + await device.open(); + await Promise.all(usbRequestTypes.flatMap(requestType => { + return usbRecipients.map(async recipient => { + let result = await device.controlTransferIn({ + requestType: requestType, + recipient: recipient, + request: 0x42, + value: 0x1234, + index: 0x5678 + }, 7); + assert_true(result instanceof USBInTransferResult); + assert_equals(result.status, 'ok'); + assert_equals(result.data.byteLength, 7); + assert_equals(result.data.getUint16(0), 0x07); + assert_equals(result.data.getUint8(2), 0x42); + assert_equals(result.data.getUint16(3), 0x1234); + assert_equals(result.data.getUint16(5), 0x5678); + }); + })); + await device.close(); +}, 'device-scope IN control transfers don\'t require configuration'); + +usb_test(async () => { + let { device } = await getFakeDevice(); + let usbRequestTypes = ['standard', 'class', 'vendor']; + let usbRecipients = ['interface', 'endpoint']; + await device.open(); + await Promise.all(usbRequestTypes.flatMap(requestType => { + return usbRecipients.map(recipient => { + let index = recipient === 'interface' ? 0x5600 : 0x5681; + return assertRejectsWithNotConfiguredError(device.controlTransferIn({ + requestType: requestType, + recipient: recipient, + request: 0x42, + value: 0x1234, + index: index + }, 7)); + }); + })); + await device.close(); +}, 'interface-scope IN control transfers require configuration'); + +usb_test(async () => { + let { device } = await getFakeDevice(); + let usbRequestTypes = ['standard', 'class', 'vendor']; + let usbRecipients = ['interface', 'endpoint']; + await device.open(); + await device.selectConfiguration(1); + await Promise.all(usbRequestTypes.flatMap(requestType => { + return [ + assertRejectsWithNotClaimedError(device.controlTransferIn({ + requestType: requestType, + recipient: 'interface', + request: 0x42, + value: 0x1234, + index: 0x5600 + }, 7)), + assertRejectsWithNotFoundError(device.controlTransferIn({ + requestType: requestType, + recipient: 'endpoint', + request: 0x42, + value: 0x1234, + index: 0x5681 + }, 7)) + ]; + })); + await device.close(); +}, 'interface-scope IN control transfers require claiming the interface'); + usb_test(() => { return getFakeDevice().then(({ device, fakeDevice }) => { return device.open() @@ -533,6 +605,93 @@ usb_test(async () => { await device.close(); }, 'can issue all types of OUT control transfers'); +usb_test(async () => { + let { device } = await getFakeDevice(); + let usbRequestTypes = ['standard', 'class', 'vendor']; + let usbRecipients = ['device', 'other']; + let dataArray = new Uint8Array([1, 2, 3, 4, 5, 6, 7, 8]); + let dataTypes = [dataArray, dataArray.buffer]; + await device.open(); + await Promise.all(usbRequestTypes.flatMap(requestType => { + return usbRecipients.flatMap(recipient => { + let transferParams = { + requestType: requestType, + recipient: recipient, + request: 0x42, + value: 0x1234, + index: 0x5678 + }; + return dataTypes.map(async data => { + let result = await device.controlTransferOut(transferParams, data); + assert_true(result instanceof USBOutTransferResult); + assert_equals(result.status, 'ok'); + assert_equals(result.bytesWritten, 8); + }).push((async () => { + let result = await device.controlTransferOut(transferParams); + assert_true(result instanceof USBOutTransferResult); + assert_equals(result.status, 'ok'); + })()); + }); + })); + await device.close(); +}, 'device-scope OUT control transfers don\'t require configuration'); + +usb_test(async () => { + let { device } = await getFakeDevice(); + let usbRequestTypes = ['standard', 'class', 'vendor']; + let usbRecipients = ['interface', 'endpoint']; + let dataArray = new Uint8Array([1, 2, 3, 4, 5, 6, 7, 8]); + let dataTypes = [dataArray, dataArray.buffer]; + await device.open(); + await Promise.all(usbRequestTypes.flatMap(requestType => { + return usbRecipients.flatMap(recipient => { + let index = recipient === 'interface' ? 0x5600 : 0x5681; + let transferParams = { + requestType: requestType, + recipient: recipient, + request: 0x42, + value: 0x1234, + index: index + }; + return dataTypes.map(data => { + return assertRejectsWithNotConfiguredError( + device.controlTransferOut(transferParams, data)); + }).push(assertRejectsWithNotConfiguredError( + device.controlTransferOut(transferParams))); + }); + })); + await device.close(); +}, 'interface-scope OUT control transfers require configuration'); + +usb_test(async () => { + let { device } = await getFakeDevice(); + let usbRequestTypes = ['standard', 'class', 'vendor']; + let usbRecipients = ['interface', 'endpoint']; + let dataArray = new Uint8Array([1, 2, 3, 4, 5, 6, 7, 8]); + let dataTypes = [dataArray, dataArray.buffer]; + await device.open(); + await device.selectConfiguration(1); + await Promise.all(usbRequestTypes.flatMap(requestType => { + return usbRecipients.flatMap(recipient => { + let index = recipient === 'interface' ? 0x5600 : 0x5681; + let assertion = recipient === 'interface' + ? assertRejectsWithNotClaimedError + : assertRejectsWithEndpointNotFoundError; + let transferParams = { + requestType: requestType, + recipient: recipient, + request: 0x42, + value: 0x1234, + index: index + }; + return dataTypes.map(data => { + return assertion(device.controlTransferOut(transferParams, data)); + }).push(assertion(device.controlTransferOut(transferParams))); + }); + })); + await device.close(); +}, 'interface-scope OUT control transfers an interface claim'); + usb_test(() => { return getFakeDevice().then(({ device, fakeDevice }) => { return device.open() @@ -738,23 +897,17 @@ usb_test(() => { let data = new DataView(new ArrayBuffer(1024)); for (let i = 0; i < 1024; ++i) data.setUint8(i, i & 0xff); - const notFoundMessage = 'The specified endpoint is not part of a claimed ' + - 'and selected alternate interface.'; const rangeError = 'The specified endpoint number is out of range.'; return device.open() .then(() => device.selectConfiguration(1)) .then(() => device.claimInterface(0)) .then(() => Promise.all([ - assertRejectsWithError(device.transferIn(2, 8), - 'NotFoundError', notFoundMessage), // Unclaimed - assertRejectsWithError(device.transferIn(3, 8), 'NotFoundError', - notFoundMessage), // Non-existent + assertRejectsWithEndpointNotFoundError(device.transferIn(2, 8)), // Unclaimed + assertRejectsWithEndpointNotFoundError(device.transferIn(3, 8)), // Non-existent assertRejectsWithError( device.transferIn(16, 8), 'IndexSizeError', rangeError), - assertRejectsWithError(device.transferOut(2, data), - 'NotFoundError', notFoundMessage), // Unclaimed - assertRejectsWithError(device.transferOut(3, data), 'NotFoundError', - notFoundMessage), // Non-existent + assertRejectsWithEndpointNotFoundError(device.transferOut(2, data)), // Unclaimed + assertRejectsWithEndpointNotFoundError(device.transferOut(3, data)), // Non-existent assertRejectsWithError( device.transferOut(16, data), 'IndexSizeError', rangeError), ])); diff --git a/tests/wpt/web-platform-tests/webxr/getViewerPose_emulatedPosition.https.html b/tests/wpt/web-platform-tests/webxr/getViewerPose_emulatedPosition.https.html new file mode 100644 index 00000000000..201a9b72208 --- /dev/null +++ b/tests/wpt/web-platform-tests/webxr/getViewerPose_emulatedPosition.https.html @@ -0,0 +1,51 @@ +<!DOCTYPE html> +<body> + <script src=/resources/testharness.js></script> + <script src=/resources/testharnessreport.js></script> + <script src="resources/webxr_util.js"></script> + <script src="resources/webxr_test_constants.js"></script> + <canvas></canvas> + + <script> + + let testName = "XRFrame getViewerPose has emulatedPosition set properly."; + + const poseTransform = { + position: [1, 1, 1], + orientation: [0.5, 0.5, 0.5, 0.5] + }; + + let testFunction = function(session, fakeDeviceController, t) { + return session.requestReferenceSpace('local') + .then((referenceSpace) => new Promise((resolve, reject) => { + function CheckPositionNotEmulated(time, vrFrame){ + t.step(() => { + let pose = vrFrame.getViewerPose(referenceSpace); + assert_not_equals(pose, null); + assert_equals(pose.emulatedPosition, false); + fakeDeviceController.setViewerOrigin(poseTransform, true); + }); + + session.requestAnimationFrame(CheckPositionEmulated); + } + + function CheckPositionEmulated(time, vrFrame) { + t.step(() => { + let pose = vrFrame.getViewerPose(referenceSpace); + assert_not_equals(pose, null); + assert_equals(pose.emulatedPosition, true); + }); + + // Finished. + resolve(); + } + + session.requestAnimationFrame(CheckPositionNotEmulated); + })); + }; + + xr_session_promise_test(testName, testFunction, + TRACKED_IMMERSIVE_DEVICE, 'immersive-vr'); + + </script> +</body> 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 935f49a1fc9..85821d4d3d5 100644 --- a/tests/wpt/web-platform-tests/webxr/resources/webxr_util.js +++ b/tests/wpt/web-platform-tests/webxr/resources/webxr_util.js @@ -16,6 +16,15 @@ function xr_promise_test(name, func, properties) { await loadChromiumResources; } + // Ensure that any devices are disconnected when done. If this were done in + // a .then() for the success case, a test that expected failure would + // already be marked done at the time that runs and the shutdown would + // interfere with the next test. + t.add_cleanup(async () => { + // Ensure system state is cleaned up. + await navigator.xr.test.disconnectAllDevices(); + }); + return func(t); }, name, properties); } @@ -44,19 +53,16 @@ function xr_session_promise_test( xr_promise_test( name, (t) => { - // Ensure that any pending sessions are ended and devices are - // disconnected when done. This needs to use a cleanup function to - // ensure proper sequencing. If this were done in a .then() for the - // success case, a test that expected failure would already be marked - // done at the time that runs, and the shutdown would interfere with - // the next test which may have started already. + // Ensure that any pending sessions are ended when done. This needs to + // use a cleanup function to ensure proper sequencing. If this were + // done in a .then() for the success case, a test that expected + // failure would already be marked done at the time that runs, and the + // shutdown would interfere with the next test which may have started. t.add_cleanup(async () => { - // If a session was created, end it. - if (testSession) { - await testSession.end().catch(() => {}); - } - // Cleanup system state. - await navigator.xr.test.disconnectAllDevices(); + // If a session was created, end it. + if (testSession) { + await testSession.end().catch(() => {}); + } }); return navigator.xr.test.simulateDeviceConnection(fakeDeviceInit) diff --git a/tests/wpt/web-platform-tests/webxr/webxr-supported-by-feature-policy.html b/tests/wpt/web-platform-tests/webxr/webxr-supported-by-feature-policy.html index d1f8252977f..2843849a34a 100644 --- a/tests/wpt/web-platform-tests/webxr/webxr-supported-by-feature-policy.html +++ b/tests/wpt/web-platform-tests/webxr/webxr-supported-by-feature-policy.html @@ -5,6 +5,6 @@ <script src="/resources/testharnessreport.js"></script> <script> test(() => { - assert_in_array('xr', document.featurePolicy.features()); -}, 'document.featurePolicy.features should advertise xr.'); + assert_in_array('xr-spatial-tracking', document.featurePolicy.features()); +}, 'document.featurePolicy.features should advertise xr-spatial-tracking.'); </script> diff --git a/tests/wpt/web-platform-tests/webxr/webxr_feature_policy.https.html b/tests/wpt/web-platform-tests/webxr/webxr_feature_policy.https.html new file mode 100644 index 00000000000..ea1bf82adb3 --- /dev/null +++ b/tests/wpt/web-platform-tests/webxr/webxr_feature_policy.https.html @@ -0,0 +1,81 @@ +<!DOCTYPE html> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/webxr_util.js"></script> +<script src="resources/webxr_test_constants.js"></script> +<canvas /> + +<script> +xr_promise_test( +"Validate isSessionSupported behavior without xr-spatial-tracking policy", +(t) => { + // Inline should never reject. + return navigator.xr.isSessionSupported("inline").then((supported) => { + t.step(() => { + assert_true(supported, + "inline should always be supported, even without feature policy"); + }); + + // It shouldn't matter that there's no device connected, the SecurityError + // should reject first. + return promise_rejects(t, "SecurityError", + navigator.xr.isSessionSupported("immersive-vr"), + "Immersive isSessionSupported should reject"); + }); +}); + +xr_promise_test( +"Validate requestSession behavior without xr-spatial-tracking policy", +(t) => { + return navigator.xr.test.simulateDeviceConnection(TRACKED_IMMERSIVE_DEVICE) + .then(() => { + return new Promise((resolve, reject) => { + navigator.xr.test.simulateUserActivation(() => { + + // Technically the first "requestSession" doesn't need either the device + // or the activation, but this makes the test code a little cleaner since + // the others do, as lacking user activation or a valid backing device + // should also cause the session to reject. In order to guarantee that + // we're seeing the rejection we want, we eliminate those as possibilities. + resolve(Promise.all([ + navigator.xr.requestSession("inline").then(session => session.end()), + + promise_rejects(t, "NotSupportedError", + navigator.xr.requestSession("inline", { requiredFeatures: ["local"] }), + "Inline with features should reject without feature policy"), + + promise_rejects(t, "NotSupportedError", + navigator.xr.requestSession("immersive-vr"), + "Immersive-vr should reject without feature policy") + ])); + }); + }); + }); +}); + +xr_promise_test( +"Validate devicechange event behavior without xr-spatial-tracking policy", +(t) => { + navigator.xr.addEventListener("devicechange", () => { + t.step(() => { assert_unreached("devicechange should not fire"); }); + }) + + // We need to yield a short time to ensure that any event registration has + // propagated, as this can take some time. + // Note that device connection is not guaranteed to fire per the spec, if it's + // the first connection, but disconnect definitely should. + t.step_timeout(() => { + navigator.xr.test.simulateDeviceConnection(TRACKED_IMMERSIVE_DEVICE) + .then((testDeviceController) => { + return testDeviceController.disconnect(); + }); + }, 100); + + // Wait an even longer time before finishing the test, so that if the event + // were to fire, it would've by now. + return new Promise((resolve) => { + t.step_timeout(() => { resolve(); }, 2000); + }); + +}); +</script> diff --git a/tests/wpt/web-platform-tests/webxr/webxr_feature_policy.https.html.headers b/tests/wpt/web-platform-tests/webxr/webxr_feature_policy.https.html.headers new file mode 100644 index 00000000000..2c758962332 --- /dev/null +++ b/tests/wpt/web-platform-tests/webxr/webxr_feature_policy.https.html.headers @@ -0,0 +1 @@ +Feature-Policy: xr-spatial-tracking 'none' diff --git a/tests/wpt/web-platform-tests/webxr/xrInputSource_emulatedPosition.https.html b/tests/wpt/web-platform-tests/webxr/xrInputSource_emulatedPosition.https.html new file mode 100644 index 00000000000..7b0fda45087 --- /dev/null +++ b/tests/wpt/web-platform-tests/webxr/xrInputSource_emulatedPosition.https.html @@ -0,0 +1,63 @@ +<!DOCTYPE html> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/webxr_util.js"></script> +<script src="resources/webxr_test_constants.js"></script> +<script src="resources/webxr_test_asserts.js"></script> +<canvas id="webgl-canvas"></canvas> + +<script> + +let testName = "Poses from XRInputSource.gripSpace have emulatedPosition set " + + "properly"; + +let fakeDeviceInitParams = TRACKED_IMMERSIVE_DEVICE; + +let testFunction = + (session, fakeDeviceController, t) => new Promise((resolve) => { + let input_source = fakeDeviceController.simulateInputSourceConnection({ + handedness: "right", + targetRayMode: "tracked-pointer", + pointerOrigin: IDENTITY_TRANSFORM, + gripOrigin: VALID_GRIP_TRANSFORM, + profiles: [] + }); + + // Must have a reference space to get input poses. eye-level doesn't apply + // any transforms to the given matrix. + session.requestReferenceSpace('local').then( (referenceSpace) => { + + function CheckPositionNotEmulated(time, xrFrame) { + let source = session.inputSources[0]; + let grip_pose = xrFrame.getPose(source.gripSpace, referenceSpace); + + t.step(() => { + assert_not_equals(grip_pose, null); + assert_equals(grip_pose.emulatedPosition, false); + }); + + input_source.setGripOrigin(VALID_GRIP_TRANSFORM, true); + session.requestAnimationFrame(CheckPositionEmulated); + } + + function CheckPositionEmulated(time, xrFrame) { + let source = session.inputSources[0]; + let grip_pose = xrFrame.getPose(source.gripSpace, referenceSpace); + + t.step(() => { + assert_not_equals(grip_pose, null); + assert_equals(grip_pose.emulatedPosition, true); + }); + + resolve(); + } + + // Can only request input poses in an xr frame. + session.requestAnimationFrame(CheckPositionNotEmulated); + }); + }); + +xr_session_promise_test( + testName, testFunction, fakeDeviceInitParams, 'immersive-vr'); + +</script> |