aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorbors-servo <lbergstrom+bors@mozilla.com>2019-10-04 01:26:34 -0400
committerGitHub <noreply@github.com>2019-10-04 01:26:34 -0400
commit1ab4dd135121291d838b0b764617f7aaa865cb90 (patch)
treea0cd579b111f1bb7e35d4dee7804e35cdf6bd85c
parentbbc94d256c65402afd435c17a3f6c6aaf021342f (diff)
parent555167ffdb0067e0b2491a255e0ea7d61f0ad7a8 (diff)
downloadservo-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 -->
-rw-r--r--tests/wpt/metadata/FileAPI/url/url-in-tags-revoke.window.js.ini2
-rw-r--r--tests/wpt/metadata/MANIFEST.json785
-rw-r--r--tests/wpt/metadata/css/CSS2/positioning/abspos-block-level-001.html.ini2
-rw-r--r--tests/wpt/metadata/css/CSS2/positioning/toogle-abspos-on-relpos-inline-child.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-backgrounds/animations/background-position-x-interpolation.html.ini4
-rw-r--r--tests/wpt/metadata/css/css-backgrounds/animations/background-position-y-interpolation.html.ini4
-rw-r--r--tests/wpt/metadata/css/css-backgrounds/animations/box-shadow-interpolation.html.ini4
-rw-r--r--tests/wpt/metadata/css/css-text/i18n/css3-text-line-break-baspglwj-094.html.ini5
-rw-r--r--tests/wpt/metadata/css/css-text/shaping/shaping-024.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-text/shaping/shaping-025.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-text/white-space/trailing-space-position-001.html.ini7
-rw-r--r--tests/wpt/metadata/css/cssom-view/matchMedia-display-none-iframe.html.ini2
-rw-r--r--tests/wpt/metadata/css/cssom-view/table-with-border-client-width-height.html.ini4
-rw-r--r--tests/wpt/metadata/encoding/streams/backpressure.any.js.ini26
-rw-r--r--tests/wpt/metadata/fetch/content-type/response.window.js.ini10
-rw-r--r--tests/wpt/metadata/fetch/content-type/script.window.js.ini5
-rw-r--r--tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini6
-rw-r--r--tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_4.html.ini4
-rw-r--r--tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-top-left.html.ini19
-rw-r--r--tests/wpt/metadata/html/rendering/replaced-elements/attributes-for-embedded-content-and-images/img-aspect-ratio.html.ini (renamed from tests/wpt/metadata/html/rendering/replaced-elements/attributes-for-embedded-content-and-images/img-aspect-ratio.tentative.html.ini)2
-rw-r--r--tests/wpt/metadata/html/semantics/embedded-content/the-img-element/non-active-document.html.ini10
-rw-r--r--tests/wpt/metadata/html/semantics/scripting-1/the-script-element/json-module/invalid-content-type.html.ini20
-rw-r--r--tests/wpt/metadata/html/semantics/scripting-1/the-script-element/json-module/module.html.ini5
-rw-r--r--tests/wpt/metadata/html/semantics/scripting-1/the-script-element/json-module/non-object.any.js.ini19
-rw-r--r--tests/wpt/metadata/html/semantics/scripting-1/the-script-element/json-module/parse-error.html.ini5
-rw-r--r--tests/wpt/metadata/html/semantics/scripting-1/the-script-element/json-module/utf8.html.ini14
-rw-r--r--tests/wpt/metadata/html/semantics/scripting-1/the-script-element/json-module/valid-content-type.html.ini14
-rw-r--r--tests/wpt/metadata/html/semantics/scripting-1/the-script-element/script-onerror-insertion-point-2.html.ini2
-rw-r--r--tests/wpt/metadata/resource-timing/nested-context-navigations-iframe.html.ini2
-rw-r--r--tests/wpt/metadata/websockets/stream-tentative/abort.any.js.ini31
-rw-r--r--tests/wpt/metadata/webxr/getViewerPose_emulatedPosition.https.html.ini4
-rw-r--r--tests/wpt/metadata/webxr/webxr-supported-by-feature-policy.html.ini3
-rw-r--r--tests/wpt/metadata/webxr/webxr_feature_policy.https.html.ini8
-rw-r--r--tests/wpt/metadata/webxr/xrBoundedReferenceSpace_updates.https.html.ini2
-rw-r--r--tests/wpt/metadata/webxr/xrInputSource_emulatedPosition.https.html.ini4
-rw-r--r--tests/wpt/metadata/workers/constructors/Worker/Worker-constructor.html.ini2
-rw-r--r--tests/wpt/web-platform-tests/.github/META.yml1
-rw-r--r--tests/wpt/web-platform-tests/.github/workflows/build-publish-documentation-website.yml (renamed from tests/wpt/web-platform-tests/.github/workflows/push-build-publish-documentation-website.yml)5
-rw-r--r--tests/wpt/web-platform-tests/.github/workflows/pull_request.yml17
-rw-r--r--tests/wpt/web-platform-tests/animation-worklet/worklet-animation-with-scroll-timeline-and-display-none.https.html3
-rw-r--r--tests/wpt/web-platform-tests/animation-worklet/worklet-animation-with-scroll-timeline.https.html3
-rw-r--r--tests/wpt/web-platform-tests/compat/webkit-gradient-comma.html15
-rw-r--r--tests/wpt/web-platform-tests/compat/webkit-radial-gradient-radii.html10
-rw-r--r--tests/wpt/web-platform-tests/cookie-store/serviceworker_cookieStore_subscriptions_reset.sub.js24
-rw-r--r--tests/wpt/web-platform-tests/cookie-store/serviceworker_cookieStore_subscriptions_reset.tentative.https.html37
-rw-r--r--tests/wpt/web-platform-tests/css/CSS2/positioning/abspos-block-level-001-ref.html31
-rw-r--r--tests/wpt/web-platform-tests/css/CSS2/positioning/abspos-block-level-001.html40
-rw-r--r--tests/wpt/web-platform-tests/css/CSS2/positioning/toogle-abspos-on-relpos-inline-child.html17
-rw-r--r--tests/wpt/web-platform-tests/css/css-backgrounds/animations/background-position-x-interpolation.html78
-rw-r--r--tests/wpt/web-platform-tests/css/css-backgrounds/animations/background-position-y-interpolation.html78
-rw-r--r--tests/wpt/web-platform-tests/css/css-backgrounds/animations/box-shadow-interpolation.html171
-rw-r--r--tests/wpt/web-platform-tests/css/css-grid/grid-definition/grid-inline-support-grid-template-areas-001.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-grid/grid-definition/grid-inline-support-repeat-001.html4
-rw-r--r--tests/wpt/web-platform-tests/css/css-grid/grid-definition/grid-support-repeat-001.html4
-rw-r--r--tests/wpt/web-platform-tests/css/css-overflow/overflow-padding.html113
-rw-r--r--tests/wpt/web-platform-tests/css/css-position/position-absolute-replaced-minmax.html9
-rw-r--r--tests/wpt/web-platform-tests/css/css-scroll-anchoring/scroll-padding-affects-anchoring.html32
-rw-r--r--tests/wpt/web-platform-tests/css/css-tables/auto-layout-calc-width-001.html37
-rw-r--r--tests/wpt/web-platform-tests/css/css-tables/calc-percent-plus-0px-auto.html (renamed from tests/wpt/web-platform-tests/css/css-tables/calc-percent-plus-0px.html)5
-rw-r--r--tests/wpt/web-platform-tests/css/css-tables/calc-percent-plus-0px-fixed-ref.html10
-rw-r--r--tests/wpt/web-platform-tests/css/css-tables/calc-percent-plus-0px-fixed.html14
-rw-r--r--tests/wpt/web-platform-tests/css/css-tables/fixed-layout-calc-width-001.html1
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/hyphens/hyphens-out-of-flow-001.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/hyphens/reference/hyphens-out-of-flow-001-ref.html22
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/i18n/css3-text-line-break-baspglwj-083.html10
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/i18n/css3-text-line-break-baspglwj-094.html54
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/line-break/line-break-anywhere-002.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/overflow-wrap/overflow-wrap-cluster-001.html1
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/overflow-wrap/overflow-wrap-cluster-002.html3
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/overflow-wrap/reference/overflow-wrap-cluster-001-ref.html1
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/parsing/letter-spacing-computed.html5
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/shaping/reference/shaping-024-ref.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/shaping/reference/shaping-025-ref.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/text-indent/text-indent-percentage-004.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/text-transform/reference/text-transform-fullwidth-001-ref.xht84
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/text-transform/text-transform-fullwidth-001.xht84
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/white-space/break-spaces-tab-004.html4
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/white-space/reference/white-space-intrinsic-size-001-ref.html1
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/white-space/reference/white-space-intrinsic-size-003-ref.html1
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/white-space/trailing-space-position-001.html41
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/word-break/word-break-keep-all-005.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/word-break/word-break-keep-all-006.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/word-break/word-break-keep-all-007.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/word-break/word-break-keep-all-008.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-transforms/animation/rotate-interpolation.html296
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/stylevalue-subclasses/numeric-objects/parse.tentative.html5
-rw-r--r--tests/wpt/web-platform-tests/css/cssom-view/table-border-collapse-client-width-height.html34
-rw-r--r--tests/wpt/web-platform-tests/css/cssom-view/table-border-separate-client-width-height.html34
-rw-r--r--tests/wpt/web-platform-tests/css/cssom-view/table-with-border-client-width-height.html31
-rw-r--r--tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-align-self-baseline-horiz-008-ref.xhtml53
-rw-r--r--tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-align-self-baseline-horiz-008.xhtml55
-rw-r--r--tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/reftest.list1
-rw-r--r--tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/will-change/reftest.list2
-rw-r--r--tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/will-change/will-change-fixpos-cb-translate-1.html24
-rw-r--r--tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/will-change/will-change-stacking-context-translate-1.html20
-rw-r--r--tests/wpt/web-platform-tests/docs/writing-tests/test-templates.md8
-rw-r--r--tests/wpt/web-platform-tests/encoding/streams/backpressure.any.js12
-rw-r--r--tests/wpt/web-platform-tests/feature-policy/reporting/xr-report-only.https.html11
-rw-r--r--tests/wpt/web-platform-tests/feature-policy/reporting/xr-report-only.https.html.headers2
-rw-r--r--tests/wpt/web-platform-tests/feature-policy/reporting/xr-reporting.https.html7
-rw-r--r--tests/wpt/web-platform-tests/feature-policy/reporting/xr-reporting.https.html.headers2
-rw-r--r--tests/wpt/web-platform-tests/html/rendering/replaced-elements/attributes-for-embedded-content-and-images/img-aspect-ratio.html (renamed from tests/wpt/web-platform-tests/html/rendering/replaced-elements/attributes-for-embedded-content-and-images/img-aspect-ratio.tentative.html)0
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/json-module/README.md2
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/json-module/invalid-content-type.tentative.html (renamed from tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/json-module/invalid-content-type.html)0
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/json-module/module.tentative.html (renamed from tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/json-module/module.html)0
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/json-module/non-object.tentative.any.js (renamed from tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/json-module/non-object.any.js)0
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/json-module/parse-error.tentative.html (renamed from tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/json-module/parse-error.html)0
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/json-module/utf8.tentative.html (renamed from tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/json-module/utf8.html)0
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/json-module/valid-content-type.tentative.html (renamed from tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/json-module/valid-content-type.html)0
-rw-r--r--tests/wpt/web-platform-tests/interfaces/css-typed-om.idl2
-rw-r--r--tests/wpt/web-platform-tests/interfaces/webrtc-stats.idl44
-rw-r--r--tests/wpt/web-platform-tests/mathml/presentation-markup/fractions/frac-legacy-bevelled-attribute.tentative-ref.html18
-rw-r--r--tests/wpt/web-platform-tests/mathml/presentation-markup/fractions/frac-legacy-bevelled-attribute.tentative.html28
-rw-r--r--tests/wpt/web-platform-tests/mathml/presentation-markup/mrow/legacy-mfenced-element-001-ref.html24
-rw-r--r--tests/wpt/web-platform-tests/mathml/presentation-markup/mrow/legacy-mfenced-element-001.html34
-rw-r--r--tests/wpt/web-platform-tests/mathml/presentation-markup/scripts/subsup-legacy-scriptshift-attributes-001.tentative-ref.html35
-rw-r--r--tests/wpt/web-platform-tests/mathml/presentation-markup/scripts/subsup-legacy-scriptshift-attributes-001.tentative.html48
-rw-r--r--tests/wpt/web-platform-tests/native-file-system/native_FileSystemDirectoryHandle-getEntries.tentative.https.manual.window.js4
-rw-r--r--tests/wpt/web-platform-tests/native-file-system/sandboxed_FileSystemDirectoryHandle-getEntries.tentative.https.any.js3
-rw-r--r--tests/wpt/web-platform-tests/native-file-system/script-tests/FileSystemDirectoryHandle-getEntries.js41
-rw-r--r--tests/wpt/web-platform-tests/resources/chromium/webusb-test.js32
-rw-r--r--tests/wpt/web-platform-tests/resources/chromium/webxr-test.js14
-rw-r--r--tests/wpt/web-platform-tests/shadow-dom/Element-interface-attachShadow-custom-element.html6
-rw-r--r--tests/wpt/web-platform-tests/svg/animations/interval-restart-events.html30
-rw-r--r--tests/wpt/web-platform-tests/tools/ci/tests/test_update_pr_preview.py372
-rw-r--r--tests/wpt/web-platform-tests/tools/ci/update_pr_preview.py255
-rw-r--r--tests/wpt/web-platform-tests/tools/docker/Dockerfile.webkitgtk87
-rw-r--r--tests/wpt/web-platform-tests/tools/docker/README.md19
-rwxr-xr-xtests/wpt/web-platform-tests/tools/docker/start.sh10
-rw-r--r--tests/wpt/web-platform-tests/tools/tox.ini2
-rw-r--r--tests/wpt/web-platform-tests/web-animations/interfaces/Document/getAnimations.html3
-rw-r--r--tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-createDataChannel.html51
-rw-r--r--tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-iceConnectionState.https.html9
-rw-r--r--tests/wpt/web-platform-tests/websockets/stream-tentative/abort.any.js46
-rw-r--r--tests/wpt/web-platform-tests/webusb/usbDevice.https.any.js201
-rw-r--r--tests/wpt/web-platform-tests/webxr/getViewerPose_emulatedPosition.https.html51
-rw-r--r--tests/wpt/web-platform-tests/webxr/resources/webxr_util.js30
-rw-r--r--tests/wpt/web-platform-tests/webxr/webxr-supported-by-feature-policy.html4
-rw-r--r--tests/wpt/web-platform-tests/webxr/webxr_feature_policy.https.html81
-rw-r--r--tests/wpt/web-platform-tests/webxr/webxr_feature_policy.https.html.headers1
-rw-r--r--tests/wpt/web-platform-tests/webxr/xrInputSource_emulatedPosition.https.html63
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&shy;way</div>
+<div>high&shy;way</div>
+<div>high&shy;way</div>
+<div>high&shy;way</div>
+<div>high&shy;way</div>
+<div>high&shy;way</div>
+<div>high&shy;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&#x07BE;bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb</div>
- <div id="breakable2">aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa&#x07BE;bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb</div>
- <div id="breakable3">aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa&#x07BE;bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb</div>
- <div id="breakable4">aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa&#x07BE;bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb</div>
+ <div id="breakable">aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa&#x0FBE;bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb</div>
+ <div id="breakable2">aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa&#x0FBE;bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb</div>
+ <div id="breakable3">aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa&#x0FBE;bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb</div>
+ <div id="breakable4">aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa&#x0FBE;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&#x1B5C;bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb</div>
- <div id="breakable2">aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa&#x1B5C;bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb</div>
- <div id="breakable3">aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa&#x1B5C;bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb</div>
- <div id="breakable4">aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa&#x1B5C;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>&nbsp;&#x3099;</span><br /><span>&nbsp;&#x3099;</span></div>
+ <div><span>&nbsp;&#x309A;</span><br /><span>&nbsp;&#x309A;</span></div>
<!-- HALFWIDTH HANGUL -->
- <br />
<div>[<span>&#x115F;</span>]<br />[<span>&#x115F;</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>&#x111A;</span><br /><span>&#x111A;</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>&quot;</span></div>
+ <div><span>"</span><br /><span>&quot;</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>&amp;</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>&lt;</span></div>
@@ -94,7 +78,7 @@
<div><span>></span><br /><span>&gt;</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>&nbsp;&#x3099;</span><br /><span>&nbsp;゙</span></div>
+ <div><span>&nbsp;&#x309A;</span><br /><span>&nbsp;゚</span></div>
<!-- HALFWIDTH HANGUL -->
- <br />
<div>[<span>&#x115F;</span>]<br />[<span>&#xFFA0;</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>&#x111A;</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>